ai coding 2 Review code 2 AI agent 2 #developer 2
0. Bài này dành cho ai?
Mình viết bài này với mong muốn giúp cho:
- Các bạn developer đang đau đầu với việc tạo spec/task hay muốn viết code mới nhanh, gọn, lẹ hơn mà vẫn giữ được chất lượng
- Các bạn developer tìm được một công cụ review code kỹ lưỡng trước khi commit
- Hoặc nó có thể giúp bạn vibe coding một cách chuyên nghiệp hơn, thay vì những câu hỏi đáp thông thường.
Tóm lại, chỉ cần bạn đã, đang và sẽ phát triển sản phẩm, bạn có trong tay 1 AI assistant (Github Copilot + VsCode, Cursor, Claude), mình hy vọng bài viết này sẽ giúp bạn có thêm góc nhìn mới về việc tối ưu quá trình làm việc với AI.
1. Giới thiệu về Spec-kit
- Chắc bạn đã từng nghe đến khái niệm Spec Driven Development (SDD) – hiểu nôm na là “viết spec trước, code sau”. Thay vì nhảy vào code ngay, chúng ta sẽ mô tả rõ mục tiêu, luồng xử lý, input/output và các edge case, khi spec rõ ràng, code gần như chỉ là bước “dịch” sang ngôn ngữ lập trình mà thôi.
- Spec-kit được phát triển dựa trên nguyên lý này. Đây là 1 dự án mã nguồn mở do GitHub phát triển cung cấp CLI và tích hợp trực tiếp với AI Agent để tự động sinh spec, plan, task và code – tất cả sẽ diễn ra ngay trong IDE của bạn.
- Spec-kit support

2. Giới thiệu về CodeRabbit

- Thay vì đợi đến lúc tạo Pull Request mới review được, giờ CodeRabbit có thể làm điều đó ngay tại code local của bạn.
- Extension này có ở VSCode và Cursor, và mình thấy nó rất hữu ích đặc biệt là với các trường hợp dự án team size nhỏ hoặc khi bạn là dev “solo”, không có ai review code cùng.
- Nó giống như một đồng đội ảo, luôn sẵn sàng soi giúp những lỗi nhỏ, gợi ý cải thiện logic và giữ cho code của bạn gọn gàng hơn trước khi commit.
3. Sử dụng Spec-kit
a. Thành phần/ command chính
1. Constitution (/constitution)
- Định nghĩa quy tắc, nguyên tắc phát triển, coding style và tiêu chuẩn dự án.
- Giúp đảm bảo tính thống nhất trong suốt vòng đời phát triển.
2. Specification (/specify)
- Người dùng mô tả ứng dụng ở mức tổng quan: mục tiêu, chức năng, luồng người dùng, dữ liệu, giao diện.
- AI sinh ra file đặc tả hoàn chỉnh gồm: User Flow, Use Scenarios, Functional Requirements, Key Entities, và các điểm cần xác nhận
3. Clarification (/clarify)
- AI sẽ đặt câu hỏi để làm rõ các phần chưa chắc chắn trong spec.
- Quá trình này đảm bảo đặc tả được xác nhận đầy đủ trước khi sinh kế hoạch.
4. Planning (/plan)
- Người dùng cung cấp thông tin về tech stack, framework, database, cơ sở hạ tầng.
- AI tự động sinh: data model, API design, development phases, task breakdown, và tài liệu quickstart.
5. Task Management (/tasks)
- Tạo danh sách task chi tiết
6. Implement code (/implement)
- Có thể thực thi từng task qua lệnh /implement taskID hoặc theo phase.
- AI agent sẽ tự động sinh mã, kiểm tra checklist, và có thể tự động commit code
b. Cài đặt và sử dụng
1. Cài đặt specify-cli
- Chi tiết trên trang github
- Sử dụng uv, uvx để cài đặt (đây là các tools để quản lý python package)
2. Khởi tạo project
specify init <PROJECT_NAME>
Lệnh này sẽ sinh ra các file template, prompt template, script dùng cho các bước tiếp theo. Có thể chạy lệnh này trong 1 project đã có sẵn
♨️Từ bước 3 về sau sẽ command ở AI agent, và bạn hoàn toàn có thể prompt để yêu cầu AI update lại nếu chưa đúng ý
3. Tạo nguyên tắc phát triển thông qua command /constitution
- Ví dụ:
/constitution Write clean and modular code. Use Next.js 15 best practices. - Sau đó 1 file constitution.md sẽ được generate, Có thể update thêm rule vào file này ví dụ như là tái sử dụng component, dùng constant thay vì magic string…
4. Tạo đặc tả với /specify
- Ví dụ:
/specify I want to manage my employees qualification. I want to build an qualification management tool. It will have some usecases: manage employee profile: name, ID, role, import CV of profile then using AI to extract information related to stack, qualification, project, experiences, rewards, certificates…, there is a page to update them, a function to transform current qualification to a template CV. The tool style is simple and easy to use.
5. Làm rõ yêu cầu với /clarify
- Khi file spec được tạo thì sẽ có 1 số yêu cầu đánh dấu là NEED CONFIRM. Thì khi sử dụng command /clarify AI sẽ hỏi các câu hỏi và đưa ra các câu trả lời để mình chọn
- Khi mình trả lời nó sẽ update lại file spec
- Quá trình này cứ lặp lại đến khi nào mọi spec đều clear
6. Lập kế hoạch với /plan
- Đến bước này thì bắt đầu input tech stack kĩ hơn, những thứ mình sẽ build ở giai đoạn này, đoạn nào không cần implement thì cũng note vào, có cần validate field không
- Ví dụ:
/plan Use Nextjs with app router, router handlers and server actions. Add any backend, server side logic to a server folder in src. The authentication method is organization google oauth. And the database will use noSQL
- Hoặc 1 ví dụ khác đã clear tech từ spec rồi thì mình chỉ cần command đơn giản:
/plan I plan to implement by features
- AI sẽ sinh ra data model, API contract và flow triển khai.
- Cần review và update kỹ, thừa thiếu model, field nào để tránh, check các validation…
7. Tạo list tasks với /tasks
- Khi command /tasks AI sẽ generate filetasks.md với các phase, trong phase có các task chi tiết.
8. Implement các task với /implement
- Ví dụ
/implement <taskID>
/implement taskID to <taskID>
/implement with phase <phaseID>
- Nếu task phức tạp thì nên xử lý riêng lẻ task đó
- Command này hữu ích khi bạn muốn yêu cầu AI agent implement hoặc modify một feature nào đó ngoài spec
c. Đánh giá, phân tích và trải nghiệm cá nhân
Ưu điểm
- Tự động hóa mạnh mẽ từ đặc tả → kế hoạch →source code
- Giúp tiết kiệm thời gian ở giai đoạn phân tích và thiết kế.
- Hữu ích khi cần tạo prototype nhanh hoặc PoC
Trải nghiệm cá nhân
- Spec-kit phù hợp cho dự án nhỏ, trung bình
- Nên review/verify kĩ tài liệu/code được generate ra trước khi chuyển sang bước tiếp theo
- Với dự án đã có thì có thể tận dụng /constitution với /implement của spec-kit
- Khi dùng Spec-kit, nên tùy chỉnh bước /plan, /tasks để định hướng rõ phát triển theo feature-based development, ví dụ build chức năng A trước, rồi đến chức năng B
- Mình thường chạy với model claude-sonnet để có kết quả chi tiết và dễ hiểu hơn
- Show 1 phần dự án nhỏ mình vibe code với nextjs và kết quả sau 30h mình đã hoàn thành các feature chính như quản lý department, nhân viên, quản lý CV, upload CV extract thông tin, và export CV theo template.

