Khám phá Learn Stream About Jokes
COHORT 2 Foundation — Claude Code — 3 buổi Zoom · 21 · 24 · 28/07, 20:00 Đăng ký →
Playbook

Spec Kit — bộ kit thứ tư, đứng cạnh buildflow

Tám bước, mười lệnh /speckit.*. Cùng một bộ xương với buildflow: artifact trước, code sau — nhưng cổng của nó hỏi thay vì chặn.

GitHub Spec Kit là bộ kit thứ tư trên cùng một trục: từ kỷ luật tới tự trị. Nó đứng cạnh buildflow — cùng một bộ xương, artifact trước rồi mới tới code.

Khác biệt nằm ở cái cổng. Cổng của buildflow chặn. Cổng của Spec Kit hỏi, rồi để bạn quyết định đi tiếp hay không.

Chọn tình huống của bạn ở phần Playbook để xem đúng các bước cần gõ.

Session 3 · Kit thứ tư · Đặc tả

Spec Kit
Viết rõ cái gì trước khi
bàn tới làm sao.

Của GitHub. Tên phương pháp là Spec-Driven Development. Ý chính rất gọn: thay vì mô tả một câu rồi để AI đoán tiếp, bạn để lại một chuỗi artifact — luật nền, đặc tả, kế hoạch, danh sách task — và mỗi artifact phải đứng vững trước khi artifact sau được sinh ra. Code là thứ ra cuối cùng, không phải đầu tiên.

Trong hộp: 10 lệnh · 7 lõi · 3 tuỳ chọn Tất cả đều có tiền tố /speckit.
01

Nó là cái gì, gói trong một câu

Không phải một danh sách tính năng. Là một lời từ chối.

Lời hứa của Spec Kit

Máy không được phép đoán cái bạn chưa nói rõ.
Nó phải hỏi lại — rồi ghi câu trả lời vào đặc tả.

README gọi đây là intent-driven development: đặc tả định nghĩa cái gì trước làm sao. Kèm ba nguyên tắc nữa — đặc tả giàu chi tiết có lan can, tinh chỉnh nhiều bước thay vì sinh code một phát, và dựa nhiều vào năng lực của mô hình để đọc hiểu đặc tả.

02

Tám lệnh, và chỗ bạn bắt buộc có mặt

Thứ tự chuẩn chạy từ trái sang phải. Ô tím đậm là chỗ bạn phải trả lời; ô viền mảnh là chỗ máy chạy một mình. Ba lệnh có nhãn optional — bỏ được, nhưng đó chính là ba cái cổng.

ARTIFACT SINH RA constitution.md spec.md spec.md ↑ plan.md tasks.md báo cáo checklists/ code constitution specify clarify plan tasks analyze checklist implement 123 456 78 Nó hỏi bạn tối đa 5 câu Nó hỏi để dựng checklist không ghi file nào checklist chưa tick hết → nó dừng, hỏi bạn OPTIONAL OPTIONAL converge → tasks.md Chạy sau implement: đối chiếu code với artifact, rồi nối thêm phần còn thiếu vào cuối tasks.md.

Còn hai lệnh nữa ngoài khung: /speckit.converge (đường cam — chỉ chạy sau /speckit.implement, và nó chỉ nối thêm task, không sửa spec.md hay plan.md, không đụng vào code) và /speckit.taskstoissues (đổ tasks.md thành GitHub issue, qua GitHub MCP server).

03

Vì sao phải có luật nền trước cả đặc tả

/speckit.constitution là lệnh chạy một lần, đầu tiên. Nó viết memory/constitution.md — vài nguyên tắc quản trị của cả dự án, không phải của một tính năng.

Đặc tả nói về một tính năng. Luật nền nói về mọi tính năng.

Template gợi ý những nguyên tắc kiểu Test-First (NON-NEGOTIABLE), Library-First, CLI Interface, Observability — mỗi cái là một câu MUST hoặc SHOULD mà mọi đặc tả sau đó phải sống chung.

