Từ ý tưởng đến triển khai — bảy chặng, bảy cổng
Đây là cái la bàn. Mỗi chặng có một cổng (gate) — qua được cổng mới đi tiếp, không nhảy cóc. Bấm một chặng để mở chi tiết: mấu chốt · chỉ số · lưu ý · cổng · ví dụ thật.
- Đừng 'solution hoá': job là KẾT QUẢ, không phải giải pháp (không ai muốn mũi khoan, họ muốn cái lỗ) — Christensen JTBD.
- Đừng gom 2 job vào 1 app cho 'đáng công': 2 job = 2 sản phẩm → tách/giết ngay khi còn miễn phí.
- Đừng lao vào tự viết phần lõi cực khó (nhận diện giọng nói, xử lý ảnh) chỉ vì 'muốn tự làm cho oai' — fork tiết kiệm hàng tháng, đổi lại phải cầm chắc phần phát hành + kiểm thử.
- Đừng để AI 'nhảy thẳng vào code' (Anthropic cảnh báo: dễ giải SAI vấn đề) — luôn bắt lập kế hoạch (plan mode) và duyệt bằng tiếng người trước.
- Đừng phình thành PRD doanh nghiệp; nhưng cũng đừng build cả MVP chỉ để 'xem có chạy không' — test mọi thứ cùng lúc thì học chẳng được gì rẻ (RAT trước MVP).
- Đừng đổi khung công nghệ giữa chừng theo cái 'xịn' hơn — năng suất đến từ làm chủ sâu MỘT stack (Tauri+Rust+WebView, cố định).
- 'Trông đúng' KHÔNG phải verify — đừng nhận lời hứa 'xong rồi', đòi CHẠY thật (screenshot/test/tái hiện luồng). Verify API tồn tại trước khi viết (chống hallucination).
- Vibe coding thật (nhận code mình không hiểu/không kiểm) OK cho bản nháp bỏ đi, KHÔNG cho bản tặng — code AI có ~1,7× lỗi lớn & ~2,74× lỗi bảo mật.
- Chặn agent 'tiện tay' phình phạm vi + chặn scope-creep thầm lặng: chốt 'done', đẩy feature mới vào backlog trong CLAUDE.md.
- 'Chậm' ≠ 'hỏng': Windows 'treo' = CPU chậm (không GPU), không phải lỗi logic — giả thuyết flash-attn từng bị BÁC bằng đo. Tự bác bỏ giả thuyết của mình bằng số đo.
- Máy mình chạy ≠ máy sạch chạy: nhiều lỗi chỉ lộ khi đóng gói (quyền, đường dẫn, chữ ký, MAX_PATH 260, chip cũ thiếu khả năng tăng tốc → sập ngay khi mở).
- Sửa triệu chứng (ẩn thông báo lỗi) thay vì gốc = bug quay lại chỗ khác. Crash tầng C (SIGTRAP/SIGABRT) KHÔNG bắt được bằng try/except — phải CHẶN, không 'bắt'.
- Launch ≠ finish — là thí nghiệm, quay lại phase 3-4 và lặp nhiều lần (Airbnb relaunch 3×). Cầu toàn không hạn giờ: app ship trong 2 ngày thắng app hoàn hảo vẫn đang review.
- App chưa ký hệ điều hành → Gatekeeper 'hỏng' / SmartScreen 'nhà phát hành lạ' → PHẢI dặn trước bằng tiếng Việt (Mac: chuột phải > Open; Windows: More info > Run anyway).
- Đóng gói xong nhớ đăng ký app với hệ thống (Spotlight/menu) kẻo người nhận không tìm thấy; và quyền hệ thống hay reset sau mỗi build → dặn trước màn xin quyền.
- Lần đầu dựng dây chuyền THƯỜNG ĐỎ ở cả 3 hệ điều hành vì 3 lý do khác nhau — đó là bình thường, sửa từng cái, không làm lại từ đầu.
- Catalog bẫy Windows CI học-1-lần-dùng-mãi: LIBCLANG thiếu · MAX_PATH 260 → CARGO_TARGET_DIR=C:\b · GPU/Vulkan phải TÁCH exe (0xc0000135 trên máy không GPU) · dùng native-tls không rustls · token cần scope workflow.
- PHÂN BIỆT 2 loại ký: minisign tự-cập-nhật (MIỄN PHÍ, bắt buộc) khác Apple/Windows EV (trả phí, chỉ tắt cảnh báo) — đừng mua nhầm cái đắt. Bẫy web: tên miền 'Parked'/DNS sai + cache trả bản cũ + tên miền có gạch ngang (10x-lifeos.com gõ thiếu → NXDOMAIN).
- Kaizen ≠ chỉ suy ngẫm: deliverable là một TEMPLATE, không phải trang nhật ký. Không templatize được gì = phase chưa xong.
- Đừng chưng cất khi ký ức đã nguội — làm NGAY lúc còn nóng, nhớ rõ chỗ đau. Và template phình cũng là nợ: chỉ giữ phần THẬT SỰ lặp lại, cắt mỡ định kỳ.
- Lỗi #1: quyết start/stop/continue rồi không follow-through → biến action item thành mục backlog hạng nhất. Nguồn lỗi UI lặp = dựng từ trí nhớ thay vì COPY nguồn brand chuẩn (icons.js/brand.css chung).
Cách người xây sản phẩm đẳng cấp tư duy
Bên trên bảy chặng là một lớp triết lý. Nắm được lớp này thì mỗi quyết định nhỏ tự đúng hướng.
16 cái bẫy khiến bạn trả học phí
- Vibe-code hàng để ship. Buông xuôi theo 'vibe', chấp nhận code mình KHÔNG hiểu/không kiểm rồi đưa thẳng vào bản tặng. Vì sao đau: code AI đồng-tác có ~1,7× lỗi lớn & ~2,74× lỗi bảo mật (CodeRabbit) — ổn cho bản nháp bỏ đi, KHÔNG cho bản người dùng thật. Tránh: AI viết mọi dòng vẫn OK, MIỄN LÀ có đặc tả rõ + cách tự kiểm chứng cho từng tính năng.
- Tin mà không kiểm ('xong rồi' không bằng chứng). Nhận output nhìn-hợp-lý của agent mà không có phép kiểm nó tự chạy. Vì sao đau: lỗi âm thầm tích lũy, với tự-cập-nhật một bản hỏng lây tới MỌI người dùng cùng lúc. Tránh: đòi bằng chứng cứng (test PASS, log, app đóng gói thật sự tạo file) trước khi tin; 'không kiểm được thì không ship'.
- Ảo giác AI luôn nhanh hơn. Cho rằng cứ có AI là nhanh hơn, nhất là với code mình đã rành. Vì sao đau: METR (7/2025) cho thấy dev kỳ cựu CHẬM hơn 19% với AI đời-đầu-2025 trong khi TƯỞNG mình nhanh hơn ~20% — cảm giác nói dối. Tránh: ĐO đừng ĐOÁN, bấm giờ thay vì tin trực giác.
- Sửa triệu chứng thay vì sửa gốc. Ẩn thông báo lỗi, vá tạm chỗ nổi thay vì tìm nguyên nhân gốc. Vì sao đau: bug quay lại ở chỗ khác; 'App thoát khi lưu' hoá ra không phải nút Lưu mà là pynput gọi API sai luồng trên macOS 26. Tránh: tái hiện lỗi bằng bước cố định TRƯỚC khi sửa, bật log để thấy lỗi rồi mới đoán, sửa gốc rồi xác nhận bug không tái phát, ghi 1 dòng vào sổ bẫy (triệu chứng → nguyên nhân → cách chặn).
- 'Chạy tốt trên máy tôi'. Thử app chỉ trên máy dev rồi coi là xong. Vì sao đau: máy đời cũ/chip khác/Windows làm app sập ở chỗ bạn không bao giờ gặp — chip Celeron N2920 hay FX-8350 sập ngay khi mở nếu bật tăng tốc chúng không có; Windows giới hạn đường dẫn 260 ký tự (MAX_PATH). Tránh: thử trên MÁY SẠCH + máy đời cũ/chip khác; bản GPU luôn kèm bản CPU dự phòng để phủ mọi máy.
- Context loạn — phiên 'thập cẩm'. Trộn nhiều việc trong một phiên, hoặc cãi tay đôi với agent khi trí nhớ tạm đã rối. Vì sao đau: chất lượng tụt, agent 'quên' chỉ dẫn cũ; sửa cùng một chỗ > 2 lần là dấu hiệu context đã loạn. Tránh: /clear giữa hai việc không liên quan; sau 2 lần sửa hỏng thì dừng, viết lại prompt từ ngữ cảnh sạch thay vì cố đấm thêm.
- Cầu toàn không hạn giờ. Làm 'tới khi hoàn hảo', gọt mãi, không bao giờ ship. Vì sao đau: vòng phản hồi kéo dài vô tận, không bao giờ học được từ người dùng thật. Tránh: đặt 'khẩu vị thời gian' cố định, co giãn phạm vi cho vừa — app ship trong 2 ngày thắng app hoàn hảo vẫn đang review.
- Over-engineer từ review đối kháng. Chạy theo MỌI 'lỗ hổng' một reviewer moi ra (nó luôn moi được, kể cả khi code ổn). Vì sao đau: sinh code phòng thủ, trừu tượng thừa, test cho ca bất khả — phình nợ mới. Tránh: chỉ sửa lỗ hổng ảnh hưởng ĐÚNG ĐẮN hoặc yêu cầu đã nêu; dặn AI reviewer chỉ báo lỗi tính đúng, đừng bắt bẻ phong cách.
- Giải pháp trước khi rõ vấn đề. Nhảy vào tính năng/spec lớn trước khi định rõ kết quả mong muốn và gọi tên người-nhận + nỗi-đau trong một câu. Vì sao đau: kinh điển 'làm sai thứ một cách hiệu quả' — debug vô tận vì không biết khi nào là XONG. Tránh: chưa gọi được tên người nhận và nỗi đau < 20 từ thì đừng đụng vào code; chọn ý người nhận CẦN, không phải mình THÍCH.
- Để chìa khóa/bí mật lọt vào thư mục code. AI vô tình để lộ private key/mật khẩu trong repo — chỗ AI hay sai nhất. Vì sao đau: lỗ hổng bảo mật nặng nhất, như để chìa khóa nhà dưới thảm; khảo sát độc lập cho thấy code AI dính lỗ hổng ở tỉ lệ đáng lo. Tránh: đặt luật cứng 'KHÔNG BAO GIỜ đưa chìa khóa/mật khẩu vào thư mục code' trong CLAUDE.md; đồ nặng và khóa để NGOÀI code.
- Nhầm hai loại ký số — mua nhầm cái đắt. Lẫn lộn ký-cho-tự-cập-nhật (minisign, MIỄN PHÍ, BẮT BUỘC) với ký-cho-hệ-điều-hành (Apple/Windows EV, TRẢ PHÍ, chỉ tắt cảnh báo). Vì sao đau: tốn tiền oan hoặc thiếu cái bắt buộc; khóa tự-cập-nhật phải CÓ mật khẩu (không thì báo 'Wrong password'). Tránh: đầu tư đúng cái miễn phí bắt buộc; app không ký OS thì bù bằng hướng dẫn cài rõ (Mac chuột phải > Open; Windows More info > Run anyway).
- Đổi chữ ký ngầm giữa hai bản = reset quyền người dùng. Bản mới ký bằng danh tính KHÁC bản người dùng đang cài, hoặc để mất dấu chìa khóa ký cũ. Vì sao đau: macOS/Windows tưởng là 'app lạ', xoá âm thầm mọi quyền (mic, trợ năng) — người dùng ngã ngửa phải cấp lại tay. Tránh: giữ CÙNG chữ ký qua các bản (chứng chỉ ký cố định); nếu buộc đổi thì cảnh báo trước + soạn hướng dẫn cấp lại quyền, đừng auto-replace app đang chạy tốt.
- Bê nghi thức doanh nghiệp vào dự án một người. Nhồi scrum, daily standup, ước lượng story point, backlog khổng lồ, hoặc đặc tả hình thức quá mức vào app một-người. Vì sao đau: tốn thời gian, làm chậm vòng phản hồi mà không thêm giá trị — lặp lại sai lầm kiểu thác nước. Tránh: giữ nhẹ vừa đủ; spec một trang, vòng lặp chặt, phạm vi hẹp.
- Đo chỉ số phù phiếm / chạy đua con số (Goodhart). Đo lượt tải, sao GitHub, view landing; hoặc ép 'phát hành thật nhiều' bằng cách bỏ qua checklist. Vì sao đau: khi con số thành mục tiêu nó thôi là thước đo tốt — số đẹp mà app hỏng còn tệ hơn; chỉ số phù phiếm không trả lời 'nên làm gì tiếp'. Tránh: chỉ giữ chỉ số hành động được (TTFV, crash-free, cycle time, corrections-per-task); con số nào không đổi được hành vi thì bỏ.
- Để CLAUDE.md phình / dựng lại khung UI theo trí nhớ. Nhồi CLAUDE.md thành tài liệu dày; dựng lại brand.css/icons/footer theo trí nhớ mỗi app. Vì sao đau: AI chìm trong nhiễu, bỏ qua nửa số quy tắc; lỗi UI cứ lặp (xuống dòng xấu, icon lệch, chấm cam vô hình r='.2'). Tránh: mỗi dòng CLAUDE.md phải 'load-bearing' (bỏ đi thì AI sai), rà cắt định kỳ; app mới COPY bộ khung chung, không dựng lại từ trí nhớ.
- Quên phần đưa web/landing lên mạng như bước phụ. Coi việc publish trang bán là chuyện nhỏ. Vì sao đau: có bẫy riêng dễ làm bạn tưởng app hỏng — tên miền treo 'Parked Domain' (DNS trỏ sai, xóa cache KHÔNG trị được), cache trả bản cũ ~1 phút, và tên miền có gạch ngang (10x-lifeos.com) sai 1 ký tự = cả web 'chết'. Tránh: trỏ DNS về đúng IP hosting, thêm đuôi ?v=thời-gian ép xem bản mới, kiểm link LIVE thấy HTTP 200 + tìm chữ mới trên trang trước khi gửi bạn bè.
Thư viện prompt — dán thẳng vào Claude Code
Cho người mới. Mỗi chặng có 1–2 câu lệnh mẫu, chỗ [trong ngoặc] là chỗ bạn điền. Bấm Copy rồi dán vào Claude Code.
Mình muốn làm một app nhỏ chạy offline để [làm việc X] cho [người nhận có tên thật: vd mình / mẹ mình / bạn A]. Hãy đóng vai một cố vấn khó tính, ĐỪNG vội khen. Hỏi ngược mình từng câu: (1) ai dùng, dùng lúc nào? (2) nếu KHÔNG có app này thì họ đang xoay xở ra sao? (3) mình có tự dùng nó mỗi ngày không? Sau đó giúp mình viết lại thành đúng MỘT câu dưới 20 từ theo khuôn "món [X] này, cho [người này], đỡ khổ chỗ [Y]". Cuối cùng chốt giúp mình: tính năng LÕI đúng 1 (tối đa 3), và những thứ nên để lần sau.
App mình định làm là [mô tả 1 câu]. Phần KHÓ NHẤT của nó là [vd: nhận diện giọng nói / xử lý ảnh / chụp màn hình]. Hãy trả lời mình bằng tiếng người (mình không biết code): (1) phần khó này mình cùng bạn làm nổi từ số 0 không, hay quá khó? (2) có dự án mã nguồn mở nào đã làm sẵn phần đó để mình MƯỢN KHUNG (fork) rồi Việt hóa không — kể tên vài cái? (3) so sánh hai đường tự-xây vs fork về tốc độ và độ an toàn cho người không biết code, rồi khuyên mình chọn cái nào và VÌ SAO.
TRƯỚC khi viết bất kỳ dòng code nào, hãy PHỎNG VẤN NGƯỢC mình để cùng viết ra file SPEC.md — chỉ MỘT trang, đọc hết dưới 3 phút. Cần có: (1) một câu chuyện người dùng chạy suốt từ đầu đến cuối; (2) các trường hợp HỎNG cần lo ([vd: mic rớt giữa chừng, mất file, file rỗng]); (3) danh sách "KHÔNG LÀM lần này" — và danh sách này phải DÀI HƠN danh sách có làm; (4) một câu định nghĩa rõ thế nào là "XONG". Hỏi mình tới khi phủ hết mới thôi. Đừng nhảy vào code.
Mình cố định dùng khung [Tauri + Rust + WebView / stack của bạn] cho mọi app desktop offline — ghi giúp mình MỘT dòng vào CLAUDE.md để lần sau khỏi quyết lại. Nếu mình fork [dự án gốc], giải thích bằng tiếng người: giữ hai đường kết nối (một tới 'bản của mình' để sửa, một tới 'bản gốc' để kéo cập nhật) nghĩa là gì, và những thứ nặng (bản cài, mô hình AI) để NGOÀI thư mục code ra sao. Giờ hãy vào PLAN MODE: đọc và lập kế hoạch nhưng CHƯA sửa gì, trình bày kế hoạch bằng tiếng người để mình duyệt trước.
Mình làm theo kiểu 'lát mỏng': lần này CHỈ làm đúng một thứ đủ nhỏ để mình kể bằng một câu — [vd: thêm nút bấm để bắt đầu thu âm]. Đây là phần đặc tả liên quan tới lát này: [dán đoạn spec]. Yêu cầu: giữ code ĐƠN GIẢN, có chú thích (mình kiểm bằng HÀNH VI của app chứ không đọc code); làm xong thì DỪNG lại chỉ mình cách tự chạy thử lát này để mình thấy tận mắt; rồi GHI MỐC (commit) với mô tả rõ một ý. Hai luật cứng: KHÔNG BAO GIỜ đưa chìa khóa/mật khẩu vào thư mục code; chỉ làm trên MỘT bản gốc, không tự tạo bản sao tạm.
Chỗ [tính năng Z] mình đã nhờ bạn sửa 2 lần mà vẫn chưa đúng — đây là dấu hiệu ngữ cảnh đang loạn, mình sẽ /clear. Trước khi mình reset, hãy tóm tắt NGẮN GỌN: mục tiêu đúng của [Z] là gì, hiện đang sai ở đâu, và một cách tự kiểm chứng để biết lần sau đã đúng. Mình sẽ dán bản tóm tắt này vào phiên mới sạch rồi làm lại từ đầu.
App đang bị [MÔ TẢ TRIỆU CHỨNG mình quan sát được, KHÔNG đoán nguyên nhân: vd 'bấm Lưu là app thoát', 'thu âm xong app kẹt đang-bận mãi']. Xảy ra khi: [các bước mình làm]. ĐỪNG vội sửa. Làm theo thứ tự: (1) cho mình cách TÁI HIỆN lỗi bằng các bước cố định; (2) bật log / ĐO để chỉ ra nguyên nhân GỐC (đo, đừng đoán); (3) sửa tận gốc chứ đừng ẩn thông báo lỗi; (4) chạy lại đúng bước gây lỗi để CHỨNG MINH đã hết; (5) ghi 1 dòng vào sổ bẫy: triệu chứng → nguyên nhân → cách chặn lần sau.
Với tính năng [tính năng], hãy cho mình một cách để TỰ kiểm chứng nó chạy đúng (viết test, hoặc build rồi chạy thử, hoặc chụp màn hình) — rồi chạy nó và TRƯNG kết quả cho mình xem. Mình không nhận 'đã xong', mình cần bằng chứng. Sau đó đóng vai một người soi lỗi ĐỘC LẬP đầu-óc-mới, CHỈ báo lỗi ảnh hưởng tính đúng/yêu cầu (đừng bắt bẻ phong cách kẻo over-engineer). Cuối cùng hỏi thẳng: app này có thể SẬP trên máy đời cũ / chip khác / Windows đường dẫn dài không? Nếu có, làm sao để bản mình phát ra chạy được cả trên máy yếu?
Mình muốn ra bản mới. Trước khi đẩy: tăng số phiên bản Ở MỌI NƠI cho khớp CHÍNH XÁC (lệch là link tải hỏng), build thử và mở app chạy tính năng lõi, test đúng lỗi vừa sửa, cập nhật CHANGELOG. Rồi mình chỉ đẩy đúng MỘT cái nhãn (git tag [vd v0.8.6]) để máy GitHub tự build Mac + Windows + Linux, tự ký cho tự-cập-nhật, tự đăng Release. LƯU Ý: dây chuyền lần đầu hay ĐỎ ở cả ba hệ điều hành vì ba lý do khác nhau — đó là bình thường. Khi đỏ, mình sẽ chụp phần báo lỗi đưa bạn; hãy đọc giúp mình lỗi đó nghĩa là gì và sửa TỪNG cái một, đừng làm lại từ đầu.
Giải thích cho mình bằng tiếng người và giúp mình làm ĐÚNG: (1) ký-cho-tự-cập-nhật (dấu niêm phong minisign — MIỄN PHÍ, BẮT BUỘC, để app cũ tin bản mới đúng là của mình) khác với (2) ký-cho-hệ-điều-hành (Apple/Windows — TRẢ PHÍ, chỉ để tắt cảnh báo lần đầu mở). Mình làm app tặng nên chọn đường miễn phí — đừng để mình mua nhầm cái đắt. Chốt giúp: khóa tự-cập-nhật phải CÓ mật khẩu. Và luôn giữ đường lùi: giữ lại bản cài cũ, nếu bản mới hỏng thì 'lùi bằng cách tiến' — ra bản vá số CAO hơn (vì app luôn chọn số lớn hơn).
App mình chạy offline nên không có báo-cáo-sập tự động — hãy thêm một nút 'Báo lỗi' mở sẵn email (hoặc trang issue) kèm đường dẫn file nhật ký, đây sẽ là 'giác quan' của mình. Vì mình chọn đường ký miễn phí, người dùng sẽ gặp cảnh báo lần đầu mở — viết giúp mình một trang hướng dẫn cài NGẮN ≤ 5 bước cho người KHÔNG phải dev (Mac: chuột phải > Open + cấp 2 quyền + khởi động lại; Windows: More info > Run anyway). Trước khi loan báo mình sẽ tự cài dùng thử 1-2 ngày (ăn thử món mình nấu).
Trước khi mình phát cho mọi người, kiểm hai thứ: (1) Bản mới có dùng CÙNG một chữ ký với bản người dùng đang cài không? Nếu KHÁC, cài đè sẽ khiến hệ điều hành tưởng là 'app lạ' và RESET quyền mic/trợ năng — hãy cảnh báo mình TRƯỚC và soạn hướng dẫn cấp lại quyền; đừng tự động thay app đang chạy tốt nếu bản mới sẽ reset quyền. (2) Đưa bản tải lên nơi ổn định (release có version) và cho mình một LINK TẢI SỐNG mình bấm thử từ máy lạ tải được (xác minh HTTP 200); trang giới thiệu nói rõ trong 1 màn cuộn: cho ai · giải nỗi đau gì · tải ở đâu.
Mình vừa ship xong [app/bản]. Làm 'hồi cứu 15 phút' cùng mình: (1) cái gì GIỮ NGUYÊN được cho lần sau, cái gì vừa mất thời gian oan? (2) mỗi LỖI THẬT vừa gặp — biến thành đúng một dòng cho checklist kiểm thử lần sau (triệu chứng → cách chặn); (3) ghi các quyết định lõi và cạm bẫy vào CLAUDE.md và file memory, NGẮN GỌN thôi. Rồi rà lại CLAUDE.md giúp mình: mỗi dòng tự hỏi 'bỏ dòng này bạn có làm sai không?' — nếu không thì CẮT, đừng để nó phình.
Từ buổi làm này, rút ra ÍT NHẤT một thứ tái dùng được: một bộ khung (template landing / brand.css + icons.js + header/footer), một checklist phát hành, hoặc một sổ bẫy. Cất vào thư mục mẫu dùng chung để app sau CHỈ VIỆC COPY, không dựng lại từ trí nhớ (dựng theo trí nhớ chính là nguồn của lỗi UI lặp đi lặp lại). Lần tới khi mình nói 'làm app mới theo đúng khung này', bạn sẽ bê nguyên bộ mẫu ra dùng. Cập nhật template NGAY bây giờ lúc trí nhớ còn nóng, đừng để nguội.
Ba app, một cái khuôn
Bảy chặng không phải lý thuyết — chúng rút ra từ ba app thật đã đóng gói & tặng đi. Cùng một khung 3 Cổng:
Chép Lời
high — có case-study full-stack chi tiết (BÀI HỌC FULL-STACK .md) + xác nhận chéo trong roadmap HTML; con số đo (17,4× / 2,5×) và bẫy build lấy trực tiếp từ tài liệu.FC-FastCapture
very high — đây là app của chính session này; xác nhận trực tiếp từ 2 file memory (fc-macos-gotchas.md, fc-published.md) với chi tiết code-level (CGEventTap, platform_backend, PyInstaller per-arch, stable cert).VoiceFlow
medium — details chắc chắn ở tầng CI/ký số/bug treo mic (roadmap HTML mô tả kỹ), NHƯNG như chính tài liệu tự thừa nhận: engine STT cụ thể, cỡ model, phím tắt bản Windows, cơ chế tự-cập-nhật CHƯA xác nhận được từ nguồn công khai — KHÔNG bịa thêm.Chọn gì — và vì sao
Thứ để tái dùng — checklist, tài sản, từ điển
Phần mang-đi-được. Tick checklist (được lưu lại trong máy bạn), xem những "1 mũi tên trúng N đích", tra từ điển đời thường.
- Chứng chỉ ký CỐ ĐỊNH (stable self-signed code-signing cert) — 'FC-FastCapture Dev (10XLifeOS)' trong keychain riêng ~/Library/Keychains/fc-codesign.keychain-db → Vì cert không đổi → designated requirement giống nhau MỖI build → macOS giữ quyền Screen Recording + Accessibility qua MỌI lần rebuild (thay vì ad-hoc đổi cdhash làm reset quyền). Trúng: bản Apple Silicon + bản Intel (ký CÙNG cert nên TCC perms khớp) + mọi bản build tương lai. Bài học đối lập ở VoiceFlow: mất cert cũ = phải đổi chữ ký = reset quyền toàn bộ người dùng.
- Lớp trừu tượng platform_backend (app/platform_backend.py) gom mọi phụ thuộc OS về MỘT chỗ → Quyết định 'day one'. Trúng 3 nền tảng: macOS Apple Silicon + macOS Intel + Windows x64 — cả 3 tái dùng CÙNG lõi, port = việc lặp (guard bằng IS_WIN, đường macOS không đụng tới), verified 15/15 module import sạch trên cả macOS thật lẫn Windows runner.
- Sổ bẫy / gotcha ledger (fc-macos-gotchas.md; bộ 7 file memory của VoiceFlow: user-non-technical, voiceflow-project, updater-key, freeze-bug, v085-upgrade, tenx-brand-tech-standard) → Mỗi bug thật thành 1 dòng (triệu chứng → nguyên nhân → cách chặn) → gỡ rủi ro cho CẢ bản Intel lẫn Windows của FC (2 lần port thành việc lặp), và làm vòng kiểm thử sau THÔNG MINH hơn. Trúng: mọi lần port + mọi app sau.
- Bộ khung template trang / 'Bộ khung 10X' dùng chung (brand.css + icons.js + header.js + footer.js + _mau/landing-san-pham.html + _mau/checklist.html); scaffold khởi đầu = bê nguyên trang chep-loi/ → Từ 01/07/2026 app mới COPY mẫu, không dựng lại → hết lỗi UI lặp (xuống dòng xấu, icon lệch, footer sai vì dựng theo trí nhớ). Cả 3 app kéo icon từ icons.js chung. Trúng: mỗi app một thư mục /slug/ trên 10x-lifeos.com (favicon + OG 1200×630 + footer.js chung).
- 1 file CI (GitHub Actions matrix / build-windows.yml) — 'chìa khoá GitHub đã lưu' + oauth token → Một nhãn phiên bản (git tag v0.1.x / v1.0) → tự dựng Mac + Windows + (Windows GPU/Linux) cho MỌI phiên bản, KHÔNG cần máy Mac/Win trong tay (PyInstaller không cross-compile được từ Mac → CI là bắt buộc cho .exe). Dây chuyền làm 'chịu lỗi': một OS đỏ thì các OS khác vẫn đăng. Token GitHub đã lưu → tự tạo repo + đẩy + phát hành không đăng nhập lại.
- Bộ Design Tokens / nhận diện (navy #070718 + cam #C96028, font Fraunces/Be Vietnam Pro/JetBrains Mono, reframe 'Không phải X. Mà là Y.', giọng Coach Thắng) → 1 bộ nhận diện → App UI + Landing + Blog + Slide + Video animation + one-pager đều đồng bộ tuyệt đối, làm nhanh gấp nhiều lần. Trúng mọi tài sản marketing của cả 3 app.
- Mẫu 'cuốn sổ' SQLite (state / single source of truth) + hệ 'bộ nhớ' dự án (CLAUDE.md + memory files) → SQLite: mọi app xử lý nhiều file đều resumable, tắt máy mở lại chạy tiếp, chống crash. Bộ nhớ dự án: phiên sau nối tiếp ngay, không dò lại từ đầu — chống 'nợ-hiểu-biết' cho người không code.
- Script build per-arch đã ghi (build.sh, build-intel.sh) + 'công thức build' đã chép + mẹo render HTML → ảnh → build-intel.sh dựng bản Intel qua Rosetta (venv .venv-x86 dưới arch -x86_64, ký cùng cert). Công thức build ghi lại → lặp cho mọi bản không nhớ-mò. Mẹo render HTML→ảnh → xem trước trang/slide/video không cần server.
- Khung 3-Gate (Engine→App→Package) / Khung TẶNG 7 nhịp (Ý→Khuôn→Dựng→Chữa→Trao→Mở→Ngẫm) + checklist copy được → Áp cho MỌI ý tưởng sản phẩm mới. Đã chạy qua 3 app (Chép Lời, FC-FastCapture, VoiceFlow) đủ để thành 'cái khuôn chung'; nhịp Ngẫm chưng cất mỗi app thành template → app N nhanh gấp bội app đầu.
Bản chuẩn — tick được, tự lưu
Đây là checklist gốc. Muốn checklist RIÊNG cho một ý tưởng cụ thể → dùng tab + Tạo Roadmap.
30 thuật ngữ — giải thích cho người mới
Máy tạo roadmap cho ý tưởng mới
Điền 3 ô → nhận ngay một roadmap 7 chặng riêng cho ý tưởng của bạn, có checklist tick được (lưu trong máy). Đây là cái khuôn biến kho tri thức thành công cụ.