Thank You For Reaching Out To Us
We have received your message and will get back to you within 24-48 hours. Have a great day!

Chào mừng đến với Blog của Haposoft

Hãy khám phá blog của chúng tôi để tìm hiểu những thông tin mới mẻ, bình luận chuyên gia và các ví dụ thực tế về phát triển dự án mà chúng tôi rất muốn chia sẻ với bạn.

writing-specs-for-ai-coding
Jul 20, 2026
20 phút đọc

Viết đặc tả cho AI Coding: Cách xây dựng yêu cầu để Claude Code làm đúng ngay từ lần đầu tiên

Các công cụ AI coding như Claude Code có thể tạo ra cả một tính năng chỉ trong vài phút. Tuy nhiên, tốc độ không có nhiều ý nghĩa nếu logic nghiệp vụ bên dưới bị sai. Nguyên nhân gốc rễ thường không nằm ở mô hình AI, mà ở việc chúng ta vẫn đang cung cấp cho AI những tài liệu yêu cầu được viết cho con người, chứa đầy các giả định ngầm mà chỉ con người mới hiểu được. Khi gặp sự mơ hồ, AI không hỏi lại để làm rõ; nó sẽ tự suy đoán. Và những suy đoán đó sớm hay muộn cũng sẽ gây ra lỗi trên môi trường thực tế. Bài viết này sẽ giúp bạn thu hẹp khoảng cách đó bằng cách nắm vững cách viết đặc tả cho AI coding. Chúng ta sẽ cùng tìm hiểu vì sao các tài liệu PRD truyền thống không còn phù hợp với các AI agent tự động, cách áp dụng framework 6 thành phần của CafeKit để loại bỏ sự mơ hồ, cũng như các kỹ thuật thực tiễn như EARS và Example Mapping để xử lý những trường hợp ngoại lệ phức tạp. Sau khi đọc xong, bạn sẽ biết cách biến những ý tưởng còn mơ hồ thành các “hợp đồng” rõ ràng, có thể đọc hiểu bởi máy, giúp Claude Code triển khai chính xác ngay từ lần đầu. Vì sao viết đặc tả cho AI Coding lại khác biệt Các tài liệu PRD truyền thống hoạt động rất hiệu quả với đội ngũ phát triển phần mềm bởi các lập trình viên thường chia sẻ với nhau một lượng lớn ngữ cảnh ngầm. Họ có thể hiểu ý giữa các dòng chữ, đặt câu hỏi nhanh để làm rõ và thống nhất mục tiêu kinh doanh chỉ sau một cuộc trao đổi ngắn. Trong khi đó, AI agent hoạt động trong một môi trường hoàn toàn không có bất kỳ kiến thức nền hay ngữ cảnh chung nào như vậy. Khi nhận được một yêu cầu chưa rõ ràng, lập trình viên sẽ dừng lại để xác nhận trước khi viết mã. Nhưng với AI, cùng một yêu cầu đó sẽ được chuyển ngay thành code dựa trên những suy đoán mang tính xác suất. Sự khác biệt cốt lõi này làm thay đổi hoàn toàn cách chúng ta xây dựng tài liệu yêu cầu. AI không diễn giải yêu cầu giống con người Lập trình viên là những người đọc và diễn giải nội dung. Khi thấy một yêu cầu như: "Người dùng cần nhận được thông báo khi đơn hàng được giao." Họ hiểu ngữ cảnh nghiệp vụ đằng sau câu nói đó. Họ biết rằng "thông báo" trong hệ thống B2B có thể là email, còn trong ứng dụng di động có thể là push notification. Họ sẽ xem lại code hiện có để tìm các mẫu triển khai tương tự và trao đổi với Product Owner nếu có điểm chưa rõ. AI thì không, nó sẽ xử lý thông tin dựa trên các mẫu đã học từ dữ liệu huấn luyện và tạo ra phương án triển khai có xác suất xuất hiện cao nhất. Không nhất thiết là phương án đúng, mà chỉ là phương án phổ biến nhất mà nó từng thấy. Lập trình viên AI Coding Agent Đặt câu hỏi để làm rõ Tự đưa ra giả định dựa trên ngữ cảnh hiện có Sử dụng kiến thức nghiệp vụ Chỉ biết những gì được ghi trong tài liệu Chất vấn các yêu cầu chưa rõ Hiểu yêu cầu theo nghĩa đen Dựa vào trao đổi trong nhóm Không thể truy cập các quyết định chưa được tài liệu hóa Ví dụ, với yêu cầu "Hệ thống phải áp dụng giảm giá cho đơn hàng." AI có thể triển khai theo nhiều cách khác nhau như giảm theo phần trăm, giảm theo số tiền cố định, giảm theo từng mức giá trị đơn hàng. AI cũng có thể lựa chọn phương án áp dụng giảm giá trước thuế/ sau thuế, hoặc chỉ áp dụng cho một số nhóm sản phẩm nhất định. Nếu không được hướng dẫn cụ thể, AI sẽ chọn phương án mà nó gặp nhiều nhất trong các dự án open source code. Điều đó có thể đúng, hoặc hoàn toàn sai so với logic kinh doanh của bạn. Sự mơ hồ sẽ trở thành phần triển khai Đây là nguyên tắc quan trọng nhất khi viết đặc tả cho AI: Mọi điểm mơ hồ trong yêu cầu đều sẽ trở thành một quyết định mà AI tự đưa ra thay bạn. Khi bạn viết: "Thông báo cho người dùng khi đơn hàng được giao." AI buộc phải tự tìm hiểu xem kênh gửi thông báo là gì, mẫu email nào sẽ được sử dụng, địa chỉ người gửi, cơ chế gửi lại khi thất bại, xử lý opt-out, và quy tắc giới hạn tần suất gửi. Nó sẽ âm thầm chọn một phương án cho từng yếu tố mà không hề thông báo cho bạn. AI không chỉ ra các giả định của mình và cũng không cảnh báo những khu vực chưa chắc chắn. Với lập trình viên, sự mơ hồ dẫn đến câu hỏi. Với AI, sự mơ hồ dẫn đến code. Đoạn code đó vẫn có thể biên dịch thành công, vượt qua các bài test và có vẻ hoạt động bình thường cho đến khi một trường hợp ngoại lệ xuất hiện trên môi trường production. Thiếu ngữ cảnh dẫn đến những giả định sai AI agent chỉ làm việc với lượng ngữ cảnh bạn cung cấp và không hơn. Nó không chủ động khám phá codebase để hiểu các quy ước hay ràng buộc kiến trúc hiện có. Ví dụ: Nếu đặc tả không đề cập rằng toàn bộ thao tác cơ sở dữ liệu phải sử dụng Repository Pattern, AI có thể viết SQL trực tiếp trong controller. Nếu bạn quên nói rằng hệ thống dùng JWT để xác thực, AI có thể triển khai bằng session cookie. Nếu bạn không chỉ rõ rằng timestamp phải được lưu dưới dạng UTC, AI sẽ dùng múi giờ của máy chủ. Lập trình viên sẽ nhìn vào code xung quanh và tuân theo các quy ước hiện có. Claude Code thì nhìn vào đặc tả. Nếu thông tin không nằm trong đặc tả, với AI nó coi như không tồn tại. Vì vậy, tài liệu đặc tả phải đóng vai trò là toàn bộ “thế giới quan” của AI. Không được để sót bất kỳ giả định nào. Nguyên tắc Shift-Left bắt đầu từ giai đoạn đặc tả Trong phát triển phần mềm truyền thống, Shift-Left nghĩa là đưa hoạt động kiểm thử lên sớm hơn trong vòng đời phát triển. Đối với AI coding, Shift-Left có nghĩa là đưa sự rõ ràng lên sớm hơn – ngay từ giai đoạn viết đặc tả.Chi phí sửa lỗi trong mã do AI tạo ra không nằm ở việc debug, mà nằm ở việc phải tạo lại toàn bộ. Quy trình thường bắt đầu từ phát hiện vấn đề, viết lại yêu cầu, và cuối cùng là chạy lại AI agent. Mỗi vòng lặp đều tiêu tốn thời gian và token, nhưng một đặc tả chặt chẽ giúp loại bỏ các vòng lặp này. Ví dụ: "WHEN order.status changes to 'shipped', THE SYSTEM SHALL send an email to customer.email_address." Trong trường hợp này, AI gần như không còn khoảng trống để tự suy diễn. Kết quả đầu ra sẽ sát với ý định ban đầu vì dữ liệu đầu vào không để lại chỗ cho sự diễn giải. Đây chính là đòn bẩy năng suất quan trọng nhất trong AI coding: Đặc tả tốt hơn, chứ không phải prompt tốt hơn. Và một trong những cách thực tế nhất để viết đặc tả ở mức độ chính xác này là sử dụng EARS – một cú pháp được thiết kế để loại bỏ sự mơ hồ. Sử dụng EARS để giảm sự mơ hồ trong yêu cầu dành cho AI EARS là gì EARS là viết tắt của Easy Approach to Requirements Syntax. Phương pháp này được phát triển bởi John M. Wingfield cho các hệ thống hàng không vũ trụ và quốc phòng – những lĩnh vực mà chỉ một hiểu nhầm nhỏ cũng có thể gây thiệt hại hàng triệu đô la. EARS buộc người viết yêu cầu phải tuân theo một cấu trúc nghiêm ngặt và nhất quán nhằm loại bỏ sự mơ hồ vốn có của ngôn ngữ tự nhiên. Mỗi yêu cầu theo EARS đều tuân theo một khuôn mẫu rõ ràng, xác định: Điều gì kích hoạt hành động Những điều kiện nào áp dụng Hệ thống phải phản hồi như thế nào Cấu trúc này đặc biệt hữu ích với các AI coding agent vì AI xử lý các mẫu có cấu trúc tốt hơn rất nhiều so với việc suy diễn ý định. Khi viết yêu cầu bằng ngôn ngữ tự nhiên, AI phải tự đoán đâu là trigger, đâu là điều kiện và đâu là hành động. Khi sử dụng EARS, các vai trò đó được thể hiện rõ ngay trong cú pháp. AI không cần suy luận nữa – chỉ cần ánh xạ đầu vào có cấu trúc thành đầu ra có cấu trúc. Vì sao EARS hoạt động hiệu quả với AI Agent AI coding agent đạt hiệu quả cao nhất khi nhận được các chỉ dẫn theo một khuôn mẫu nhất quán. Ví dụ một yêu cầu trong PRD thường được viết như sau: "Người dùng nên nhận được thông báo khi đơn hàng được giao." Mặc dù mọi người đều hiểu ý nghĩa của câu này, vẫn còn rất nhiều chi tiết chưa được xác định: Thông báo dưới dạng nào? Ai nhận thông báo? Kích hoạt vào thời điểm nào? Nếu gửi thất bại thì sao? Viết bằng EARS: "WHEN an order status changes to 'Shipped' THE SYSTEM SHALL send an email notification to the customer's registered email address within 5 minutes." Ý nghĩa nghiệp vụ vẫn giữ nguyên, nhưng cách triển khai đã trở nên rõ ràng hơn rất nhiều. Thay vì yêu cầu AI suy diễn một câu mô tả chung chung, đặc tả đã chỉ rõ: Trigger Hành động Kết quả mong muốn Điều này giúp giảm đáng kể sự mơ hồ và tạo nền tảng vững chắc để Claude Code sinh ra phần triển khai chính xác ngay từ lần đầu tiên. Các loại yêu cầu EARS cốt lõi EARS được xây dựng dựa trên một số mẫu yêu cầu cơ bản. Những mẫu này bao phủ hầu hết các tình huống trong phát triển phần mềm và giúp các nhóm duy trì tính nhất quán trong tài liệu đặc tả. Pattern Cấu trúc Khi nào sử dụng Ví dụ Ubiquitous THE SYSTEM SHALL Hành vi luôn đúng trong mọi trường hợp THE SYSTEM SHALL log all payment transactions Event-Driven WHEN THE SYSTEM SHALL Hành vi được kích hoạt bởi một sự kiện cụ thể WHEN a user submits a password reset request THE SYSTEM SHALL send a reset link State-Driven WHILE THE SYSTEM SHALL Hành vi diễn ra liên tục trong một trạng thái WHILE a user session is active THE SYSTEM SHALL refresh the authentication token every 15 minutes Optional Feature WHERE THE SYSTEM SHALL Hành vi chỉ áp dụng khi một tính năng hoặc điều kiện được bật WHERE the user has administrator privileges THE SYSTEM SHALL display the audit log Unwanted Behaviour IF THE SYSTEM SHALL Xử lý lỗi và các trường hợp ngoại lệ IF the payment gateway returns a timeout error THE SYSTEM SHALL retry up to 3 times So sánh Yêu cầu Truyền thống và Yêu cầu theo EARS Sự khác biệt giữa một yêu cầu truyền thống và một yêu cầu viết theo EARS không chỉ nằm ở cách trình bày, mà còn nằm ở việc AI có thể tự suy diễn đến đâu và đâu là những gì bạn bắt buộc phải mô tả rõ ràng. Yêu cầu truyền thống: "Người dùng nên nhận được thông báo khi đơn hàng được giao." Khi đọc yêu cầu này, AI phải tự quyết định: "Thông báo" nghĩa là gì "Đơn hàng được giao" được xác định như thế nào "Người dùng" là ai Kênh gửi thông báo là gì Nội dung thông báo ra sao Cần làm gì nếu việc gửi thất bại Tất cả những quyết định này sẽ được AI đưa ra dựa trên dữ liệu huấn luyện, chứ không phải dựa trên yêu cầu thực tế của hệ thống. Yêu cầu theo EARS: "WHEN an order status changes to 'shipped' THE SYSTEM SHALL send an email notification to the customer's registered email address within 5 minutes of the status change." Lúc này AI biết chính xác cần xây dựng điều gì: Trigger là việc trạng thái đơn hàng chuyển sang một giá trị cụ thể Hành động là gửi email Địa chỉ nhận được xác định rõ Có ràng buộc về thời gian thực hiện Bằng cách này, AI sẽ không còn tự suy diễn, nếu muốn quy định cách xử lý khi gửi email thất bại, bạn chỉ cần bổ sung thêm một yêu cầu xử lý lỗi riêng. Dưới đây là ví dụ so sánh trực tiếp những gì AI phải quyết định trong từng trường hợp. Yêu cầu truyền thống Yêu cầu theo EARS Khách hàng có thể áp dụng mã giảm giá khi thanh toán. KHI khách hàng nhập mã giảm giá hợp lệ trong quá trình thanh toán, HỆ THỐNG SẼ áp dụng mức giảm giá tương ứng trước khi tính tổng giá trị đơn hàng. Mã giảm giá không hợp lệ sẽ hiển thị thông báo lỗi. Nếu mã giảm giá không tồn tại hoặc đã hết hạn, HỆ THỐNG sẽ hiển thị thông báo lỗi và ngăn không cho áp dụng mã giảm giá. Người dùng cao cấp có thể sử dụng các ưu đãi dành cho khách hàng thân thiết. TRƯỜNG HỢP khách hàng có trạng thái Khách hàng Cao cấp, HỆ THỐNG SẼ cho phép kết hợp các khoản giảm giá dành cho khách hàng thân thiết với mã giảm giá khuyến mãi. Cả hai phiên bản đều truyền tải cùng một ý tưởng nghiệp vụ. Điểm khác biệt là EARS loại bỏ phần lớn quá trình suy diễn trong lúc triển khai. Đối với lập trình viên, điều này giúp yêu cầu rõ ràng hơn. Đối với Claude Code, nó cung cấp tín hiệu mạnh mẽ hơn về hành vi chính xác cần được tạo ra. EARS tạo đầu vào tốt hơn cho hoạt động kiểm thử Một lợi ích khác của EARS là khả năng liên kết tự nhiên với các phương pháp kiểm thử. Nhiều đội ngũ hiện nay sử dụng Behavior-Driven Development (BDD) để xây dựng tiêu chí nghiệm thu thông qua các kịch bản Given-When-Then. EARS cũng theo cùng một tư duy khi buộc người viết phải mô tả rõ: Trigger Điều kiện Kết quả mong đợi Ví dụ: Yêu cầu: WHEN a customer's subscription expires, THE SYSTEM SHALL revoke access to premium features. Có thể chuyển đổi rất dễ dàng thành kịch bản kiểm thử: Given: Một khách hàng đang có gói Premium còn hiệu lực When: Gói đăng ký đạt đến ngày hết hạn Then: Người dùng không còn truy cập được các tính năng Premium Mối liên hệ này đặc biệt hữu ích khi làm việc với các công cụ AI coding. Claude Code có thể sử dụng cùng một yêu cầu để: Sinh mã nguồn Sinh unit test Sinh integration test Sinh acceptance criteria Thay vì tạo code từ một mô tả mơ hồ, AI làm việc dựa trên một đặc tả đã mô tả rõ hành vi mong muốn. Tuy nhiên, EARS không phải là một framework hoàn chỉnh để xây dựng đặc tả sẵn sàng cho AI. Nó không mô tả: Bối cảnh nghiệp vụ Thuật ngữ chuyên ngành Ràng buộc kỹ thuật Các trường hợp ngoại lệ Nhưng EARS là nền tảng rất tốt để mô tả hành vi hệ thống theo cách giảm thiểu tối đa sự mơ hồ và nâng cao độ chính xác khi triển khai. Đọc thêm: Phát triển hướng đặc tả cho Claude Code: So sánh CafeKit, GitHub Spec Kit, BMAD và claude-code-spec-workflow. Cấu trúc của một đặc tả sẵn sàng cho AI (AI-Ready Specification) EARS giúp mô tả hành vi hệ thống rõ ràng hơn, nhưng để viết đặc tả cho AI coding hiệu quả, chỉ có yêu cầu được cấu trúc tốt là chưa đủ. Claude Code vẫn cần thêm ngữ cảnh để hiểu: Bài toán nghiệp vụ Miền nghiệp vụ (domain) Các ràng buộc kỹ thuật phải tuân thủ Một sai lầm phổ biến là cho rằng chỉ cần tập hợp các yêu cầu EARS là đủ để triển khai. Trên thực tế, hai nhóm khác nhau có thể cung cấp cùng một yêu cầu nhưng nhận được kết quả hoàn toàn khác nhau tùy thuộc vào lượng ngữ cảnh đi kèm. Đó là lý do các đội ngũ AI Engineering hiệu suất cao đang chuyển sang sử dụng AI-ready specifications – những tài liệu được thiết kế không chỉ để con người đọc và review mà còn để AI trực tiếp thực thi. Mặc dù mỗi tổ chức có thể áp dụng định dạng khác nhau, hầu hết các đặc tả AI-ready hiệu quả đều bao gồm những thành phần cốt lõi sau. Bối cảnh và Mục tiêu Trước khi mô tả yêu cầu, đặc tả cần giải thích: Tính năng này tồn tại để làm gì Nó giải quyết vấn đề gì Phần này cung cấp cho AI ngữ cảnh nghiệp vụ để đưa ra các quyết định triển khai tốt hơn. Nếu không có ngữ cảnh, mô hình có thể chỉ tập trung hoàn thành từng yêu cầu riêng lẻ mà bỏ lỡ mục tiêu tổng thể của tính năng. Ví dụ, thay vì đi thẳng vào yêu cầu: "WHEN a customer enters a discount code, THE SYSTEM SHALL apply the corresponding discount." Hãy mô tả mục tiêu trước: "Mục tiêu của tính năng này là tăng tỷ lệ sử dụng các chương trình khuyến mãi bằng cách cho phép khách hàng nhập mã giảm giá trong quá trình thanh toán, đồng thời đảm bảo các quy tắc giảm giá được áp dụng nhất quán trên cả nền tảng web và mobile." Điều này giúp Claude Code hiểu rõ hơn kết quả kinh doanh mà tính năng đang hướng tới. Domain Glossary Một trong những nguyên nhân nhanh nhất dẫn đến sự nhầm lẫn trong mã do AI tạo ra là thuật ngữ không nhất quán. Nhiều tổ chức thường sử dụng các từ như: User Customer Member Subscriber thay thế cho nhau trong các cuộc thảo luận, dù trên thực tế chúng có thể đại diện cho các thực thể nghiệp vụ hoàn toàn khác nhau. Một AI-ready specification nên có phần từ điển thuật ngữ trước khi bắt đầu triển khai. Thuật ngữ Định nghĩa Customer Người dùng đã đăng ký và có thể đặt hàng Guest User Khách truy cập có thể xem sản phẩm nhưng không xem được lịch sử đơn hàng Discount Code Mã khuyến mãi dùng để giảm giá trị đơn hàng khi đáp ứng điều kiện áp dụng Premium Customer Khách hàng tham gia chương trình khách hàng thân thiết Yêu cầu chức năng sử dụng EARS Sau khi đã xác định bối cảnh và thuật ngữ, các yêu cầu chức năng nên được mô tả bằng một cấu trúc thống nhất. Đây chính là nơi EARS trở thành công cụ chính để mô tả hành vi hệ thống. Thay vì các đoạn mô tả tự do, mỗi yêu cầu cần xác định rõ: Trigger Điều kiện Phản hồi mong muốn Năm mẫu EARS có thể bao phủ hầu hết các tình huống: Hành vi luôn áp dụng (Ubiquitous) Hành vi theo sự kiện (Event-Driven) Hành vi theo trạng thái (State-Driven) Tính năng tùy chọn (Optional Feature) Xử lý lỗi (Error Handling) Đặc biệt, các yêu cầu xử lý lỗi rất quan trọng vì nhiều nhóm chỉ tập trung vào happy path và bỏ quên ngoại lệ. Nếu bạn không mô tả điều gì xảy ra khi coupon không hợp lệ, AI sẽ: Bỏ qua trường hợp đó Hoặc tự nghĩ ra cách xử lý Với mỗi yêu cầu Event-Driven, nên có ít nhất một yêu cầu IF tương ứng để xử lý thất bại. Ví dụ yêu cầu cho hệ thống mã giảm giá KHI khách hàng nhập mã giảm giá hợp lệ trong quá trình thanh toán, HỆ THỐNG SẼ áp dụng mức giảm giá tương ứng trước khi tính tổng giá trị đơn hàng. NẾU mã giảm giá đã hết hạn, HỆ THỐNG SẼ hiển thị thông báo lỗi và ngăn không cho áp dụng giảm giá. NẾU mã giảm giá đã vượt quá giới hạn sử dụng, HỆ THỐNG SẼ từ chối áp dụng và hiển thị "Mã giảm giá này đã đạt đến giới hạn sử dụng." NẾU khách hàng áp dụng mã giảm giá khi đơn hàng đang ở trạng thái ĐÃ XÁC NHẬN, HỆ THỐNG SẼ từ chối sửa đổi và hiển thị "Không thể sửa đổi đơn hàng đã xác nhận." NẾU hai khách hàng áp dụng cùng một mã giảm giá cùng lúc, HỆ THỐNG SẼ xử lý các ứng dụng theo trình tự và thực thi giới hạn sử dụng một cách chính xác. Do các yêu cầu này đều tuân theo cùng một cấu trúc nên cả người review và AI coding agent đều dễ hiểu hơn. AI không cần tự đoán cách xử lý ngoại lệ vì mọi thứ đã được mô tả rõ. Tiêu chí Chấp thuận (Acceptance Criteria) Yêu cầu mô tả hệ thống phải làm gì. Acceptance Criteria mô tả thế nào được coi là thành công. Phần này giúp tránh việc các bên liên quan hiểu cùng một yêu cầu theo những cách khác nhau. Đồng thời nó cũng cung cấp mục tiêu kiểm chứng rõ ràng cho phần triển khai do AI tạo ra. Ví dụ: Given: Một mã giảm giá hợp lệ tồn tại When: Khách hàng áp dụng mã trong lúc thanh toán Then: Mức giảm giá chính xác phải được phản ánh trong tổng giá trị đơn hàng Acceptance Criteria tạo ra mối liên kết trực tiếp giữa kỳ vọng kinh doanh và kết quả triển khai. Khó khăn về mặt kỹ thuật Một trong những nguyên nhân phổ biến khiến AI tạo ra các giải pháp phức tạp không cần thiết là thiếu hướng dẫn kỹ thuật. Khi không có ràng buộc, Claude Code có thể: Đưa vào pattern mới Bổ sung dependency mới Chọn kiến trúc khác với phần còn lại của hệ thống Một phần Technical Constraints riêng biệt sẽ giúp giảm đáng kể rủi ro này. Ví dụ: Sử dụng Repository Pattern hiện có Tái sử dụng Notification Service cho mọi giao tiếp với khách hàng Không thêm dependency từ bên thứ ba Tuân thủ định dạng API response hiện tại của dự án Đảm bảo thời gian phản hồi dưới 500ms trong điều kiện tải thông thường Quy tắc Xác thực và Quy tắc Nghiệp vụ Nhiều yêu cầu thất bại vì logic kiểm tra dữ liệu chỉ được ngầm hiểu chứ không được mô tả rõ. Ví dụ: "Validate discount code input." Yêu cầu này vẫn để lại quá nhiều khoảng trống cho việc suy diễn. Một đặc tả tốt hơn nên mô tả cụ thể: Mã giảm giá không được dài quá 50 ký tự Không phân biệt chữ hoa và chữ thường Mã hết hạn không được sử dụng Không được cộng dồn nhiều mã trừ khi được đánh dấu là stackable Quy tắc nghiệp vụ càng chi tiết, AI càng ít phải đoán. Kịch bản Kiểm thử và Định nghĩa Hoàn thành Phần cuối cùng cần mô tả: Tính năng sẽ được kiểm chứng như thế nào Khi nào được xem là hoàn thành Điều này tạo ra một vạch đích rõ ràng cho cả lập trình viên và AI coding agent. Định nghĩa Hoàn thành có thể bao gồm: Tất cả yêu cầu EARS đã được triển khai Unit test chạy thành công Integration test chạy thành công Acceptance Criteria được đáp ứng Không còn lỗ hổng bảo mật nghiêm trọng Tài liệu đã được cập nhật Khi kết hợp lại, các thành phần này sẽ biến một tài liệu yêu cầu truyền thống thành một AI-ready specification hoàn chỉnh. EARS cung cấp cấu trúc để mô tả hành vi. Context, thuật ngữ, ràng buộc kỹ thuật và quy tắc kiểm tra cung cấp cho Claude Code toàn bộ thông tin cần thiết để tạo ra mã nguồn phù hợp với kỳ vọng kinh doanh. Tuy nhiên, ngay cả một đặc tả được xây dựng tốt vẫn có thể thất bại nếu bỏ sót các trường hợp ngoại lệ, tình huống lỗi hoặc điều kiện biên. Vì vậy, việc tài liệu hóa đầy đủ các trường hợp này là bước tiếp theo mang tính quyết định. Xây dựng đặc tả có thể thực thi bởi AI với CafeKit Viết được một đặc tả tốt mới chỉ là một phần của bài toán. Khi AI ngày càng được áp dụng rộng rãi trong các đội ngũ kỹ thuật, các tổ chức nhanh chóng gặp phải một thách thức khác: làm thế nào để duy trì tính nhất quán giữa yêu cầu, ngữ cảnh nghiệp vụ, quyết định kiến trúc và tri thức domain theo thời gian. Một đặc tả cho một tính năng có thể chứa: Hàng chục yêu cầu EARS Các quy tắc kiểm tra dữ liệu Các trường hợp ngoại lệ Acceptance Criteria Nhân điều đó lên nhiều đội nhóm và nhiều dự án, việc duy trì một nguồn thông tin đáng tin cậy ngày càng khó khăn. Khi thông tin bị phân tán trong tài liệu đầu vào, ticket, biên bản họp hay đoạn chat, AI coding agent rất dễ nhận được ngữ cảnh thiếu hoặc lỗi thời. Đây chính là lúc những nền tảng như CafeKit phát huy giá trị. Thay vì coi đặc tả là các tài liệu rời rạc, CafeKit giúp các nhóm quản lý toàn bộ ngữ cảnh mà AI coding agent cần để làm việc. Các thành phần như: Yêu cầu Business rules Thuật ngữ domain Kiến thức hỗ trợ được tổ chức theo cấu trúc thống nhất để cả con người và AI đều có thể truy cập cùng một nguồn thông tin. Đọc thêm về CafeKit: Vượt xa "Vibe Coding": Cách CafeKit đưa Phát triển dựa trên đặc tả (SDD) vào Tự động hóa AI. Tập trung hóa ngữ cảnh nghiệp vụ Một trong những nguyên nhân phổ biến nhất khiến AI triển khai sai là ngữ cảnh bị phân mảnh. Yêu cầu nghiệp vụ nằm ở một tài liệu. Quyết định kiến trúc nằm ở tài liệu khác. Thuật ngữ nghiệp vụ lại ở nơi khác. Lập trình viên giàu kinh nghiệm có thể lấp đầy các khoảng trống này nhưng AI thì không. Một kho tri thức tập trung giúp tạo ra một nguồn sự thật duy nhất (single source of truth) cho cả yêu cầu và ngữ cảnh liên quan. Thay vì phải suy đoán, Claude Code làm việc với thông tin đã được tài liệu hóa và kiểm chứng. Duy trì kiến thức domain nhất quán Khi hệ thống phát triển lớn hơn, thuật ngữ trở nên cực kỳ quan trọng. Các khái niệm như: Customer Member Subscriber User có vẻ giống nhau nhưng thường đại diện cho các thực thể nghiệp vụ khác nhau. Không có glossary chung, sự thiếu nhất quán sẽ lan từ yêu cầu sang code, API và tài liệu. Các triển khai do AI tạo ra đặc biệt nhạy cảm với vấn đề này vì mô hình thường hiểu thuật ngữ theo nghĩa đen. Khi AI biết chính xác "Premium Customer" là gì, nó sẽ triển khai đúng các business rule liên quan mà không tạo ra các lỗi khó phát hiện. Lưu giữ các quyết định kiến trúc Yêu cầu mô tả hệ thống cần làm gì. Quyết định kiến trúc mô tả hệ thống nên được xây dựng như thế nào. Những quyết định này thường được ghi lại dưới dạng Architecture Decision Records (ADR), bao gồm: Design pattern Hạ tầng Phương thức tích hợp Ràng buộc hiệu năng Các lập trình viên có thể đã quen thuộc với những quyết định này. AI chỉ có thể tuân thủ chúng nếu được cung cấp trong quá trình triển khai. Khi AI có quyền truy cập vào các hướng dẫn kiến trúc, nguy cơ lệch khỏi tiêu chuẩn kỹ thuật của tổ chức sẽ giảm đáng kể. Nếu Claude Code biết nhóm đang sử dụng Repository Pattern và các quy ước API cụ thể, nó sẽ tạo ra mã phù hợp với codebase hiện tại thay vì đưa vào những pattern mới cần phải refactor sau này. Xây dựng quy trình làm việc hiệu quả hơn cho Claude Code Nhiều đội ngũ hiện nay đang chuyển từ cách phát triển dựa trên prompt sang quy trình phát triển dựa trên đặc tả. Thay vì yêu cầu Claude Code: "Hãy xây dựng tính năng này." Quy trình trở thành: Xác định mục tiêu nghiệp vụ và yêu cầu Tài liệu hóa EARS requirements và Acceptance Criteria Ghi nhận edge cases và validation rules Cung cấp technical constraints và ngữ cảnh hỗ trợ Sinh mã nguồn và test từ đặc tả Cách tiếp cận này tạo ra nền tảng vững chắc hơn cho phát triển phần mềm có hỗ trợ AI. Mô hình dành ít thời gian hơn cho việc suy đoán và nhiều thời gian hơn cho việc thực thi các yêu cầu đã được xác định rõ. Kết quả không chỉ là mã nguồn tốt hơn mà còn: Tính nhất quán cao hơn Ít vòng sửa đổi hơn Sự đồng bộ tốt hơn giữa kỳ vọng kinh doanh và kết quả kỹ thuật Cuối cùng, các công cụ như Claude Code phát huy hiệu quả cao nhất khi hoạt động trong một môi trường đặc tả có cấu trúc rõ ràng. Kết luận Viết đặc tả kỹ thuật cho lập trình AI khác biệt hoàn toàn so với viết yêu cầu cho lập trình viên con người. Lập trình viên con người diễn giải, đặt câu hỏi và bổ sung những thiếu sót. Claude Code thực thi chính xác những gì bạn chỉ định, và khi đặc tả đó không rõ ràng, nó sẽ đoán. EARS loại bỏ sự mơ hồ bằng cách buộc bạn phải chỉ định rõ ràng các trình kích hoạt, điều kiện và phản hồi. CafeKit cung cấp không gian làm việc và quy trình làm việc – ngữ cảnh, thuật ngữ, ràng buộc và quy tắc xác thực – mà các tác nhân AI cần để tạo ra mã phù hợp với kỳ vọng kinh doanh của bạn. Chúng tôi đang tích cực sử dụng các phương pháp này trong các dự án của mình tại Haposoft và nhận thấy những cải tiến đáng kể về chất lượng mã và tốc độ phát triển. CafeKit là open source code và có sẵn để sử dụng sớm. Hãy cài đặt nó và bắt đầu viết đặc tả kỹ thuật cho lập trình AI thực sự hiệu quả. Có câu hỏi hoặc cần tư vấn? Liên hệ ngay với chúng tôi. Sẵn sàng áp dụng vào thực tế? CafeKit là dự án open source code và hiện đã sẵn sàng cho giai đoạn sử dụng sớm. Hãy cài đặt và bắt đầu viết những đặc tả cho AI coding thực sự hiệu quả. npx @haposoft/cafekit GitHub Repository →
spec-driven-development-for-claude-code
Jul 06, 2026
15 phút đọc

