AI Mở Studio

Hướng dẫn cho người lớn và vibe coder

Làm phần mềm cùng AI: cách dự án này được làm

Một phụ huynh không viết dòng mã nào, vẫn có một app Android chạy thật, 64 trò chơi và trang web này. Bí quyết không nằm ở câu lệnh “thần kỳ” mà ở cách làm việc: đặc tả rõ, luật ít mà cứng, đòi bằng chứng, sửa lỗi bằng handover. Cách làm đó dùng được cho game khác, công cụ nội bộ, và cả sản phẩm để bán.

Tóm tắt một phút

  • Người giữ “cái gì” và “vì sao”, AI lo “làm thế nào”. Bố mẹ quyết bé chơi gì, an toàn đến đâu. AI chọn công nghệ, viết mã, viết test, tự chạy thử.
  • Viết đặc tả trước. Một tài liệu dài, rõ, chốt sẵn mọi mặc định, rồi giao cho AI bằng một câu: “đọc và làm từ đầu đến cuối”.
  • Chia thành vỏ và nội dung. App (vỏ) lo an toàn; game (nội dung) chỉ là thư mục HTML theo một hợp đồng. Nhờ vậy nhiều phiên AI làm song song, thêm game không cần build lại app.
  • Không tin, đòi bằng chứng. “Đã kiểm thử” chỉ được viết khi có log và ảnh; báo cáo ghi rõ PASS, FAIL, NOT_RUN, BLOCKED.
  • Lỗi đi qua handover. Đo nguyên nhân, chốt quyết định với người, viết yêu cầu và kiểm thử bắt buộc, rồi giao cho một phiên AI mới.

Câu chuyện dự án

Bố mẹ muốn các bé chơi những game học tập do chính mình nhờ AI làm, trên một điện thoại Android, mà không có quảng cáo, không vào mạng, không tự thoát sang ứng dụng khác. Mở game HTML bằng trình duyệt thì bé bấm vài cái là ra ngoài, nên cần một app “vỏ” riêng để chạy game.

  1. Trước 11/10: viết đặc tả. Bố mẹ trò chuyện với AI về nhu cầu; AI tra tài liệu chính thức của Android rồi viết “bible” 1.370 dòng, 25 mục: thiết kế, phạm vi, kiến trúc, an ninh, kiểm thử, cách bàn giao.
  2. 11/10: app 1.0.0. Giao bible cho Claude Code. AI tự dựng project, viết mã, chạy test trên emulator Android 8 và Android 17, ký APK, viết báo cáo. Cùng ngày, một phiên khác làm 10 game theo SDK của app từ một brief riêng.
  3. 11–15/10: hơn 50 game một file. Lô đầu 10 game (11–12/10). Sau đó bốn file prompt “Bộ game 2…5”, mỗi file 10 game, chạy trong bốn phiên AI song song (14–15/10).
  4. Thử trên điện thoại thật. Game có lời đọc khi mở bằng Chrome nhưng im lặng trong app. Người phát hiện khi chơi thử: lỗi chỉ lộ ra khi đem game làm cho trình duyệt vào chạy trong app, và phải nghe bằng tai mới thấy.
  5. 16/10: bản 1.1.0. Một phiên AI phân tích nguyên nhân và cùng bố mẹ chốt cách sửa, viết thành handover. Phiên mới đọc handover, làm trọn vẹn, tìm thêm hai lỗi thật trên Android 8, thử cài đè giữ nguyên dữ liệu.
  6. 28/10: lên GitHub. AI dựng trang web này, đóng gói tải về, xóa mọi thông tin về máy tính của tác giả trước khi công khai.

Triết lý và nguyên tắc

Chín nguyên tắc dưới đây là phần đáng giá nhất của dự án. Mỗi nguyên tắc kèm ví dụ thật trong repo.

1

Người giữ “cái gì” và “vì sao”, AI lo “làm thế nào”

Quyết định sản phẩm (cho ai, làm gì, không làm gì) là việc của người. Chọn thư viện, kiến trúc, tên biến, màu nút là việc của AI, và AI không được hỏi lại những việc đó.