Rồi /speckit.analyze đọc lại đúng file này. Trong template của nó có một dòng rất dứt khoát: luật nền là non-negotiable. Đặc tả nào cãi lại một nguyên tắc MUST thì tự động là CRITICAL — và cách sửa là sửa đặc tả, không phải pha loãng nguyên tắc. Muốn đổi nguyên tắc thì phải chạy lại /speckit.constitution, ở một lượt riêng.

Luật nền có số phiên bản
MAJOR
Bỏ hoặc định nghĩa lại một nguyên tắc, theo cách không tương thích ngược.
MINOR
Thêm nguyên tắc / mục mới, hoặc mở rộng hướng dẫn một cách đáng kể.
PATCH
Làm rõ câu chữ, sửa lỗi gõ — không đổi nghĩa.

Cuối file có dòng Version · Ratified · Last Amended. Nguyên tắc dự án được đối xử như một API công khai.

04

Ba cái cổng, và mỗi cổng từ chối cái gì

README xếp ba lệnh này vào nhóm Optional. Bỏ chúng đi thì pipeline vẫn chạy — và Spec Kit tụt xuống thành một cái máy sinh file. Chúng chính là chỗ phương pháp nằm.

/speckit.clarify
Quét chỗ còn mơ hồ, rồi hỏi lại
Nó làm gì
spec.md theo một bảng phân loại cố định — phạm vi, mô hình dữ liệu, luồng UX, hiệu năng, bảo mật, edge case, thuật ngữ — chấm mỗi mục là Clear / Partial / Missing. Rồi hỏi tối đa 5 câu, hỏi từng câu một, mỗi câu phải trả lời được bằng trắc nghiệm hoặc ≤5 chữ. Câu trả lời được ghi thẳng lại vào đặc tả.
Nó từ chối
Những tính từ nghe hay mà không đo được — robust, intuitive. Và nó nhắc: chạy trước /speckit.plan, bỏ qua thì rủi ro làm lại tăng.
/speckit.analyze
Soi ba file có mâu thuẫn nhau không
Nó làm gì
Đọc spec.md + plan.md + tasks.md cùng lúc, tìm yêu cầu trùng, yêu cầu chọi nhau, yêu cầu không có task nào phủ, task mồ côi, thuật ngữ trôi. Xuất một bảng có CRITICAL / HIGH / MEDIUM / LOW, kèm % coverage. Vi phạm luật nền luôn là CRITICAL.
Nó từ chối
Sửa hộ bạn. Template ghi rõ: non-destructive, không ghi file nào. Nó đưa báo cáo và đề nghị — quyết định vẫn là của bạn.
/speckit.checklist
Unit test cho tiếng Anh
Nó làm gì
Ẩn dụ nằm ngay trong template: nếu đặc tả là code viết bằng tiếng Anh, thì checklist là bộ unit test của nó. Nó hỏi bạn 3 câu, tối đa thêm 2 câu nữa (không quá 5), rồi sinh ra một checklist chất lượng yêu cầu.
Nó từ chối
Kiểm thử phần mềm. Không phải "nút bấm có chạy không" — mà "'hiển thị nổi bật' đã ghi rõ cỡ chữ, vị trí chưa?". Nó test câu chữ, không test code.
Cổng duy nhất thật sự chặn lại

/speckit.implement mở đầu bằng việc quét thư mục checklists/. Nếu còn ô chưa tick, nó dừng lại và hỏi thẳng: "vẫn muốn làm tiếp chứ?". Bạn trả lời no hoặc stop là nó ngừng. Nhưng bạn vẫn được phép nói yes — khác với flow.sh của buildflow, hook exit 2 ở đó không thương lượng. Spec Kit hỏi bạn; buildflow chặn bạn. Đó là toàn bộ khoảng cách giữa hai bộ kit.

05

Nó đứng ở đâu trên trục cũ

Trục vẫn là câu hỏi cũ: bạn để máy quyết bao nhiêu, và phán đoán của bạn nằm ở đâu? Spec Kit không mở ra một trục mới. Nó chỉ chen vào bên trái, sát cạnh buildflow.