Và khi mọi thứ đã sẵn sàng để code, bước tiếp theo tất nhiên là… review — đó cũng là lúc CodeRabbit xuất hiện 🐰
4. Sử dụng CodeRabbit
a. Cài đặt extension
- Bạn cài đặt extension sau đó thực hiện đăng nhập là có thể sử dụng bản Free của CodeRabbit
- Sau đó thì ở IDE sẽ có icon con thỏ, chỗ này sẽ có UI để bạn trigger review code

b. Hướng dẫn sử dụng

- Có 3 mode để trigger review: Review uncommitted changes (Phổ biến hơn), Review committed changes, Review all changes. Tương ứng với các mode thì số lượng file được review sẽ thay đổi tương ứng.
- Sau đó bạn sẽ chờ extension review, tool sẽ detect các issue theo loại từ nghiêm trọng đến ít nghiêm trọng hơn.
- Bạn tiến hành resolve các review, cái nào mà chấp nhận thì tick ✅ và fix sẽ được apply, hoặc có thể reject nếu không cần thiết.

c. Một vài điều cần lưu ý và trải nghiệm cá nhân
- Lần đầu review sẽ tốn thời gian một chút vì CodeRabbit cần index code, style của bạn, những lần tiếp theo sẽ tốn khoảng 1-5 phút để review
- Với dự án codebase lớn, phiên bản free có thể sẽ không index được dẫn đến fail luôn.
- Thêm 1 cái nữa là phiên bản free cũng có giới hạn nếu bạn review liên tiếp, nó sẽ block sau 1 khoảng thời gian mới được review tiếp.
- Về chất lượng review thì mình áp dụng vào dự án thì thấy kỹ, có thể phát hiện được bug tiềm ẩn (có 1 bug mình lơ đi nhưng cuối cùng khách lại report đúng lỗi đã được cảnh báo), tuân thủ security khá kĩ, nói chung là chất lượng so với phiên bản free.
5. Lời kết
Combo Spec-kit và CodeRabbit thật sự giúp mình thấy quy trình coding mượt mà hơn — từ lúc định hình ý tưởng, viết spec, cho đến khi code và review. Mọi thứ liền mạch, rõ ràng, và đặc biệt hữu ích khi làm việc một mình hoặc trong team nhỏ.
Tất nhiên, đây chỉ là trải nghiệm cá nhân của mình sau một thời gian thử nghiệm, chắc chắn vẫn còn nhiều góc chưa khám phá hết.
Nếu bạn đã dùng qua hai công cụ này (hoặc có tool tương tự), mình rất muốn nghe thêm cảm nhận của bạn — biết đâu lại học thêm được vài mẹo hay ho 💡
Đây là bài đầu tiên mình viết, nên nếu bạn có góp ý về cách trình bày, nội dung, hay chỉ đơn giản là thấy nó hữu ích, hãy để lại feedback hoặc comment nhé.
Cảm ơn bạn đã đọc đến đây — và chúc bạn code vui, ít bug, nhiều niềm vui hơn với AI! 💻✨