Trong dự án: bible mở đầu bằng “Không yêu cầu chủ dự án lựa chọn framework, màu sắc, tên class, thư viện hay cấu trúc thư mục”. Bố mẹ chỉ chốt: offline, PIN phụ huynh, bé không thoát ra được, thêm game bằng cách chép thư mục.

2

Đặc tả là sản phẩm chính, mã là thứ sinh lại được

Thời gian đầu tư vào tài liệu cho lợi nhiều nhất. Một đặc tả tốt chốt sẵn mặc định, nói rõ phạm vi bản đầu và những gì để sau, và nói trung thực giới hạn của nền tảng.

Trong dự án: bible có bảng “mong muốn → cam kết thực tế”, ví dụ “Bé chỉ ở trong app” được diễn đạt lại thành “ghim ứng dụng hạn chế chuyển app, không hứa chặn nút nguồn”. Có cả mục “Vì sao chọn phương án này” so sánh sáu cách làm khác.

3

Ít luật, nhưng là luật cứng

Một danh sách ngắn những điều không bao giờ được phá, kể cả để “cho demo chạy”. Trong khung đó AI được tự do. Luật nhiều quá thì AI lẫn; không có luật thì AI đi tắt.

Trong dự án: không quyền Internet; không cầu nối JavaScript có quyền; không đổi khóa ký (đổi là không cài đè được, gia đình mất dữ liệu); mã định danh game là vĩnh viễn; không in PIN.

4

Bằng chứng thay cho lời hứa

AI rất dễ viết “đã kiểm thử, mọi thứ hoạt động”. Hãy đòi log, ảnh chụp, số test chạy thật, và bốn nhãn trạng thái: PASS, FAIL, NOT_RUN, BLOCKED. “PASS trên emulator” khác “PASS trên máy thật”.

Trong dự án: báo cáo 1.1.0 ghi thẳng: giọng đọc PASS với 3 game đại diện, NOT_RUN với 47 game còn lại từng cái một; mục tiêu “câu đầu < 500 ms” chưa đạt trên emulator Android 17.

5

Thử như người dùng thật, ở chỗ khó nhất

Đọc mã không phải là kiểm thử. AI phải mở ứng dụng thật, chạm và kéo thật, ở nhiều cỡ màn hình, mất mạng, tải lại, cố tình làm sai. Rồi người thử trên thiết bị thật những gì máy không làm được: nghe bằng tai, ghim ứng dụng, chọn thư mục.

Trong dự án: mỗi game được chơi trọn bằng chạm giả lập ở 390×844, 844×390 và 1280×800. App được thử trên emulator Android 8 với WebView rất cũ (Chromium 69), nơi phát hiện nhiều lỗi nhất.

6

Chia thành vỏ và nội dung, nối bằng hợp đồng

Một phần ổn định, ít thay đổi, lo an toàn (vỏ). Nhiều phần nhỏ, thay được, chỉ cần đúng một định dạng (nội dung). Hợp đồng giữa hai bên được viết thành tài liệu và có công cụ kiểm tra.

Trong dự án: player không biết gì về từng game. Game là thư mục HTML; game theo SDK có thêm game.json và player-sdk.js, được pack_game.py kiểm tra. Nhờ vậy bốn phiên AI làm 40 game cùng lúc mà không giẫm chân nhau, và thêm game không cần APK mới.

7

Thay đổi đi qua handover, không sửa vội trong lúc chat

Khi gặp lỗi hay muốn thêm tính năng: đo nguyên nhân trước, chốt quyết định với người, viết yêu cầu phải đạt và kiểm thử bắt buộc, rồi giao cho một phiên AI mới với ngữ cảnh sạch.

Trong dự án: lỗi “game im lặng trong app” được giải quyết bằng HANDOVER_TTS_v1.1.0.md (xem mục sửa lỗi).

8

Ghi nhớ cho phiên sau

AI không nhớ gì giữa các phiên. Bộ nhớ dài hạn của dự án là tài liệu: sổ quyết định, trạng thái tiến độ, sổ tay cho AI. Mỗi cái bẫy đã gặp một lần phải được ghi lại để không gặp lần hai.

