spec-lite 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # spec-lite
2
2
 
3
- Bộ skills spec-driven development cho Claude Code — phỏng vấn có cấu trúc để xây dựng PRD, domain knowledge, kiến trúc hệ thống và integration specs.
3
+ Bộ skills spec-driven development cho Claude Code — phỏng vấn có cấu trúc để xây dựng PRD, kiến trúc hệ thống, và integration specs. Domain knowledge và component/feature artifacts mọc dần qua cascade từ integrations.
4
4
 
5
5
  > **Lưu ý:** Hiện tại chỉ hoạt động với [Claude Code](https://claude.ai/code) (thư mục `.claude/`).
6
6
 
@@ -19,17 +19,17 @@ Các skill được gọi bằng slash command bên trong Claude Code.
19
19
  ### Thứ tự thực hiện
20
20
 
21
21
  ```
22
- /spec-prd → /spec-domain → /spec-sad
23
-
24
- (có requirement mới)
25
-
26
- /spec-new
27
-
28
- /spec-tech
29
-
30
- /plan
31
-
32
- /build
22
+ /spec-prd → /spec-sad
23
+
24
+ (có requirement mới)
25
+
26
+ /spec-new
27
+
28
+ /spec-tech
29
+
30
+ /plan
31
+
32
+ /build
33
33
  ```
34
34
 
35
35
  ---
@@ -37,17 +37,12 @@ Các skill được gọi bằng slash command bên trong Claude Code.
37
37
  ### Seed skills — chạy một lần khi bắt đầu dự án
38
38
 
39
39
  #### `/spec-prd`
40
- Tạo hoặc cập nhật `specs/main/prd.md` thông qua interview có cấu trúc.
40
+ Tạo hoặc cập nhật `specs/main/prd.md` thông qua interview có cấu trúc. Đồng thời scaffold `specs/main/domain.md` skeleton.
41
41
 
42
- Sections: Problem Statement · Target Users · Scope · Features · Non-Functional Requirements · Business Constraints
43
-
44
- #### `/spec-domain`
45
- Tạo hoặc cập nhật `specs/main/domain.md`. Yêu cầu `prd.md` phải có nội dung trước.
46
-
47
- Sections: Terminology · Entities · Business Rules · Domain Events
42
+ Sections: Problem Statement · Target Users · Scope · Features · Components · Non-Functional Requirements · Business Constraints
48
43
 
49
44
  #### `/spec-sad`
50
- Tạo hoặc cập nhật `specs/main/sad.md`. Yêu cầu `prd.md` và `domain.md` phải nội dung trước.
45
+ Tạo hoặc cập nhật `specs/main/sad.md`. Yêu cầu `prd.md` và `domain.md` đã tồn tại.
51
46
 
52
47
  Sections: Architectural Style · System Overview · Tech Stack · Cross-Cutting Concerns · Inter-Service Communication · Infrastructure Overview · Architectural Guardrails
53
48
 
@@ -70,16 +65,20 @@ Tạo `specs/integrations/{slug}/tech.md` sau khi `spec.md` được approve.
70
65
  #### `/plan`
71
66
  Tạo `plan.md` và `todo.md` từ `spec.md` + `tech.md`.
72
67
 
68
+ #### `/build`
69
+ Implement từng task trong `plan.md`/`todo.md` theo TDD incremental.
70
+
73
71
  ---
74
72
 
75
73
  ### Files được tạo ra
76
74
 
77
75
  | Command | Output |
78
76
  |---------|--------|
79
- | `/spec-prd` | `specs/main/prd.md` |
80
- | `/spec-domain` | `specs/main/domain.md` |
77
+ | `/spec-prd` | `specs/main/prd.md`, `specs/main/domain.md` (skeleton) |
81
78
  | `/spec-sad` | `specs/main/sad.md` |
82
79
  | `/spec-new` | `specs/integrations/{slug}/spec.md` |
83
80
  | `/spec-tech` | `specs/integrations/{slug}/tech.md` |
84
81
  | `/plan` | `specs/integrations/{slug}/plan.md`, `todo.md` |
85
82
  | `/build` | _(implements tasks từ `plan.md`/`todo.md`)_ |
83
+
84
+ Component (`crd.md`, `cdd.md`) và feature (`frd.md`, `fdd.md`) artifacts mọc dần qua **cascade proposals** từ integrations — không có skill chuyên biệt để tạo.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-lite",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Spec-driven development kit for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,10 +13,35 @@ Invoke `incremental-implementation` và `test-driven-development` cùng nhau cho
13
13
 
14
14
  ## Quy trình
15
15
 
16
+ ### Bước 0: Xác định integration
17
+
18
+ **Nếu có ARGUMENT:**
19
+ - Parse argument: có thể là số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`)
20
+ - Quét `specs/integrations/*/todo.md`, tìm integration khớp với argument
21
+ - Nếu không tìm thấy → báo lỗi:
22
+ > Không tìm thấy integration khớp với "{argument}". Kiểm tra lại tên hoặc số thứ tự.
23
+ - Nếu tìm thấy → dùng `specs/integrations/{slug}/` làm working integration, bắt đầu luôn
24
+
25
+ **Nếu không có ARGUMENT:**
26
+ - Quét `specs/integrations/*/todo.md`, liệt kê tất cả integrations có todo.md, đánh dấu tiến độ:
27
+
28
+ ```
29
+ Integrations:
30
+
31
+ [1] 001-implement-auth — Implement Auth (8/8 done) ✓
32
+ [2] 002-implement-todo — Implement Todo Management (0/10 pending)
33
+
34
+ Chọn số integration:
35
+ ```
36
+
37
+ Format: `({done}/{total} done)` hoặc `({pending} pending)` — đếm từ todo.md
38
+ - Nếu chỉ có 1 integration có task pending → chọn luôn, không hỏi
39
+ - Nếu tất cả đều done → thông báo: "Tất cả integration đã hoàn thành."
40
+
16
41
  ### Với mỗi task pending
17
42
 
18
43
  **1. Chọn task** (`incremental-implementation` — Increment Cycle)
19
- Lấy task `[ ]` tiếp theo trong `todo.md`. Đọc acceptance criteria trong `plan.md`.
44
+ Lấy task `[ ]` tiếp theo trong `todo.md` của integration đã chọn. Đọc acceptance criteria trong `plan.md` tương ứng.
20
45
 
21
46
  **2. Load context** (`incremental-implementation` — Rule 0: Simplicity First)
22
47
  Đọc code, types, patterns liên quan. Hỏi: "Cách đơn giản nhất có thể làm việc là gì?"
@@ -50,7 +75,7 @@ Build phải thành công trước khi commit. Nếu fail → invoke `debugging-
50
75
  Commit với message mô tả rõ, giới hạn trong phạm vi task này. Một thay đổi logic mỗi commit.
51
76
 
52
77
  **8. Đánh dấu hoàn thành và tiếp tục**
53
- Check `[x]` trong `todo.md`. Lặp lại từ bước 1 cho task tiếp theo.
78
+ Check `[x]` trong `todo.md` của integration đang build. Lặp lại từ bước 1 cho task tiếp theo.
54
79
 
55
80
  ## Dấu hiệu task UI/UX
56
81
 
@@ -27,22 +27,28 @@ Mọi quyết định về sizing, slicing đều thuộc về `planning-and-tas
27
27
 
28
28
  ### Bước 1: Xác định integration
29
29
 
30
+ **Nếu có ARGUMENT:**
31
+ - Parse argument: có thể là số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`)
32
+ - Quét `specs/integrations/*/`, tìm integration khớp với argument
33
+ - Nếu không tìm thấy → báo lỗi:
34
+ > Không tìm thấy integration khớp với "{argument}". Kiểm tra lại tên hoặc số thứ tự.
35
+ - Nếu tìm thấy → dùng integration đó, bắt đầu luôn
36
+
37
+ **Nếu không có ARGUMENT:**
38
+
30
39
  Quét `specs/integrations/`. Liệt kê tất cả integrations:
