0%
Skip to main content
Quay lại Blog

Làm sao tôi tối ưu hóa quy trình phát triển sản phẩm với SpecKit?

· One min read
Vu Nguyen
Java / Backend Engineer

Spec-Driven Development với GitHub Spec Kit đã giúp tôi biến AI từ “vibe coding” thành đồng đội thực thụ khi xây RabbitSVN. Bài viết chia sẻ quy trình, case study và trade-off thực tế.

Biến AI thành “đồng đội” thực thụ: Hành trình SpecKit cùng RabbitSVN

Trong thời đại AI coding agent (GitHub Copilot, Claude Code, Cursor, …) phổ biến, nhiều lập trình viên rơi vào vibe coding: prompt liên tục, code trông ổn nhưng càng làm sâu càng lệch kiến trúc, sai luồng nghiệp vụ, cuối cùng phải đập đi làm lại.

Đó là bài toán tôi gặp khi phát triển và mở rộng RabbitSVN — client Subversion gốc cho macOS. Giữa lúc tìm cách kiểm soát quy trình tốt hơn, tôi thử Spec Kit của GitHub cho Spec-Driven Development (SDD).

Bài viết chia sẻ cách tôi áp dụng SpecKit vào RabbitSVN, và vì sao nó thay đổi cách tôi làm phần mềm.


1. Bài toán tại RabbitSVN và lý do cần “đường ray” mới

RabbitSVN đòi hỏi độ chính xác cao: trạng thái working copy, thao tác thư mục, edge case khi sync/merge, và UI phản hồi mượt trên thư mục lớn.

Khi phát triển tính năng theo kiểu ý tưởng → prompt AI → nhận code, tôi thấy các điểm nghẽn:

Vấn đềHệ quả
Yêu cầu mơ hồAI tự suy diễn business logic; code lệch ý đồ thiết kế
Thiếu nhất quánModule mới đi ngược kiến trúc và style của project
Khó bảo trìKhông có spec sống — chỉ còn lịch sử chat dài với AI

Giải pháp: chuyển từ “ra lệnh ngẫu hứng” sang đặc tả chuẩn trước, để AI thi công sau — SDD với SpecKit.


2. SpecKit là gì và quy trình trên RabbitSVN?

SpecKit không phải một AI agent riêng. Đây là CLI + slash commands gắn với trợ lý AI trong IDE (VS Code, Cursor, …), ép luồng phát triển qua các “trạm” trước khi sinh code:

spec-kit-workflow.txt
Constitution → Specify → Clarify → Plan → Tasks → Implement

Tương ứng các lệnh quen thuộc: /speckit-constitution, /speckit-specify, /speckit-clarify, /speckit-plan, /speckit-tasks, /speckit-implement.

Bước 1 — Hiến pháp dự án (/speckit-constitution)

Định nghĩa quy tắc không thể thương lượng cho RabbitSVN: coding style, kiến trúc module, bảo mật, bắt buộc unit test cho logic cốt lõi. AI luôn “nhìn” trong khung này khi generate code.

Bước 2 — Đặc tả tính năng (/speckit-specify)

Thay vì prompt code dài, tôi mô tả tính năng như PM:

  • Ai là người dùng?
  • User flow?
  • Acceptance criteria?

SpecKit chuyển ý tưởng thành spec.md: flow, edge cases, tiêu chí chấp nhận.

Bước 3 — Rà soát điểm mù (/speckit-clarify)

SpecKit đặt câu hỏi “hóc búa” trước khi plan — ví dụ: Ngắt kết nối giữa chừng khi sync thì xử lý thế nào? Xung đột tầng local giải quyết ra sao? Trả lời sớm → ít bug logic về sau.

Bước 4 — Kế hoạch kỹ thuật (/speckit-plan)

Sinh plan.md: module RabbitSVN nào đổi, công nghệ, cách tích hợp không phá tính năng cũ.

Bước 5 — Task & implement (/speckit-tasks, /speckit-implement)

Chia task nhỏ, có thể kiểm chứng. AI implement từng bước thay vì một khối code khổng lồ khó review.


3. Case study: tối ưu quét & icon trạng thái trên thư mục lớn

Bài toán: Thư mục hàng chục nghìn file — gọi SVN status dễ nghẽn UI, tốn tài nguyên, dễ treo nếu async không khéo. AI “tự do” thường sinh multi-threading rối, thiếu cancellation khi user đổi thư mục.

Với SpecKit:

  1. Specify — latency budget, debounce khi quét, bắt buộc hủy job cũ.
  2. Clarify — giới hạn RAM khi quét.
  3. Plan — queue + worker pool phù hợp kiến trúc RabbitSVN.
  4. Tasks — (1) core queue, (2) unit test timeout, (3) tích hợp UI.

Kết quả:

  • Phản hồi trạng thái file nhanh hơn, UI ít giật lag.
  • Code bám kiến trúc RabbitSVN; unit test bám acceptance criteria trong spec.
  • spec.md / plan.md trong repo — tài liệu sống cho các lần nâng cấp sau.

4. Ưu & nhược điểm (thực tế)

Ưu điểm

  • Tư duy trước, code sau — giảm sa đà chi tiết kỹ thuật sớm.
  • Code ổn định hơn — hạn chế hallucination (thư viện ảo, logic lệch).
  • Tài liệu minh bạch — spec/plan đi kèm từng tính năng, dễ bàn giao và onboard.

Hạn chế

  • Tốn thời gian đầu — 5–10 phút spec + clarify/plan (thường tiết kiệm hơn ở phase debug).
  • Không cho task “mì ăn liền” — sửa CSS một dòng, đổi tên biến: SpecKit có thể cồng kềnh.

5. Lời kết

RabbitSVN cần sự chặt chẽ từng dòng code hệ thống. SpecKit giúp tôi dùng AI có kỷ luật: rõ từ ý tưởng, chặt trong thiết kế, chính xác khi implement.

Nếu bạn đang vật lộn với code AI lệch kiến trúc, thử đưa Spec Kit vào workflow — có thể bạn sẽ bất ngờ vì độ “mượt” và chuyên nghiệp.

Bạn đã thử Spec-Driven Development cho dự án cá nhân chưa? Chia sẻ trên GitHub hoặc issue blog — tôi rất muốn nghe case của bạn.


Đọc thêm: RabbitSVN showcase · Spec Kit trên GitHub