Trong dự án: DECISIONS.md (22 quyết định và lý do), BUILD_STATUS.md, AI_PLAYBOOK.md (bảng các bẫy, ví dụ “WebView Android 8 làm hỏng chữ có dấu khi gửi giữa trang và app”).

9

An toàn và riêng tư là mặc định

Không thu thập dữ liệu nếu không cần. Không để khóa, mật khẩu, đường dẫn máy tính hay thông tin cá nhân lọt vào mã nguồn, file nén, log hay báo cáo. Việc khó hoàn tác (xóa dữ liệu, đổi khóa, công bố) luôn hỏi người trước.

Trong dự án: trước khi đưa lên GitHub, AI quét toàn bộ hơn 1.100 file, kể cả bên trong APK và ZIP, và thay mọi đường dẫn, tên máy, cấu hình máy trong bản công khai.

Người làm gì, AI làm gì

AI làmNgười làm
Toàn bộ mã, hình, âm thanh, icon, test, build, ký (khi có khóa), đóng gói, tài liệu, báo cáoQuyết định sản phẩm: làm gì, cho ai, không làm gì
Tự chọn chi tiết kỹ thuật, ghi lý do vào sổ quyết địnhNhững bước chỉ chủ thiết bị làm được: cài app, cấp quyền, tạo PIN thật, nghe bằng tai, thử trên máy thật
Thử như người dùng thật trên emulator và trình duyệt tự độngGiữ và sao lưu khóa ký, mật khẩu, tài khoản
Báo cáo trung thực cái đã thử và cái chưa thử đượcDuyệt trước mọi việc khó hoàn tác: xóa dữ liệu, đổi khóa, công bố, chi tiền

Người không cần biết lập trình, nhưng cần biết đọc báo cáo một cách hoài nghi: hỏi “đã chạy thật chưa, bằng chứng đâu, cái gì chưa thử”.

Dựng player (app Android)

Kiến trúc trong một hình

Khu phụ huynh (sau PIN)Chọn thư mục, ẩn game, xóa tiến trình, giọng đọc, bắt đầu phiên cho bé với ghim ứng dụng

Các bước đã làm

  1. Nghiên cứu và chốt thiết kế. AI so sánh sáu cách làm (bảng dưới), đọc tài liệu chính thức của Android, chọn cách đơn giản nhất đáp ứng đủ yêu cầu.
  2. Viết bible. Mục 0 là “lệnh thực thi cho AI”: làm hết, không dừng ở kế hoạch, tự quyết chi tiết, không dùng cờ bỏ qua quyền, không công bố hay mua gì. Các mục sau chốt trải nghiệm, định dạng game, an ninh WebView, âm thanh, PIN, SDK cho game, công cụ, kiểm thử, định nghĩa “xong”.
  3. Một câu lệnh khởi động. “Đọc toàn bộ bible và thực thi từ đầu đến cuối… không dừng ở kế hoạch và không hỏi tôi các quyết định kỹ thuật thông thường.”
  4. Làm theo sáu mốc, mỗi mốc có cửa kiểm tra. AI chỉ sang mốc sau khi qua cửa, và ghi trạng thái vào BUILD_STATUS.md để phiên sau làm tiếp được nếu bị ngắt.
  5. Bàn giao. APK đã ký và kiểm chữ ký, mã nguồn, 3 game mẫu, khuôn làm game, công cụ đóng gói và xem thử game, hướng dẫn cho bố mẹ, prompt làm game cho AI, báo cáo kiểm thử.
