Spec Kit của GitHub - phát triển phần mềm chất lượng cao nhanh hơn
(github.com/github)- Phát triển theo đặc tả (Spec-Driven Development): một cách tiếp cận nhằm nâng đặc tả (Spec) từ vai trò công cụ hỗ trợ trong phát triển truyền thống thành đặc tả có thể thực thi, để trực tiếp tạo ra phần triển khai đang hoạt động từ đặc tả
- Chuyển đổi thói quen lấy code làm trung tâm sang nhấn mạnh phát triển lấy ý định làm trung tâm, trong đó định nghĩa cái gì và tại sao trước, rồi mới cụ thể hóa như thế nào
- Ý tưởng cốt lõi là tạo ra các đầu ra nhất quán thông qua đặc tả, đồng thời tự động hóa công việc lặp lại để giúp lập trình viên tập trung vào vấn đề của sản phẩm
- Spec Kit là bộ công cụ giúp chuyển đặc tả thành đầu ra có thể thực thi để tự động hóa việc triển khai theo cách này
- Sau khi cài đặt, dùng
/specifyđể mô tả cái gì/tại sao,/planđể khai báo stack/kiến trúc, và/tasksđể tạo đơn vị công việc - Mục tiêu là giúp tổ chức thoát khỏi việc viết mã dùng chung không tạo khác biệt để tập trung vào kịch bản sản phẩm, như một framework thử nghiệm nhằm nâng cả chất lượng lẫn tốc độ thông qua phương pháp phát triển theo đặc tả
Triết lý cốt lõi: Core philosophy
- Tư duy đặc tả trước tiên với phát triển lấy ý định làm trung tâm, đặt cái gì lên trước và cụ thể hóa như thế nào sau
- Viết các đặc tả phong phú có guardrail và nguyên tắc tổ chức, đồng thời đi qua quá trình tinh chỉnh nhiều giai đoạn thay vì tạo code một lần là xong
- Hướng đến cách tận dụng khả năng diễn giải của mô hình AI tiên tiến để chủ động chuyển đặc tả thành kết quả có thể thực thi
Quy trình phát triển theo đặc tả với Spec Kit
- Spec Kit đặt đặc tả vào trung tâm của quy trình kỹ thuật để dẫn dắt triển khai, checklist và phân rã công việc, còn lập trình viên chủ yếu đóng vai trò chỉ đạo
- Tác tử lập trình đảm nhiệm phần lớn công việc viết
- Quy trình gồm 4 giai đoạn, mỗi giai đoạn có checkpoint rõ ràng và không chuyển sang bước tiếp theo cho đến khi công việc hiện tại được xác minh đầy đủ
- Giai đoạn Specify: khi cung cấp mô tả cấp cao, tác tử lập trình sẽ tạo đặc tả chi tiết, tập trung vào hành trình người dùng, trải nghiệm và chỉ số thành công thay vì stack công nghệ
- Lập bản đồ người dùng là ai, đang giải quyết vấn đề gì, cách tương tác và các kết quả quan trọng
- Đây là một artifact sống tiếp tục phát triển theo hiểu biết ngày càng nhiều về người dùng
- Giai đoạn Plan: khi cung cấp stack, kiến trúc và các ràng buộc mong muốn, tác tử lập trình sẽ tạo kế hoạch kỹ thuật toàn diện
- Bao gồm công nghệ tiêu chuẩn của công ty, tích hợp hệ thống legacy, tuân thủ quy định, mục tiêu hiệu năng, v.v.
- Có thể yêu cầu nhiều biến thể kế hoạch để so sánh; nếu cung cấp tài liệu nội bộ thì các pattern kiến trúc có thể được tích hợp trực tiếp
- Giai đoạn Tasks: dựa trên đặc tả và kế hoạch, tác tử lập trình phân rã công việc thành các phần nhỏ có thể review
- Mỗi công việc có thể được triển khai và kiểm thử độc lập, được thiết kế để AI có thể xác minh và theo dõi
- Ví dụ, thay vì "xây dựng xác thực" thì sẽ cụ thể như "tạo endpoint đăng ký người dùng có kiểm tra định dạng email"
- Giai đoạn Implement: tác tử lập trình xử lý từng công việc một hoặc song song, còn lập trình viên review các thay đổi tập trung
- Đặc tả cho biết cần xây gì, kế hoạch cho biết xây như thế nào, và tác vụ cho biết cần làm những gì
- Ở mỗi giai đoạn, lập trình viên thực hiện vai trò xác minh: suy ngẫm và tinh chỉnh, kiểm tra xem đặc tả có nắm đúng ý định không, kế hoạch có phản ánh đúng ràng buộc thực tế không, và có thiếu sót hay edge case nào không
Cách dùng Spec Kit trong workflow agentic
- Spec Kit hoạt động với các tác tử lập trình như GitHub Copilot, Claude Code, Gemini CLI, sử dụng một chuỗi lệnh đơn giản để chỉ đạo tác tử và tạo artifact
- Cách này biến prompt mơ hồ thành ý định rõ ràng để thực thi đáng tin cậy
- Sau khi khởi tạo dự án, cung cấp prompt cấp cao bằng lệnh /specify thì tác tử lập trình sẽ tạo đặc tả hoàn chỉnh, tập trung vào "cái gì" và "tại sao" của dự án
- Với lệnh /plan, khi cung cấp định hướng kỹ thuật cấp cao, tác tử lập trình sẽ tạo kế hoạch chi tiết tôn trọng kiến trúc và ràng buộc
- Với lệnh /tasks, đặc tả và kế hoạch được phân rã thành danh sách công việc có thể thực thi, để tác tử lập trình dựa vào đó triển khai yêu cầu của dự án
Các giai đoạn phát triển: Development phases
- 0-to-1 (greenfield): hỗ trợ luồng tạo đặc tả → lập kế hoạch → tạo ứng dụng sẵn sàng cho production dựa trên yêu cầu cấp cao
- Khám phá sáng tạo: nhấn mạnh quy trình thử nghiệm nhiều stack/kiến trúc và pattern UX bằng triển khai song song
- Cải tiến dần (brownfield): phát triển tiến hóa lặp lại việc thêm tính năng, hiện đại hóa legacy, và điều chỉnh quy trình
3 kịch bản mà cách tiếp cận này hoạt động tốt
- Greenfield (zero-to-one): khi bắt đầu một dự án mới, thay vì code ngay thì tạo đặc tả và kế hoạch trước để đảm bảo AI xây đúng ý định, đồng thời cho ra kết quả tùy biến thay vì giải pháp chung chung dựa trên pattern phổ biến
- Công việc tính năng trên hệ thống hiện có (N-to-N+1): khi thêm tính năng vào codebase phức tạp, đặc tả giúp làm rõ cách tính năng mới tương tác với hệ thống hiện tại, còn kế hoạch mã hóa các ràng buộc kiến trúc để tạo ra code có cảm giác như phần gốc của hệ thống
- Điều này giúp phát triển liên tục nhanh hơn và an toàn hơn, dù có thể cần các kỹ thuật context engineering nâng cao
- Hiện đại hóa legacy: khi xây lại hệ thống legacy mà ý định ban đầu đã bị thất lạc, quy trình Spec Kit giúp ghi lại logic nghiệp vụ cốt lõi vào đặc tả hiện đại và lập kế hoạch cho kiến trúc mới để AI tái xây dựng mà không mang theo technical debt
Prerequisites
- Cần Linux/macOS hoặc WSL2 trên Windows
- Chọn một tác tử AI trong Claude Code, GitHub Copilot, Gemini CLI, Cursor
9 bình luận
Làm tôi nhớ đến Copilot Workspace.
Có vẻ như đây sẽ là nền tảng cho lập trình AI dựa trên ngôn ngữ tự nhiên.
Ưu điểm của Spec Kit của GitHub là có thể dùng ngay cả trong GitHub Copilot.
Vì do GitHub tạo ra nên có lẽ là điều hiển nhiên? nhưng trước giờ nhiều công cụ khác lại dựa trên Claude.
Làm tôi nhớ đến Kiro IDE.
Thú vị đấy. Nghe cũng có lý.
Liên kết giới thiệu chi tiết về SDD ở giữa bài khá hay. Dưới đây là bản tôi thử tóm tắt bằng AI.
Phát triển hướng đặc tả (Specification-Driven Development, SDD)
Đảo ngược quyền lực
Quy trình làm việc SDD trong thực tế
Vì sao SDD quan trọng lúc này
Các nguyên tắc cốt lõi
Các cách tiếp cận triển khai
Tinh gọn SDD bằng command
/specify: chuyển mô tả tính năng thành đặc tả có cấu trúc, đồng thời tự động hóa đánh số tự động, tạo nhánh, và cấu trúc thư mục dựa trên template/plan: tạo chuỗi gồm phân tích đặc tả → rà soát tuân thủ hiến pháp → dịch kỹ thuật → tài liệu hóa data model·API contract·test scenario → xác minh quickstart/tasks: đọcplan.mdvà các thiết kế liên quan để tạo danh sách tác vụ có thể thực thi, đồng thời đánh dấu tác vụ có thể song song và nhóm song song an toànSức mạnh của tự động hóa có cấu trúc
Chất lượng dựa trên template
[NEEDS CLARIFICATION]giúp cấm phỏng đoán và thúc đẩy câu hỏi tường minhimplementation-details/để giữ khả năng đọcNền tảng hiến pháp
memory/constitution.mdđể giữ mọi triển khai nhất quán·đơn giản·chất lượng caoSự chuyển đổi
Bạn đã dùng AI nào để tóm tắt vậy?
Tôi dùng GPT-5, và sử dụng một prompt khá dài do chính tôi sắp xếp để phục vụ việc tóm tắt.
Tôi rất đồng cảm với ý tưởng này nên cuối tuần đã thử nghiệm một chút với một dự án mới, nhưng kết quả lại không tốt như kỳ vọng. Có vẻ nó vẫn cần được cải thiện nhiều. Trước hết, luồng hoạt động đại khái, như đã được giới thiệu nhiều lần, là như sau: Soạn hiến pháp → soạn spec → soạn task → triển khai
Vấn đề là
/specifyvà/tasaks, rất nhiều tài liệu được tạo ra như là đầu ra (đúng thứ tôi muốn), nhưng có lẽ vì vậy mà context bị tiêu tốn rất nhanh (tôi đang dùng Claude Code)Trước mắt, kết luận tôi rút ra là như sau