Phát triển hướng đặc tả cho Claude Code: So sánh CafeKit, GitHub Spec Kit, BMAD và claude-code-spec-workflow.

Các tác nhân lập trình AI như Claude Code giúp tăng tốc độ phát triển, nhưng chúng cũng tạo ra những vấn đề mới. Code trông có vẻ đúng nhưng không đáp ứng yêu cầu. Ngữ cảnh bị mất giữa các phiên làm việc. Những thay đổi lớn phá vỡ tính nhất quán của thiết kế. Phát triển dựa trên đặc tả (Spec-Driven Development - SDD) giải quyết những vấn đề này bằng cách bổ sung cấu trúc: xác định, lập kế hoạch, giao nhiệm vụ, thực hiện. Thay vì trực tiếp yêu cầu AI, các nhóm sẽ xác định yêu cầu trước, sau đó để AI thực thi dựa trên một đặc tả rõ ràng. Bài viết này so sánh 4 công cụ SDD dành cho Claude Code: CafeKit (Haposoft) GitHub Spec Kit BMAD-METHOD claude-code-spec-workflow Chúng ta sẽ xem xét quy trình làm việc, điểm mạnh, điểm yếu và những tình huống phù hợp nhất của từng công cụ – đặc biệt là đối với các nhóm doanh nghiệp B2B. Hiểu về Phát triển dựa trên đặc tả (Spec-Driven Development) cho Claude Code Hầu hết các nhóm bắt đầu sử dụng Claude Code một cách đơn giản: viết yêu cầu, tạo code, xem xét kết quả, sau đó tinh chỉnh yêu cầu nếu thiếu sót. Cách này hoạt động tốt đối với các tính năng nhỏ và các nhiệm vụ riêng lẻ. Tuy nhiên, khi dự án trở nên lớn hơn, việc theo dõi yêu cầu trở nên khó khăn hơn, các quyết định triển khai bị phân tán trong các cuộc thảo luận và bối cảnh quan trọng có thể dễ dàng biến mất giữa các phiên làm việc. Phát triển dựa trên đặc tả (Spec-Driven Development - SDD) áp dụng một cách tiếp cận khác. Thay vì coi các lời nhắc là nguồn hướng dẫn chính, SDD coi các đặc tả là nền tảng của quá trình phát triển. Các yêu cầu, kế hoạch triển khai, nhiệm vụ và quyết định kỹ thuật được ghi lại trước khi quá trình phát triển bắt đầu, cung cấp cho cả nhà phát triển và các tác nhân AI một nguồn thông tin chung xuyên suốt vòng đời dự án. Quy trình làm việc SDD hoạt động như thế nào? Mặc dù mỗi framework đều có phương pháp luận riêng, nhưng hầu hết các quy trình SDD đều tuân theo bốn giai đoạn cốt lõi. Giai đoạn Mô tả Chỉ định Xác định các yêu cầu, quy tắc nghiệp vụ và tiêu chí chấp nhận. Kế hoạch Lập kế hoạch thiết kế kỹ thuật và kế hoạch triển khai. Nhiệm vụ Chia nhỏ công việc thành các nhiệm vụ nhỏ hơn có thể thực hiện được. Thực hiện Tạo và xem xét code dựa trên các thông số kỹ thuật đã được phê duyệt. Mục tiêu không phải là thêm tài liệu, mà là giảm sự mơ hồ. Khi các yêu cầu, kế hoạch và nhiệm vụ đã được xác định rõ ràng, Claude Code sẽ dành ít thời gian hơn để diễn giải ý định và nhiều thời gian hơn để thực hiện công việc được xác định rõ ràng. Điều này đặc biệt có giá trị đối với các tính năng lớn liên quan đến nhiều quy tắc nghiệp vụ, các bên liên quan hoặc các chu kỳ phát triển. Vì sao SDD hoạt động tốt với Claude Code? Một trong những thách thức lớn nhất khi làm việc với các tác nhân lập trình AI là duy trì tính nhất quán theo thời gian. Một tính năng cần vài ngày hoặc vài tuần để hoàn thành có thể liên quan đến hàng trăm yêu cầu, quyết định và chi tiết triển khai. Một số thông tin nằm trong các lời nhắc, một số trong tài liệu và một số chỉ tồn tại trong các cuộc trò chuyện giữa các thành viên nhóm. SDD (Software-Distributed Development) kết hợp các quyết định đó lại với nhau trong một quy trình làm việc có cấu trúc. Đặc tả xác định những gì cần được xây dựng, kế hoạch xác định cách thức xây dựng, và nhiệm vụ xác định những gì cần được thực hiện tiếp theo. Nhờ đó, Claude Code có thể làm việc dựa trên một kế hoạch được ghi lại thay vì chỉ dựa vào lịch sử lệnh, giúp quá trình phát triển trở nên dễ dự đoán và dễ quản lý hơn. So sánh chi tiết 4 công cụ SDD dành cho Claude Code CafeKit (Haposoft) cafekit.haposoft.com CafeKit là một công cụ Phát triển hướng theo đặc tả (SDD) open-source code được phát triển bởi Haposoft. Khung phần mềm này hướng dẫn các nhóm xuyên suốt toàn bộ vòng đời phát triển phần mềm, từ định nghĩa yêu cầu và thiết kế kỹ thuật đến triển khai, kiểm thử và đánh giá. So với các công cụ SDD khác trong bài so sánh này, CafeKit cung cấp cấu trúc giai đoạn chi tiết nhất và chú trọng hơn vào tài liệu, kiểm soát chất lượng và khả năng truy vết. Cấu trúc pha: 6 pha CafeKit tổ chức quá trình phát triển thành sáu giai đoạn riêng biệt. Mỗi giai đoạn tạo ra các sản phẩm đầu ra riêng và đóng vai trò là đầu vào cho giai đoạn tiếp theo của quy trình làm việc. Định nghĩa yêu cầu – Chuyển đổi các yêu cầu kinh doanh thành các đặc tả có cấu trúc bằng cách sử dụng EARS để loại bỏ sự mơ hồ. Thiết kế – Xác định kiến ​​trúc, thiết kế cơ sở dữ liệu, hợp đồng API và các quyết định kỹ thuật. Phân tích nhiệm vụ – Chia thiết kế thành các nhiệm vụ có thể thực thi độc lập kèm theo ước tính độ phức tạp. Triển khai – Tạo code cho từng tác vụ theo các ràng buộc về thiết kế và kỹ thuật. Kiểm thử – Tạo kế hoạch kiểm thử, trường hợp kiểm thử và thực hiện kiểm thử tự động. Xem xét lại – Đánh giá chất lượng code, kiểm tra tính nhất quán với thông số kỹ thuật và ghi lại các quyết định. Điểm khác biệt lớn nhất so với các công cụ khác là CafeKit tách biệt giai đoạn Kiểm thử và Đánh giá. Trong khi GitHub Spec Kit và BMAD gộp các hoạt động này vào giai đoạn triển khai hoặc để chúng ngoài quy trình chính, CafeKit coi chúng là các giai đoạn bắt buộc. Điều này đặc biệt có giá trị đối với các dự án yêu cầu kiểm soát chất lượng nghiêm ngặt hoặc tuân thủ các tiêu chuẩn kiểm thử và đánh giá của doanh nghiệp. Các tính năng chính Hỗ trợ ngôn ngữ tiếng Nhật bản địa cho tất cả các tài liệu được tạo ra (tài liệu yêu cầu, tài liệu thiết kế, kế hoạch kiểm thử, biên bản đánh giá). Hệ thống lệnh gạch chéo được tối ưu hóa cho Claude Code với các mẫu dành riêng cho từng giai đoạn. Tự động tạo tài liệu định dạng doanh nghiệp song song với mã nguồn. Được xây dựng dựa trên các phương pháp đã được kiểm chứng thông qua các dự án cung cấp dịch vụ thuê ngoài thực tế. Tốt nhất cho CafeKit hoạt động hiệu quả cho cả các dự án nhỏ và lớn. Nó đặc biệt mạnh mẽ trong môi trường doanh nghiệp với các yêu cầu về tài liệu nghiêm ngặt và quy trình kiểm soát chất lượng chính thức. Cấu trúc giai đoạn chi tiết rất có giá trị đối với các nhóm làm việc phân tán, nơi việc chuyển giao công việc rõ ràng giúp giảm thiểu sự hiểu lầm. Các tổ chức cần có sản phẩm bàn giao chính thức ở mỗi giai đoạn sẽ thấy CafeKit phù hợp với quy trình làm việc của họ. GitHub Spec Kit github.com/github/spec-kit GitHub Spec Kit là công cụ Phát triển dựa trên đặc tả (Spec-Driven Development) chính thức của GitHub, ra mắt vào tháng 9 năm 2025. Nó đã nhanh chóng thu hút được sự chú ý đáng kể và hiện là ứng cử viên hàng đầu cho tiêu chuẩn thực tế. Phiên bản hiện tại là 0.9.5 (đầu tháng 6 năm 2026). GitHub mô tả nó là một dự án thử nghiệm, và phản hồi từ cộng đồng khá trái chiều - các nhóm khen ngợi cấu trúc và tính dễ dự đoán của nó nhưng lưu ý rằng nó tiêu tốn nhiều token hơn và quy trình làm việc chậm hơn so với các công cụ khác. Cấu trúc pha: 4 pha /speckit.specify→/speckit.plan→/speckit.tasks→/speckit.implement Mỗi lệnh tạo ra các sản phẩm đầu vào phục vụ cho giai đoạn tiếp theo. Quy trình làm việc là tuyến tính nhưng hỗ trợ lặp lại thông qua các lệnh chỉnh sửa. Giai đoạn đặc tả thu thập các yêu cầu, giai đoạn lập kế hoạch xác định phương pháp tiếp cận, giai đoạn phân công nhiệm vụ chia nhỏ công việc thành các đơn vị, và giai đoạn triển khai tạo ra code. Ưu điểm lớn nhất của cấu trúc này là sự đơn giản. Các nhóm có thể nhanh chóng học bốn lệnh và bắt đầu sử dụng công cụ với thời gian làm quen tối thiểu. Tuy nhiên, sự đơn giản cũng đồng nghĩa với việc kiểm soát chi tiết kém hơn so với phương pháp 6 giai đoạn của CafeKit. Các hoạt động kiểm thử và đánh giá không được nêu rõ là các giai đoạn riêng biệt, điều này có thể yêu cầu các nhóm phải xây dựng các cổng kiểm soát chất lượng riêng của họ bên ngoài quy trình chính. Các tính năng chính Thiết kế không phụ thuộc vào tác nhân, hỗ trợ hơn 20 tác nhân AI (Claude Code, GitHub Copilot, Cursor, Gemini CLI và các tác nhân khác). Tùy chỉnh hai lớp: Tiện ích mở rộng (thêm chức năng) và Cài đặt sẵn (sửa đổi quy trình làm việc hiện có) Tự động đánh số tính năng, tạo nhánh và tạo cấu trúc thư mục. Các lệnh kiểm tra chất lượng:/speckit.checklist(chất lượng theo thông số kỹ thuật) và/speckit.analyze(Tính nhất quán giữa các hiện vật) Quy trình công việc được định nghĩa bằng YAML hỗ trợ tự động hóa nhiều bước với chức năng tạm dừng và tiếp tục. Cộng đồng phần mềm open-source code năng động với tốc độ phát triển tính năng nhanh chóng. Tốt nhất cho GitHub Spec Kit lý tưởng cho các nhóm xây dựng sản phẩm mới trong môi trường toàn cầu, nói tiếng Anh. Nó hoạt động tốt cho các tổ chức sử dụng nhiều tác nhân lập trình AI cùng lúc. Các công ty khởi nghiệp và các công ty SaaS hiện đại theo xu hướng open-source code sẽ được hưởng lợi từ cộng đồng năng động và tốc độ phát triển nhanh chóng của nó. Các nhóm ưu tiên cập nhật các phương pháp SDD mới nhất nên cân nhắc công cụ này. BMAD - METHOD docs.bmad-method.org BMAD là viết tắt của "Breakthrough Method for Agile AI-Driven Development" (Phương pháp đột phá cho phát triển phần mềm linh hoạt dựa trên AI). Đây là một khung công tác tái định hình quá trình phát triển dựa trên đặc tả kỹ thuật trong bối cảnh Agile. Đặc điểm nổi bật của nó là kiến ​​trúc đa tác nhân, trong đó các tác nhân AI khác nhau đóng vai trò chuyên biệt trong suốt quá trình phát triển. Khung công tác này gần đây đã được chuyển đổi từ....claude/commands ĐẾN .claude/kỹ năngvới sự ra mắt của BMAD Method v6, cung cấp một triển khai gốc cho Claude Code. Cấu trúc pha: 4 pha Phân tích → Lập kế hoạch → Đề xuất giải pháp → Triển khai Giai đoạn Phân tích tập trung vào việc hiểu các yêu cầu kinh doanh và nhu cầu của người dùng. Giai đoạn Lập kế hoạch tạo ra các epic, story và kế hoạch sprint. Giai đoạn Xây dựng giải pháp xử lý kiến ​​trúc và thiết kế kỹ thuật. Giai đoạn Triển khai tạo ra code và thực hiện kiểm thử. Không giống như các công cụ khác coi quy trình làm việc là một chuỗi tuyến tính, BMAD hỗ trợ thực thi song song giữa các giai đoạn thông qua hệ thống đa tác tử của nó. Nhiều tác tử chuyên biệt có thể đồng thời làm việc trên các khía cạnh khác nhau của dự án, khiến nó phù hợp với các nhóm lớn và các dự án dài hạn. Các tính năng chính 21 chuyên viên chuyên trách với các vai trò khác nhau (Chuyên viên phân tích kinh doanh, Quản lý sản phẩm, Kiến trúc sư, Lập trình viên, Quản lý dự án Scrum, Kiểm thử chất lượng) Hơn 50 quy trình làm việc có hướng dẫn bao gồm các kịch bản phát triển phổ biến. Các triển khai gốc cho nhiều công cụ AI: Claude Code, Cursor, Windsurf, GitHub Copilot Lập kế hoạch sprint, tạo câu chuyện và hỗ trợ triển khai song song. Các gói mở rộng dành cho các lĩnh vực chuyên biệt như phát triển game, DevOps và cơ sở hạ tầng. Phù hợp chặt chẽ với phương pháp Scrum và Agile. Tốt nhất cho Phương pháp BMAD được thiết kế cho các nhóm Agile với định nghĩa vai trò rõ ràng. Phương pháp này hoạt động hiệu quả nhất cho việc phát triển sản phẩm dài hạn, nơi các yêu cầu thay đổi qua nhiều sprint. Các dự án tái cấu trúc quy mô lớn cũng được hưởng lợi từ sự hợp tác có cấu trúc giữa các thành viên. Các nhóm có chủ sở hữu sản phẩm và kiến ​​trúc sư chuyên trách sẽ thấy cách tiếp cận dựa trên vai trò này rất phù hợp. claude-code-spec-workflow (Pimzino) github.com/Pimzino/claude-code-spec-workflow claude-code-spec-workflow là một công cụ SDD nhẹ, thực dụng được tạo ra bởi nhà phát triển độc lập Pimzino. Hiện tại, nó có 2.544 lượt đánh dấu sao trên GitHub với khoảng 5.450 lượt tải xuống mỗi tháng (phiên bản 1.5.9). Công cụ này được thiết kế đơn giản, với cài đặt chỉ bằng một lệnh duy nhất và tập trung vào các quy trình phát triển thực tế hàng ngày. Tác giả hiện đang chuyển trọng tâm phát triển sang phiên bản dựa trên MCP (@pimzino/claude-code-spec-workflow-mcp), có nghĩa là phiên bản hiện tại sẽ nhận được ít bản cập nhật hơn trong tương lai. Cấu trúc pha Công cụ này cung cấp hai quy trình làm việc riêng biệt tùy thuộc vào loại công việc: Quy trình làm việc của tính năng mới: Yêu cầu → Thiết kế → Nhiệm vụ → Triển khai Quy trình sửa lỗi: Báo cáo → Phân tích → Sửa lỗi → Xác minh Quy trình sửa lỗi là tính năng nổi bật nhất của công cụ này, vì không có công cụ nào khác trong bài so sánh này cung cấp quy trình chuyên dụng cho việc sửa lỗi. Điều này làm cho nó đặc biệt phù hợp với các dự án bảo trì, nơi việc khắc phục sự cố là hoạt động chính chứ không phải là xây dựng các tính năng mới. Các tính năng chính Cài đặt chỉ với một lệnh duy nhất:npx @pimzino/claude-code-spec-workflow Quy trình riêng biệt cho việc sửa lỗi (Báo cáo → Phân tích → Sửa lỗi → Xác minh) Bảng điều khiển thời gian thực hiển thị tiến độ theo từng thông số kỹ thuật. Nhẹ và dễ sử dụng với thiết lập tối thiểu. Tập trung vào các tình huống phát triển thực tiễn, hàng ngày. Tốt nhất cho claude-code-spec-workflow phù hợp nhất cho các dự án bảo trì tập trung vào sửa lỗi và bổ sung các tính năng nhỏ. Nó hoạt động tốt cho các nhóm muốn thử nghiệm SDD mà không cần cam kết với một framework nặng nề. Các nhóm quy mô nhỏ đến trung bình đang tìm kiếm một giải pháp thay thế nhẹ nhàng sẽ thấy dễ dàng áp dụng nó. Các nhóm chủ yếu làm việc trên các sản phẩm hiện có hơn là phát triển sản phẩm mới hoàn toàn sẽ đánh giá cao quy trình sửa lỗi chuyên dụng. CafeKit tập trung vào tài liệu, kiểm soát chất lượng và phân phối theo từng giai đoạn. GitHub Spec Kit nhấn mạnh quy trình làm việc đơn giản và có thể mở rộng, hoạt động trên nhiều tác nhân lập trình AI. BMAD-METHOD áp dụng phương pháp ưu tiên Agile được xây dựng xung quanh các vai trò AI chuyên biệt, trong khi claude-code-spec-workflow ưu tiên sự đơn giản và tính thực tiễn hàng ngày. Bốn công cụ này đều có chung ý tưởng cốt lõi: sử dụng các thông số kỹ thuật làm nền tảng cho việc phát triển phần mềm có sự hỗ trợ của trí tuệ nhân tạo. Sự khác biệt nằm ở mức độ cấu trúc mà chúng đưa ra và những thách thức phát triển nào mà chúng ưu tiên. Đối với hầu hết các nhóm, sự lựa chọn không chỉ dựa trên tính năng mà còn dựa trên sở thích về quy trình làm việc. Công cụ tốt nhất thường là công cụ phù hợp với cách nhóm đã lập kế hoạch, xem xét và triển khai phần mềm. Bạn nên chọn công cụ nào? Lựa chọn phù hợp phụ thuộc vào loại dự án, cấu trúc nhóm và quy trình phát triển của bạn. Bảng dưới đây tóm tắt những lựa chọn phù hợp nhất cho từng trường hợp. Trường hợp Công cụ đề xuất Lý do Các dự án doanh nghiệp với các yêu cầu về tài liệu chính thức. CafeKit Quy trình làm việc có cấu trúc gồm 6 giai đoạn với các bước kiểm thử và đánh giá riêng biệt. Phát triển sản phẩm mới trong các nhóm toàn cầu GitHub Spec Kit Sự hỗ trợ mạnh mẽ từ cộng đồng, thiết kế không phụ thuộc vào tác nhân và sự phát triển nhanh chóng của hệ sinh thái. Các nhóm linh hoạt quản lý các sản phẩm dài hạn BMAD Method Quy trình làm việc dựa trên vai trò, phù hợp với các phương pháp Agile và Scrum. Các dự án bảo trì và khối lượng công việc nặng về sửa lỗi. claude-code-spec Quy trình sửa lỗi chuyên dụng và yêu cầu thiết lập tối thiểu. Các dự án doanh nghiệp với tài liệu chính thức Công cụ được đề xuất: CafeKit Cấu trúc 6 giai đoạn của CafeKit phù hợp với các quy trình triển khai doanh nghiệp yêu cầu các tài liệu chính thức ở mỗi giai đoạn. Tài liệu yêu cầu, đặc tả thiết kế, kế hoạch kiểm thử và hồ sơ đánh giá được coi là một phần của quy trình làm việc chứ không phải là các sản phẩm bàn giao tùy chọn. Các nhóm làm việc với các ngành công nghiệp được quản lý chặt chẽ, khách hàng lớn hoặc các quy trình đảm bảo chất lượng nghiêm ngặt sẽ được hưởng lợi nhiều nhất từ ​​cách tiếp cận này. Phát triển sản phẩm mới trong các nhóm toàn cầu Công cụ được đề xuất: GitHub Spec Kit GitHub Spec Kit là một lựa chọn mạnh mẽ cho các nhóm xây dựng sản phẩm mới trong môi trường phân tán. Kiến trúc không phụ thuộc vào tác nhân của nó hỗ trợ nhiều công cụ lập trình AI, trong khi cộng đồng open-source code năng động giúp cập nhật quy trình làm việc và các phương pháp tốt nhất. Các nhóm đã theo dõi các xu hướng phát triển hỗ trợ AI hiện đại sẽ thấy việc áp dụng tương đối dễ dàng. Các nhóm Agile quản lý sản phẩm dài hạn Công cụ được đề xuất: BMAD-METHOD BMAD-METHOD phù hợp một cách tự nhiên với các tổ chức đã vận hành theo các vai trò và quy trình Agile. Khung làm việc này hỗ trợ lập kế hoạch sprint, tạo câu chuyện người dùng, thiết kế kiến ​​trúc và triển khai thông qua các tác nhân AI chuyên dụng. Điều này làm cho nó đặc biệt hữu ích cho các nhóm sản phẩm làm việc trên nhiều phiên bản và các yêu cầu thay đổi liên tục. Các dự án bảo trì và khối lượng công việc sửa lỗi nặng nề Công cụ được đề xuất: claude-code-spec-workflow Điểm khác biệt chính ở đây là quy trình sửa lỗi chuyên dụng. Thay vì điều chỉnh quy trình phát triển tính năng cho công việc bảo trì, các nhóm có thể tuân theo quy trình được thiết kế riêng cho việc giải quyết sự cố. Việc thiết lập đơn giản và thời gian học tập ngắn hơn cũng khiến nó trở thành lựa chọn thiết thực cho các nhóm nhỏ. Các team có thể sử dụng nhiều công cụ SDD khác nhau không? Hoàn toàn đúng. Việc áp dụng Phát triển theo đặc tả (Spec-Driven Development) không yêu cầu tổ chức phải chuẩn hóa trên một khung công tác duy nhất. Trên thực tế, các nhóm khác nhau thường có các yêu cầu, quy trình làm việc và loại dự án khác nhau. Một công cụ hoạt động tốt cho một nhóm phát triển sản phẩm mới có thể không phải là lựa chọn tốt nhất cho một nhóm bảo trì hoặc một dự án triển khai doanh nghiệp. Một cách tiếp cận phổ biến là lựa chọn công cụ dựa trên đặc điểm của dự án thay vì áp dụng một tiêu chuẩn duy nhất cho toàn bộ tổ chức. Ví dụ, các dự án khách hàng doanh nghiệp với yêu cầu tài liệu chính thức có thể hưởng lợi từ quy trình làm việc có cấu trúc của CafeKit. Các nhóm sản phẩm xây dựng ứng dụng mới có thể thích GitHub Spec Kit hơn vì hệ sinh thái năng động và thiết kế không phụ thuộc vào tác nhân của nó. Các nhóm tập trung chủ yếu vào bảo trì và sửa lỗi có thể thấy claude-code-spec-workflow thực tế hơn nhờ quy trình sửa lỗi chuyên dụng của nó. Tin tốt là những công cụ này không loại trừ lẫn nhau. Hầu hết hoạt động như các quy trình làm việc dựa trên lệnh trong Claude Code và có thể cùng tồn tại trong cùng một tổ chức kỹ thuật. Điều này cho phép các nhóm áp dụng quy trình làm việc phù hợp nhất với nhu cầu dự án của họ trong khi vẫn tiếp tục sử dụng môi trường phát triển AI quen thuộc. Mục tiêu không phải là chọn khung phần mềm có nhiều tính năng nhất. Mục tiêu là chọn quy trình làm việc giúp nhóm của bạn cung cấp phần mềm một cách nhất quán hơn. Đối với nhiều tổ chức, điều đó có thể bao gồm việc sử dụng các công cụ SDD khác nhau cho các loại công việc khác nhau. Kết luận Phát triển hướng theo đặc tả (Spec-Driven Development) đã trưởng thành đáng kể kể từ cuối năm 2025. GitHub Spec Kit dẫn đầu về tiêu chuẩn hóa và hỗ trợ đa tác nhân. Phương pháp BMAD vượt trội trong môi trường Agile. claude-code-spec-workflow cung cấp một tùy chọn gọn nhẹ với quy trình sửa lỗi độc đáo. CafeKit cung cấp cấu trúc cấp doanh nghiệp với hỗ trợ tài liệu mạnh mẽ. Lựa chọn tốt nhất phụ thuộc vào loại dự án và cấu trúc nhóm của bạn. Đối với môi trường kết hợp, sử dụng nhiều công cụ song song là một chiến lược thiết thực. Bạn đã sẵn sàng thử nghiệm Phát triển dựa trên đặc tả (Spec-Driven Development) với nhóm của mình chưa? Hãy bắt đầu với CafeKit – phần mềm open-source code và sẵn sàng sử dụng. Cài đặt ngay hôm nay và trải nghiệm quy trình phát triển có cấu trúc với sự hỗ trợ của trí tuệ nhân tạo. đập npx @haposoft/cafekit Kho lưu trữ GitHub → Bạn có thắc mắc về việc triển khai SDD trong tổ chức của mình? Hãy liên hệ với chúng tôi – chúng tôi rất sẵn lòng chia sẻ kinh nghiệm. Giới thiệu về CafeKit và Haposoft CafeKit hiện có sẵn tại cafekit.haposoft.com Để được hỗ trợ triển khai, tùy chỉnh hoặc đào tạo nội bộ, vui lòng liên hệ với Haposoft. Về Công ty cổ phần Haposoft Trụ sở chính: Hà Nội, Việt Nam Văn phòng Nhật Bản: Haposoft Japan (Ebisu, Tokyo) Hơn 200 kỹ sư, đạt chứng nhận ISO 9001:2015 / ISO 27001, đối tác AWS Select Tier.
cafekit-spec-driven-development-ai-automation
Jun 25, 2026
15 phút đọc