Sáu mốc của bible và “cửa” phải qua
MốcNội dungCửa kiểm tra (rút gọn)
AMôi trường, project, WebView nạp file nội bộChứng minh sớm chạy được HTTPS giả lập cục bộ mà không cần quyền Internet
BTừ thư mục đến gameChép thêm một game vào thư mục thì menu nhận ra, không sửa APK
CPlayer đúng vòng đờiHai game dùng chung khóa lưu không đè nhau; đổi game hay ra nền thì hết tiếng
DĐiều khiển trẻ và phụ huynhKhông có đường từ game tới cài đặt hay bỏ ghim
EQuy trình làm gameMột thư mục mới được đóng gói rồi chạy giống nhau trên trình duyệt và trong app
FBản bàn giaoFile truy xuất được, mã nguồn không chứa bí mật, trạng thái test đúng thực tế
Vì sao chọn “app Kotlin + WebView” (rút gọn từ bible mục 23)
Phương ánVấn đề với yêu cầuQuyết định
Mở game trong trình duyệt hoặc PWAKhông quản lý được nhiều game, phiên chơi, cài đặt phụ huynhKhông chọn
Mỗi game một APKTrái mục tiêu thêm game mà không build lạiKhông chọn
Khung Capacitor, Cordova, FlutterThêm thư viện và cầu nối nhưng không giải quyết thư mục, ghim ứng dụng, vòng đờiKhông cần
Máy chủ HTTP nội bộ trong appThêm cổng mạng, vòng đời, bề mặt tấn côngKhông cần
WebView đọc thẳng thư mụcĐang chép dở thì bé mở trúng bản hỏngKhông ưu tiên
Thư mục → bản nội bộ không đổi → WebViewTốn thêm dung lượng và phải có bộ nạpChọn

Bài học: hãy để AI so sánh các phương án thật sự khác nhau và viết lý do, thay vì hỏi “dùng framework nào tốt nhất”. Đánh giá này đúng cho một app gia đình với nhiều game nhỏ, không phải kết luận chung về framework.

Dựng game

Có hai con đường, cả hai đều cho ra một thư mục HTML chép thẳng vào điện thoại.

A. Game theo SDK của app

Dành cho game cần chạy ổn định trong app, kể cả máy cũ. Hợp đồng gồm: index.html, game.json (mã định danh vĩnh viễn), icon.png và player-sdk.js chép nguyên văn. SDK lo tạm dừng, tắt tiếng, lưu tiến trình, vòng lặp khung hình.

Công cụ: khuôn mẫu MauGame, pack_game.py kiểm tra trước khi giao, preview_game.py xem thử với đúng luật chặn mạng như app. Đã dùng cho 3 game mẫu và 10 game trong KidsGames-1file/.

B. Lô 10 game một file

Dành cho làm nhanh nhiều game chạy cả trên trình duyệt. Mỗi game chỉ là index.html tự chứa và icon.png. Mỗi lô là một file prompt; bốn lô chạy song song trong bốn phiên AI.

Đổi lại, game làm cho trình duyệt mới có thể hỏng trên WebView cũ: trên Android 8 chưa cập nhật, 16/51 game không khởi động. Bài học: ghi rõ thiết bị mục tiêu ngay trong prompt.

Giải phẫu một prompt làm lô game

File games/Bo game 2.md (163 dòng) có sáu phần. Cấu trúc này dùng lại được cho bất kỳ việc “sản xuất hàng loạt” nào: trang web, mẫu báo cáo, bài học, màn hình công cụ.

  1. Yêu cầu gốc, chép nguyên văn lời người. Giữ được tinh thần (“dùng nhiều token và lặp lại cho đến khi bạn tự hào về nó… trước khi nói xong, tự thử như một người dùng thật”).
  2. Bối cảnh: những gì đã có hoặc đang làm ở nơi khác. Danh sách game đã có và 30 game của ba phiên song song, để không trùng ý tưởng, không trùng tên, không đụng thư mục của nhau.
  3. Mười việc cụ thể. Tên, tên thư mục, mô tả lối chơi đủ chi tiết.
  4. Tiêu chuẩn bắt buộc cho mọi game. Một file, chạy offline; tiếng Việt có dấu; bé chưa biết đọc vẫn hiểu nhờ hình và giọng đọc, nhưng không có giọng vẫn chơi được; không phạt, không thua, không đồng hồ ép; mở khóa mọi màn ngay từ đầu; âm thanh tự tổng hợp; chạm và chuột; vừa mọi màn hình từ 360×640 tới 1920×1080; mượt 60 hình/giây; lưu tiến độ; không lỗi console.
  5. Quy trình đã chứng minh hiệu quả. Viết bộ dùng chung trước; làm một game mẫu hoàn chỉnh làm chuẩn; chia các game còn lại cho agent con nhưng phải tự kiểm lại từng cái; ít nhất ba lượt đánh bóng, nhìn ảnh chụp “như một giám đốc nghệ thuật và như một bé 5 tuổi”.
  6. Kiểm thử bắt buộc và mẫu báo cáo. Chơi trọn mỗi game bằng chạm thật ở ba cỡ màn hình, cố ý sai, xoay máy, tải lại, mất mạng; báo cáo cả những gì chưa kiểm được.

