Working with Claude - ntphiep/zhesen-main GitHub Wiki
Viết cho người giao việc và nghiệm thu, không phải cho người đọc code. Nguồn ở cuối trang.
- Mỗi việc giao ra phải kèm một phép kiểm tra máy chạy được. Không có nó thì tín hiệu duy nhất để dừng là "trông có vẻ xong", và người kiểm tra trở thành bạn.
- Việc gì bắt buộc phải xảy ra thì đặt vào hook, đừng viết thành câu dặn. Câu dặn là gợi ý, hook là bắt buộc.
- Một prompt một vấn đề, và chỉ đúng file cần sửa. Một prompt liệt kê năm vấn đề cho kết quả tệ hơn năm prompt liệt kê một vấn đề.
- Sửa hai lần không xong thì
/clearrồi viết lại prompt. Mức tuân thủ instruction giảm dần theo độ dài session. - Không nhận "đã xong" khi chưa thấy bằng chứng: output lệnh, số đo, hoặc ảnh màn hình.
Năm phần. Thiếu phần nào thì phần đó do model tự đoán.
[triệu chứng hoặc mục tiêu]
[chỗ cần nhìn: tên file, tên hàm, hoặc đường dẫn]
[file đã làm đúng việc tương tự, bảo bắt chước theo]
["xong" nghĩa là gì, đo bằng cách nào]
[chạy phép kiểm tra đó rồi dán kết quả]
| Prompt kém | Prompt tốt |
|---|---|
| "sửa cái wordlist bị lỗi" | "Import CSV mất dòng cuối khi file không có newline ở cuối. Xem lib/wordlist/csv.ts. Viết test fail tái hiện lỗi trước, rồi sửa, rồi chạy npx vitest related --run lib/wordlist/csv.ts và dán output." |
| "làm trang tra cứu nhanh hơn" | "/dictionary/en/hello mất 300 ms mỗi lần vào. Xem app/dictionary/[lang]/[id]/page.tsx và cách app/grammar/[lang]/[id]/page.tsx khai generateStaticParams. Sửa theo khuôn đó, build lại, đo 20 lần vào trang và dán bảng số." |
| "thêm chế độ luyện tập mới" | Việc này cần spec, không phải một prompt. Xem mục dưới. |
Prompt dài là dấu hiệu việc đó đáng nằm trong một file.
- Nói: "phỏng vấn tôi về việc này bằng
AskUserQuestioncho tới khi đủ, rồi ghi spec ra scratchpad". Trả lời từng câu hỏi. - Đọc lại spec, sửa chỗ sai.
-
/clear, mở session mới với đúng một câu: "thực hiện spec ở<đường dẫn>".
Spec tốt tự đứng được: nêu tên file và interface liên quan, nói rõ cái gì nằm ngoài phạm vi, và kết thúc bằng một bước nghiệm thu đầu cuối.
- "Dán output lệnh, đừng kể lại."
- "Không sửa test cho qua. Test fail là phát hiện, báo kèm output."
- "Build lại rồi mở app bấm thử, gửi ảnh màn hình."
Test xanh không phải bằng chứng đủ mạnh. Model có xu hướng làm cho bộ test nhìn thấy được đi qua, và khoảng cách với bộ test giấu đi nới rộng theo cỡ codebase.
Bốn lớp, xếp theo thứ tự chúng được nạp vào context.
graph TB
A["AGENTS.md<br/>nạp mọi session"] --> B["rules/tooling.md<br/>nạp mọi session"]
B --> C["rules/frontend.md · database.md · testing.md<br/>chỉ nạp khi mở file khớp paths:"]
C --> D["skills<br/>chỉ nạp khi gọi"]
D --> E["agents<br/>chạy trong session riêng"]
| Thứ | Chỗ | Nó làm gì |
|---|---|---|
| Quy ước code | AGENTS.md |
Dưới 200 dòng, chỉ chứa thứ đọc code không suy ra được |
| Verify gate | .claude/hooks/verify-gate.ps1 |
Chặn kết thúc lượt nếu lint, type hoặc test liên quan còn hỏng |
| Rule luôn nạp | .claude/rules/tooling.md |
Khai cái gì đã cài, MCP nào dùng cho việc nào |
| Rule theo đường dẫn |
frontend.md, database.md, testing.md
|
Chỉ nạp khi model mở file khớp paths:, nên không tốn context ở việc khác |
| Tóm tắt đầu session | .claude/hooks/session-digest.ps1 |
Mỗi lần mở, resume hoặc /clear: in việc mở trên board, các worktree đang có người làm, và thay đổi từ session trước |
| Chặn sửa main checkout | .claude/hooks/worktree-guard.ps1 |
Từ chối sửa file trong main checkout, bảo session vào worktree riêng |
Mỗi session làm trong một worktree riêng. Worktree là một thư mục làm việc riêng của git,
dùng chung lịch sử với repo. Main checkout, tức thư mục repo gốc
C:\Users\Hiep\Desktop\zhesen\zhesen-main, chỉ để đọc. Khi mọi session sửa chung một thư
mục, verify gate của session này chặn vì file dở dang của session khác.
- Mở session: gõ
claude -w <tên-việc>, hoặc mởclaudenhư thường. Claude tự vào worktree trước lần sửa đầu tiên. Worktree mới nhận sẵn.env.localvà ghi chú của các subagent (.claude/agent-memory/), nên implementer, reviewer và qa-runtime vẫn nhớ những gì đã học. - Đầu session, Claude nhận bản tóm tắt: việc mở trên board theo priority, session nào đang
làm ở worktree nào với file nào chưa commit, và commit, issue, trang wiki đã đổi từ lần mở
session trước. Main checkout cũng được cập nhật lên
mastermới nhất lúc đó. Mạng chậm thì bản tóm tắt vẫn ra trong khoảng 20 giây và ghi rõ phần nào chưa lấy được. - Xong việc,
/shiprebase lênmaster, chạy verify, push, chép ghi chú mới của subagent về main checkout, rồi xoá worktree.
Gõ trực tiếp, hoặc mô tả việc rồi Claude tự chọn.
| Skill | Gõ | Nó làm gì |
|---|---|---|
| Làm một issue | /fix-issue 33 |
Đọc issue, lập kế hoạch nếu cần, sửa, viết test, review, commit |
| Nghiệm thu UI | /verify-ui |
Build, chạy, bấm thử, đo cả ở kích thước điện thoại, dán bằng chứng |
| Đưa lên production | /ship |
Kiểm tra sạch, push, theo dõi CI, đọc trạng thái bản deploy |
/ship chỉ chạy khi bạn gõ. Claude không tự gọi nó, vì nó đẩy thẳng lên production.
Nằm ở .claude/agents/. Không cần nhớ tên: nói việc cần làm, Claude tự chọn theo phần mô tả
trong từng file.
graph LR
P["planner<br/>lập kế hoạch"] --> I["implementer<br/>viết code"]
I --> T["tester<br/>viết và chạy test"]
T --> R["reviewer<br/>soi diff"]
R --> Q["qa-runtime<br/>bấm thử trên browser"]
Q --> B["backlog<br/>giữ issue và wiki"]
Ba điều đáng biết trước khi bảo chia việc.
Mỗi agent là một session Claude riêng, nên chia việc tốn nhiều hơn làm thẳng. Chỉ đáng chia khi việc tự chứa và kết quả trả về ngắn hơn quá trình làm: đọc log, bấm thử browser, quét cả repo. Sửa vài dòng thì làm thẳng rẻ hơn.
Anthropic khuyên bắt đầu với ba tới năm agent chạy cùng lúc, và nói thẳng rằng ba agent tập trung thường hơn năm agent tản mát.
Agent xong việc phải dừng. Một agent còn chạy vẫn tiêu token.
Muốn ép chia việc thì nói "chia việc cho các agent". Muốn làm thẳng thì nói "làm inline".
implementer, reviewer và qa-runtime giữ một bộ nhớ riêng giữa các session. Chúng ghi
lại loại lỗi đã lặp lại và luồng hay hỏng, để lần sau soi chỗ đó trước. Bộ nhớ này nằm ngoài
repo và không đi theo máy khác.
- Claude Code best practices
- Agent teams — ba tới năm agent, mỗi agent là một session riêng
- Subagents
- Worktrees
- Hooks
- Effective context engineering
- SpecBench — reward hacking trên bộ test nhìn thấy được
- Instruction adherence in coding agent config files