Vượt xa "Vibe Coding": Cách CafeKit đưa Phát triển dựa trên đặc tả (SDD) vào Tự động hóa AI.

Các trợ lý lập trình AI hứa hẹn tốc độ phát triển phần mềm chưa từng có. Tuy nhiên, không ít trường hợp chúng tạo ra những đoạn code rời rạc, khó bảo trì và không tuân thủ kiến trúc thực tế của dự án. Nguyên nhân là bởi các mô hình AI thường hoạt động dựa trên từng prompt riêng lẻ, thiếu một quy trình đủ chặt chẽ để duy trì ngữ cảnh xuyên suốt trong các hệ thống phần mềm phức tạp. CafeKit, được phát triển bởi Haposoft, là một runtime nhẹ dành cho Claude Code, giúp đưa tính kỷ luật và cấu trúc vào quy trình phát triển phần mềm có sự hỗ trợ của AI. Thay vì phụ thuộc vào các prompt dài và việc kiểm soát thủ công, CafeKit dẫn dắt AI theo một quy trình phát triển dựa trên đặc tả (spec-driven workflow), nơi yêu cầu, source code, kiểm thử và tài liệu luôn được đồng bộ từ đầu đến cuối. Kết quả là một quy trình phát triển đáng tin cậy hơn, giảm việc chuyển đổi ngữ cảnh, hạn chế bỏ sót yêu cầu và tăng độ tin tưởng cho mỗi lần phát hành sản phẩm. CafeKit Là Gì? Nền Tảng Đằng Sau Spec-Driven Development CafeKit là một runtime do Haposoft phát triển nhằm đưa phương pháp Phát triển dựa trên đặc tả kỹ thuật (SDD) vào Claude Code. Được cài đặt trực tiếp trong thư mục .claude của dự án, CafeKit bổ sung một lớp quy trình có cấu trúc lên trên khả năng tạo code của Claude, giúp đội ngũ phát triển đi từ yêu cầu đến source code sẵn sàng triển khai mà không làm mất ngữ cảnh trong suốt quá trình. Để hiểu vì sao CafeKit quan trọng, hãy nhìn vào cách nhiều nhóm đang sử dụng AI để phát triển phần mềm hiện nay. Thông thường, lập trình viên bắt đầu bằng một prompt, tạo ra một phần source code, chỉnh sửa đôi chút rồi tiếp tục sang nhiệm vụ tiếp theo. Tính năng có thể hoạt động, nhưng yêu cầu nghiệp vụ dần bị chôn vùi trong lịch sử trò chuyện, tài liệu không còn được cập nhật, và không ai thực sự chắc chắn rằng kết quả cuối cùng còn bám sát ý định ban đầu hay không. Spec-Driven Development giải quyết vấn đề này bằng cách biến bản đặc tả thành điểm khởi đầu cho mọi tính năng. Trước khi viết bất kỳ dòng mã nào, các yêu cầu, hành vi mong đợi, trường hợp biên và tiêu chí thành công đều được ghi nhận và phê duyệt. Toàn bộ quá trình phát triển sau đó sẽ bám theo đặc tả này từng bước, đảm bảo việc triển khai, kiểm thử và tài liệu luôn đồng nhất với nhau. Đọc thêm: Spec-Driven Development là gì? Giải mã phương pháp phát triển phần mềm mới của kỷ nguyên AI CafeKit chính là lớp công cụ biến triết lý đó thành một quy trình thực tiễn dành cho AI. Thay vì kỳ vọng Claude phải ghi nhớ hàng chục prompt và quy tắc dự án, CafeKit cung cấp tập hợp các lệnh, agent chuyên biệt và cơ chế kiểm tra tự động để dẫn dắt mọi giai đoạn phát triển. Một yêu cầu tính năng sẽ được chuyển thành tài liệu yêu cầu, tài liệu yêu cầu sẽ được chuyển thành thiết kế kỹ thuật, và thiết kế kỹ thuật tiếp tục được chia nhỏ thành các nhiệm vụ có thể kiểm chứng trước khi việc lập trình bắt đầu. Cấu trúc này đặc biệt hữu ích với các dự án lớn, nơi những thay đổi do AI tạo ra có thể liên quan đến nhiều tệp, nhiều dịch vụ hoặc nhiều nhóm khác nhau. Bằng cách áp dụng các quality gate và đồng bộ đặc tả với codebase, CafeKit giúp ngăn chặn tình trạng “tiến độ giả” thường gặp trong phát triển phần mềm với AI, khi một công việc có vẻ đã hoàn thành nhưng thực tế lại gây lỗi hồi quy, phá vỡ chức năng hiện có hoặc dần lệch khỏi yêu cầu ban đầu. CafeKit Tự Động Hóa AI Discipline Như Thế Nào? (Thực Thi Cam Kết Của SDD) Việc tạo ra source code bằng AI giờ đây không còn là phần khó nhất. Thách thức thực sự nằm ở việc đảm bảo source code luôn bám sát yêu cầu, quyết định thiết kế và tiêu chuẩn dự án trong suốt vòng đời phát triển. Đó là lúc Spec-Driven Development phát huy giá trị - và CafeKit cung cấp cấu trúc cần thiết để phương pháp này hoạt động hiệu quả trong thực tế. Vì Sao Quy Trình Lập Trình Với AI Thường Bị Lệch Hướng? Phần lớn công cụ AI coding hiện nay được thiết kế để tạo ra kết quả nhanh nhất có thể. Điều này giúp tăng tốc độ phát triển nhưng cũng dẫn đến một vấn đề quen thuộc: ngữ cảnh dần bị thất lạc. Yêu cầu nằm trong lịch sử chat, quyết định thiết kế phân tán ở nhiều cuộc trao đổi khác nhau, còn tài liệu thường không theo kịp tốc độ thay đổi của source code. Đó là lý do nhiều nhóm gặp phải hiện tượng "Sự thay đổi thông số kỹ thuật" khi sử dụng AI. Một tính năng có thể bắt đầu với mục tiêu rất rõ ràng, nhưng sau nhiều vòng prompt, chỉnh sửa và yêu cầu bổ sung, việc xác định liệu kết quả cuối cùng còn phản ánh đúng ý định ban đầu hay không trở nên vô cùng khó khăn. Dự án càng lớn, vấn đề này càng phức tạp. Spec-Driven Development tiếp cận theo hướng khác: xem đặc tả là nguồn sự thật duy nhất (single source of truth). Thay vì phụ thuộc vào lịch sử prompt, mọi yêu cầu, quyết định thiết kế, nhiệm vụ và bước xác thực đều được liên kết với một đặc tả đã được phê duyệt. Mã hóa Vibe Phát triển dựa trên đặc tả Bắt đầu từ prompt Bắt đầu từ đặc tả đã được phê duyệt Ngữ cảnh nằm trong lịch sử chat Ngữ cảnh nằm trong các tài sản của dự án Phù hợp cho thử nghiệm nhỏ Mở rộng tốt hơn cho các dự án phức tạp Tài liệu thường được cập nhật sau Tài liệu được cập nhật song song với phát triển Khó truy vết quyết định Mọi thay đổi đều có thể truy nguyên về yêu cầu CafeKit Giữ AI Đi Đúng Hướng Bằng Cách Nào? CafeKit hiện thực hóa quy trình này ngay bên trong Claude Code. Sau khi được cài đặt vào thư mục .claude của dự án, nó bổ sung một tập hợp agent chuyên biệt cùng các quy tắc workflow nhằm đảm bảo mọi công việc luôn bám sát đặc tả đã được phê duyệt. Thay vì để lập trình viên tự kiểm tra từng bước, CafeKit phân công trách nhiệm cho các agent chuyên dụng trong toàn bộ quy trình: Nhân viên kiểm thử Xác thực việc triển khai dựa trên các lệnh kiểm thử đã định nghĩa. Kiểm tra tiêu chí nghiệm thu và hành vi mong đợi. Người đánh giá đại lý Đánh giá xem kết quả có đáp ứng đặc tả đã phê duyệt hay không. Kiểm tra việc tuân thủ các tiêu chuẩn của dự án. Tác nhân đồng bộ hóa tài liệu Đồng bộ tài liệu, hồ sơ dự án và đặc tả trong suốt quá trình phát triển. Nhờ các bước kiểm tra được tích hợp trực tiếp vào workflow, đội ngũ phát triển không còn phải liên tục nhắc lại ngữ cảnh, xác minh giả định hay rà soát các tài liệu lỗi thời. AI tập trung vào việc thực thi, trong khi CafeKit đảm bảo quy trình luôn vận hành đúng hướng. Điều Gì Xảy Ra Trước Khi Mã Nguồn Được Chuyển Sang Bước Tiếp Theo? Mã nguồn do AI tạo ra thường trông có vẻ hoàn chỉnh trước khi thực sự sẵn sàng đưa vào sản phẩm. Một tính năng có thể hoạt động trong lần kiểm tra nhanh nhưng vẫn bỏ sót các trường hợp biên, không vượt qua kiểm thử tích hợp hoặc khiến tài liệu không còn chính xác. Khi mức độ phụ thuộc vào AI ngày càng tăng, những khoảng trống nhỏ này có thể tích tụ thành những vấn đề bảo trì lớn hơn. CafeKit giải quyết điều đó bằng cách xem việc tạo code chỉ là một bước trong toàn bộ quy trình. Trước khi một nhiệm vụ được đánh dấu hoàn thành, phần triển khai phải đáp ứng đặc tả đã phê duyệt và vượt qua toàn bộ các bước xác thực bắt buộc. Việc cập nhật tài liệu cũng có thể được yêu cầu như một phần của workflow, giúp kiến thức dự án luôn đồng bộ với codebase thay vì phải cập nhật thủ công nhiều tuần sau đó. Mục tiêu không phải là thêm quy trình cho có quy trình. Mục tiêu là xây dựng một môi trường nơi tiến độ được đo lường bằng các kết quả đã được xác minh, thay vì chỉ dựa trên lượng source code được tạo ra. Điều này giúp đội ngũ phát triển tin tưởng hơn vào sản phẩm AI tạo ra và giảm đáng kể khối lượng kiểm tra thủ công trước khi chuyển sang bước tiếp theo. Quy Trình CafeKit: 6 Bước Từ Spec Đến Production Phần lớn các phiên lập trình với AI bắt đầu bằng một prompt. CafeKit bắt đầu bằng một bản đặc tả. Thay vì yêu cầu Claude tự suy diễn toàn bộ tính năng từ một ý tưởng sơ khai, CafeKit áp dụng một chuỗi bước có cấu trúc. Mỗi giai đoạn tạo ra một đầu ra có thể kiểm chứng, giúp ngữ cảnh luôn được bảo toàn khi dự án mở rộng. Giai đoạn Lệnh Kết quả Thông số kỹ thuật /hapo:specs Đặc tả tính năng có cơ chế xác thực Phát triển /hapo:develop Triển khai theo từng task packet Bài kiểm tra /hapo:test Xác minh bằng tín hiệu build thực tế Ôn tập /hapo:code-review Kiểm tra hồi quy và bảo mật Git /hapo:git Quy trình commit và push an toàn Triển khai /hapo:deploy Bàn giao triển khai tới hạ tầng hiện có Bước 1: Tạo Feature Contract Với /hapo:specs Đây là nơi những ý tưởng sản phẩm còn mơ hồ được chuyển thành các cam kết kỹ thuật rõ ràng. Lệnh này ghi nhận yêu cầu tính năng và tạo ra một file đặc tả có cấu trúc, bao gồm phạm vi, hành vi, ràng buộc và tiêu chí thành công. Sau đó, bạn sử dụng /hapo:specs --validate để xác thực rằng yêu cầu đã đầy đủ và sẵn sàng cho việc triển khai. Hệ thống task registry sẽ theo dõi trạng thái xác thực và AI không được phép tiếp tục cho đến khi đặc tả vượt qua toàn bộ kiểm tra. Bước 2: Triển Khai Từng Task Packet Với /hapo:develop CafeKit tự động chia đặc tả đã được phê duyệt thành các task packet độc lập và có thể kiểm thử riêng biệt. Mỗi packet có: Một mục tiêu duy nhất. Tiêu chí hoàn thành rõ ràng. Các lệnh xác minh được định nghĩa trước. Khi chạy /hapo:develop với một task packet cụ thể, Claude chỉ thực hiện đúng phần công việc đó - không nhiều hơn và cũng không ít hơn. Cách làm này giúp: Giảm áp lực lên context window. Ngăn tình trạng mở rộng phạm vi ngoài kế hoạch. Đảm bảo AI luôn bám sát thiết kế đã được phê duyệt. Bước 3: Xác Minh Bằng Tín Hiệu Build Và Runtime Thực Tế Với /hapo:test Một phần triển khai chưa được xem là hoàn thành cho đến khi vượt qua các quality gate tự động. Lệnh /hapo:test --full sẽ thực thi chính xác các bước kiểm tra được định nghĩa trong task packet, đối chiếu với kết quả build và hành vi runtime thực tế. Điều gì xảy ra nếu bài kiểm tra thất bại? Workflow sẽ dừng lại ngay lập tức. AI phải tự sửa lỗi và chạy lại toàn bộ kiểm tra trước khi được phép tiếp tục. Điều này loại bỏ hoàn toàn hiện tượng “tiến độ giả” - khi source code trông có vẻ đúng trên tài liệu nhưng thực tế lại khiến hệ thống build thất bại. Bước 4: /hapo:code-review - Kiểm Tra Hồi Quy Và Bảo Mật Trước khi bất kỳ dòng mã nào được hợp nhất vào nhánh chính, CafeKit áp dụng quy trình review có cấu trúc. Lệnh /hapo:code-review --pending kích hoạt các agent chuyên biệt để rà soát: Lỗi hồi quy (regression). Lỗ hổng bảo mật. Sự không nhất quán về kiến trúc. Các agent này đồng thời đối chiếu kết quả triển khai với đặc tả ban đầu nhằm đảm bảo không có sai lệch nào phát sinh. Chỉ khi đánh giá cuối cùng đạt yêu cầu, công việc mới được chuyển sang bước tiếp theo. Bước 5: /hapo:git - Commit Và Push An Toàn Sau khi vượt qua toàn bộ quality gate, lệnh /hapo:git commit sẽ tạo một commit sạch và đã được xác minh, bao gồm cả thay đổi source code lẫn tài liệu cập nhật. Runtime đảm bảo task registry và trạng thái đặc tả luôn đồng bộ với phần triển khai thực tế. Sau đó, /hapo:git push sẽ chuyển phần công việc lên kho source code từ xa một cách an toàn. Mọi commit đều có thể truy vết ngược lại đặc tả đã được phê duyệt và task packet đã được xác minh. Bước 6: /hapo:deploy - Triển Khai Với Quy Trình Bàn Giao Hoàn Chỉnh Ở giai đoạn cuối, CafeKit bàn giao phiên bản phát hành đã được xác minh cho hệ thống triển khai hiện có của doanh nghiệp. Dù bạn sử dụng: Vercel AWS Hay các pipeline CI/CD tùy chỉnh /hapo:deploy vẫn đảm bảo rằng chỉ những phần mã đã vượt qua toàn bộ checkpoint mới được đưa vào quy trình triển khai. Tài liệu, spec registry và codebase production luôn được duy trì đồng bộ với nhau. Bắt Đầu Với CafeKit Một trong những lợi thế lớn nhất của CafeKit là khả năng tích hợp dễ dàng vào quy trình phát triển hiện có. Bạn không cần: Chuyển đổi framework. Thay thế công cụ đang sử dụng. Đại tu toàn bộ tech stack. CafeKit hoạt động song song với Claude Code, bổ sung cấu trúc cần thiết cho Spec-Driven Development mà không làm gián đoạn cách đội ngũ của bạn đang phát triển phần mềm. Cài Đặt CafeKit Để cài đặt runtime, chỉ cần truy cập thư mục gốc của dự án và chạy: npx @haposoft/cafekit Chỉ với một lệnh duy nhất, thư mục .claude sẽ được khởi tạo cùng các slash command, template workflow và quy tắc vận hành cần thiết. Để tìm hiểu sâu hơn về cấu hình nâng cao, custom hook và các tình huống đặc biệt, hãy tham khảo hướng dẫn chính thức Từ con số 0 đến CafeKit. Sau khi cài đặt, bạn có thể ngay lập tức kích hoạt toàn bộ vòng đời spec-to-ship: /hapo:specs → /hapo:develop → /hapo:test → /hapo:code-review → /hapo:git → /hapo:deploy Hỗ Trợ Triển Khai CafeKit hoàn toàn không phụ thuộc vào công nghệ cụ thể, vì vậy có thể hoạt động với: Node.js Python Ruby on Rails Các framework frontend hiện đại Các đội ngũ có thể triển khai từng phần trên các module legacy hoặc áp dụng cho dự án mới ngay từ đầu. Nếu tổ chức của bạn đang đánh giá khả năng áp dụng SDD ở quy mô lớn và cần hỗ trợ thực tế, đội ngũ Haposoft luôn sẵn sàng đồng hành. Bạn có thể yêu cầu một buổi technical walkthrough thông qua biểu mẫu liên hệ của CafeKit hoặc gửi email tới sale@haposoft.com để trao đổi về kiến trúc hệ thống của mình. Kết Luận: Phát Triển Với Sự Tự Tin, Không Phải Hy Vọng Điểm nghẽn lớn nhất của AI coding hiện nay không còn là tốc độ tạo code. Thách thức thực sự là khả năng duy trì ngữ cảnh và đảm bảo tính toàn vẹn của kiến trúc hệ thống. Những quy trình phát triển dựa trên prompt thiếu cấu trúc thường dẫn đến logic phân mảnh, phụ thuộc được AI tự suy diễn và lượng technical debt ngày càng tăng - những vấn đề cuối cùng vẫn phải được các kỹ sư cấp cao xử lý. CafeKit giải quyết bài toán đó bằng cách đưa cấu trúc vào quy trình phát triển có AI hỗ trợ. Thay vì xem AI như một công cụ tự động hoàn thành source code, CafeKit biến Claude Code thành một môi trường phát triển có quy trình rõ ràng, nơi đặc tả, triển khai, kiểm thử và tài liệu luôn vận hành đồng bộ. Dù bạn đang thử nghiệm AI trong phát triển phần mềm hay đang tìm kiếm một phương pháp đáng tin cậy hơn để mở rộng việc sử dụng AI trong toàn đội ngũ, CafeKit mang đến một điểm khởi đầu thực tiễn và dễ áp dụng. Muốn xem CafeKit vận hành trong một dự án thực tế? Hãy đăng ký một buổi walkthrough cùng đội ngũ Haposoft hoặc thử áp dụng CafeKit cho tính năng tiếp theo của bạn để trực tiếp trải nghiệm quy trình từ thông số kỹ thuật đến sản phẩm.
spec-driven-development-what-is
Jun 02, 2026
20 phút đọc