Chạy song song có giá: bốn phiên AI cùng mở nhiều Chrome tự động làm máy chậm hẳn, các kiểm thử phụ thuộc thời gian dễ chập chờn, và có lúc chạm giới hạn sử dụng của tài khoản. Hãy để mỗi phiên một thư mục riêng và chấp nhận chạy chậm hơn.

Sửa lỗi bằng handover: câu chuyện bản 1.1.0

  1. Người phát hiện. Trên điện thoại thật, game đọc lời khi mở bằng Chrome nhưng im lặng trong app.
  2. Một phiên AI phân tích, chưa sửa. WebView của Android không có phần đọc của Web Speech API. AI đọc mã của 50 game, thấy ba “họ” mã khác nhau nhưng cùng một cách gọi API, và mọi game đều tự xử lý khi không có giọng.
  3. Người chốt quyết định. App tự cung cấp giọng đọc cho trang game, không sửa game nào. Loại phương án thu âm sẵn từng câu rồi sửa 50 game. Đây là ngoại lệ có chủ đích với một nguyên tắc của bible, nên phải mở thật hẹp và ghi vào sổ quyết định.
  4. Viết handover gồm 9 phần: bối cảnh và quyết định, tài liệu phải đọc, yêu cầu phải đạt, thiết kế đề xuất (có bước “đo nguyên nhân trước khi viết mã”), kiểm thử bắt buộc, bàn giao, môi trường, ràng buộc giữ nguyên, tiêu chí hoàn thành.
  5. Phiên mới làm trọn vẹn. Chỉ một câu: “Đọc handover và làm từ đầu đến cuối”. AI đo lại nguyên nhân, viết mã, và tìm thêm hai lỗi thật mà không ai đoán trước: WebView Android 8 làm hỏng chữ có dấu khi gửi tin nhắn, và Google TTS liệt kê cả giọng chưa tải.
  6. Bằng chứng và giới hạn. 88 unit test, 23/23 test thiết bị trên cả hai emulator, thử cài đè giữ PIN và tiến trình. Báo cáo ghi rõ phần chưa đạt và phần người cần tự thử trên máy thật.
Vì sao handover tốt hơn “sửa giúp tôi” trong lúc chat? Phiên phân tích và phiên sửa tách nhau, nên phiên sửa bắt đầu với ngữ cảnh sạch và một nhiệm vụ đóng gói đầy đủ. Quyết định khó được người duyệt trước, không phải sau. Tiêu chí “xong” có trước khi viết mã, nên không ai tự hạ chuẩn giữa chừng.

Không chỉ game cho trẻ

Bỏ đi chữ “game” và “trẻ em”, dự án này là hai thứ dùng lại được: một mô hình sản phẩm (vỏ an toàn + nội dung cắm vào) và một quy trình làm việc với AI (đặc tả → giao → bằng chứng → handover → ghi nhớ).

Game khác

Game luyện trí nhớ cho ông bà, game ôn bài cho cả lớp, minigame cho sự kiện của cửa hàng. Prompt lô game dùng lại gần như nguyên vẹn, chỉ đổi đối tượng và tiêu chuẩn.

Máy tính bảng tại quầy

Khảo sát khách hàng, đăng ký, xếp hàng, tra cứu sản phẩm. Đúng mô hình của player: khóa máy, chạy offline, mã PIN quản trị, mỗi màn hình là một thư mục HTML thay được.

