Cẩm nang nội bộ cho team

Làm phần mềm & tool mới với AI —
đúng, chắc, không hồi quy

Hai thứ mỗi thành viên cần: (1) biết dùng GitHub + GitHub Desktop + Claude Code / Codex, và (2) cài bộ skill để AI agent làm việc theo một quy trình có kế hoạch, có test, có memo bàn giao — rút ra từ những lỗi đã gặp thật khi làm các dự án của chúng ta.

careful-engineering là quy trình chung cho mọi loại dự án (web, bot, ứng dụng LLM, dữ liệu, game…). inno-aec thêm luật riêng của INNO cho plugin AutoCAD / Revit, tool tính diện tích – khối lượng và dữ liệu dự án – hợp đồng. caveman (bật khi cần) để AI trả lời gọn.

Windows 10/11Claude CodeOpenAI CodexGitHub DesktopAutoCAD · RevitTiếng Việt

Bắt đầu từ đâu?

BƯỚC 1 · MỘT LẦN

Cài & dùng GitHub, AI agent

Tạo tài khoản GitHub, cài GitHub Desktop, VS Code, Claude Code / Codex, kết nối dự án với repo, Commit / Push / Pull. Dành cho người chưa từng dùng Git.

Mở hướng dẫn A–Z →
BƯỚC 2 · MỘT LẦN

Cài bộ skill

Một lệnh PowerShell. Sau đó mọi phiên Claude Code trên máy bạn đều có quy trình 8 pha của careful-engineering (đọc → hiểu → kế hoạch → làm → kiểm chứng → ghi sổ → commit → deploy) và lệnh /caveman khi muốn AI trả lời gọn.

Cài ngay →
HẰNG NGÀY

Giao việc cho AI đúng cách

Dùng prompt mẫu: bắt AI viết lại yêu cầu + kế hoạch có bước kiểm chứng trước khi sửa, tái hiện lỗi trước khi sửa lỗi, báo cáo bằng số đo.

Xem prompt mẫu →
Nhớ một câu: AI sửa file trên máy bạn — bạn là người review diff, chạy thử, rồi mới Commit → Push. Skill giúp AI tự kiểm chứng kỹ hơn, nhưng không thay được bước review của bạn.

Ba lớp hướng dẫn — cái gì để ở đâu

AI đọc hướng dẫn từ ba nơi. Mỗi điều chỉ nên nằm ở một lớp — lớp thấp nhất mà nó đúng cho mọi trường hợp. Điều đúng cho mọi dự án của bạn để ở lớp 1; điều đúng cho mọi dự án INNO để ở lớp 2; điều chỉ đúng cho một repo để ở lớp 3.

1 · Cá nhân (global)Theo người, đi theo máy. Mọi dự án.
  • %USERPROFILE%\.claude\CLAUDE.md — vài dòng sở thích chung: tiếng Việt, Windows, không push khi chưa bảo, dùng skill nào khi nào. Mẫu · cài bằng -GlobalMemory.
  • Skill careful-engineering — quy trình S/M/L + 8 pha, cách kiểm chứng theo loại dự án.
  • Skill caveman — giọng trả lời gọn (tuỳ thích).
Nạp: CLAUDE.md ở mọi phiên; skill khi việc khớp mô tả hoặc gõ /careful-engineering.
2 · Công ty INNOTheo lĩnh vực. Mọi repo INNO.
  • Skill inno-aec — luật nhà (git trước khi sửa, dữ liệu khách hàng không ra ngoài, số liệu quyết định = mức L), plugin AutoCAD / LISP / Revit, tool tính diện tích – khối lượng, dữ liệu dự án – hợp đồng.
Nạp: khi việc chạm AutoCAD, Revit, bản vẽ, diện tích, hợp đồng, tiền VND… hoặc gõ /inno-aec.
3 · Từng repoTheo dự án. Đi theo git.
  • AGENTS.md (nguồn duy nhất) + CLAUDE.md (chỉ @AGENTS.md) — bản đồ repo, lệnh test, host & phiên bản, luật không được phá.
  • docs/RUNBOOK.md, docs/HANDOFF.md, docs/plans/, sổ bất biến, quyết định.
Nạp: CLAUDE.md/AGENTS.md mỗi phiên trong repo; docs/ khi cần. Mẫu: Dự án mới.
Khi mâu thuẫn: AGENTS.md của repo > inno-aec > careful-engineering > CLAUDE.md cá nhân > thói quen chung của AI

Tám thành phần quanh model — mỗi thứ nằm ở đâu