MỖI VẠCH = MỘT LẦN BẠN PHẢI CÓ MẶT Spec Kit buildflow ClaudeKit autocode-kit ĐẶC TẢ KỶ LUẬT THỰC THI TỰ TRỊ trả lời từng câu hỏi duyệt từng cổng soi từng commit quyết một lần cùng một bộ xương: artifact trước, code sau MÁY QUYẾT ÍT MÁY QUYẾT NHIỀU

Spec Kit nằm bên trái buildflow một chút, không phải bên phải. Nó bắt bạn trả lời nhiều hơn (≤5 câu hỏi cho cả phiên clarify, cộng phần viết luật nền), nhưng khi bạn đã trả lời xong thì không còn cái cổng nào cứng/speckit.implement vẫn cho bạn nói "yes, cứ chạy". buildflow đứng chắc hơn ở chỗ đó.

Spec Kit
Đặc tả
Ý định → chuỗi artifact

10 lệnh /speckit.*. Cài bằng uv, tạo ra thư mục .specify/.

Phán đoán của bạn sống ở
Hai lượt hỏi đáp.
Bạn nói rõ ý định.
buildflow
Kỷ luật
Ý tưởng → một URL bấm được

3 skill + flow.sh. Cổng chặn bằng hook exit 2.

Phán đoán của bạn sống ở
Từng cổng một.
Bạn duyệt mọi bước.
ClaudeKit
Thực thi
Chatbot → bộ đồ nghề của thợ

84 skill + 13 agent. AI gõ, bạn soi.

Phán đoán của bạn sống ở
Từng commit.
Bạn đọc diff.
autocode-kit
Tự trị
Một lần quyết → máy chạy tới hết

Bạn ký một lần ở đầu, rồi đứng ngoài.

Phán đoán của bạn sống ở
Một lần duy nhất.
Ngay từ đầu.
Spec Kit
buildflow
Phỏng vấn từ chối input hời hợt
/speckit.clarify — quét theo bảng phân loại, hỏi ≤5 câu, ghi câu trả lời vào spec.md.
Chặng 00-idea.md — bạn tự viết, AI không được điền hộ.
Artifact phải có trước code
constitution → spec → plan → tasks. Thiếu file nào, lệnh sau dừng và chỉ tên lệnh cần chạy lại.
Mỗi chặng một artifact. Card C-001 là đơn vị công việc.
Cổng nhất quán trước khi build
/speckit.analyze + /speckit.checklist. Cả hai đều khuyên, không chặn cứng.
Hook exit 2. Mục Evidence trống thì không đánh done được.
Có đường cho code đang chạy
Iterative Enhancement — brownfield, hiện đại hoá hệ cũ. Cộng /speckit.converge để đối chiếu code với đặc tả.
Brownfield 3 cổng. C-001 là characterization: ghim lại cái không được vỡ.
"Xong" nghĩa là
Mọi task trong tasks.md đã chạy, và /speckit.converge không nối thêm gì nữa.
Một URL bạn đã bấm. Test xanh chỉ là giữa đường.
06

Playbook — copy rồi chạy

Ô tímlời bạn nói với AI — cứ sửa lại cho hợp dự án của bạn. Ô đenlệnh gõ nguyên văn: trong terminal, hoặc trong khung chat của agent.

greenfield · 8 bước
Từ thư mục rỗng tới code chạy được

Đi hết chuỗi constitution → specify → clarify → plan → tasks → analyze → checklist → implement. Đây là cách học phương pháp.

01

Cài CLI. Nó là một Python tool, chạy bằng uv.

▸ Gõ trong terminal
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
Muốn ghim một bản cụ thể thì thêm @vX.Y.Z vào cuối. Nâng cấp sau này bằng specify self upgrade.
02

Khởi tạo ngay trong thư mục hiện tại, chọn agent bạn đang dùng.

▸ Gõ trong terminal
specify init --here --integration copilot
Nó tạo thư mục .specify/ — bên trong có templates/, scripts/, extensions/, presets/. Thư mục đã có file thì thêm cờ --force.
VIỆC CỦA BẠN

Viết luật nền trước. Chạy một lần cho cả dự án, không phải cho tính năng.

▸ Nói với AI
/speckit.constitution