Công cụ nội bộ

Checklist kiểm tra hiện trường không cần mạng, máy tính báo giá, tài liệu đào tạo tương tác, công cụ xử lý file Excel hay PDF lặp lại hằng ngày.

Tự động hóa, không cần app

Script xử lý dữ liệu, báo cáo định kỳ, website giới thiệu. Quy trình giữ nguyên: đặc tả ngắn, luật không được phá, kiểm thử có bằng chứng, handover khi cần sửa.

Sản phẩm thương mại

Làm được, với điều kiện thêm những phần mà dự án gia đình bỏ qua: pháp lý, phát hành, bảo mật, hỗ trợ khách hàng (xem mục kế tiếp).

Bản đồ chuyển đổi: dự án này → dự án của bạn

Trong repo nàyTrong dự án của bạn
specs/…Bible.mdBản đặc tả sản phẩm (SPEC.md): mục tiêu, phạm vi, mặc định, kiến trúc, kiểm thử, định nghĩa xong
Luật không được phá (AI_PLAYBOOK mục 3)Danh sách ràng buộc: bảo mật, dữ liệu, những thứ không bao giờ đổi
Mốc A–F có cửa kiểm traCác mốc nhỏ, mỗi mốc có điều kiện qua cửa đo được
player-sdk.js, GAME_FORMAT.mdHợp đồng giữa vỏ và nội dung: định dạng, API, công cụ kiểm tra
games/Bo game N.mdPrompt sản xuất theo lô
HANDOVER_TTS_v1.1.0.mdPhiếu yêu cầu thay đổi
DECISIONS.md, BUILD_STATUS.mdSổ quyết định và nhật ký tiến độ
BUILD_REPORT.md, evidence/Báo cáo kiểm thử kèm bằng chứng
AI_PLAYBOOK.mdSổ tay cho AI: bản đồ repo, quy trình, bẫy đã gặp

Nếu muốn bán sản phẩm

Dự án gia đình được phép bỏ qua nhiều thứ mà sản phẩm thương mại thì không. AI giúp được ở hầu hết các việc dưới đây, nhưng trách nhiệm vẫn là của bạn, và các phần pháp lý, bảo mật nên có người có chuyên môn xem lại.

  • Quyền sở hữu. Giấy phép của mã nguồn và thư viện dùng kèm; bản quyền hình ảnh, âm thanh, font, nhân vật. Repo này chưa có giấy phép mở, và hình Gi & Shi là của gia đình tác giả.
  • Dữ liệu người dùng. Chính sách quyền riêng tư; quy định bảo vệ dữ liệu cá nhân nơi bạn bán; với sản phẩm cho trẻ em, các quy định riêng còn chặt hơn. Cách an toàn nhất vẫn là không thu thập gì, như app này.
  • Phát hành. Tài khoản nhà phát triển, yêu cầu về phiên bản Android mục tiêu và chính sách của chợ ứng dụng, quy trình ký và lưu giữ khóa ký, kế hoạch cập nhật.
  • Chất lượng. Thử trên nhiều máy thật của nhiều hãng; hiệu năng trên máy yếu; khả năng tiếp cận (chữ to, tương phản, đọc màn hình); kiểm thử tự động chạy lại mỗi lần sửa.
  • Bảo mật. Nhờ người có chuyên môn rà soát; dùng AI như một người rà soát độc lập (một phiên chỉ đọc, chỉ báo lỗi, không sửa).
  • Vận hành. Hỗ trợ khách hàng, sao lưu, ghi nhận lỗi (nếu có gửi dữ liệu thì phải xin phép), quy trình phát hành có handover và báo cáo như repo này.