Nhóm Google Research (harness2) gọi mọi thứ bao quanh model là harness và chia làm 8 thành phần. Đối chiếu với bộ của mình để biết muốn đổi hành vi agent thì sửa ở đâu:

Thành phầnỞ bộ này
System prompt~/.claude/CLAUDE.md (lớp 1) · AGENTS.md / CLAUDE.md của repo (lớp 3)
Guardrails (hàng rào)Quyền của Claude Code / Codex (hỏi trước khi chạy lệnh) · hook · test canh bất biến BI-* · luật "khó lùi ⇒ phải xin phép"
MemoryMemory của Claude Code · docs/HANDOFF.md, DECISIONS.md, OPEN-ISSUES.md
Skillscareful-engineering, inno-aec, caveman + skill ngoài nếu chọn
Tool guidancereferences/windows-unicode.md (shell, PowerShell, tiếng Việt) · docs/RUNBOOK.md
Scriptstemplates/patch.js, mutate.js · build.ps1, script test trong host của từng repo
Subagentsreferences/review-delegation.md: giao việc, review độc lập
PluginsMCP / plugin cài thêm — chỉ cài khi cần, mỗi cái là thêm quyền cho agent

Cài bộ skill

Bộ skill gồm careful-engineering (quy trình, mọi dự án), inno-aec (luật INNO, CAD/BIM, tính toán, dữ liệu hợp đồng) và nhóm caveman: caveman, ultracave, megacave (giọng trả lời gọn — xem mục Caveman). Lệnh cài mặc định chép cả năm. inno-aec chỉ được nạp khi việc thuộc lĩnh vực của nó, nên cài cho máy cũng không làm phiền các dự án khác.

Mở PowerShell (không cần quyền Admin) và chạy:

irm https://darkend16987.github.io/inno-ai-coding-guide/install.ps1 | iex

Mỗi skill được chép vào %USERPROFILE%\.claude\skills\<tên skill>. Nếu đã có bản cũ, bản cũ được đổi tên thành …\<tên skill>.bak-<ngày giờ> (không mất).

Chỉ muốn cài một vài skill: thêm -Skill (cách nhau bằng dấu phẩy):