31
40
 
32
41
  ```
33
42
  Integrations:
34
43
 
35
- [1] f001-authentication User Authentication spec✓ tech✓ plan
36
- [2] f003-app-browsing App Browsing & Opt-in spec✓ tech—
37
- [3] f004-credit-system — Credit System spec—
44
+ [1] 001-implement-auth Implement Auth spec✓ tech✓ plan
45
+ [2] 002-implement-todo Implement Todo Management spec✓ tech✓ plan
38
46
 
39
47
  Chọn số integration:
40
48
  ```
41
49
 
42
50
  Legend: `✓` = có, `—` = chưa có
43
51
 
44
- Nếu có ARGUMENT → chọn luôn, không hiển thị danh sách.
45
-
46
52
  Nếu plan.md / todo.md đã tồn tại → hỏi trước khi ghi đè.
47
53
 
48
54
  ---
@@ -60,10 +66,12 @@ Surface tóm tắt để planning-and-task-breakdown có đủ context:
60
66
  ```
61
67
  CONTEXT CHO PLANNING:
62
68
  - Integration: {title}
69
+ - Features: {từ spec.md frontmatter}
70
+ - Components: {từ spec.md frontmatter}
63
71
  - Yêu cầu chính: {tóm tắt từ spec.md — 2-4 bullet}
64
- - Acceptance Criteria: {số lượng}Feature-level: {AC-F-001, AC-F-002...} / Story-level: {AC-S-001, AC-S-002...}
72
+ - Acceptance Criteria: {tổng số AClist IDs theo nhóm Feature/Component như spec.md}
65
73
  - Thay đổi kỹ thuật: {modules, data model, interfaces từ tech.md}
66
- - Entities liên quan: {từ domain.md}
74
+ - Shared entities liên quan: {từ domain.md}
67
75
 
68
76
  ASSUMPTIONS:
69
77
  1. {assumption về ordering nếu có}
@@ -84,77 +92,7 @@ Invoke `planning-and-task-breakdown` với context đã load. Skill đó sẽ th
84
92
 
85
93
  ### plan.md
86
94
 
87
- ```markdown
88
- ---
89
- id: "{slug}"
90
- slug: "{slug}"
91
- title: "{title} — Implementation Plan"
92
- features: ["{F-XXX}"]
93
- status: draft
94
- created: {YYYY-MM-DD}
95
- ---
96
-
97
- ## Summary
98
-
99
- [2-3 sentences on what will be implemented]
100
-
101
- ## Dependency Graph
102
-
103
- [ASCII diagram — bottom = foundations, top = UI. Ví dụ:]
104
-
105
- UI Components
106
-
107
- API Routes ──── Middleware
108
-
109
- Services
110
-
111
- Prisma Schema
112
-
113
- ## Tasks
114
-
115
- ### Phase 1: [Phase name]
116
-
117
- #### T001 · [task title — starts with a verb]
118
-
119
- **Mục tiêu:** [One sentence: what this task delivers]
120
-
121
- **depends:** — (hoặc T-IDs)
122
-
123
- **Các bước:**
124
- 1. [Concrete implementation step]
125
- 2. [Concrete implementation step]
126
-
127
- **Verification:**
128
- - [ ] [AC-F-001] [specific test case]
129
- - [ ] [smoke check or observable result]
130
-
131
- ---
132
-
133
- ### Phase N: Verification
134
-
135
- #### T00N · Integration tests — [flow name]
136
-
137
- **Mục tiêu:** [End-to-end flow being tested]
138
-
139
- **depends:** T001, T002, ...
140
-
141
- **Các bước:**
142
- 1. [Test setup / seed data]
143
- 2. [Execute happy path]
144
- 3. [Execute error cases]
145
-
146
- **Verification:**
147
- - [ ] Happy path: [description]
148
- - [ ] Error case: [description]
149
-
150
- ---
151
-
152
- ## Definition of Done
153
-
154
- - [ ] [AC-F-001 / AC-S-001] [AC description — concise, preserve intent]
155
- - [ ] All unit tests pass
156
- - [ ] All integration tests pass
157
- ```
95
+ Dùng `.claude/templates/integrations/plan-template.md` làm skeleton, điền nội dung từ breakdown vào từng section.
158
96
 
159
97
  **Lưu ý format:**
160
98
  - Task ID dùng `·` (middle dot), không dùng `—`
@@ -164,16 +102,7 @@ created: {YYYY-MM-DD}
164
102
 
165
103
  ### todo.md
166
104
 
167
- ```markdown
168
- # [title] — Todo
169
-
170
- ### Phase 1: [Phase name]
171
- - [ ] T001 · [task title]
172
- - [ ] T002 · [task title]
173
-
174
- ### Phase N: Verification
175
- - [ ] T00N · Integration tests — [flow name]
176
- ```
105
+ Dùng `.claude/templates/integrations/todo-template.md` làm skeleton, điền nội dung từ breakdown vào từng section.
177
106
 
178
107
  ---
179
108
 
@@ -41,15 +41,19 @@ Map what depends on what:
41
41
  ```