Bắt đầu dự án của bạn

  1. Viết một trang “vì sao”. Ai dùng, họ đang khổ vì việc gì, thế nào là thành công, và những gì bạn không muốn (ví dụ: không tài khoản, không quảng cáo).
  2. Để AI phỏng vấn bạn rồi viết đặc tả (prompt 1). Đọc kỹ, sửa, hỏi lại chỗ không hiểu. Đây là bước quan trọng nhất.
  3. Chốt luật không được phá và định nghĩa “xong”: chạy được trên thiết bị nào, kiểm thử nào phải qua, bàn giao gì.
  4. Giao đặc tả cho một agent lập trình (prompt 2). Để nó tự quyết chi tiết; đừng chen vào chọn thư viện.
  5. Đọc báo cáo một cách hoài nghi. Bằng chứng đâu, cái gì NOT_RUN, cái gì cần bạn tự thử.
  6. Tự thử trên thiết bị thật, như người dùng cuối, ở chỗ khó nhất (máy cũ, mạng yếu, người dùng vụng).
  7. Gặp lỗi thì viết handover (prompt 4) và giao cho phiên mới, không sửa vội trong một cuộc chat dài.
  8. Ghi lại bài học vào sổ tay cho AI (prompt 7) trước khi đóng mỗi phiên.

Prompt mẫu

Thay phần trong ngoặc vuông. Các prompt này cố ý dài và cụ thể: với AI, mơ hồ là nguồn gốc của hầu hết kết quả tệ.