& ([scriptblock]::Create((irm https://darkend16987.github.io/inno-ai-coding-guide/install.ps1))) -Skill careful-engineering,caveman

Thêm hướng dẫn chung cá nhân (lớp 1) cùng lúc: thêm -GlobalMemory. Script chỉ tạo %USERPROFILE%\.claude\CLAUDE.md khi file đó chưa có; đã có thì để nguyên và lưu mẫu cạnh nó thành CLAUDE.inno-guide.md để bạn tự gộp.

& ([scriptblock]::Create((irm https://darkend16987.github.io/inno-ai-coding-guide/install.ps1))) -GlobalMemory

Kiểm tra: mở một phiên Claude Code mới, gõ /careful-engineering, /inno-aec hoặc /caveman, hoặc hỏi "Which skills are available?" — phải thấy các skill vừa cài.

Chỉ chạy lệnh irm … | iex khi bạn tin nguồn của nó. Muốn xem trước script làm gì: mở install.ps1 — nó chỉ tải ZIP của repo này từ GitHub, sao lưu bản cũ, chép thư mục skill, rồi kiểm tra SKILL.md có mặt. Nó không cài hook, plugin hay chương trình nào của dự án caveman gốc.

Quy trình: chọn mức, rồi đi đúng các pha

Đầu mỗi việc, AI chọn mức theo rủi ro và nói ra một dòng (ví dụ "Mức: M — vì chạm module xuất Excel, revert được"). Mức quyết định làm những pha nào — việc nhỏ không phải đi đủ 8 pha, việc chạm tiền hay dữ liệu thật thì không được bỏ pha nào.

MứcKhi nàoPhải làm
S · NhỏSửa chữ, cấu hình cục bộ, một chỗ hiển nhiên; không đổi hành vi người khác thấy, không chạm dữ liệuĐọc file đích + tìm chỗ dùng · sửa · kiểm cú pháp + test liên quan · commit an toàn
M · ChuẩnTính năng / sửa lỗi trong một vùng, lùi được bằng revertPha 0–4 và 6 · handoff ngắn · test của lỗi đã sửa phải đỏ được (đột biến)
L · NghiêmDữ liệu nghiệp vụ, schema / migration, production, nhiều module, bản phát hành, con số người khác dùng để ra quyết định (tiền, diện tích, khối lượng, hợp đồng)Đủ 8 pha · memo kế hoạch, chờ duyệt rồi mới sửa · đột biến · thử trên app thật có so với mã cũ · sổ bất biến

Phân vân thì chọn mức cao hơn; giữa chừng thấy rủi ro lớn hơn thì AI phải nâng mức và làm bù. Ở mọi mức: không bịa, kiểm chứng trước khi nói xong, commit an toàn. Skill cũng có lối riêng cho dự án mới (dựng khung chạy được trước), prototype (được bỏ ghi sổ, ghi rõ chưa dùng thật được), repo chưa có test (chụp hành vi hiện tại thành golden test trước khi sửa) và không chạy được môi trường thật (kịch bản thử tay).

8 pha

Mỗi pha có một phép kiểm — AI chỉ chuyển pha khi kiểm xong.

0 · Định hướngĐọc AGENTS.md / CLAUDE.md, sổ bất biến, kế hoạch đang làm, handoff gần nhất; git status (chưa có git ⇒ dừng, đề xuất git init); grep mọi nơi bị ảnh hưởng; biết mình chạy được gì (test, app, DB, CI).
✓ Liệt kê được điểm chạm, luật liên quan, cái chưa kiểm được
1 · Hiểu đúng yêu cầuĐọc trước khi hỏi. Viết lại: muốn gì, cho ai, vì sao, tiêu chí đo được, "không làm". Mơ hồ ⇒ hỏi một câu mỗi lượt. Mức M/L ⇒ 2–3 hướng cho người dùng chọn; dự án mới ⇒ thiết kế ngắn được duyệt. Lỗi ⇒ tái hiện.
✓ Hướng đã chọn · số đo "trước khi sửa"
2 · Thiết kế & kế hoạchNguyên nhân gốc, phương án ít thay đổi nhất, các bước kèm cách kiểm. Việc lớn ⇒ memo kế hoạch, chia đợt.
✓ Mỗi bước có verify
3 · Thực hiệnChạy test trước khi sửa; sửa đúng chỗ, đúng style; không thêm ngoài kế hoạch.
✓ Cú pháp + test liên quan sau mỗi bước
4 · Kiểm chứngTest mới phải ĐỎ được (đột biến); toàn bộ lưới test; probe trên app thật, so với mã cũ; mức L: review độc lập bằng agent mới.
✓ "54/54 test · probe 15/15 (mã cũ đỏ 9/15)"
5 · Ghi sổSổ bất biến (căn cứ, luật, hàng rào tự động, mức bảo vệ, "Vỡ khi:"), ma trận test, tài liệu người dùng, memo kế hoạch, handoff.
✓ Phiên sau đọc là làm tiếp được
6 · Commit & pushMột việc một commit; message ghi ra file rồi git commit -F; kiểm lại tiếng Việt; push khi được bảo.
✓ git log -1 không có ký tự vỡ
7 · DeployCổng test xanh, artefact tươi, bump version, build nền, kiểm file trên đĩa, thử chính bản phát hành.
✓ Đo trạng thái thật sau deploy

Luật vàng

Nền tảng: 4 nguyên tắc của Andrej Karpathy — nghĩ trước khi code · đơn giản trước · sửa đúng chỗ · chạy theo mục tiêu kiểm chứng được.

Theo loại dự án — "chạy thật" nghĩa là gì

Quy trình giống nhau; khác nhau ở cách kiểm chứng (pha 4), bẫy hay gặp và cách phát hành. Chọn loại gần nhất với dự án của bạn. Bản đầy đủ: project-types.md.

Kiểm chứng

  • build sạch, không chỉ dev chạy được
  • Mở trang thật, đi đúng hành trình người dùng, đo cả dữ liệu đã ghi
  • Chụp 3 độ rộng (~1440 / 768 / 390), tự chấm, sửa, chụp lại; không bịa số liệu trên trang
  • Đổi rules / RLS ⇒ test trên emulator / DB nháp, thử cả chiều bị cấm

Bẫy

  • Next.js bản mới đổi API — đọc tài liệu đi kèm gói đã cài
  • service_role / Admin SDK bỏ qua RLS — chỉ ở server, không bao giờ NEXT_PUBLIC_
  • Tự viết đăng nhập ⇒ mọi API tự kiểm quyền
  • Tiền là số nguyên

Phát hành

  • Vercel / Firebase thường deploy khi push ⇒ push = phát hành
  • Sau deploy mở URL thật

INNO · plugin CAD/BIM, tool tính toán, dữ liệu dự án

Skill inno-aec là lớp công ty: nó không lặp lại quy trình, chỉ thêm luật và kinh nghiệm riêng của lĩnh vực. Phần AutoCAD đã được đo thật trên một plugin AutoCAD 2024 của team; phần Revit hiện là kiến thức chung về API (team chưa có dự án Revit) — dự án Revit đầu tiên nên kiểm lại và gửi bổ sung.

Luật nhà

  1. Có git trước khi sửa. Thư mục chưa là repo ⇒ git init, .gitignore, commit nguyên trạng, tạo repo Private — rồi mới cho AI sửa.
  2. Con số người khác dùng để ra quyết định = mức L: diện tích, GFA, khối lượng, tiền hợp đồng, lương.
  3. Dữ liệu khách hàng và công ty không ra ngoài: không vào repo public, không gửi API LLM bên ngoài khi chưa được duyệt; mẫu thử đã ẩn danh.
  4. AGENTS.md ghi host & phiên bản: AutoCAD / Revit năm nào, target .NET, lệnh test ngoài host và trong host, nơi phát hành.
  5. Plugin phát hành: thử GUI + ít nhất 2 máy đồng nghiệp; có cài và gỡ; hiển thị version; không tự đổi cài đặt bảo mật của máy người dùng.
  6. LLM mặc định: Gemini qua google-genai. Tiền VND: số nguyên.

Kiểm chứng plugin AutoCAD mà không cần mở AutoCAD

1 · BUILDPlugin + DLL test có lệnh …_SELFTEST
→
2 · SCRIPT .SCRASCII: TRUSTEDPATHS, NETLOAD, lệnh tự kiểm, QUIT
→
3 · ACCORECONSOLE/isolate profile riêng — không đụng cài đặt AutoCAD thật
→
4 · ĐỌC LOGfail=0 và số kiểm tra > 0; plot PNG để xem bằng mắt

Palette, ribbon, hộp thoại, nhấp đúp không chạy được trong accoreconsole ⇒ kịch bản thử tay trên GUI trong docs/RUNBOOK.md, và báo cáo phải ghi "chưa thử trên GUI".

Đọc trong skill

AUTOCAD

.NET, LISP, accoreconsole

Target theo năm, Transaction, LockDocument, SECURELOAD, bundle autoloader, LISPSYS, đọc DWG ngoài AutoCAD, TCVN3 / VNI.

Mở autocad.md →
REVIT

Add-in theo năm

.NET 8 ↔ 4.8, đơn vị feet, Transaction, ExternalEvent, .addin, xung đột DLL, test khi không có chế độ không giao diện.

Mở revit.md →
TÍNH TOÁN

Diện tích, GFA, khối lượng

Định nghĩa có căn cứ, đơn vị bản vẽ, bẫy hình học, làm tròn khác Excel, golden test, đối chiếu chéo.

Mở calc-quantities.md →
DỮ LIỆU

Dự án, hợp đồng, nhân sự

Nguồn Excel / hệ thống nội bộ, tiền & VAT, mã là chuỗi, máy trạng thái hợp đồng, dữ liệu cá nhân, quyền truy cập.

Mở business-data.md →
INNO cần chốt (skill đang dặn AI hỏi khi gặp): kênh phát hành plugin nội bộ và người duyệt · các năm AutoCAD / Revit công ty đang dùng thực tế · loại dữ liệu nào được gửi tới API LLM bên ngoài.

Skill & công cụ bên ngoài — dùng hay không

Ba dự án được đánh giá cao trên GitHub mà team đã xem xét. Nguyên tắc chung: mỗi loại việc chỉ một skill chỉ huy quy trình — hai quy trình cùng tự kích hoạt trên một việc sẽ giành nhau (hai chỗ lưu kế hoạch, hai luật test khác nhau). Ý hay của skill ngoài thì viết lại vào bộ của mình, có ghi nguồn.

Dự ánLà gìTeam dùng thế nào
obra/superpowers
MIT
Quy trình đầy đủ cho agent: làm rõ ý định → kế hoạch → subagent làm từng việc + review → TDD → kết thúc nhánh.Không cài song song với careful-engineering. Đã viết lại vào bộ của mình: gỡ lỗi có hệ thống (debugging.md), làm rõ ý định ở pha 1, thiết kế ngắn + "trọng tâm review" trong kế hoạch, giao việc & review độc lập (review-delegation.md), câu chữ báo hiệu "chưa kiểm", cách thử skill. Không lấy: TDD tuyệt đối (xoá code viết trước test), bắt buộc git worktree, cho agent tự chạy hàng giờ không chờ duyệt.
leonxlnx/taste-skill
MIT
Skill thiết kế giao diện web: chọn phong cách từ thư viện, ảnh thật, tự chụp màn hình và sửa.Tuỳ chọn cho landing page, trang sự kiện, portfolio. Cài từ nguồn gốc (cần Node 22+, Chrome / Edge); mỗi repo một skill thiết kế. Đã lấy vào project-types.md: chụp 3 độ rộng rồi tự chấm, không bịa số liệu, tránh "mặt tiền mặc định của AI".
google-research/harness2
Apache-2.0
Framework nghiên cứu tối ưu "harness" của agent trên benchmark (Linux, Vertex AI).Không dùng làm công cụ. Lấy hai ý: bảng 8 thành phần (mục 3 lớp) và vòng "đề xuất → chạy thử → chỉ giữ bài học có bằng chứng" cho việc sửa skill (evals/).
npx skills add https://github.com/Leonxlnx/taste-skill --skill "design-taste-frontend"

Lệnh cài taste-skill theo README của dự án gốc (cần Node.js). Đọc README đó trước khi cài; skill tự tìm và tải ảnh trên mạng — kiểm nguồn và ghi công ảnh trước khi đưa lên trang thật.

Bộ skill của mình cũng phải được đo

Thư mục evals/ chứa các tình huống thử (có cả tình huống bị thúc ép: "6 giờ rồi, commit luôn, test để mai"). Muốn sửa một skill: chạy tình huống khi không có skill và khi có, chấm theo danh sách "phải có / không được", và chỉ nhận thay đổi khi số đo tốt lên mà các tình huống cũ không tụt.

Skill caveman — AI trả lời gọn, đủ ý

caveman (Julius Brussee, Apache-2.0) là một giọng trả lời: nói kết quả trước, bỏ câu chào, rào đón, tóm tắt lại và câu mời. Code, lệnh, đường dẫn, con số và thông báo lỗi giữ nguyên văn. Skill chỉ đổi cách AI viết trong khung chat, không đổi cách AI làm việc. Vì vậy dùng chung với careful-engineering được.

LệnhTác dụng
/cavemanGiọng gọn (mặc định). Giữ đủ câu khi bỏ chữ có thể làm hiểu sai.
/ultracaveGọn tối đa: câu cụt, mỗi ý một lần. Hợp với người đã quen dự án.
/caveman statusCho biết chế độ đang bật, không đổi gì.
stop caveman hoặc normal modeTrở lại cách viết bình thường.
/megacaveTrả lời bằng Hán văn cổ. Team mình không cần; có trong bộ cài chỉ để lệnh /caveman wenyan của bản gốc không bị lỗi.

Khi nào nên bật

Những gì caveman không cắt

Skill tự quay về câu đầy đủ khi: cảnh báo bảo mật, xin xác nhận thao tác khó lùi (push, deploy, xoá), liệt kê các bước theo thứ tự, bạn hỏi lại vì chưa hiểu, và AI hỏi bạn. Mọi thứ được ghi ra ngoài khung chat cũng viết bình thường: code, comment, commit message, tài liệu, memo bàn giao, sổ bất biến. Nghĩa là các pha 5–6 của careful-engineering không bị ảnh hưởng. Skill viết theo ngôn ngữ của bạn: hỏi tiếng Việt thì trả lời tiếng Việt, chỉ gọn hơn.

Đừng kỳ vọng tiết kiệm nhiều token. Chính tác giả đã đo một lần (Claude Opus 5.5, 10 câu hỏi, chỉ đo độ dài): caveman chỉ ngắn hơn câu lệnh "Answer concisely." khoảng 3% — nằm trong sai số; ultracave ngắn hơn khoảng 35%. Tác giả không công bố số đo nào về việc chất lượng câu trả lời có giữ nguyên hay không. Lợi ích chính là dễ đọc hơn, không phải rẻ hơn. Khi AI báo cáo theo careful-engineering, vẫn đòi đủ số đo và phần chưa kiểm. Caveman làm câu ngắn lại, nhưng không được bỏ nội dung.

Bộ cài của trang này chỉ chép các file SKILL.md. Bản cài đầy đủ của dự án gốc còn có hook (tự bật caveman ở mọi phiên), proxy và nhiều công cụ khác. Muốn dùng những thứ đó thì đọc README của dự án gốc và tự quyết định.

Prompt mẫu — sao chép, sửa phần <…>

1. Làm quen một repo (chưa sửa gì)

Dùng skill careful-engineering, pha 0. Đọc AGENTS.md / CLAUDE.md / README / cấu trúc thư mục và giải thích bằng tiếng Việt: dự án làm gì, công nghệ, cách chạy và chạy test, các file quan trọng, những chỗ dễ vỡ. Chỉ đọc và báo cáo — chưa sửa file nào. Chỗ nào không chắc thì nói là không chắc.

2. Làm một tính năng

Dùng skill careful-engineering để làm: <mô tả tính năng>. Trước khi sửa: nói mức (S/M/L) và vì sao, viết lại yêu cầu bằng lời của bạn + tiêu chí thành công đo được, các file sẽ chạm, kế hoạch từng bước kèm cách kiểm chứng, và những gì tuyệt đối không được đổi. Chỗ nào mơ hồ thì hỏi tôi (kèm phương án bạn khuyến nghị). Chờ tôi duyệt kế hoạch rồi mới sửa. Khi làm: test trước và sau, test mới phải đỏ được, chạy thử trên app thật, báo cáo bằng số đo và nói rõ phần nào chưa kiểm.

3. Sửa một lỗi

Dùng skill careful-engineering. Lỗi: <mô tả triệu chứng, cách bấm để thấy lỗi>. Bắt buộc: (1) tái hiện lỗi có chủ đích và ghi số đo trước khi sửa; (2) tìm nguyên nhân gốc theo references/debugging.md (hệ nhiều tầng thì đo ở từng ranh giới trước), không vá triệu chứng — sửa hỏng 3 lần thì dừng lại bàn với tôi; (3) viết test tái hiện lỗi — phải đỏ trên mã cũ; (4) sửa; (5) chạy toàn bộ test + thử trên app thật, so với mã cũ; (6) ghi một mục vào sổ chống hồi quy. Không sửa gì ngoài phạm vi lỗi này — thấy lỗi khác thì báo riêng.

4. Commit (chưa push)

Commit thay đổi vừa rồi theo quy ước của repo (xem AGENTS.md / CLAUDE.md: có dấu hay không dấu). Stage đúng từng file của việc này, không commit secret / build output. Viết message ra file rồi git commit -F; thân message nêu nguyên nhân, cách sửa, số đo kiểm chứng và phần chưa kiểm. Commit xong đọc lại git log -1 để chắc tiếng Việt không bị vỡ. Chưa push.

5. Kết thúc phiên — bàn giao

Cập nhật memo bàn giao (docs/HANDOFF.md, khối mới nhất ở trên cùng): đã làm gì (commit + số đo), nghiệm thu, trạng thái git/deploy, phần CHƯA kiểm, việc tôi cần làm, bước kế tiếp, quyết định bạn tự làm mà phiên sau có thể đảo, lỗi của chính bạn trong phiên và luật rút ra.

6. Khởi tạo dự án mới

Dùng skill careful-engineering. Khởi tạo dự án <tên> bằng <công nghệ> trong thư mục hiện tại: tạo AGENTS.md theo mẫu https://darkend16987.github.io/inno-ai-coding-guide/starter/AGENTS.md (điền đúng lệnh chạy và test), CLAUDE.md theo mẫu https://darkend16987.github.io/inno-ai-coding-guide/starter/CLAUDE.md (chỉ nhập AGENTS.md), docs/RUNBOOK.md theo mẫu https://darkend16987.github.io/inno-ai-coding-guide/starter/docs/RUNBOOK.md (chỉ ghi điều đã chạy thật, còn lại để CHƯA BIẾT), .gitignore phù hợp, docs/HANDOFF.md, một test chạy được ngay, và README ngắn. Chưa viết tính năng. Cuối cùng liệt kê file đã tạo và lệnh để tôi kiểm tra.

7. Viết / cập nhật RUNBOOK (để AI tự kiểm trên app thật)

Dùng skill careful-engineering. Viết hoặc cập nhật docs/RUNBOOK.md theo mẫu https://darkend16987.github.io/inno-ai-coding-guide/starter/docs/RUNBOOK.md: tìm trong repo cách cài, khởi động, dấu hiệu sẵn sàng, dữ liệu thử, lấy log, dọn dẹp — rồi CHẠY THẬT từng bước. Chỉ ghi điều đã thấy chạy (kèm ngày); giá trị nào là cố định / mặc định / cấu hình / quan sát được thì ghi rõ; điều chưa xác minh để ở mục CHƯA BIẾT. Không dùng dữ liệu production, không in secret. Dừng đúng những tiến trình bạn đã mở.

8. Biến một luật thành hàng rào tự động

Dùng skill careful-engineering, references/invariants.md. Luật: <mô tả, ví dụ "UI không được gọi thẳng DB">. Căn cứ: <quyết định / lỗi đã gặp / spec>. Trước khi viết check: ghi ranh giới (phạm vi, ví dụ được phép, ví dụ bị cấm, ngoại lệ, thông báo khi đỏ) — chỗ nào có hai cách hiểu thì hỏi tôi. Gắn check vào lệnh test sẵn có, chứng minh hai chiều (ca hợp lệ xanh, đưa vi phạm vào thì đỏ đúng thông báo), ghi mục BI vào docs/REGRESSION-GUARD.md, và báo riêng từng mức bảo vệ: chạy tay / hook / CI / chặn merge. Không tự sửa CI hay branch protection.

9. Đưa một thư mục dự án chưa có git vào git

Thư mục này chưa là git repo. Chỉ làm các việc sau, chưa sửa code: (1) liệt kê file có thể là secret (.env, token, client_secret, *.pem, file mật khẩu), file build output, file lớn > 50 MB, file dữ liệu khách hàng; (2) đề xuất .gitignore theo công nghệ của dự án; (3) sau khi tôi duyệt: git init, thêm .gitignore, commit nguyên trạng với message "chore: dua du an vao git (nguyen trang)", rồi chạy git status và liệt kê những gì đã bị bỏ qua. Không push.

10. INNO · plugin AutoCAD mới

Dùng skill careful-engineering và inno-aec. Khởi tạo plugin AutoCAD <tên> cho AutoCAD <năm>: <lệnh làm gì>. Trước khi viết: xác nhận target .NET theo năm, nơi lấy DLL của AutoCAD trên máy này, và hỏi tôi nếu cần hỗ trợ nhiều năm. Dựng khung theo inno-aec (Core tách khỏi phần gọi AutoCAD, unit test cho Core, test trong accoreconsole với profile cách ly, build.ps1 một lệnh, AGENTS.md có mục Host & phiên bản). Lệnh đầu tiên chỉ cần chạy được từ đầu tới cuối trong accoreconsole và ghi log pass/fail. Phần cần giao diện thì viết kịch bản thử tay vào docs/RUNBOOK.md.

11. INNO · sửa / mở rộng tool tính diện tích – khối lượng

Dùng skill careful-engineering và inno-aec (references/calc-quantities.md). Việc này là mức L. Yêu cầu: <mô tả>. Trước khi sửa: (1) nêu định nghĩa diện tích / quy tắc tính đang dùng và căn cứ của nó — không có căn cứ thì hỏi tôi chỗ tìm; (2) nếu chưa có golden test thì chụp kết quả hiện tại trên các bản vẽ mẫu thành golden; (3) viết kế hoạch, chờ tôi duyệt. Khi xong: bảng chênh lệch từng ca giữa mã cũ và mã mới, giải thích mọi chênh lệch, đối chiếu với lệnh AREA của AutoCAD, nêu rõ quy tắc làm tròn và danh sách đối tượng bị loại.

12. INNO · add-in Revit

Dùng skill careful-engineering và inno-aec (references/revit.md). Add-in Revit <năm>: <mô tả>. Đưa tối đa logic vào thư viện Core không tham chiếu RevitAPI và unit test nó; phần gọi Revit API mỏng nhất có thể, mọi thay đổi trong Transaction có tên, cửa sổ không modal thì dùng ExternalEvent, chuyển đơn vị feet ở biên. Máy này không chạy được Revit tự động ⇒ viết kịch bản thử tay (file .rvt mẫu, bước bấm, kết quả đo được) và báo cáo tách rõ phần đã test / chưa test. Điều nào về Revit API bạn chưa kiểm được trên đúng năm thì nói là chưa kiểm.

13. Review độc lập trước khi merge

Dùng skill careful-engineering, references/review-delegation.md. Giao cho một subagent MỚI review các commit <BASE_SHA>..<HEAD_SHA> theo yêu cầu / kế hoạch ở <đường dẫn>. Reviewer chỉ đọc, trả hai kết luận riêng: (1) đúng yêu cầu chưa — thiếu, thừa, hiểu lệch, và mục nào không kiểm được chỉ từ diff; (2) chất lượng — lỗi, ca biên, test có đỏ được không, có phá BI nào không; xếp mức Nghiêm trọng / Quan trọng / Nhỏ. Sau đó bạn tự kiểm từng phát hiện với code thật, sửa cái đúng, phản biện cái sai kèm bằng chứng, và báo tôi bảng kết quả.

14. Thiết kế trước khi làm (dự án mới / việc lớn)

Dùng skill careful-engineering, pha 1. Tôi muốn: <mô tả>. Đọc những gì đã có trước khi hỏi. Mỗi lượt hỏi tôi một câu — câu ảnh hưởng nhiều nhất tới cái sẽ làm. Khi đủ hiểu: đưa 2–3 hướng làm kèm đánh đổi và khuyến nghị, chờ tôi chọn; rồi viết bản thiết kế ngắn theo references/memo-handoff.md §0 (mục tiêu, thành công đo được, không làm, thất bại dù đúng kỹ thuật, ràng buộc, hướng đã chọn) vào docs/plans/active/. Chưa viết code, chưa lập kế hoạch chi tiết cho tới khi tôi duyệt thiết kế.

Checklist: bắt đầu một phần mềm / tool mới với GitHub + AI

Đọc skill ngay trên trang

Nội dung dưới đây được nạp trực tiếp từ thư mục skills/ của repo — luôn là bản mới nhất.

careful-engineering
careful-engineering · references
careful-engineering · templates
inno-aec · INNO
caveman

Chọn một file bên trái.

Hỏi đáp

Skill có làm AI chậm hơn không?
Có, với việc lớn — AI sẽ đọc kỹ, lập kế hoạch và kiểm chứng trước khi báo xong. Đổi lại là ít phải làm lại, ít lỗi lọt lên bản chính. Với việc vặt, skill cho phép rút gọn.
Vì sao tách careful-engineering và inno-aec?
careful-engineering là cách làm — đúng cho mọi dự án, kể cả dự án cá nhân không liên quan tới công ty. inno-aec là kiến thức lĩnh vực — AutoCAD, Revit, diện tích, hợp đồng — chỉ nạp khi việc chạm tới lĩnh vực đó. Tách ra thì mỗi skill ngắn hơn, AI chỉ đọc cái cần, và cập nhật luật công ty không đụng quy trình chung. Điều chỉ đúng cho một repo thì không thuộc skill nào — viết vào AGENTS.md của repo đó.
Dự án của tôi chưa có test nào — AI làm sao "test trước và sau"?
Skill dặn AI không tự dựng framework lớn khi không được giao, mà chụp hành vi hiện tại của đúng vùng sắp sửa thành golden test (đầu vào cố định → so với đầu ra đã lưu), chạy bằng một lệnh, ghi lệnh vào AGENTS.md. Việc mức L mà không kiểm tự động được thì AI đề xuất dựng lưới test thành một đợt riêng, làm trước.
Có nên cài thêm superpowers không?
Không cài song song với careful-engineering: cả hai tự kích hoạt trên cùng loại việc, lưu kế hoạch ở hai chỗ khác nhau và có luật test khác nhau (superpowers bắt TDD tuyệt đối, kể cả xoá code đã viết trước test — không hợp với plugin CAD hay code cũ chưa có test). Những phần hay nhất của nó đã được viết lại vào careful-engineering, có ghi nguồn — xem mục Skill ngoài. Muốn thử nguyên bản thì dùng ở một repo riêng và gỡ careful-engineering khỏi repo đó.
Tôi đã có skill karpathy-guidelines, có xung đột không?
Không. careful-engineering kế thừa nguyên 4 nguyên tắc đó và thêm quy trình + bài học thực tế. Có thể giữ cả hai.
AI vẫn hỏi lại tôi nhiều không?
Skill dặn AI chỉ hỏi khi yêu cầu có từ hai cách hiểu dẫn tới kết quả khác nhau mà code không trả lời được, hoặc trước thao tác khó lùi (push, deploy, xoá). Còn lại AI nêu giả định một dòng rồi làm.
Commit message nên có dấu tiếng Việt không?
Theo quy ước của từng repo (ghi trong AGENTS.md / CLAUDE.md). Có repo cấm dấu vì PowerShell làm vỡ mã hoá. Dù chọn cách nào: ghi message ra file rồi git commit -F, sau đó xem lại git log -1 — thấy †hoặc à là vỡ, sửa trước khi push.
caveman có làm AI bớt cẩn thận không?
Không nên, vì caveman chỉ đổi cách viết trong chat, còn quy trình vẫn do careful-engineering quyết. Nhưng câu càng ngắn càng dễ thiếu chữ "chưa", "không". Nếu thấy báo cáo mơ hồ, gõ stop caveman và hỏi lại. Báo cáo cuối việc lớn nên đọc ở chế độ thường.
Cập nhật skill khi repo này có bản mới?
Chạy lại lệnh cài. Bản đang có được sao lưu thành <tên skill>.bak-<ngày giờ> trước khi thay. caveman trong repo này là bản chép nguyên văn từ dự án gốc (commit ghi trong skills/caveman/NOTICE); team chủ động chép lại khi bản gốc có thay đổi đáng giá.
Muốn góp thêm bài học / bẫy mới?
Mở Pull Request vào repo, sửa file trong skills/careful-engineering/references/. Ghi bài học dưới dạng: chuyện gì đã xảy ra (đã đo), luật rút ra, cách áp dụng. Sửa luật của skill thì thêm hoặc chạy tình huống thử trong evals/, ghi số đo trước / sau vào Pull Request. Không đưa số liệu / tên khách hàng / dữ liệu nội bộ vào.