spec-lite 1.4.2 → 1.4.3
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 +19 -19
- package/package.json +1 -1
- package/skills/ado-config/SKILL.md +1 -1
- package/skills/ado-create/SKILL.md +7 -7
- package/skills/ado-update/SKILL.md +1 -1
- package/skills/archive/SKILL.md +19 -19
- package/skills/build/SKILL.md +5 -5
- package/skills/plan/SKILL.md +6 -6
- package/skills/review-everything/SKILL.md +9 -9
- package/skills/review-integration/SKILL.md +7 -7
- package/skills/scaffold/SKILL.md +9 -9
- package/skills/spec-brownfield-component/SKILL.md +11 -11
- package/skills/spec-brownfield-feature/SKILL.md +13 -13
- package/skills/spec-brownfield-init/SKILL.md +13 -13
- package/skills/spec-frd/SKILL.md +9 -9
- package/skills/spec-frd-update/SKILL.md +9 -9
- package/skills/spec-new/SKILL.md +11 -11
- package/skills/spec-prd/SKILL.md +10 -10
- package/skills/spec-remove/SKILL.md +27 -27
- package/skills/spec-sad/SKILL.md +6 -6
- package/skills/spec-tech/SKILL.md +16 -16
- package/skills/spec-test/SKILL.md +15 -15
- package/skills/spec-tsd/SKILL.md +10 -10
- package/skills-overview.md +25 -25
- package/templates/main/domain-template.md +1 -1
- package/templates/main/feature/frd-template.md +1 -1
- package/templates/main/prd-template.md +1 -1
|
@@ -7,7 +7,7 @@ description: Tạo tech.md cho một integration dựa trên spec.md đã đư
|
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Tạo `tech.md` cho một integration trong
|
|
10
|
+
Tạo `tech.md` cho một integration trong `.specs/integrations/{slug}/`.
|
|
11
11
|
|
|
12
12
|
`tech.md` là technical design — định nghĩa **how to build**: solution approach, data model changes, interfaces. Phải có `spec.md` đã approve trước khi chạy skill này.
|
|
13
13
|
|
|
@@ -30,14 +30,14 @@ Tạo `tech.md` cho một integration trong `specs/integrations/{slug}/`.
|
|
|
30
30
|
|
|
31
31
|
**Nếu có ARGUMENT:**
|
|
32
32
|
- Parse argument: có thể là số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`)
|
|
33
|
-
- Quét
|
|
33
|
+
- Quét `.specs/integrations/*/spec.md`, tìm integration khớp với argument
|
|
34
34
|
- Nếu không tìm thấy → báo lỗi:
|
|
35
35
|
> Không tìm thấy integration khớp với "{argument}". Kiểm tra lại tên hoặc số thứ tự.
|
|
36
36
|
- Nếu tìm thấy → dùng integration đó, bắt đầu luôn
|
|
37
37
|
|
|
38
38
|
**Nếu không có ARGUMENT:**
|
|
39
39
|
|
|
40
|
-
Quét
|
|
40
|
+
Quét `.specs/integrations/`. Liệt kê **tất cả** integrations có `spec.md`, đánh dấu những cái đã có `tech.md`:
|
|
41
41
|
|
|
42
42
|
```
|
|
43
43
|
Integrations:
|
|
@@ -58,7 +58,7 @@ Nếu integration đã có `tech.md` → hỏi trước khi tiếp tục:
|
|
|
58
58
|
|
|
59
59
|
### Bước 1b: Gate check — spec.md phải approved
|
|
60
60
|
|
|
61
|
-
Đọc frontmatter của
|
|
61
|
+
Đọc frontmatter của `.specs/integrations/{slug}/spec.md`.
|
|
62
62
|
|
|
63
63
|
Nếu `status` **không phải** `approved`:
|
|
64
64
|
|
|
@@ -76,12 +76,12 @@ Nếu `status: approved` → tiếp tục sang Bước 2.
|
|
|
76
76
|
|
|
77
77
|
Load các file sau:
|
|
78
78
|
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
79
|
+
- `.specs/integrations/{slug}/spec.md` — đọc toàn bộ + frontmatter (`features`, `components`)
|
|
80
|
+
- `.specs/main/sad.md` — đọc Tech Stack và Architectural Guardrails
|
|
81
|
+
- `.specs/main/domain.md` — đọc Glossary và Shared Entities
|
|
82
|
+
- `.specs/main/component/{C-XXX}-{slug}/cdd.md` — cho mỗi component trong frontmatter `components` (nếu cdd.md tồn tại)
|
|
83
|
+
- `.specs/main/feature/{F-XXX}-{slug}/frd.md` — cho mỗi feature trong frontmatter `features` (đọc `Verification Rules` để sinh `Verification Implementation` trong fdd.md)
|
|
84
|
+
- `.specs/main/feature/{F-XXX}-{slug}/fdd.md` — cho mỗi feature trong frontmatter `features` (nếu fdd.md tồn tại)
|
|
85
85
|
|
|
86
86
|
Tóm tắt context và surface assumptions:
|
|
87
87
|
|
|
@@ -168,11 +168,11 @@ Liệt kê **tất cả** components bị touched trong frontmatter và đánh g
|
|
|
168
168
|
|
|
169
169
|
Với từng component có đề xuất:
|
|
170
170
|
|
|
171
|
-
**Tạo mới**
|
|
171
|
+
**Tạo mới** `.specs/main/component/{C-XXX}-{component-slug}/cdd.md`
|
|
172
172
|
- Dùng khi component này được giới thiệu lần đầu trong integration (cascade từ spec.md đã đề xuất tạo crd, giờ tech.md đề xuất tạo cdd)
|
|
173
173
|
- Nội dung: Module Structure, Internal Data Flow, Storage & Persistence, Internal Interfaces, Technical Decisions
|
|
174
174
|
|
|
175
|
-
**Cập nhật**
|
|
175
|
+
**Cập nhật** `.specs/main/component/{C-XXX}-{component-slug}/cdd.md`
|
|
176
176
|
- Khi cdd.md đã tồn tại và integration thay đổi internal design
|
|
177
177
|
|
|
178
178
|
### feature/{F-XXX}-{feature-name}/fdd.md
|
|
@@ -184,12 +184,12 @@ Liệt kê **tất cả** features liên quan trong frontmatter và đánh giá:
|
|
|
184
184
|
| F-001 — Checkout | tồn tại | **Cập nhật** — thêm sequence khi payment fail |
|
|
185
185
|
| F-002 — Refund | chưa có | **Tạo mới** |
|
|
186
186
|
|
|
187
|
-
**Tạo mới**
|
|
187
|
+
**Tạo mới** `.specs/main/feature/{F-XXX}-{feature-slug}/fdd.md`
|
|
188
188
|
- Khi feature gắn với integration nhưng chưa có fdd.md
|
|
189
189
|
- Nội dung: Inter-component data flow, Orchestration, Cross-component invariants, **Verification Implementation** — từ tech.md (chỉ phần inter-component, không lặp internal design của component)
|
|
190
190
|
- **Verification Implementation**: với mỗi rule trong `frd.md > Verification Rules` của feature này, sinh row trong bảng `Rule ID | Rule (short) | Layer | Owning component | Error propagation`. Reference rule bằng `VR-F{NNN}-{seq}` ID (lấy nguyên từ FRD, không tạo ID mới). Rule (short) copy ngắn gọn từ FRD để row tự đọc được. Layer = client/gateway/service (có thể combine). Owning component reference C-XXX. KHÔNG đưa regex/validator code/error message wording vào — đó thuộc `cdd.md` của owning component (cascade riêng) hoặc UI copy artifact. Bỏ qua nếu FRD không có Verification Rules.
|
|
191
191
|
|
|
192
|
-
**Cập nhật**
|
|
192
|
+
**Cập nhật** `.specs/main/feature/{F-XXX}-{feature-slug}/fdd.md`
|
|
193
193
|
- Khi fdd.md đã tồn tại, ghi rõ thay đổi flow nào
|
|
194
194
|
- Nếu integration thêm/đổi rule trong FRD → cập nhật bảng Verification Implementation tương ứng
|
|
195
195
|
|
|
@@ -216,7 +216,7 @@ Chỉ ghi file sau khi user confirm. Nếu user yêu cầu chỉnh sửa → c
|
|
|
216
216
|
|
|
217
217
|
### Bước 6: Save + Auto-cascade
|
|
218
218
|
|
|
219
|
-
**[6.1] Ghi
|
|
219
|
+
**[6.1] Ghi `.specs/integrations/{slug}/tech.md`** với status `approved` (không phải `draft` — human đã confirm ở Bước 5 chính là approval). Frontmatter `features` và `components` mirror từ `spec.md`.
|
|
220
220
|
|
|
221
221
|
**[6.2] Auto-apply mỗi Changes block** vào main artifact tương ứng. Thứ tự apply (để tránh forward reference): `sad.md` → `domain.md` → `component/*/cdd.md` → `feature/*/fdd.md`.
|
|
222
222
|
|
|
@@ -265,7 +265,7 @@ Cho mỗi artifact:
|
|
|
265
265
|
**[6.4] Thông báo kết quả:**
|
|
266
266
|
|
|
267
267
|
```
|
|
268
|
-
✓ specs/integrations/{slug}/tech.md đã được tạo (status: approved)
|
|
268
|
+
✓ .specs/integrations/{slug}/tech.md đã được tạo (status: approved)
|
|
269
269
|
|
|
270
270
|
Auto-cascade applied:
|
|
271
271
|
✓ sad.md — {summary | no-op}
|
|
@@ -7,13 +7,13 @@ description: Tạo test.md cho một integration bằng cách mechanical derive
|
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Tạo `test.md` cho một integration trong
|
|
10
|
+
Tạo `test.md` cho một integration trong `.specs/integrations/{slug}/`.
|
|
11
11
|
|
|
12
12
|
`test.md` là verification design ở integration level — định nghĩa **how to verify** rằng integration đáp ứng `spec.md`. Nội dung gồm Test Strategy (per integration) + Changes blocks cascade lên feature `tsd.md` (Test Spec Document).
|
|
13
13
|
|
|
14
14
|
**Hai artifact tách bạch:**
|
|
15
|
-
-
|
|
16
|
-
-
|
|
15
|
+
- `.specs/integrations/{slug}/test.md` — integration-level, ephemeral, PR record bất biến sau approve (single-word naming như `spec.md` / `tech.md` / `plan.md`).
|
|
16
|
+
- `.specs/main/feature/{F-XXX}-{slug}/tsd.md` — feature-level, persistent canonical artifact (3-letter naming như `frd.md` / `fdd.md`). TC content cuối cùng nằm ở đây.
|
|
17
17
|
|
|
18
18
|
**Role:** QC. Song song với `/spec-tech` (DEV role). Cả hai chỉ phụ thuộc `spec.md` approved — không có thứ tự bắt buộc giữa chúng.
|
|
19
19
|
|
|
@@ -38,14 +38,14 @@ Tạo `test.md` cho một integration trong `specs/integrations/{slug}/`.
|
|
|
38
38
|
|
|
39
39
|
**Nếu có ARGUMENT:**
|
|
40
40
|
- Parse argument: có thể là số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`)
|
|
41
|
-
- Quét
|
|
41
|
+
- Quét `.specs/integrations/*/spec.md`, tìm integration khớp với argument
|
|
42
42
|
- Nếu không tìm thấy → báo lỗi:
|
|
43
43
|
> Không tìm thấy integration khớp với "{argument}". Kiểm tra lại tên hoặc số thứ tự.
|
|
44
44
|
- Nếu tìm thấy → dùng integration đó, bắt đầu luôn
|
|
45
45
|
|
|
46
46
|
**Nếu không có ARGUMENT:**
|
|
47
47
|
|
|
48
|
-
Quét
|
|
48
|
+
Quét `.specs/integrations/`. Liệt kê **tất cả** integrations có `spec.md`, đánh dấu những cái đã có `test.md`:
|
|
49
49
|
|
|
50
50
|
```
|
|
51
51
|
Integrations:
|
|
@@ -66,7 +66,7 @@ Nếu integration đã có `test.md` → hỏi trước khi tiếp tục:
|
|
|
66
66
|
|
|
67
67
|
### Bước 1b: Gate check
|
|
68
68
|
|
|
69
|
-
Đọc frontmatter của
|
|
69
|
+
Đọc frontmatter của `.specs/integrations/{slug}/spec.md`.
|
|
70
70
|
|
|
71
71
|
**Check 1 — spec.md phải approved:**
|
|
72
72
|
|
|
@@ -77,7 +77,7 @@ Nếu `status` **không phải** `approved`:
|
|
|
77
77
|
> `/spec-test` cần spec.md approved vì cascade frd.md (nguồn của TC) chỉ apply sau khi approve.
|
|
78
78
|
>
|
|
79
79
|
> Để tiếp tục:
|
|
80
|
-
> 1. Review
|
|
80
|
+
> 1. Review `.specs/integrations/{slug}/spec.md`
|
|
81
81
|
> 2. Approve (đổi `status: draft` → `status: approved`)
|
|
82
82
|
>
|
|
83
83
|
> Sau đó chạy lại `/spec-test`.
|
|
@@ -107,10 +107,10 @@ Nếu cả 2 check pass → tiếp tục Bước 2.
|
|
|
107
107
|
|
|
108
108
|
Load các file sau:
|
|
109
109
|
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
110
|
+
- `.specs/integrations/{slug}/spec.md` — đọc toàn bộ + frontmatter (`features`)
|
|
111
|
+
- `.specs/main/feature/{F-XXX}-{slug}/frd.md` — cho mỗi feature trong frontmatter `features` (source của TC — bắt buộc tồn tại vì cascade từ spec.md đã apply)
|
|
112
|
+
- `.specs/main/feature/{F-XXX}-{slug}/tsd.md` — cho mỗi feature trong frontmatter `features` (nếu tồn tại — cần để diff và assign next ID)
|
|
113
|
+
- `.specs/integrations/{slug}/tech.md` — đọc nếu tồn tại (optional, dùng để hint environment / data set / NFR perf threshold)
|
|
114
114
|
|
|
115
115
|
Tóm tắt context:
|
|
116
116
|
|
|
@@ -127,7 +127,7 @@ TÔI HIỂU:
|
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
Nếu frd.md của feature nào không tồn tại → báo lỗi và dừng (lỗi cascade từ spec.md trước đó):
|
|
130
|
-
> ⛔
|
|
130
|
+
> ⛔ `.specs/main/feature/{F-XXX}-{slug}/frd.md` không tồn tại nhưng feature có trong `features:` của spec.md. Cascade từ spec.md có thể đã fail. Kiểm tra lại.
|
|
131
131
|
|
|
132
132
|
---
|
|
133
133
|
|
|
@@ -284,14 +284,14 @@ Chỉ tiến hành Bước 6 sau khi QC confirm.
|
|
|
284
284
|
|
|
285
285
|
### Bước 6: Save + Auto-cascade
|
|
286
286
|
|
|
287
|
-
**[6.1] Ghi
|
|
287
|
+
**[6.1] Ghi `.specs/integrations/{slug}/test.md`** với status `approved` (không phải `draft` — human đã confirm ở Bước 5 chính là approval). Frontmatter `features` mirror từ `spec.md`.
|
|
288
288
|
|
|
289
289
|
**[6.2] Auto-apply mỗi Changes block** vào `feature/{F-XXX}/tsd.md` tương ứng. Thứ tự apply: theo thứ tự xuất hiện trong frontmatter `features` (deterministic, không có forward reference giữa các feature tsd.md). Bỏ qua feature có operation `no-op` trong Cascade Summary.
|
|
290
290
|
|
|
291
291
|
Cho từng block:
|
|
292
292
|
|
|
293
293
|
- **Operation=create:**
|
|
294
|
-
- Tạo file
|
|
294
|
+
- Tạo file `.specs/main/feature/{F-XXX}-{slug}/tsd.md`
|
|
295
295
|
- Nội dung = nội dung của Changes block (theo format `templates/main/feature/tsd-template.md`)
|
|
296
296
|
- Frontmatter của tsd.md mới: status `draft` (separate lifecycle với integration test.md)
|
|
297
297
|
|
|
@@ -329,7 +329,7 @@ Format entry:
|
|
|
329
329
|
**[6.4] Thông báo kết quả:**
|
|
330
330
|
|
|
331
331
|
```
|
|
332
|
-
✓ specs/integrations/{slug}/test.md đã được tạo (status: approved)
|
|
332
|
+
✓ .specs/integrations/{slug}/test.md đã được tạo (status: approved)
|
|
333
333
|
|
|
334
334
|
Auto-cascade applied:
|
|
335
335
|
✓ feature/F-XXX-{slug}/tsd.md — {created | updated: +N TS, +M TC, modify K TC, remove L TC}
|
package/skills/spec-tsd/SKILL.md
CHANGED
|
@@ -7,7 +7,7 @@ description: Tạo tsd.md (Test Spec Document) trực tiếp tại feature level
|
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Tạo
|
|
10
|
+
Tạo `.specs/main/feature/{F-XXX}-{slug}/tsd.md` trực tiếp từ frd.md của feature đó — **không qua integration**, không cascade.
|
|
11
11
|
|
|
12
12
|
Skill này song hành với `/spec-prd` và `/spec-sad`: skill có acronym suffix (`prd`/`sad`/`tsd`) → tạo main artifact trực tiếp. Phân biệt với `/spec-test` — skill đó tạo `test.md` integration-level và cascade qua Changes blocks.
|
|
13
13
|
|
|
@@ -39,13 +39,13 @@ Quy tắc:
|
|
|
39
39
|
|
|
40
40
|
**Nếu có ARGUMENT:**
|
|
41
41
|
- Parse argument: có thể là feature ID (`F-001`, `001`) hoặc slug (`F-001-auth`, `auth`)
|
|
42
|
-
- Quét
|
|
42
|
+
- Quét `.specs/main/feature/*/frd.md`, tìm feature khớp
|
|
43
43
|
- Nếu không tìm thấy → báo lỗi:
|
|
44
|
-
> Không tìm thấy feature khớp với "{argument}". Kiểm tra
|
|
44
|
+
> Không tìm thấy feature khớp với "{argument}". Kiểm tra `.specs/main/feature/`.
|
|
45
45
|
|
|
46
46
|
**Nếu không có ARGUMENT:**
|
|
47
47
|
|
|
48
|
-
Quét
|
|
48
|
+
Quét `.specs/main/feature/`. Liệt kê **tất cả** features có `frd.md`, đánh dấu trạng thái tsd:
|
|
49
49
|
|
|
50
50
|
```
|
|
51
51
|
Features có frd.md:
|
|
@@ -66,12 +66,12 @@ Nếu không có feature nào có frd → thông báo:
|
|
|
66
66
|
|
|
67
67
|
**Check 1 — frd.md tồn tại:**
|
|
68
68
|
|
|
69
|
-
Nếu
|
|
69
|
+
Nếu `.specs/main/feature/{F-XXX}-{slug}/frd.md` không tồn tại → dừng:
|
|
70
70
|
> ⛔ `feature/{F-XXX}-{slug}/frd.md` không tồn tại. `/spec-tsd` cần frd làm input.
|
|
71
71
|
|
|
72
72
|
**Check 2 — tsd.md đã tồn tại:**
|
|
73
73
|
|
|
74
|
-
Nếu
|
|
74
|
+
Nếu `.specs/main/feature/{F-XXX}-{slug}/tsd.md` đã tồn tại:
|
|
75
75
|
|
|
76
76
|
> ⚠ `tsd.md` đã tồn tại cho feature **{F-XXX} — {slug}**.
|
|
77
77
|
>
|
|
@@ -90,8 +90,8 @@ Nếu user chọn yes → backup tsd.md cũ thành `tsd.md.bak.{timestamp}` rồ
|
|
|
90
90
|
|
|
91
91
|
Load các file sau:
|
|
92
92
|
|
|
93
|
-
-
|
|
94
|
-
-
|
|
93
|
+
- `.specs/main/feature/{F-XXX}-{slug}/frd.md` — **bắt buộc**, source của TC
|
|
94
|
+
- `.specs/main/feature/{F-XXX}-{slug}/fdd.md` — optional, đọc nếu tồn tại để hint Components Used (cho Dependencies section của tsd)
|
|
95
95
|
|
|
96
96
|
Tóm tắt context:
|
|
97
97
|
|
|
@@ -183,7 +183,7 @@ Hiển thị draft đầy đủ — chưa ghi file.
|
|
|
183
183
|
|
|
184
184
|
### Bước 6: Save
|
|
185
185
|
|
|
186
|
-
Ghi
|
|
186
|
+
Ghi `.specs/main/feature/{F-XXX}-{slug}/tsd.md` với status `draft` (feature-level artifact có lifecycle riêng, không phải `approved` — QC còn fill placeholders nên status `draft` cho đến khi đầy đủ).
|
|
187
187
|
|
|
188
188
|
Nếu overwrite — file backup `tsd.md.bak.{timestamp}` đã tạo ở Bước 2.
|
|
189
189
|
|
|
@@ -200,7 +200,7 @@ Nếu overwrite tsd.md cũ → entry vẫn dùng operation `create` (vì IDs reg
|
|
|
200
200
|
Thông báo kết quả:
|
|
201
201
|
|
|
202
202
|
```
|
|
203
|
-
✓ specs/main/feature/{F-XXX}-{slug}/tsd.md đã được tạo (status: draft)
|
|
203
|
+
✓ .specs/main/feature/{F-XXX}-{slug}/tsd.md đã được tạo (status: draft)
|
|
204
204
|
Coverage: N Flows → N TS, M US/AC → M Functional TC, P VR → ~2P Validation TC, Q FAC → Q Feature AC TC
|
|
205
205
|
{nếu overwrite: backup tại tsd.md.bak.{timestamp}}
|
|
206
206
|
|
package/skills-overview.md
CHANGED
|
@@ -8,13 +8,13 @@ Dùng khi bắt đầu dự án mới chưa có code. Mục tiêu: bootstrap `pr
|
|
|
8
8
|
|
|
9
9
|
| Command | Reads | Writes |
|
|
10
10
|
| --- | --- | --- |
|
|
11
|
-
| `/spec-prd` | — *(tùy chọn: nguồn baseline path/@file/paste)* |
|
|
12
|
-
| `/spec-sad` | `prd.md`, `domain.md` |
|
|
13
|
-
| `/spec-frd [F-XXX]` *(tùy chọn)* | `prd.md`, `domain.md`, `sad.md`, `crd(s)` *(+ nguồn baseline)* |
|
|
11
|
+
| `/spec-prd` | — *(tùy chọn: nguồn baseline path/@file/paste)* | `.specs/main/prd.md`, `.specs/main/domain.md` *(skeleton)* |
|
|
12
|
+
| `/spec-sad` | `prd.md`, `domain.md` | `.specs/main/sad.md` |
|
|
13
|
+
| `/spec-frd [F-XXX]` *(tùy chọn)* | `prd.md`, `domain.md`, `sad.md`, `crd(s)` *(+ nguồn baseline)* | `.specs/main/feature/{F-XXX}-*/frd.md` *(+ register feature row vào `prd.md` nếu feature mới)* |
|
|
14
14
|
|
|
15
15
|
### `/spec-prd`
|
|
16
16
|
|
|
17
|
-
Tạo hoặc cập nhật
|
|
17
|
+
Tạo hoặc cập nhật `.specs/main/prd.md` thông qua interview có cấu trúc. Ngoài ra **scaffold luôn `.specs/main/domain.md` skeleton** (Glossary placeholder + Shared Entities rỗng) — domain mọc dần qua cascade từ integrations.
|
|
18
18
|
|
|
19
19
|
**Sections template** (7): Problem Statement · Target Users · Scope · Features · Components · Non-Functional Requirements · Business Constraints
|
|
20
20
|
|
|
@@ -33,7 +33,7 @@ Chọn `A` → interview tuần tự 7 sections template (sections thừa không
|
|
|
33
33
|
|
|
34
34
|
### `/spec-sad`
|
|
35
35
|
|
|
36
|
-
Tạo hoặc cập nhật
|
|
36
|
+
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 (cả hai do `/spec-prd` scaffold).
|
|
37
37
|
|
|
38
38
|
Trước khi interview, đọc `prd.md` (NFRs, constraints) và `domain.md` (glossary, shared entities) để surface assumptions và đề xuất options phù hợp khi user chưa quyết định.
|
|
39
39
|
|
|
@@ -51,7 +51,7 @@ Nếu `prd.md` chưa có → dừng, yêu cầu chạy `/spec-prd` trước.
|
|
|
51
51
|
|
|
52
52
|
### `/spec-frd [F-XXX]` *(tùy chọn)*
|
|
53
53
|
|
|
54
|
-
BA author
|
|
54
|
+
BA author `.specs/main/feature/{F-XXX}-*/frd.md` trực tiếp qua interview — **spec-first ở feature level**, chạy *trước* khi DEV bắt đầu integration. Cặp greenfield đối xứng với `/spec-brownfield-feature` (vốn reverse-engineer frd từ code).
|
|
55
55
|
|
|
56
56
|
Nhận F-XXX từ argument (hoặc chọn từ prd Feature Index) + tùy chọn nguồn baseline (path/@file/paste như `/spec-prd`). Yêu cầu `prd.md` tồn tại.
|
|
57
57
|
|
|
@@ -253,17 +253,17 @@ Sau khi main artifacts đã sẵn sàng (từ greenfield hoặc brownfield), m
|
|
|
253
253
|
|
|
254
254
|
| Command | Reads | Writes |
|
|
255
255
|
| --- | --- | --- |
|
|
256
|
-
| `/spec-new [requirement]` | `prd.md`, `domain.md`, frd(s), crd(s) |
|
|
257
|
-
| `/spec-tech [number]` | `sad.md`, `domain.md`, cdd(s), fdd(s), `spec.md` |
|
|
258
|
-
| `/spec-test [number]` | `spec.md`, frd(s), tsd(s), `tech.md` *(optional)* |
|
|
256
|
+
| `/spec-new [requirement]` | `prd.md`, `domain.md`, frd(s), crd(s) | `.specs/integrations/{slug}/spec.md` |
|
|
257
|
+
| `/spec-tech [number]` | `sad.md`, `domain.md`, cdd(s), fdd(s), `spec.md` | `.specs/integrations/{slug}/tech.md` |
|
|
258
|
+
| `/spec-test [number]` | `spec.md`, frd(s), tsd(s), `tech.md` *(optional)* | `.specs/integrations/{slug}/test.md`, `feature/{F-XXX}/tsd.md` |
|
|
259
259
|
| `/plan` | `spec.md`, `tech.md`, `domain.md` | `plan.md`, `todo.md` |
|
|
260
260
|
| `/build` | `plan.md`, `todo.md` | *(source code)* |
|
|
261
261
|
| `/review-integration` | `spec.md`, `tech.md`, `plan.md`, `todo.md`, *(source code)* | *(findings report)* |
|
|
262
|
-
| `/archive` |
|
|
262
|
+
| `/archive` | `.specs/integrations/` | `.specs/archive/` |
|
|
263
263
|
|
|
264
264
|
### `/spec-new [requirement]`
|
|
265
265
|
|
|
266
|
-
Tạo
|
|
266
|
+
Tạo `.specs/integrations/{slug}/spec.md` cho một integration mới. Chạy bởi BA.
|
|
267
267
|
|
|
268
268
|
**Nếu không có argument** → đọc `prd.md`, hiển thị danh sách features có `Status = TODO`, user chọn số.
|
|
269
269
|
|
|
@@ -283,9 +283,9 @@ Sau khi confirm → ghi `spec.md`, cập nhật `prd.md`: Status `TODO → In Pr
|
|
|
283
283
|
|
|
284
284
|
### `/spec-tech [number]`
|
|
285
285
|
|
|
286
|
-
Tạo
|
|
286
|
+
Tạo `.specs/integrations/{slug}/tech.md` cho một integration. Chạy bởi DEV sau khi `spec.md` đã được approve.
|
|
287
287
|
|
|
288
|
-
**Luôn hiển thị danh sách tất cả integrations** trong
|
|
288
|
+
**Luôn hiển thị danh sách tất cả integrations** trong `.specs/integrations/`, đánh dấu `✓` những cái đã có `tech.md`. Nếu có argument → argument là số thứ tự (`1`, `001`...), chọn luôn không cần hiển thị.
|
|
289
289
|
|
|
290
290
|
Nếu integration đã có `tech.md` → hỏi confirm trước khi ghi đè.
|
|
291
291
|
|
|
@@ -299,9 +299,9 @@ Context load: `spec.md` + `sad.md` + `domain.md` + `cdd.md` (cho mỗi component
|
|
|
299
299
|
|
|
300
300
|
### `/spec-test [number]`
|
|
301
301
|
|
|
302
|
-
Tạo
|
|
302
|
+
Tạo `.specs/integrations/{slug}/test.md` cho một integration. Chạy bởi **QC** sau khi `spec.md` đã được approve. **Song song / độc lập** với `/spec-tech` — cả hai chỉ phụ thuộc `spec.md`. Không có thứ tự bắt buộc giữa chúng.
|
|
303
303
|
|
|
304
|
-
**Luôn hiển thị danh sách tất cả integrations** trong
|
|
304
|
+
**Luôn hiển thị danh sách tất cả integrations** trong `.specs/integrations/`, đánh dấu `✓` những cái đã có `test.md`. Nếu có argument → chọn luôn không cần hiển thị.
|
|
305
305
|
|
|
306
306
|
**Gate check:** spec.md phải `approved` + `features:` non-empty. Integration có `features: []` (thuần component) → dừng vì component-level `tsd` không tồn tại trong kit này.
|
|
307
307
|
|
|
@@ -326,7 +326,7 @@ QC review: override priority defaults, fill placeholders (env / data / OOS / str
|
|
|
326
326
|
Tạo `plan.md` và `todo.md` từ `spec.md` + `tech.md`. Là SDD wrapper quanh `planning-and-task-breakdown`.
|
|
327
327
|
|
|
328
328
|
**Bước 1: Xác định integration**
|
|
329
|
-
Quét
|
|
329
|
+
Quét `.specs/integrations/`, hiển thị danh sách với trạng thái `spec✓/—`, `tech✓/—`, `plan✓/—`. Nếu có argument → chọn luôn. Nếu `plan.md`/`todo.md` đã tồn tại → hỏi trước khi ghi đè.
|
|
330
330
|
|
|
331
331
|
**Bước 2: Load và surface context**
|
|
332
332
|
Đọc `spec.md`, `tech.md`, `domain.md`. Surface tóm tắt (features, components, AC IDs, thay đổi kỹ thuật, shared entities) và assumptions để user confirm. Plan mode từ đây — chỉ đọc, không viết code.
|
|
@@ -379,17 +379,17 @@ Review implementation sau `/build` theo năm trục: correctness, readability, a
|
|
|
379
379
|
|
|
380
380
|
### `/archive`
|
|
381
381
|
|
|
382
|
-
Di chuyển integration đã hoàn thành hoặc không còn active từ
|
|
382
|
+
Di chuyển integration đã hoàn thành hoặc không còn active từ `.specs/integrations/` sang `.specs/archive/` để dọn dẹp thư mục làm việc chính.
|
|
383
383
|
|
|
384
|
-
**Bước 1 — Kiểm tra thư mục:** Tự động tạo
|
|
384
|
+
**Bước 1 — Kiểm tra thư mục:** Tự động tạo `.specs/archive/` nếu chưa tồn tại.
|
|
385
385
|
|
|
386
|
-
**Bước 2 — Liệt kê:** Quét
|
|
386
|
+
**Bước 2 — Liệt kê:** Quét `.specs/integrations/`, hiển thị numbered list kèm status (đọc từ `spec.md` nếu có). Nếu không có integration nào → thông báo và dừng.
|
|
387
387
|
|
|
388
388
|
**Bước 3 — Xác nhận:** Hiển thị preview mapping `integrations/{slug}/ → archive/{slug}/` trước khi di chuyển. Chờ user confirm.
|
|
389
389
|
|
|
390
|
-
**Bước 4 — Di chuyển:** Move toàn bộ thư mục, giữ nguyên cấu trúc bên trong. Nếu slug đã tồn tại trong
|
|
390
|
+
**Bước 4 — Di chuyển:** Move toàn bộ thư mục, giữ nguyên cấu trúc bên trong. Nếu slug đã tồn tại trong `.specs/archive/` → bỏ qua và cảnh báo để tránh ghi đè.
|
|
391
391
|
|
|
392
|
-
**Bước 5 — Kết quả:** Liệt kê integrations đã archive, integrations bị bỏ qua (nếu có), và số integration còn lại trong
|
|
392
|
+
**Bước 5 — Kết quả:** Liệt kê integrations đã archive, integrations bị bỏ qua (nếu có), và số integration còn lại trong `.specs/integrations/`.
|
|
393
393
|
|
|
394
394
|
---
|
|
395
395
|
|
|
@@ -432,7 +432,7 @@ Khác với `/review-integration` (chạy sau `/build` cho một integration c
|
|
|
432
432
|
|
|
433
433
|
| Command | Reads | Writes |
|
|
434
434
|
| --- | --- | --- |
|
|
435
|
-
| `/review-everything` | `prd.md`, `domain.md`, `sad.md`, *(source code)* |
|
|
435
|
+
| `/review-everything` | `prd.md`, `domain.md`, `sad.md`, *(source code)* | `.specs/integrations/{NNN}-{slug}/review-findings.md` *(qua /spec-new)* |
|
|
436
436
|
|
|
437
437
|
### `/review-everything`
|
|
438
438
|
|
|
@@ -450,7 +450,7 @@ Review codebase ở project level theo năm trục của `code-review-and-qualit
|
|
|
450
450
|
|
|
451
451
|
Nếu user chọn fix → gom selected findings thành raw requirement, invoke `/spec-new` với ARGUMENT đó. Integration được tạo và xử lý như integration thường (`/spec-tech` → `/plan` → `/build`).
|
|
452
452
|
|
|
453
|
-
`review-findings.md` (full snapshot, gồm cả deferred) được ghi vào
|
|
453
|
+
`review-findings.md` (full snapshot, gồm cả deferred) được ghi vào `.specs/integrations/{NNN}-{slug}/` để traceability.
|
|
454
454
|
|
|
455
455
|
**Khi dùng:**
|
|
456
456
|
|
|
@@ -571,7 +571,7 @@ Tạo hoặc cập nhật `.claude/ado.yaml` — file config ADO dùng chung cho
|
|
|
571
571
|
|
|
572
572
|
**Bước 1 — Current user:** Đọc `git config user.email`, tìm trong `team.*` của `ado.yaml`. Nếu không khớp → hỏi user chọn. Resolve email → ADO identity ID để dùng làm assignee.
|
|
573
573
|
|
|
574
|
-
**Bước 2 — Chọn integration:** List tất cả
|
|
574
|
+
**Bước 2 — Chọn integration:** List tất cả `.specs/integrations/` kèm title và status từ frontmatter `spec.md`.
|
|
575
575
|
|
|
576
576
|
**Bước 3 — Parse spec.md:** Extract Features (`### Feature: <name> (<ID>)`) và User Stories (`#### US-FXXX-YYY — <title>`). Detect ticket đã tồn tại qua dòng `**ADO:**` ngay sau heading — đánh dấu `already_created`, bỏ qua khi tạo.
|
|
577
577
|
|
|
@@ -599,7 +599,7 @@ Cập nhật state đồng loạt cho User Story (và tuỳ chọn Feature) tick
|
|
|
599
599
|
|
|
600
600
|
**Bước 1 — Load config:** Đọc `ado.yaml`. Dừng nếu thiếu file hoặc `environments` rỗng.
|
|
601
601
|
|
|
602
|
-
**Bước 2 — Chọn integration:** List
|
|
602
|
+
**Bước 2 — Chọn integration:** List `.specs/integrations/` kèm title và status.
|
|
603
603
|
|
|
604
604
|
**Bước 3 — Parse & validate:** Extract tất cả Feature và User Story tickets từ dòng `**ADO:**` trong `spec.md`. Nếu bất kỳ ticket nào chưa có → dừng, báo danh sách thiếu, yêu cầu chạy `/ado-create` trước.
|
|
605
605
|
|
|
@@ -14,7 +14,7 @@ referenced_by:
|
|
|
14
14
|
|
|
15
15
|
> File này mỏng — chỉ chứa **shared vocabulary** và **shared entities** (entities được dùng bởi 2+ component).
|
|
16
16
|
>
|
|
17
|
-
> Business rules, domain events, internal entities thuộc về component sở hữu — xem
|
|
17
|
+
> Business rules, domain events, internal entities thuộc về component sở hữu — xem `.specs/main/component/{C-XXX}-{component-name}/crd.md`.
|
|
18
18
|
|
|
19
19
|
## Glossary
|
|
20
20
|
|
|
@@ -149,7 +149,7 @@ Sub-rule phức tạp (vd: password complexity với nhiều điều kiện) →
|
|
|
149
149
|
|
|
150
150
|
### Components Used
|
|
151
151
|
|
|
152
|
-
Tham chiếu đến
|
|
152
|
+
Tham chiếu đến `.specs/main/component/{C-XXX}-...`.
|
|
153
153
|
|
|
154
154
|
| Component | Vai trò trong feature |
|
|
155
155
|
| --- | --- |
|
|
@@ -56,7 +56,7 @@ Section này **chỉ liệt kê component có boundary _Given_** — tức bound
|
|
|
56
56
|
- `/spec-sad` — architect lock component boundaries dựa trên full feature index + NFRs
|
|
57
57
|
- `/spec-new F-XXX` cascade — khi analyze 1 feature, discover component mới nếu cần và register vào đây qua Change History
|
|
58
58
|
|
|
59
|
-
Chi tiết về vai trò và thiết kế nằm trong
|
|
59
|
+
Chi tiết về vai trò và thiết kế nằm trong `.specs/main/component/{C-XXX}-{component-name}/`.
|
|
60
60
|
|
|
61
61
|
| ID | Component | Mô tả ngắn | Status |
|
|
62
62
|
| --- | --- | --- | --- |
|