1 · Phỏng vấn để viết đặc tả
Tôi muốn làm [mô tả 2–3 câu: cho ai, giải quyết việc gì]. Chưa viết mã.
Hãy phỏng vấn tôi theo từng nhóm câu hỏi (người dùng, việc họ làm, dữ liệu, thiết bị, an toàn và riêng tư, cách phân phối, những gì KHÔNG làm) cho đến khi đủ thông tin.
Sau đó tra tài liệu chính thức của các nền tảng liên quan, so sánh vài phương án thật sự khác nhau, rồi viết SPEC.md để một AI lập trình khác đọc là làm được từ đầu đến cuối, gồm:
- mục 0: lệnh thực thi cho AI (làm hết, không dừng ở kế hoạch, tự quyết chi tiết kỹ thuật, không công bố hay mua gì);
- mục tiêu, phạm vi bản đầu và những gì để sau;
- bảng các mặc định đã chốt; bảng "mong muốn → cam kết thực tế" về giới hạn của nền tảng;
- kiến trúc, ranh giới trách nhiệm, luật không được phá;
- các mốc, mỗi mốc có điều kiện qua cửa đo được;
- ma trận kiểm thử, định nghĩa "xong", mẫu báo cáo với nhãn PASS / FAIL / NOT_RUN / BLOCKED;
- vì sao chọn phương án này.
2 · Giao đặc tả cho agent
Đọc toàn bộ SPEC.md và thực thi từ đầu đến cuối. Tự quyết các chi tiết kỹ thuật thông thường và ghi lý do vào DECISIONS.md; không hỏi tôi chọn thư viện, tên biến, màu sắc.
Làm theo từng mốc; sau mỗi mốc cập nhật BUILD_STATUS.md để có thể làm tiếp nếu bị ngắt.
Chỉ viết "đã kiểm thử" khi đã chạy thật và có log hoặc ảnh; dùng nhãn PASS / FAIL / NOT_RUN / BLOCKED.
Bước nào cần tôi làm trên thiết bị thì ghi rõ từng thao tác và vẫn hoàn thành mọi phần còn lại.
Không xóa dữ liệu, không công bố, không đổi khóa hay mật khẩu khi chưa hỏi tôi.
3 · Sản xuất theo lô (game, màn hình, mẫu…)
Làm [10] [game / màn hình / mẫu tài liệu] theo danh sách dưới đây, mỗi cái trong một thư mục riêng, đúng tên đã ghi.
Đã có hoặc đang được làm ở nơi khác (không làm trùng, không sửa thư mục của chúng): [danh sách].
Danh sách cần làm: [tên — thư mục — mô tả cụ thể].
Tiêu chuẩn bắt buộc cho mọi cái: [thiết bị và trình duyệt mục tiêu, ngôn ngữ, phong cách, khả năng dùng khi mất mạng, kích thước màn hình, hiệu năng, không lỗi console…].
Cách làm: viết phần dùng chung trước; làm một cái mẫu hoàn chỉnh làm chuẩn chất lượng; có thể chia phần còn lại cho agent con nhưng phải tự kiểm thử lại từng cái; đánh bóng ít nhất ba lượt bằng cách xem ảnh chụp.
Trước khi báo xong: tự dùng thử như người dùng thật ở [các kích thước / thiết bị], thao tác thật, cố tình làm sai, tải lại, mất mạng; chụp ảnh; báo cáo bảng kết quả, đã kiểm gì và CHƯA kiểm được gì.
4 · Viết handover cho lỗi hoặc tính năng
Chưa sửa gì. Hãy điều tra vấn đề sau: [mô tả, cách tái hiện, điều mong đợi, thiết bị].
Đo và tìm nguyên nhân thật (đọc mã, chạy thử). Đưa tôi 2–3 phương án kèm ưu nhược điểm để tôi chọn.
Sau khi tôi chọn, viết HANDOVER.md gồm: bối cảnh và quyết định đã chốt; tài liệu phải đọc; yêu cầu phải đạt; thiết kế đề xuất (có bước đo lại trước khi viết mã); kiểm thử bắt buộc; những gì phải bàn giao; ràng buộc giữ nguyên; tiêu chí hoàn thành.
5 · Kiểm thử như người dùng thật
Đừng chỉ đọc mã. Chạy ứng dụng thật (trình duyệt tự động hoặc emulator), thao tác bằng chạm hoặc click thật theo kịch bản: [kịch bản].
Thử ở [kích thước / thiết bị], kể cả máy cũ nhất cần hỗ trợ; mất mạng; tải lại; xoay màn hình; cố tình nhập sai.
Chụp ảnh từng bước, ghi lại lỗi console. Báo cáo bảng PASS / FAIL / NOT_RUN kèm đường dẫn bằng chứng, và danh sách những gì tôi cần tự thử trên thiết bị thật.
6 · Rà soát độc lập
Bạn là người kiểm định độc lập, không phải người viết. Đọc yêu cầu gốc [file] và kết quả hiện tại.
Liệt kê: chỗ chưa đạt yêu cầu, chỗ báo cáo nói quá so với bằng chứng, rủi ro bảo mật và riêng tư (bí mật, đường dẫn máy tính, dữ liệu cá nhân trong repo), việc khó hoàn tác chưa được hỏi.
Không sửa gì, chỉ báo cáo, xếp theo mức nghiêm trọng.
7 · Ghi nhớ cho phiên sau
Trước khi kết thúc: cập nhật AI_PLAYBOOK.md với những gì phiên này học được (lệnh build và test, quyết định mới và lý do, bẫy đã gặp và cách tránh). Viết ngắn, cụ thể, để một phiên AI mới chỉ đọc file này là làm tiếp được. Cập nhật DECISIONS.md và BUILD_STATUS.md nếu có thay đổi.

Lỗi hay gặp khi “vibe code”

LỗiCách tránh
Yêu cầu mơ hồ: “làm app đẹp, dễ dùng”Nói rõ người dùng, việc họ làm, thiết bị, giới hạn, ví dụ cụ thể
Không có định nghĩa “xong”Viết tiêu chí nghiệm thu đo được trước khi giao việc
Tin chữ “đã test xong”Đòi log, ảnh, số test, nhãn NOT_RUN cho phần chưa chạy
Sửa nhiều thứ trong một cuộc chat rất dàiMỗi thay đổi lớn một handover, một phiên mới
AI tự đổi thứ không được đổi (khóa ký, mã định danh, định dạng dữ liệu)Ghi thành luật không được phá, nhắc lại trong mỗi handover
Chỉ thử trên máy của mìnhThử trên thiết bị cũ nhất cần hỗ trợ; người tự thử phần máy không làm được
Lộ bí mật hoặc thông tin máy khi công khaiLoại trừ file bí mật ngay từ đầu; quét toàn bộ, kể cả file nén, trước khi đưa lên
Không ghi lại bài họcSổ tay cho AI, sổ quyết định; cập nhật trước khi đóng phiên

Tài liệu gốc trong repo

▶ Về chơi game Trang chủ