42
42
  Database schema
43
43
 
44
- ├── API models/types
44
+ ├── Domain models
45
45
  │ │
46
- ├── API endpoints
47
-
48
- │ └── Frontend API client
49
-
50
- └── UI components
51
-
52
- └── Validation logic
46
+ └── Services
47
+
48
+ ├── Validation logic
49
+ │ │
50
+ │ └── API endpoints
51
+
52
+ ├── Middleware
53
+ │ │
54
+ │ └── Frontend API client
55
+ │ │
56
+ │ └── UI components
53
57
 
54
58
  └── Seed data / migrations
55
59
  ```
@@ -19,7 +19,7 @@ Tạo `spec.md` cho một integration mới trong `specs/integrations/{NNN}-{slu
19
19
 
20
20
  ## When NOT to Use
21
21
 
22
- - `prd.md` hoặc `domain.md` chưa có → chạy `/spec-prd`, `/spec-domain` trước
22
+ - `prd.md` chưa có → chạy `/spec-prd` trước (skill đó scaffold cả `domain.md` skeleton)
23
23
  - Muốn thiết kế technical design → dùng `/spec-tech` (cần `spec.md` đã approve trước)
24
24
  - Chỉ muốn cập nhật spec đã có → edit file trực tiếp
25
25
 
@@ -50,7 +50,7 @@ Features trong PRD:
50
50
  Chọn số feature để bắt đầu spec:
51
51
  ```
52
52
 
53
- Ghi chú `→ frd.md tồn tại` nếu file `specs/main/features/{feature-id}-*/frd.md` đã có.
53
+ Ghi chú `→ frd.md tồn tại` nếu file `specs/main/feature/{F-XXX}-*/frd.md` đã có.
54
54
 
55
55
  Nếu tất cả features đều Done → thông báo:
56
56
  > Tất cả features trong prd.md đã được implement. Nếu có yêu cầu mới, hãy truyền nó trực tiếp: `/spec-new <yêu cầu>`.
@@ -84,11 +84,12 @@ Lưu lại lựa chọn section.
84
84
 
85
85
  ### Bước 2: Load context
86
86
 
87
- Load các file sau (bất kể input raw requirement hay từ prd.md):
87
+ Từ raw requirement, agent xác định features components liên quan, rồi load các file sau:
88
88
 
89
- - `specs/main/prd.md` — đọc Problem Statement, Target Users, Scope, tả feature liên quan nếu có
90
- - `specs/main/domain.md` — đọc EntitiesBusiness Rules
91
- - Nếu input từ prd.md và có `specs/main/features/{feature-id}/frd.md` đọc User Stories Acceptance Criteria
89
+ - `specs/main/prd.md` — đọc Problem Statement, Target Users, Scope, Feature Index, Component Index
90
+ - `specs/main/domain.md` — đọc GlossaryShared Entities
91
+ - `specs/main/feature/{F-XXX}-{slug}/frd.md` cho mỗi feature liên quan (nếu file đã tồn tại)
92
+ - `specs/main/component/{C-XXX}-{slug}/crd.md` — cho mỗi component bị touched (nếu file đã tồn tại)
92
93
 
93
94
  Tóm tắt context và surface assumptions:
94
95
 
@@ -96,15 +97,19 @@ Tóm tắt context và surface assumptions:
96
97
  TỪ PRD & DOMAIN TÔI HIỂU:
97
98
  - Vấn đề đang giải quyết: {problem statement ngắn từ prd}
98
99
  - Personas liên quan: {từ prd Target Users}
99
- - Entities liên quan: {từ domain.md}
100
- {nếu feature cụ thể} - Feature: {ID} — {tên} — {mô tả}
100
+ - Glossary terms liên quan: {từ domain.md}
101
+ - Shared entities liên quan: {từ domain.md}
102
+ {nếu có feature liên quan} - Features: {F-XXX — tên — mô tả ngắn}
103
+ {nếu có component liên quan} - Components: {C-XXX — tên — mô tả ngắn}
101
104
 
102
105
  ASSUMPTIONS TÔI ĐANG ĐẶT RA:
103
106
  1. {assumption về scope}
104
- 2. {assumption về persona}
107
+ 2. {assumption về features/components bị touched}
105
108
  → Sửa lại nếu sai trước khi tiếp tục.
106
109
  ```
107
110
 
111
+ Nếu integration giới thiệu feature mới hoặc component mới chưa có trong PRD Index → ghi nhận để cascade ở Bước 5.
112
+
108
113
  ---
109
114
 
110
115
  ### Bước 3: Interview
@@ -120,11 +125,11 @@ Hỏi tuần tự, từng phần — không hỏi tất cả cùng lúc:
120
125
  > Hoặc liệt kê functional requirements nếu không theo user story format.
121
126
 
122
127
  **Phần 3 — Acceptance Criteria:**
123
- > Điều kiện nào để biết integration này là done? Phân theo 2 loại:
124
- > - **Feature-level AC** (`AC-F-xxx`): criterion áp dụng cho toàn flow — không gắn với story cụ thể (ví dụ: error format, auth guard, cross-story constraints)
125
- > - **Story-level AC** (`AC-S-xxx`): criterion gắn với từng user story cụ thể
126
- > Viết theo pháp: GIVEN {precondition} / WHEN {action} / THEN {expected outcome}
127
- > `AC-F` `AC-S` đánh số độc lập, tăng dần xuyên suốt toàn spec (không reset qua feature/story).
128
+ > Điều kiện nào để biết integration này là done? Format Given/When/Then.
129
+ > Agent tự nhóm AC theo cách phù hợp với bản chất integration:
130
+ > - Có user-facing flow group theo Feature User Story AC, dùng ID `AC-{F_ID}-{seq}`
131
+ > - Thuần technical (refactor / capability nội tại) → group theo Component, dùng ID `AC-{C_ID}-{seq}`, không cần user story
132
+ > - Mixed (vừa thêm feature, vừa thay đổi component) thể cả 2 nhóm
128
133
 
129
134
  **Phần 4 — Out of Scope:**
130
135
  > Có gì liên quan nhưng sẽ KHÔNG làm trong integration này không? Ghi rõ lý do.
@@ -157,34 +162,59 @@ Tổng hợp và viết draft `spec.md`:
157
162
 
158
163
  **Cấu trúc file**: dùng `.claude/templates/integrations/spec-template.md` làm skeleton, điền nội dung từ interview vào.
159
164
 
160
- **Cascade Proposals** — điền theo hướng dẫn sau:
165
+ **Cascade Proposals** — agent đề xuất delta cho main artifacts theo các targets sau (chỉ điền nếu thực sự có thay đổi, không thì ghi "Không có thay đổi đề xuất."):
161
166
 
162
167
  ### prd.md
163
168
 
164
- {Đề xuất cập nhật nếu phát hiện scope/feature mới cần ghi lại, hoặc "Không có thay đổi đề xuất."}
169
+ Đề xuất cập nhật nếu integration này:
170
+ - Giới thiệu feature mới chưa có trong Feature Index → đề xuất thêm row vào Features (auto-pick `F-XXX` next ID, slug từ context)
171
+ - Giới thiệu component mới chưa có trong Component Index → đề xuất thêm row vào Components (auto-pick `C-XXX` next ID)
172
+ - Đổi status feature từ `TODO` sang `In Progress`
173
+ - Có scope hoặc NFR thay đổi
165
174
 
166
175
  ### domain.md
167
176
 
168
- {Đề xuất cập nhật nếu phát hiện entity hoặc business rule mới, hoặc "Không có thay đổi đề xuất."}
177
+ Đề xuất cập nhật nếu integration này:
178
+ - Giới thiệu glossary term mới → đề xuất thêm vào Glossary
179
+ - Giới thiệu shared entity mới (entity sẽ được dùng bởi 2+ component) → đề xuất thêm vào Shared Entities với field `Owner: C-XXX`
180
+
181
+ ### component/{C-XXX}-{component-name}/crd.md
182
+
183
+ Liệt kê **tất cả** components bị touched trong integration và đánh giá từng cái:
184
+
185
+ | Component | crd.md | Đề xuất |
186
+ | --- | --- | --- |
187
+ | C-001 — auth | tồn tại | **Cập nhật** — thêm responsibility "rate limiting", thêm endpoint `POST /auth/rate-check` |
188
+ | C-003 — payment | chưa có | **Tạo mới** crd + cdd |
189
+
190
+ Với từng component có đề xuất:
191
+
192
+ **Tạo mới** `specs/main/component/{C-XXX}-{component-slug}/crd.md` *(và `cdd.md` cascade ở spec-tech)*
193
+ - Dùng khi integration này là lần đầu tiên giới thiệu component này
194
+ - Auto-pick C-XXX (next available) và slug kebab-case từ context
195
+ - Đề xuất nội dung crd: Role, Responsibilities, Owned Entities, Public Interface, Business Rules, Dependencies — dựa trên spec.md
169
196
 
170
- ### frd.md
197
+ **Cập nhật** `specs/main/component/{C-XXX}-{component-slug}/crd.md`
198
+ - Dùng khi crd.md đã tồn tại và integration bổ sung thêm responsibility, interface, hoặc business rule
199
+ - Ghi rõ section nào bị touched và delta cụ thể
171
200
 
172
- Liệt kê **tất cả** features từ PRD và đánh giá từng cái:
201
+ ### feature/{F-XXX}-{feature-name}/frd.md
202
+
203
+ Liệt kê **tất cả** features liên quan đến integration và đánh giá từng cái:
173
204
 
174
205
  | Feature | Status | frd.md | Đề xuất |
175
206
  | --- | --- | --- | --- |
176
207
  | F-001 — Authentication | In Progress | tồn tại | **Cập nhật** — bổ sung US-003, AC mới về rate limiting |
177
208
  | F-002 — User Profile | TODO | chưa có | **Tạo mới** |
178
- | F-003 — Credit System | Done | tồn tại | Không liên quan |
179
209
 
180
- Với từng feature có đề xuất thay đổi, ghi rõ:
210
+ Với từng feature có đề xuất thay đổi:
181
211
 
182
- **Tạo mới** `specs/main/features/{number}-{feature-slug}/frd.md`
212
+ **Tạo mới** `specs/main/feature/{F-XXX}-{feature-slug}/frd.md`
183
213
  - Dùng khi integration này là lần đầu tiên implement feature này
184
- - Thư mục đặt tên theo convention: `{number}-{feature-slug}` (ví dụ: `001-authentication`)
185
- - Nội dung đề xuất: {tóm tắt User Stories Acceptance Criteria từ spec.md}
214
+ - Thư mục đặt tên: `{F-XXX}-{feature-slug}` (ví dụ: `F-001-authentication`)
215
+ - Nội dung đề xuất: User Stories, AC, Components consumed (reference C-XXX) — từ spec.md
186
216
 
187
- **Cập nhật** `specs/main/features/{number}-{feature-slug}/frd.md`
217
+ **Cập nhật** `specs/main/feature/{F-XXX}-{feature-slug}/frd.md`
188
218
  - Dùng khi frd.md đã tồn tại và integration này bổ sung thêm stories hoặc criteria
189
219
  - Đọc file frd.md hiện tại, liệt kê các sections và hỏi user muốn update section nào:
190
220
 
@@ -193,10 +223,11 @@ frd.md — F-001 Authentication đã tồn tại.
193
223
  Sections hiện có:
194
224
 
195
225
  [1] Overview
196
- [2] Feature-level Acceptance Criteria
197
- [3] User Stories
198
- [4] Scope (In Scope / Out of Scope)
199
- [5] Dependencies
226
+ [2] Components Consumed
227
+ [3] Feature-level Acceptance Criteria
228
+ [4] User Stories
229
+ [5] Scope (In Scope / Out of Scope)
230
+ [6] Dependencies
200
231
  [A] All — viết lại toàn bộ từ đầu
201
232
 
202
233
  Chọn section cần cập nhật (có thể chọn nhiều, ví dụ: 2 3):
@@ -225,9 +256,9 @@ Chỉ ghi file sau khi user confirm. Nếu user yêu cầu chỉnh sửa → c
225
256
 
226
257
  Tạo thư mục `specs/integrations/{NNN}-{slug}/` nếu chưa có.
227
258
 
228
- Ghi nội dung đã confirm vào `specs/integrations/{NNN}-{slug}/spec.md`.
259
+ Ghi nội dung đã confirm vào `specs/integrations/{NNN}-{slug}/spec.md`. Frontmatter `features` và `components` phải được điền theo những gì đã nhận diện ở Bước 2.
229
260
 
230
- Nếu integration này đến từ prd.md, cập nhật `specs/main/prd.md`: đổi Status của feature từ `TODO` → `In Progress` và điền link vào cột FRD.
261
+ Nếu integration này gắn với feature từ prd.md, cập nhật `specs/main/prd.md`: đổi Status của feature từ `TODO` → `In Progress`.
231
262
 
232
263
  Thông báo kết quả:
233
264
  ```
@@ -235,7 +266,8 @@ Thông báo kết quả:
235
266
  {nếu có} ✓ prd.md — F-XXX status cập nhật: TODO → In Progress
236
267
 
237
268
  Bước tiếp theo:
238
- - Review và approve spec.md
269
+ - Review spec.md apply Cascade Proposals (nếu có) vào main artifacts thủ công
270
+ - Approve spec.md (đổi status: draft → approved)
239
271
  - /spec-tech → thiết kế technical design dựa trên spec.md này
240
272
  ```
241
273
 
@@ -1,15 +1,17 @@
1
1
  ---
2
2
  name: spec-prd
3
- description: Điền hoặc cập nhật prd.md — Product Requirements Document ở product level. Dùng khi prd.md còn là template rỗng hoặc cần review/cập nhật.
3
+ description: Điền hoặc cập nhật prd.md — Product Requirements Document ở product level. Cũng scaffold domain.md skeleton (glossary placeholder + Shared Entities rỗng). Dùng khi prd.md còn là template rỗng hoặc cần review/cập nhật.
4
4
  ---
5
5
 
6
6
  # spec-prd
7
7
 
8
8
  ## Overview
9
9
 
10
- Tạo nội dung cho `specs/main/prd.md` thông qua interview có cấu trúc. PRD là nguồn sự thật ở product level — nó định nghĩa vấn đề, users, scope, và NFRs trước khi bất kỳ technical decision nào được đưa ra.
10
+ Tạo nội dung cho `specs/main/prd.md` thông qua interview có cấu trúc. PRD là nguồn sự thật ở product level — nó định nghĩa vấn đề, users, scope, features, components, và NFRs trước khi bất kỳ technical decision nào được đưa ra.
11
11
 
12
- PRD không chứa: tech stack, implementation details, entity schema, hay bất cứ thứ thuộc về `sad.md` hoặc `domain.md`.
12
+ Skill này cũng scaffold `specs/main/domain.md` skeleton nếu chưa tồn tại domain.md sẽ được mọc dần qua cascade từ integrations (glossary terms, shared entities).
13
+
14
+ PRD không chứa: tech stack, implementation details, entity schema, glossary, business rules — những thứ đó thuộc về `sad.md` hoặc `domain.md`.
13
15
 
14
16
  ## When to Use
15
17
 
@@ -19,8 +21,8 @@ PRD không chứa: tech stack, implementation details, entity schema, hay bất
19
21
 
20
22
  ## When NOT to Use
21
23
 
22
- - Đang muốn thiết kế kiến trúc kỹ thuật → dùng `/spec.sad`
23
- - Đang muốn định nghĩa domain entities → dùng `/spec.domain`
24
+ - Đang muốn thiết kế kiến trúc kỹ thuật → dùng `/spec-sad`
25
+ - Cập nhật domain entities cụ thể đi qua integration (`/spec-new`) và để cascade mechanism handle
24
26
 
25
27
  ---
26
28
 
@@ -44,8 +46,9 @@ PRD không chứa: tech stack, implementation details, entity schema, hay bất
44
46
  | 2 | Target Users | ✓ đã có / ✗ trống/thiếu |
45
47
  | 3 | Scope | ✓ đã có / ✗ trống/thiếu |
46
48
  | 4 | Features | ✓ đã có / ✗ trống/thiếu |
47
- | 5 | Non-Functional Requirements | ✓ đã có / ✗ trống/thiếu |
48
- | 6 | Business Constraints | ✓ đã có / ✗ trống/thiếu |
49
+ | 5 | Components | ✓ đã có / ✗ trống/thiếu |
50
+ | 6 | Non-Functional Requirements | ✓ đã có / ✗ trống/thiếu |
51
+ | 7 | Business Constraints | ✓ đã có / ✗ trống/thiếu |
49
52
 
50
53
  Một section được coi là **trống/thiếu** nếu: không tồn tại trong file, hoặc chỉ chứa placeholder template (dấu `{}`), hoặc không có dòng nội dung thực.
51
54
 
@@ -60,8 +63,9 @@ PRD không chứa: tech stack, implementation details, entity schema, hay bất
60
63
  [3] Scope ✓ đã có
61
64
  [4] Risks ⚠ không có trong template
62
65
  [5] Features ✗ chưa có — cần bổ sung
63
- [6] Non-Functional Req. ✓ đã
64
- [7] Business Constraints ✓ đã có
66
+ [6] Components ✗ chưa — cần bổ sung
67
+ [7] Non-Functional Req. ✓ đã có
68
+ [8] Business Constraints ✓ đã có
65
69
  [A] Interview tất cả sections
66
70
 
67
71
  Chọn số hoặc A:
@@ -101,11 +105,15 @@ Sau đó hỏi tuần tự, từng phần một — không hỏi tất cả cùn
101
105
  > Hệ thống cần implement những features gì? Mỗi feature gồm: tên ngắn, mô tả 1 câu (làm gì, cho ai), priority (Must/Should/Could).
102
106
  > (Đây sẽ là Feature Index mà các FRD sau này sẽ tham chiếu.)
103
107
 
104
- **Phần 5 — Non-Functional Requirements:**
108
+ **Phần 5 — Components:**
109
+ > Hệ thống có những thành phần kỹ thuật (component) nào? Mỗi component gồm: tên ngắn (kebab-case, ví dụ `auth`, `payment`), mô tả 1 câu — component chịu trách nhiệm gì.
110
+ > (Đây là Component Index — agent có thể bỏ trống nếu user chưa rõ; component sẽ được thêm dần qua cascade từ integrations sau này.)
111
+
112
+ **Phần 6 — Non-Functional Requirements:**
105
113
  > Có yêu cầu về performance, security, availability, scalability không?
106
114
  > Mỗi NFR cần: category, mô tả cụ thể, target đo được, priority (Must/Should/Could).
107
115
 
108
- **Phần 6 — Business Constraints:**
116
+ **Phần 7 — Business Constraints:**
109
117
  > Có ràng buộc kinh doanh nào không? (deadline, budget, compliance, vendor lock-in, v.v.)
110
118
  > Có giả định nào quan trọng cần ghi lại không?
111
119
 
@@ -134,15 +142,24 @@ Chỉ ghi file sau khi user confirm. Nếu user yêu cầu chỉnh sửa → c
134
142
 
135
143
  ### Bước 5: Save
136
144
 
137
- Ghi nội dung đã được confirm vào `specs/main/prd.md`, thay thế toàn bộ nội dung cũ.
145
+ **5a. Ghi `specs/main/prd.md`** — nội dung đã được confirm, thay thế toàn bộ nội dung cũ.
146
+
147
+ **5b. Scaffold `specs/main/domain.md`** *(chỉ khi file này chưa tồn tại)*:
148
+
149
+ - Copy `.claude/templates/main/domain-template.md` thành `specs/main/domain.md`.
150
+ - Section **Glossary** giữ format bảng rỗng — terms sẽ được thêm dần qua cascade từ integrations.
151
+ - Section **Shared Entities** giữ block placeholder — entities sẽ mọc dần qua cascade khi integration giới thiệu shared entity.
152
+
153
+ Nếu `domain.md` đã tồn tại với nội dung thực → không đụng tới.
138
154
 
139
155
  Thông báo kết quả:
140
156
  ```
141
157
  ✓ specs/main/prd.md đã được cập nhật (status: draft)
158
+ {nếu vừa scaffold} ✓ specs/main/domain.md đã được scaffold (skeleton — sẽ mọc dần qua cascade)
142
159
 
143
160
  Bước tiếp theo:
144
- - /spec-domainđịnh nghĩa domain entities business rules
145
- - (sau domain) /spec-sadthiết kế kiến trúc kỹ thuật
161
+ - /spec-sadthiết kế kiến trúc kỹ thuật
162
+ - (sau sad) /spec-newbắt đầu integration đầu tiên
146
163
  ```
147
164
 
148
165
  ---
@@ -172,5 +189,7 @@ Trước khi kết thúc, kiểm tra:
172
189
  - [ ] Mỗi persona có: tên vai trò, mục tiêu, pain point
173
190
  - [ ] Out of Scope có ít nhất 1 item với lý do
174
191
  - [ ] Features có ít nhất 1 item, mỗi item có ID (F-XXX), tên, mô tả, priority
192
+ - [ ] Components: nếu có item, mỗi item có ID (C-XXX), tên, mô tả ngắn (có thể trống nếu chưa rõ)
175
193
  - [ ] Mỗi NFR có target đo được (không phải "nhanh", "bảo mật chung chung")
194
+ - [ ] domain.md tồn tại (đã scaffold skeleton hoặc có nội dung sẵn)
176
195
  - [ ] User đã confirm trước khi file được ghi
@@ -39,10 +39,10 @@ SAD không chứa: feature-level design, business rules, entity details — nh
39
39
 
40
40
  **Đọc `specs/main/domain.md`:**
41
41
 
42
- - **Chưa tồn tại hoặc là template** → dừng ngay:
43
- > `domain.md` chưa nội dung. Hãy chạy `/spec-domain` trước.
42
+ - **Chưa tồn tại** → dừng ngay:
43
+ > `domain.md` chưa được scaffold. Hãy chạy `/spec-prd` trước (skill này scaffold cả `prd.md` và `domain.md` skeleton).
44
44
 
45
- - **Đã nội dung** → đọc để hiểu: các entities chính,event-driven behavior không, volume ước tính.
45
+ - **Đã tồn tại** → đọc để hiểu: glossary và shared entities (nếu). Lưu ý `domain.md` có thể chỉ mới là skeleton vì nội dung chi tiết mọc dần qua cascade từ integrations — không cần dừng nếu file mỏng.
46
46
 
47
47
  **Đọc `specs/main/sad.md`:**
48
48