Spec-Driven Development là gì? Giải mã phương pháp phát triển phần mềm mới của kỷ nguyên AI

Sự xuất hiện của các coding agent như Claude Code, GitHub Copilot..., đang thay đổi rất nhanh cách các team phát triển phần mềm làm việc. Trước đây, developer phải tự viết gần như toàn bộ code bằng tay. Còn hiện tại, chỉ cần mô tả yêu cầu bằng ngôn ngữ tự nhiên, AI đã có thể hỗ trợ viết code, tạo test và xử lý nhiều phần việc kỹ thuật. Điều từng được xem là “viễn tưởng” vài năm trước giờ đã trở thành công việc hằng ngày của rất nhiều team engineering. Tuy nhiên, khi áp dụng AI coding trong thực tế, nhiều engineer lại gặp những vấn đề rất giống nhau: "Cái kế hoạch tôi vừa lập 3 tiếng trước là gì ấy nhỉ?" – thời gian dành cho việc scroll lại lịch sử chat ngày càng nhiều Giao việc cho AI xong thì phát hiện AI implement luôn cả những tính năng ngoài dự kiến (over-engineering) Khi cuộc hội thoại dài ra, các specification quan trọng bị chôn vùi trong context Khi đổi session, lại phải giải thích context cho AI từ đầu Nói cách khác, AI giúp viết code nhanh hơn, nhưng lại khiến việc quản lý context và yêu cầu trở nên khó hơn. Chính trong bối cảnh đó, Spec-Driven Development (SDD – Phát triển dựa trên đặc tả) bắt đầu được chú ý như một cách tiếp cận mới để vượt qua giới hạn của “Vibe Coding” – tức kiểu làm việc chủ yếu dựa trên việc chat liên tục với AI theo cảm hứng. Bài viết này sẽ trình bày một cách hệ thống từ khái niệm cơ bản của SDD, phương pháp thực hành, so sánh các công cụ chính, cho đến cách ứng dụng "CafeKit" – công cụ OSS do Haposoft phát triển hướng đến các doanh nghiệp Nhật Bản. 1. Spec-Driven Development (SDD) là gì? 1.1 Định nghĩa Spec-Driven Development (SDD) là phương pháp phát triển phần mềm trong đó tài liệu đặc tả (Specification) được xem là “nguồn thông tin đáng tin cậy duy nhất” của dự án. Toàn bộ quá trình implement, test hay review sẽ được thực hiện dựa trên đặc tả này, thay vì phụ thuộc vào lịch sử chat hoặc trí nhớ của từng thành viên trong team. Trong cách làm truyền thống, developer thường viết code trước rồi mới document lại sau. Còn với SDD, quy trình được đảo ngược thành “spec-first” – tức là làm rõ yêu cầu trước, thống nhất chính xác hệ thống cần xây dựng như thế nào, rồi sau đó mới bắt đầu implement. Điểm quan trọng nhất của SDD không nằm ở việc AI viết code thay con người, mà nằm ở việc con người và AI cùng làm việc dựa trên một specification chung. 1.2 Vị trí của SDD trong dòng chảy phát triển phần mềm Thực tế, SDD không phải là một phát minh hoàn toàn mới. Đây là sự quay trở lại của những nguyên tắc nền tảng mà ngành software engineering đã sử dụng suốt nhiều thập kỷ: xác định yêu cầu, thiết kế, implement và test. Khác biệt nằm ở chỗ: trong kỷ nguyên AI, specification không chỉ để con người đọc nữa, mà còn là “ngôn ngữ giao tiếp” giữa con người và AI. Trong Technology Radar Vol.32 (tháng 4/2025) của Thoughtworks, SDD đã được đưa vào trạng thái "Trial (Thử nghiệm)" và bắt đầu được chú ý nghiêm túc trên toàn ngành. Tại AWS re:Invent 2025, Amazon đã công bố "Kiro IDE" – môi trường phát triển tích hợp AI agent, hiện thực hóa tư tưởng SDD qua flow Requirements → Design → Tasks → Code Generation. Đây cũng chính là tư tưởng cốt lõi của SDD. 1.3 So sánh với Vibe Coding Tiêu chí Vibe Coding Spec-Driven Development (SDD) Điểm xuất phát Ý tưởng bằng ngôn ngữ tự nhiên Đặc tả có cấu trúc Nguồn thông tin Lịch sử chat File đặc tả (Markdown...) Tính bền vững của kế hoạch Bị chôn vùi trong hội thoại Tồn tại dưới dạng file Bàn giao giữa các session Khó khăn Cho AI đọc spec là tiếp tục được Chia sẻ trong team Khó khăn Dễ dàng nhờ share file Review Chỉ review được output code Review được ngay từ giai đoạn spec 2. Những hiệu quả cụ thể mà SDD mang lại – Báo cáo từ thực tế triển khai tại Haposoft Spec-Driven Development vẫn còn là một emerging practice của giai đoạn 2025–2026, và hiện tại ngành phần mềm vẫn chưa có một bộ metric chung được thống nhất hoàn toàn. Tuy nhiên, tại Haposoft – nơi đã áp dụng workflow spec-first vào quá trình delivery cho các dự án offshore với khách hàng Nhật Bản – team đã ghi nhận được nhiều thay đổi đáng kể sau khi triển khai workflow SDD. 2.1 Giảm 30% effort trong giai đoạn estimate Bối cảnh đo lường: So sánh effort khi PM/Tech Lead estimate cho các dự án mới trước và sau khi áp dụng spec-first workflow, trên các dự án Web/SaaS quy mô 3-12 tháng. Lý do giảm được: Đặc tả được cấu trúc hóa rõ ràng ngay từ giai đoạn pre-sale, giúp việc breakdown WBS chính xác hơn và giảm phần "buffer cho điều không biết" Giảm số vòng làm rõ yêu cầu (clarification rounds) với khách hàng nhờ template đặc tả chuẩn Tái sử dụng được các spec module từ dự án trước (authentication, payment, notification...) thay vì estimate lại từ đầu Ý nghĩa kinh doanh: Với một dự án trung bình estimate trong 2 tuần, việc giảm 30% effort tương đương tiết kiệm được khoảng 3 ngày công – đồng nghĩa với việc Sales team có thể response nhanh hơn 3 ngày tới khách hàng, một lợi thế cạnh tranh đáng kể trong thị trường Nhật Bản nơi tốc độ phản hồi rất được coi trọng. 2.2 Tăng 50% tốc độ SDLC delivery Bối cảnh đo lường: So sánh thời gian từ "kickoff đến release production lần đầu" giữa các dự án sử dụng workflow cũ (code-first, document hóa sau) và các dự án mới áp dụng SDD với coding agent. Lý do tăng được: Giảm rework do hiểu sai requirement: Vì đặc tả được người và AI thống nhất trước khi viết code, các trường hợp "implement xong rồi phát hiện hiểu sai" giảm đáng kể. Đây là nguồn lãng phí lớn nhất trong các dự án offshore Việt-Nhật do rào cản ngôn ngữ AI implement nhanh hơn khi có spec rõ: Coding agent có spec làm "kim chỉ nam" sẽ sinh code chính xác hơn ngay lần đầu, giảm số vòng prompt back-and-forth Test case được sinh ra từ acceptance criteria của spec, không cần viết test từ đầu sau khi code xong Tài liệu bàn giao được sinh tự động từ spec – đặc biệt quan trọng với khách hàng Nhật vốn yêu cầu tài liệu chỉn chu Lưu ý về phạm vi áp dụng: Hiệu quả 50% được ghi nhận trên các dự án phát triển mới (greenfield) quy mô vừa và lớn. Với các dự án maintenance hoặc hotfix nhỏ, overhead của việc viết spec có thể vượt quá thời gian tiết kiệm được – đây là một lý do CafeKit có cơ chế cho phép skip phase đối với các thay đổi nhỏ. 2.3 Các hiệu quả định tính khác Ngoài các con số cụ thể, team Haposoft còn ghi nhận nhiều lợi ích khó đo lường nhưng rất đáng giá trong vận hành: Phân chia trách nhiệm rõ ràng giữa Người và AI: Đặc tả (What) do con người phê duyệt, còn implementation (How) thì giao cho AI. Cách phân chia vai trò này vừa kiểm soát được rủi ro AI "chạy lung tung", vừa tối đa hóa năng suất. Tính liên tục vượt qua ranh giới session: Dù session Claude Code có bị ngắt, dù có đổi engineer phụ trách giữa chừng (vốn thường xuyên xảy ra ở các công ty offshore), chỉ cần còn file đặc tả là người mới có thể tiếp quản dự án trong thời gian ngắn. Tài liệu tự động được tích lũy: Vì "đã làm gì, đến đâu, tại sao" đều được lưu lại dưới dạng file Markdown trong Git, gánh nặng khi bàn giao cho thành viên mới hoặc khi chính bản thân đọc lại sau vài tháng được giảm đáng kể. Điều này đặc biệt quan trọng với cấu trúc dự án mà PM Nhật và DEV Việt làm việc cùng nhau qua nhiều múi giờ. 3. Workflow điển hình của SDD Cụ thể thì SDD đi qua những phase nào? Hãy cùng phân chia flow tiêu biểu thành 6 phase. Phase 1: Định nghĩa yêu cầu (Requirements) Đây là giai đoạn xác định business goal, vấn đề người dùng cần giải quyết, functional requirement và non-functional requirement. AI có thể hỗ trợ team chuyển các ý tưởng ban đầu thành user story hoặc acceptance criteria có cấu trúc rõ ràng hơn. Phase 2: Thiết kế (Design) Sau khi requirement được thống nhất, team bắt đầu thiết kế kiến trúc hệ thống, data model, API, luồng màn hình và các quyết định kỹ thuật liên quan. Những quyết định này thường được lưu lại dưới dạng Design Doc hoặc ADR để sau này có thể truy vết được lý do tại sao team chọn hướng thiết kế đó. Phase 3: Phân rã task (Task Breakdown) Thiết kế sẽ tiếp tục được chia thành các task nhỏ có thể implement được. Nhiều team áp dụng nguyên tắc “1 task = 1 commit” để giúp việc quản lý tiến độ và review trở nên dễ dàng hơn. Phase 4: Implementation Ở phase này, AI hoặc developer bắt đầu implement từng task. Điểm quan trọng là AI luôn tham chiếu đến specification thay vì chỉ dựa vào lịch sử chat. Nhờ vậy, code được sinh ra có tính nhất quán cao hơn và ít bị “mất bức tranh tổng thể”. Phase 5: Test Acceptance criteria trong specification có thể được dùng để sinh test case và kiểm tra coverage. Điều này giúp quá trình test bám sát business requirement hơn thay vì chỉ kiểm tra logic kỹ thuật đơn thuần. Phase 6: Review Cuối cùng, engineer sẽ review code dựa trên specification đã được thống nhất trước đó. Việc có một “tiêu chuẩn đối chiếu” rõ ràng giúp review chất lượng code, security và maintainability trở nên minh bạch hơn. 4. Các lựa chọn công cụ SDD chính Khi AI coding phát triển mạnh, ngày càng có nhiều công cụ hỗ trợ workflow Spec-Driven Development xuất hiện. 4.1 GitHub Spec Kit Bộ công cụ SDD do GitHub cung cấp chính thức. Dựa trên tư tưởng "nếu có đặc tả rõ ràng thì AI có thể sinh code đúng", hỗ trợ tạo Design Doc, ADR và PRD. 4.2 Kiro IDE IDE tích hợp AI dạng agent do AWS cung cấp. Hỗ trợ tích hợp từ việc làm rõ yêu cầu từ ngôn ngữ tự nhiên thành đặc tả, đến phân rã yêu cầu → thiết kế → implement → test → sinh code. 4.3 claude-code-spec-workflow Công cụ CLI ra đời từ cộng đồng OSS. Implement flow SDD cho Claude Code, có thể khởi động workflow phát triển tính năng mới chỉ bằng một command. 4.4 cc-sdd / OpenSpec Nhóm các công cụ nhẹ cung cấp flow spec → task → implement theo nhiều triết lý khác nhau. Có thể lựa chọn tùy theo quy mô và sở thích của dự án. 4.5 CafeKit (Sản phẩm của Haposoft, dành cho doanh nghiệp Nhật Bản) Và đây, công cụ chúng tôi muốn giới thiệu chính là CafeKit – OSS do Haposoft chúng tôi phát triển. 5. CafeKit: Bộ công cụ SDD tối ưu cho phát triển doanh nghiệp 5.1 CafeKit là gì? CafeKit (cafekit.haposoft.com) là bộ công cụ CLI mã nguồn mở, được thiết kế dành riêng cho Claude Code, implement workflow Spec-Driven Development 6 phase. 5.2 Workflow 6 phase của CafeKit CafeKit sử dụng cùng thuật ngữ quen thuộc như trong môi trường phát triển phần mềm Nhật Bản, cung cấp các giai đoạn sau: Định nghĩa yêu cầu → Thiết kế → Phân tích nhiệm vụ → Triển khai → Kiểm thử → Đánh giá Mỗi giai đoạn tạo ra các tệp Markdown có cấu trúc được lưu trữ trực tiếp trong kho lưu trữ, có thể quản lý bằng Git. Vì các đặc tả được kiểm soát phiên bản cùng với mã nguồn, các nhóm có thể theo dõi các thay đổi một cách nhất quán hơn và duy trì lịch sử dự án rõ ràng hơn theo thời gian. Quy trình làm việc này cũng giúp việc cộng tác dễ dàng hơn giữa các kỹ sư, người đánh giá và các tác nhân mã hóa AI vì mọi người đều làm việc trong cùng một ngữ cảnh được ghi lại. 5.3 Vì sao nên áp dụng CafeKit? Khi bắt đầu áp dụng quy trình làm việc SDD trong các dự án sản xuất, chúng tôi nhận thấy nhiều công cụ hiện có tập trung chủ yếu vào việc nhắc nhở nhưng lại hỗ trợ hạn chế trong việc duy trì cấu trúc dự án dài hạn. CafeKit được thiết kế để giải quyết một số vấn đề thực tế mà chúng tôi gặp phải trong quá trình phát triển thực tế: Giữ cho đặc tả và triển khai được đồng bộ hóa trong suốt vòng đời dự án. Giúp dễ dàng duy trì bối cảnh dự án giữa các phiên làm việc với AI. Cải thiện sự hợp tác giữa nhiều kỹ sư làm việc với các tác nhân lập trình AI. Duy trì tài liệu có thể tái sử dụng thay vì hoàn toàn dựa vào lịch sử trò chuyện. Mục tiêu không chỉ đơn giản là tạo ra mã nhanh hơn. Đó là tạo ra một quy trình làm việc mà cả con người và AI đều có thể làm việc dựa trên các đặc tả ổn định và có thể tái sử dụng. 5.4 Việc triển khai CafeKit chỉ mất vài phút # Cài đặt (hình ảnh minh họa) npm install -g @haposoft/cafekit # Khởi tạo trong dự án cafekit init # Bắt đầu phase định nghĩa yêu cầu cafekit spec new "Chức năng xác thực user" Để biết chi tiết cách sử dụng và tài liệu, mời tham khảo trang web chính thức cafekit.haposoft.com. 6. Các bước thực hành triển khai SDD "Tôi muốn áp dụng SDD vào công ty mình" – với những độc giả nghĩ như vậy, dưới đây là các bước triển khai thực tế. Step 1: Bắt đầu từ dự án nhỏ Tuyệt đối không nên áp dụng ngay vào dự án quy mô lớn. Hãy thử nghiệm từ phát triển các chức năng nhỏ mới hoặc công cụ nội bộ trước. Step 2: Chuẩn bị template tài liệu đặc tả Chuẩn bị template định nghĩa yêu cầu, template thiết kế tùy theo loại dự án. Cách nhanh nhất là customize dựa trên template của CafeKit. Step 3: Tuân thủ triệt để nguyên tắc "1 Todo = 1 Commit = 1 Spec Update" Bằng cách giữ task, commit, và cập nhật đặc tả tương ứng 1-1, có thể ngăn ngừa việc AI và con người hiểu lệch nhau. Step 4: Chuyển văn hóa review sang giai đoạn đặc tả Thay đổi quy trình vốn chủ yếu là "code review" thành 2 giai đoạn "review đặc tả → code review". Phát hiện sớm sẽ giúp giảm chi phí đáng kể. Step 5: Cả team thống nhất công cụ Nếu mỗi cá nhân dùng công cụ khác nhau thì format đặc tả sẽ trở nên lộn xộn. Hãy thống nhất công cụ (ví dụ: CafeKit) trong toàn team. 7. Những cạm bẫy khi triển khai SDD và cách đối phó SDD không phải là chiếc đũa thần. Dưới đây là 3 cạm bẫy thường gặp khi triển khai. Cạm bẫy 1: Viết đặc tả quá nhiều Một trong những sai lầm phổ biến là biến SDD thành quy trình tài liệu quá nặng. Nếu team dành quá nhiều thời gian để hoàn thiện document, lợi ích về tốc độ từ AI sẽ bị giảm đáng kể. Trong nhiều trường hợp, chỉ cần bắt đầu bằng những bullet point rõ ràng là đã đủ để AI hỗ trợ mở rộng specification. Cạm bẫy 2: Đặc tả và code bị lệch nhau Nếu requirement thay đổi nhưng specification không được update kịp thời, tài liệu sẽ nhanh chóng mất giá trị. Đó là lý do workflow SDD luôn yêu cầu việc đồng bộ giữa spec và code. Cạm bẫy 3: Quá tin tưởng vào AI Dù workflow có tốt đến đâu, AI vẫn chưa thể thay thế hoàn toàn engineer. Con người vẫn cần chịu trách nhiệm cuối cùng về chất lượng sản phẩm, security, edge case và các quyết định kỹ thuật quan trọng. 8. Tác động của SDD đến career Trong kỷ nguyên AI, giá trị của việc “biết viết code” có thể sẽ dần giảm xuống. Ngược lại, những kỹ năng trở nên quan trọng hơn sẽ là: Khả năng xác định đúng requirement Khả năng cấu trúc hóa vấn đề Khả năng truyền đạt rõ ràng cho AI Nói cách khác, giá trị đang dần chuyển từ “người viết code” sang “người thiết kế giải pháp”. Và SDD chính là một trong những kỹ năng giúp engineer chuẩn bị cho sự thay đổi đó. Tổng kết Bài viết đã trình bày các điểm sau về Spec-Driven Development (SDD): SDD/ Định nghĩa SDD: Phương pháp coi đặc tả là "nguồn thông tin đáng tin cậy duy nhất" và giao việc sinh code cho AI Hiệu quả thực tế tại Haposoft: Giảm 30% effort estimate, tăng 50% tốc độ SDLC delivery khi áp dụng spec-first workflow trên dự án greenfield quy mô vừa và lớn Workflow: 6 phase "Định nghĩa yêu cầu → Thiết kế → Phân rã task → Implement → Test → Review" Các công cụ chính: Spec Kit, Kiro IDE, claude-code-spec-workflow, và CafeKit cho doanh nghiệp Nhật Bản Các bước triển khai: Bắt đầu nhỏ, chuẩn bị template, thống nhất công cụ trong team Từ thời đại AI "viết code" sang thời đại con người và AI "đối thoại bằng đặc tả". Spec-Driven Development chính là tư tưởng nằm ở trung tâm của sự thay đổi đó. Nếu bạn muốn bắt đầu SDD trong phát triển enterprise tại Nhật Bản, hãy thử CafeKit (cafekit.haposoft.com). Hỗ trợ tiếng Nhật native, tương thích hoàn toàn với Claude Code, OSS miễn phí – có thể triển khai ngay từ hôm nay. Liên hệ về CafeKit Về việc hỗ trợ triển khai CafeKit, customize cho enterprise, đào tạo SDD..., xin liên hệ với Haposoft. Website chính thức: cafekit.haposoft.com Haposoft: Công ty offshore development có trụ sở chính tại Hà Nội (Việt Nam) và văn phòng tại Tokyo (Nihonbashi, Nhật Bản). Đạt chứng nhận AWS Select Tier Partner, ISO 9001:2015 và ISO 27001. Hãy để sự phát triển trong kỷ nguyên AI được dẫn dắt bởi những đặc tả chắc chắn
cta-background

Đăng ký nhận bản tin hàng tháng của Haposoft

Nhận thông tin chuyên sâu về chuyển đổi số và cập nhật sự kiện trực tiếp vào hộp thư đến của bạn.

Hãy cùng thảo luận về dự án tiếp theo của bạn. Chúng tôi có thể giúp gì cho bạn?

+84 
© Haposoft 2025. All rights reserved
Chính sách bảo mật