Dự án nhỏ, một mình mình làm. Ba nguyên tắc mình muốn giữ:
1. Test viết trước code — không thương lượng.
2. Mọi thứ chạy được từ dòng lệnh, không phụ thuộc UI.
3. Có gì lạ là phải log ra, không nuốt lỗi im lặng.
Ba nguyên tắc là đủ. Mỗi cái viết thành một câu MUST rõ ràng — vì /speckit.analyze sẽ đọc lại chúng và bắt lỗi theo đúng chữ bạn viết.
03

Mô tả tính năng bằng tiếng người. Nói cái gìcho ai — chưa nói tech stack.

▸ Nói với AI
/speckit.specify

Mình muốn dựng app nhỏ giúp chủ tiệm spa quản lý lịch hẹn.
Chủ tiệm xem lịch trong ngày, thêm khách mới, dời giờ.
Khách nhận tin nhắn nhắc trước 2 tiếng.
Nó sinh ra spec.md trong specs/. Đừng nhắc React hay Postgres ở đây — chỗ đó là của /speckit.plan.
VIỆC CỦA BẠN

Cổng thứ nhất. Nó sẽ hỏi bạn tối đa 5 câu, hỏi từng câu một.

▸ Gõ
/speckit.clarify
Trả lời gọn — nó yêu cầu trắc nghiệm hoặc ≤5 chữ. Câu trả lời được ghi thẳng vào spec.md, nên đây là lúc đặc tả thật sự thành hình. Bỏ qua bước này thì template cảnh báo: rủi ro làm lại tăng.
04

Bây giờ mới tới tech stack. Đây là lúc nói làm sao.

▸ Nói với AI
/speckit.plan

Dùng Go cho backend, Postgres, không dùng ORM.
Frontend là HTML server-render, không SPA.
Deploy bằng một binary duy nhất.
Ra plan.md. Rồi /speckit.tasks bẻ nó thành tasks.md — danh sách task đã sắp theo thứ tự phụ thuộc.
05

Hai cổng cuối. Chạy tuần tự, đọc kỹ báo cáo.

▸ Gõ
/speckit.tasks
/speckit.analyze
/speckit.checklist chất lượng yêu cầu cho luồng đặt lịch
analyze không ghi file nào — nó chỉ in bảng CRITICAL / HIGH / MEDIUM / LOW. Thấy CRITICAL thì quay lại sửa spec.md trước, đừng đi tiếp.
06

Chạy hết mọi task trong tasks.md.

▸ Gõ
/speckit.implement
Nó quét checklists/ trước. Còn ô chưa tick, nó dừng và hỏi. Trả lời no là nó ngừng lại — và đó thường là câu trả lời đúng.
Thêm một tính năng vào repo đang chạy

Luật nền viết một lần rồi dùng lại mãi. Mỗi tính năng mới chỉ lặp lại từ /speckit.specify trở đi.

01

Repo đã có .specify/ rồi thì bỏ qua bước init. Chưa có thì thêm vào, không đụng code cũ.

▸ Gõ trong terminal
specify init --here --integration copilot
Có file trùng tên thì nó dừng. Thêm --force để ghi đè — commit trước đã, cho chắc.
02

Mô tả đúng một tính năng. Spec Kit tạo một thư mục riêng trong specs/ cho nó.

▸ Nói với AI
/speckit.specify

Thêm chức năng xuất báo cáo doanh thu theo tháng, tải về CSV.
Chủ tiệm chọn tháng, bấm tải, ra file mở được bằng Excel.
Một tính năng một đặc tả. Nhét hai thứ vào một spec.md là chỗ hay vấp — /speckit.analyze sẽ báo conflicting requirements.
VIỆC CỦA BẠN

Vẫn chạy cổng hỏi đáp. Repo cũ càng nhiều ngầm định, càng cần bước này.

▸ Gõ
/speckit.clarify
Nó hay hỏi đúng chỗ bạn quên: định dạng ngày, múi giờ, quyền xem báo cáo, chuyện gì xảy ra khi tháng đó không có đơn nào.
03

Kế hoạch phải bám vào tech stack đang có, không tự chọn cái mới.

▸ Nói với AI
/speckit.plan

