1. Bối cảnh & Động lực

Trong quá trình phát triển phần mềm, việc duy trì tài liệu nhất quán giữa tài liệu kỹ thuật, mã nguồn và quy trình nghiệp vụ luôn là một thách thức. Khi mình phát hiện OpenSpec của Fission AI — một mô hình “Phát triển dựa trên Đặc tả” (Spec-Driven Development) mô tả logic, domain,... dưới dạng Spec có cấu trúc — mình đã ngay lập tức muốn thử để xem nó có thể giúp AI tự động sinh ra đặc tả + checklist hiệu quả đến đâu.

Mình đã sử dụng Claude Code với một prompt để tạo trang quản lý Tin tức, kỳ vọng rằng chỉ với một mô tả đơn giản, hệ thống có thể tạo ra một đặc tả clear, tuân thủ các nguyên tắc  code yêu cầu, sẵn sàng cho việc triển khai code nhanh chóng.

2. Mục tiêu

Mục tiêu của thử nghiệm này: Sử dụng [https://github.com/Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec) để:
* Viết một prompt đơn giản mô tả yêu cầu API To-Do List.
* Dùng OpenSpec để AI tự động sinh ra một feature.
* Kiểm tra xem đặc tả sinh ra có sạch, logic và dễ triển khai không.
* Trải nghiệm quy trình: Prompt → Spec → Triển khai code.
* Ghi nhận ưu/nhược điểm khi dùng OpenSpec với AI (Claude Code).

3. Công cụ sử dụng

* OpenSpec (Fission-AI/OpenSpec) – Framework mô tả logic domain dưới dạng Spec có cấu trúc.
* Claude Code Pro: Mô hình AI mình tin dùng cho việc giảm "code toàn bug" hiện tại. (hahaha)

4. Các bước thực hiện

Bước 1 — Chuẩn bị Prompt & Gửi đến Claude Code CLI

Prompt:

/openspec:proposal

Bạn là chuyên gia Frontend. Hãy dùng Openspec để sinh ra document cho chức năng sau. Yêu cầu:
- Quản lý Tin tức:
  Tin tức gồm các trường: 
  -  id, name, description, image
  Các page:
  - danh sách tin tức
    trong từng Item list có các action như xem detail, xóa tin tức
  - tạo tin tức:
    có button tạo tin tức, click vào sẽ đi đến màn hình tạo
  - chi tiết tin tức:
    có thể xem chi tiết cũng như chỉnh sửa, xóa tin tức

- Sử dụng cấu trúc FSD, UI sử dụng tailwind css, có thể responsive

Bước 2 — Gửi Prompt yêu cầu đến Claude code

Sau khi Claude Code nhận yêu cầu và  phân tích thì sẽ sinh **Feature** theo cấu trúc thư mục dưới đây:

└── 📁openspec
    └── 📁changes
        └── 📁add-news-management
            └── 📁specs
                └── 📁news-create
                    ├── spec.md
                └── 📁news-detail
                    ├── spec.md
                └── 📁news-list
                    ├── spec.md
            ├── design.md
            ├── proposal.md
            └── tasks.md

Giải thích:

Thư mục / File Vai trò
openspec/changes/ Chứa các đề xuất tính năng/change proposal đang được làm việc
add-news-management/ Một proposal cụ thể cho tính năng quản lý tin
proposal.md Mô tả mục tiêu và phạm vi thay đổi
design.md Giải thích các quyết định kỹ thuật
tasks.md Checklist các task để AI/dev thực hiện code
specs/.../spec.md Các spec delta cho từng phần chức năng nhỏ

Bước 3 — Rà soát & Điều chỉnh

Chúng ta cần xem lại đặc tả sinh ra trong `spec.md` và các task trong `tasks.md`.
`proposal.md` lưu các đề xuất thay đổi và ảnh hưởng đến codebase hiện tại.
So sánh với tài liệu được sinh ra bởi OpenSpec và yêu cầu thực tế, sau đó chỉnh sửa lại nếu có điểm chưa đúng.

Bước 4 — Triển khai - thực thi code

Dùng lệnh `\openspec:apply` để áp dụng đặc tả vào dự án hiện tại.

5. Kết quả

Kết quả triển khai:

* Một Feature OpenSpec hoàn chỉnh, có thể tích hợp vào bất kỳ dự án nào.
* Đặc tả rõ ràng, dễ đọc, phản ánh đúng domain To-Do List.
* Thời gian từ prompt → spec: chỉ khoảng ~1 phút.
* Giao diện tạo ra từ spec đúng như mong muốn.

Demo UI được sinh ra tự động

Kết quả mình chỉ tốn có 5 phút chờ đợi và kết quả cũng khá đúng với yêu cầu mình đưa ra.

Danh sách tin tức

Tạo tin tức

Chi tiết tin tức

Sửa tin tức

6. Thách thức

Nếu prompt thiếu chi tiết, Claude Code có thể “đoán” và sinh thêm logic ngoài ý muốn.
Token sử dụng tăng nếu không kiểm tra lại spec trước khi sinh code.

7. Tổng kết

* Việc sử dụng OpenSpec để viết logic code cần sinh ra rất có lợi đối với những feature lớn, nó giúp chúng ta kiểm soát được rủi ro, code sinh ra như mong muốn.
* Prompt càng cụ thể, spec càng sạch.
* OpenSpec giúp giảm đáng kể thời gian viết tài liệu triển khai.
* Có thể kiểm xoát được những gì AI làm.

Tham khảo

GitHub - Fission-AI/OpenSpec: Spec-driven development for AI coding assistants.
Spec-driven development for AI coding assistants. Contribute to Fission-AI/OpenSpec development by creating an account on GitHub.