Bám đúng stack hiện tại: Go, Postgres, không thêm thư viện mới.
Tái dùng lớp repository sẵn có, đừng viết query rời.
Rồi /speckit.tasks. Muốn giao việc cho người khác thì /speckit.taskstoissues đổ thẳng thành GitHub issue.
04

Soi rồi build. Rồi đối chiếu lại — bước này chỉ có ở brownfield.

▸ Gõ
/speckit.analyze
/speckit.implement
/speckit.converge
converge đọc code hiện tại, so với spec.md + plan.md + tasks.md, rồi nối thêm phần còn thiếu vào cuối tasks.md. Nó không sửa đặc tả, không đụng code, không đánh số lại task cũ. Code đã đủ thì tasks.md giữ nguyên từng byte.
05

Còn task mới được nối thêm thì chạy lại vòng cuối.

▸ Gõ
/speckit.implement
Lặp implement → converge tới khi converge báo sạch. Đó là định nghĩa xong của Spec Kit.
Chỉ chạy ba cái cổng, không build gì hết

Bạn đã có spec.md, plan.md, tasks.md. Giờ muốn biết chúng có chọi nhau không, trước khi tốn một dòng code.

01

Đặc tả còn chỗ mơ hồ thì vá trước. Đây là lệnh duy nhất ghi ngược vào spec.md.

▸ Gõ
/speckit.clarify
Nó chấm từng nhóm là Clear / Partial / Missing — phạm vi, dữ liệu, UX, hiệu năng, bảo mật, edge case, thuật ngữ — rồi chỉ hỏi những nhóm Partial hoặc Missing.
02

Soi chéo ba file cùng lúc. Nó không ghi file nào — chỉ in ra một bảng.

▸ Gõ
/speckit.analyze
Bảng gồm: yêu cầu nào không có task nào phủ, task nào mồ côi (không ứng với yêu cầu nào), % coverage, và mọi chỗ chọi lại luật nền. Vi phạm MUST của luật nền luôn là CRITICAL.
VIỆC CỦA BẠN

Đọc bảng. CRITICAL thì phải sửa, không được bỏ qua. Cách sửa là sửa đặc tả — không phải nới nguyên tắc.

Muốn đổi chính nguyên tắc thì đó là một lượt riêng: chạy lại /speckit.constitution, tăng số phiên bản theo MAJOR / MINOR / PATCH.
03

Sinh checklist cho một miền cụ thể. Truyền tên miền vào làm tham số.

▸ Nói với AI
/speckit.checklist chất lượng yêu cầu cho phần bảo mật và phân quyền
Nó hỏi thêm 3 câu, tối đa 2 câu nữa. Rồi ra một checklist test câu chữ, không test code: "'chỉ admin xem được' đã ghi rõ admin là ai chưa?".
VIỆC CỦA BẠN

Tick từng ô trong checklists/. Ô nào không tick được, quay lại sửa spec.md.

Chưa tick hết mà chạy /speckit.implement thì nó dừng lại và hỏi. Trả lời no là dừng — hãy để nó dừng. Sửa một câu trong đặc tả rẻ hơn sửa một tuần code.
Điều rút ra

Spec Kit không bắt bạn viết nhiều giấy tờ hơn.
Nó chỉ bắt bạn trả lời trước những câu bạn sẽ phải trả lời sau.

Mỗi cổng ở đây đều hỏi cùng một câu: bạn đã nói rõ chưa? "Hiển thị nổi bật" là cỡ chữ bao nhiêu? Ai được xem báo cáo? Tháng không có đơn thì màn hình hiện gì? Đó cũng là lý do dừng lại ở /speckit.analyze cũng là một kết quả tốt — bạn vừa thấy chỗ chọi nhau lúc nó còn nằm trong một file markdown. Rẻ hơn nhiều so với thấy nó nằm trong production. Và cũng vì vậy mà Spec Kit đứng cạnh buildflow, chứ không đứng cạnh autocode-kit: cả hai đều tin rằng phán đoán của bạn phải tiêu ở đầu, không phải ở cuối.

Spec Kit · Đặc tả · Kit thứ tư Claude Code Foundation — Session 3
0:00

Chia sẻ ảnh

Bắt đầu gõ để tìm kiếm...