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.
@@ -7,7 +7,7 @@ description: Discover features từ code, generate frd.md + fdd.md cho từng fe
7
7
 
8
8
  ## Overview
9
9
 
10
- Tạo `specs/main/feature/{F-XXX}-{feature-name}/frd.md` và `fdd.md` cho các features trong brownfield project.
10
+ Tạo `.specs/main/feature/{F-XXX}-{feature-name}/frd.md` và `fdd.md` cho các features trong brownfield project.
11
11
 
12
12
  Skill này **tự discover** features từ routes, use cases, và test files, sau đó scan sâu để extract user stories, AC, và inter-component flows. Khi hoàn thành, **điền Feature Index vào prd.md**.
13
13
 
@@ -33,9 +33,9 @@ Skill này **tự discover** features từ routes, use cases, và test files, sa
33
33
  **Path:** Nếu có ARGUMENT là path → dùng làm root. Nếu không → CWD.
34
34
 
35
35
  **Load:**
36
- - `specs/main/prd.md` — kiểm tra Component Index đã được điền
37
- - `specs/main/domain.md` — đọc Glossary và Shared Entities
38
- - `specs/main/component/*/crd.md` — đọc Public Interface của từng component (để cross-reference trong fdd.md)
36
+ - `.specs/main/prd.md` — kiểm tra Component Index đã được điền
37
+ - `.specs/main/domain.md` — đọc Glossary và Shared Entities
38
+ - `.specs/main/component/*/crd.md` — đọc Public Interface của từng component (để cross-reference trong fdd.md)
39
39
 
40
40
  **Kiểm tra preconditions:**
41
41
 
@@ -46,7 +46,7 @@ Nếu `prd.md` Component Index còn trống (không có C-XXX entries) → dừn
46
46
  > Component Index chưa có entries. Hãy chạy `/spec-brownfield-component` trước.
47
47
  > fdd.md cần tham chiếu C-XXX để mô tả inter-component flows.
48
48
 
49
- Nếu `specs/main/component/` không có crd.md nào → cảnh báo tương tự và dừng.
49
+ Nếu `.specs/main/component/` không có crd.md nào → cảnh báo tương tự và dừng.
50
50
 
51
51
  **Attachments:**
52
52
  > Bạn có tài liệu bổ sung nào không? (user stories, test plans, wireframes, existing specs)
@@ -216,10 +216,10 @@ Với mỗi feature, generate 2 files dùng templates tương ứng:
216
216
 
217
217
  ```
218
218
  Sẽ tạo {N} features ({2N} files):
219
- ✓ specs/main/feature/F-001-user-registration/frd.md (4 NEEDS_CLARIFY)
220
- ✓ specs/main/feature/F-001-user-registration/fdd.md (2 NEEDS_CLARIFY)
221
- ✓ specs/main/feature/F-002-authentication/frd.md (1 NEEDS_CLARIFY)
222
- ✓ specs/main/feature/F-002-authentication/fdd.md (0 NEEDS_CLARIFY)
219
+ .specs/main/feature/F-001-user-registration/frd.md (4 NEEDS_CLARIFY)
220
+ .specs/main/feature/F-001-user-registration/fdd.md (2 NEEDS_CLARIFY)
221
+ .specs/main/feature/F-002-authentication/frd.md (1 NEEDS_CLARIFY)
222
+ .specs/main/feature/F-002-authentication/fdd.md (0 NEEDS_CLARIFY)
223
223
  ...
224
224
 
225
225
  Ghi tất cả? [y] hoặc review từng file trước [r]:
@@ -237,7 +237,7 @@ Ghi tất cả? [y] hoặc review từng file trước [r]:
237
237
 
238
238
  ### Bước 8: Điền Feature Index vào prd.md
239
239
 
240
- Sau khi artifacts đã được ghi, update `specs/main/prd.md` Feature Index:
240
+ Sau khi artifacts đã được ghi, update `.specs/main/prd.md` Feature Index:
241
241
 
242
242
  ```
243
243
  Sẽ điền Feature Index vào prd.md:
@@ -267,8 +267,8 @@ Khi apply → đồng thời append entry vào `## Change History` của prd.md
267
267
 
268
268
  ```
269
269
  ✓ Generated {N} features:
270
- specs/main/feature/F-001-user-registration/ (frd.md + fdd.md)
271
- specs/main/feature/F-002-authentication/ (frd.md + fdd.md)
270
+ .specs/main/feature/F-001-user-registration/ (frd.md + fdd.md)
271
+ .specs/main/feature/F-002-authentication/ (frd.md + fdd.md)
272
272
  ...
273
273
 
274
274
  ✓ prd.md Feature Index: {N} entries đã được điền
@@ -279,7 +279,7 @@ NEEDS_CLARIFY summary — {total} items:
279
279
  ...
280
280
 
281
281
  Brownfield init hoàn tất! Main artifacts:
282
- specs/main/
282
+ .specs/main/
283
283
  ├── prd.md (Component Index: {N} | Feature Index: {N})
284
284
  ├── domain.md (Glossary: {N} terms | Shared Entities: {N})
285
285
  ├── sad.md
@@ -7,7 +7,7 @@ description: Khởi tạo main artifacts (prd.md, domain.md, sad.md) cho brownfi
7
7
 
8
8
  ## Overview
9
9
 
10
- Tạo `specs/main/prd.md`, `specs/main/domain.md`, và `specs/main/sad.md` cho một project đã tồn tại.
10
+ Tạo `.specs/main/prd.md`, `.specs/main/domain.md`, và `.specs/main/sad.md` cho một project đã tồn tại.
11
11
 
12
12
  Skill này chỉ tập trung vào **product và architecture level** — những gì có thể extract từ README, docs, config, và kiến trúc tổng thể. Component Index và Feature Index trong prd.md sẽ **để trống** — chúng sẽ được điền bởi `/spec-brownfield-component` và `/spec-brownfield-feature` sau khi scan code chuyên sâu.
13
13
 
@@ -17,9 +17,9 @@ Mỗi file output được sinh ra từ template tương ứng — đọc templa
17
17
 
18
18
  | Output file | Template |
19
19
  | --- | --- |
20
- | `specs/main/prd.md` | `templates/main/prd-template.md` |
21
- | `specs/main/domain.md` | `templates/main/domain-template.md` |
22
- | `specs/main/sad.md` | `templates/main/sad-template.md` |
20
+ | `.specs/main/prd.md` | `templates/main/prd-template.md` |
21
+ | `.specs/main/domain.md` | `templates/main/domain-template.md` |
22
+ | `.specs/main/sad.md` | `templates/main/sad-template.md` |
23
23
 
24
24
  Giữ nguyên cấu trúc section và frontmatter từ template. Điền nội dung thu thập được từ scan và interview vào đúng vị trí.
25
25
 
@@ -32,7 +32,7 @@ Thông tin không thể detect từ code được đánh dấu nhất quán:
32
32
  ## When to Use
33
33
 
34
34
  - Onboarding một brownfield project vào SDD workflow
35
- - `specs/main/prd.md` chưa có hoặc còn trống
35
+ - `.specs/main/prd.md` chưa có hoặc còn trống
36
36
 
37
37
  ## When NOT to Use
38
38
 
@@ -63,14 +63,14 @@ Load tất cả attachments trước khi scan. Dùng làm context bổ sung tron
63
63
 
64
64
  ### Bước 2: Kiểm tra existing specs
65
65
 
66
- Kiểm tra `specs/main/prd.md`, `specs/main/domain.md`, `specs/main/sad.md`:
66
+ Kiểm tra `.specs/main/prd.md`, `.specs/main/domain.md`, `.specs/main/sad.md`:
67
67
 
68
68
  Nếu một trong ba đã có nội dung thực → cảnh báo:
69
69
 
70
70
  ```
71
71
  ⚠ File đã có nội dung:
72
- - specs/main/prd.md
73
- - specs/main/sad.md
72
+ - .specs/main/prd.md
73
+ - .specs/main/sad.md
74
74
 
75
75
  Skill này sẽ overwrite các file trên. Tiếp tục? [y/n]
76
76
  ```
@@ -253,7 +253,7 @@ Hiển thị draft từng file lần lượt. Với mỗi file:
253
253
 
254
254
  ```
255
255
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
256
- DRAFT: specs/main/{file}
256
+ DRAFT: .specs/main/{file}
257
257
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
258
258
  {nội dung draft}
259
259
 
@@ -270,7 +270,7 @@ Confirm? [y] Bỏ qua [n] Chỉnh sửa [e]:
270
270
 
271
271
  ### Bước 9: Save
272
272
 
273
- Tạo `specs/main/` nếu chưa có. Ghi các files đã được confirm.
273
+ Tạo `.specs/main/` nếu chưa có. Ghi các files đã được confirm.
274
274
 
275
275
  **Change History:** Append entry vào section `## Change History` cuối mỗi file vừa ghi (`prd.md`, `domain.md`, `sad.md`) theo `conventions.md` §5.5:
276
276
 
@@ -281,9 +281,9 @@ Tạo `specs/main/` nếu chưa có. Ghi các files đã được confirm.
281
281
  ```
282
282
 
283
283
  ```
284
- ✓ specs/main/prd.md (Component Index và Feature Index: placeholder — chưa có)
285
- ✓ specs/main/domain.md (Glossary: {n} terms | Shared Entities: trống — sẽ mọc qua cascade)
286
- ✓ specs/main/sad.md
284
+ .specs/main/prd.md (Component Index và Feature Index: placeholder — chưa có)
285
+ .specs/main/domain.md (Glossary: {n} terms | Shared Entities: trống — sẽ mọc qua cascade)
286
+ .specs/main/sad.md
287
287
 
288
288
  NEEDS_CLARIFY summary — {total} items cần làm rõ:
289
289
  prd.md: {n} — [Problem Statement, Business Constraints, ...]
@@ -7,7 +7,7 @@ description: Author MỚI frd.md (Feature Requirements Document) trực tiếp
7
7
 
8
8
  ## Overview
9
9
 
10
- Author `specs/main/feature/{F-XXX}-{feature-slug}/frd.md` trực tiếp qua interview — **spec-first ở feature level**, do **BA** chạy trước khi bất kỳ integration nào bắt đầu.
10
+ Author `.specs/main/feature/{F-XXX}-{feature-slug}/frd.md` trực tiếp qua interview — **spec-first ở feature level**, do **BA** chạy trước khi bất kỳ integration nào bắt đầu.
11
11
 
12
12
  `frd.md` là **what to build** của một feature: Overview, User Flows, Feature AC, User Stories, Verification Rules, Scope, Dependencies. Đây là baseline ổn định, **author một lần** — mọi thay đổi sau đó đi qua `/spec-new` (delta cascade).
13
13
 
@@ -59,7 +59,7 @@ Có nguồn → trích baseline cho từng section frd (overview, flows, stories
59
59
 
60
60
  ### Bước 1: Xác định feature
61
61
 
62
- **Precondition:** đọc `specs/main/prd.md`. Nếu không tồn tại / template rỗng → dừng:
62
+ **Precondition:** đọc `.specs/main/prd.md`. Nếu không tồn tại / template rỗng → dừng:
63
63
  > `prd.md` chưa có nội dung. Hãy chạy `/spec-prd` trước.
64
64
 
65
65
  `/spec-frd` là skill **CREATE-only, đúng một feature mỗi lần chạy**. Xác định feature mục tiêu qua ba gate — phải pass cả ba mới vào interview.
@@ -103,7 +103,7 @@ Chọn feature để author frd:
103
103
 
104
104
  #### 1c. Create-only gate — frd.md CHƯA tồn tại
105
105
 
106
- Kiểm tra `specs/main/feature/{F-XXX}-*/frd.md`.
106
+ Kiểm tra `.specs/main/feature/{F-XXX}-*/frd.md`.
107
107
 
108
108
  - **Chưa tồn tại** → tiếp Bước 2 (author mới).
109
109
  - **Đã tồn tại** → **DỪNG**, redirect `/spec-new`:
@@ -117,10 +117,10 @@ Kiểm tra `specs/main/feature/{F-XXX}-*/frd.md`.
117
117
  ### Bước 2: Load context
118
118
 
119
119
  Load:
120
- - `specs/main/prd.md` — Problem Statement, Target Users (personas), Scope, **row của feature này** trong Feature Index (tên, mô tả, priority), Component Index, **cột ADO** (nếu feature có ticket → lưu lại để spec.md sau này không tạo duplicate).
121
- - `specs/main/domain.md` — Glossary + Shared Entities liên quan.
122
- - `specs/main/sad.md` — bảng Components (góc nhìn kiến trúc, để biết C-XXX nào đã có boundary).
123
- - `specs/main/component/{C-XXX}-*/crd.md` — Public Interface của các component khả năng feature sẽ dùng (nếu đã tồn tại).
120
+ - `.specs/main/prd.md` — Problem Statement, Target Users (personas), Scope, **row của feature này** trong Feature Index (tên, mô tả, priority), Component Index, **cột ADO** (nếu feature có ticket → lưu lại để spec.md sau này không tạo duplicate).
121
+ - `.specs/main/domain.md` — Glossary + Shared Entities liên quan.
122
+ - `.specs/main/sad.md` — bảng Components (góc nhìn kiến trúc, để biết C-XXX nào đã có boundary).
123
+ - `.specs/main/component/{C-XXX}-*/crd.md` — Public Interface của các component khả năng feature sẽ dùng (nếu đã tồn tại).
124
124
 
125
125
  Tóm tắt context + surface assumptions:
126
126
 
@@ -222,7 +222,7 @@ Chỉ ghi file sau khi user confirm. Yêu cầu chỉnh → cập nhật draft
222
222
 
223
223
  ### Bước 7: Save
224
224
 
225
- **7a. Ghi `specs/main/feature/{F-XXX}-{slug}/frd.md`** — tạo thư mục nếu chưa có. Status `draft` (lifecycle riêng của artifact).
225
+ **7a. Ghi `.specs/main/feature/{F-XXX}-{slug}/frd.md`** — tạo thư mục nếu chưa có. Status `draft` (lifecycle riêng của artifact).
226
226
 
227
227
  Slug feature lấy từ tên trong prd Feature Index, kebab-case (ví dụ F-001 "Authentication" → `F-001-authentication`).
228
228
 
@@ -258,7 +258,7 @@ Và append Change History entry vào prd.md (theo `conventions.md` §5.5):
258
258
  **7d. Thông báo kết quả:**
259
259
 
260
260
  ```
261
- ✓ specs/main/feature/{F-XXX}-{slug}/frd.md đã được tạo (status: draft)
261
+ .specs/main/feature/{F-XXX}-{slug}/frd.md đã được tạo (status: draft)
262
262
 
263
263
  {nếu có} Component candidate cần carve (chuyển cho architect / integration):
264
264
  - {tên đề xuất} — {vai trò}
@@ -7,7 +7,7 @@ description: Migrate frd.md hiện có lên cấu trúc template mới nhất
7
7
 
8
8
  ## Overview
9
9
 
10
- Migrate các file `specs/main/feature/{F-XXX}-{slug}/frd.md` hiện có sang **format mới nhất** của [templates/main/feature/frd-template.md](../../templates/main/feature/frd-template.md).
10
+ Migrate các file `.specs/main/feature/{F-XXX}-{slug}/frd.md` hiện có sang **format mới nhất** của [templates/main/feature/frd-template.md](../../templates/main/feature/frd-template.md).
11
11
 
12
12
  Skill này **chỉ làm migration mechanical + propose** — không phải BA interview. Mọi quyết định nội dung mới (Verification Rules content) đều cần user approve trước khi ghi.
13
13
 
@@ -67,7 +67,7 @@ Chạy `git status --porcelain`. Nếu output không rỗng (có file modified /
67
67
  Hãy commit hoặc stash thay đổi hiện tại trước khi chạy `/spec-frd-update`, rồi chạy lại.
68
68
 
69
69
  Files dirty:
70
- M specs/main/feature/F-001-auth/frd.md
70
+ M .specs/main/feature/F-001-auth/frd.md
71
71
  ?? notes.md
72
72
  ```
73
73
 
@@ -80,7 +80,7 @@ Nếu repo không phải git repo → cảnh báo và yêu cầu confirm:
80
80
 
81
81
  ### Bước 1: Discover & classify
82
82
 
83
- Quét `specs/main/feature/*/frd.md`. Với mỗi file:
83
+ Quét `.specs/main/feature/*/frd.md`. Với mỗi file:
84
84
 
85
85
  1. Parse headings và frontmatter.
86
86
  2. Run detection cho V1–V8.
@@ -123,11 +123,11 @@ Với mỗi FRD đã chọn, load các file sau (chỉ những gì cần thiết
123
123
 
124
124
  | File | Bắt buộc | Mục đích |
125
125
  |---|---|---|
126
- | `specs/main/feature/{F-XXX}-{slug}/frd.md` | ✓ | File cần migrate |
126
+ | `.specs/main/feature/{F-XXX}-{slug}/frd.md` | ✓ | File cần migrate |
127
127
  | [templates/main/feature/frd-template.md](../../templates/main/feature/frd-template.md) | ✓ | Target structure — copy text cho V2/V3/V5 |
128
- | `specs/main/feature/{F-XXX}-{slug}/fdd.md` | nếu tồn tại | Cascade target cho V4 (AC→FAC rename) |
129
- | `specs/main/feature/{F-XXX}-{slug}/tsd.md` | nếu tồn tại | Cascade target cho V4 |
130
- | `specs/main/domain.md` (Shared Entities block) | optional | Cho V6 — match field name với entity glossary để pick semantic type consistent |
128
+ | `.specs/main/feature/{F-XXX}-{slug}/fdd.md` | nếu tồn tại | Cascade target cho V4 (AC→FAC rename) |
129
+ | `.specs/main/feature/{F-XXX}-{slug}/tsd.md` | nếu tồn tại | Cascade target cho V4 |
130
+ | `.specs/main/domain.md` (Shared Entities block) | optional | Cho V6 — match field name với entity glossary để pick semantic type consistent |
131
131
 
132
132
  **KHÔNG load:**
133
133
  - `conventions.md` — template đã self-contained, load là thừa
@@ -183,7 +183,7 @@ Với mỗi FRD đã chọn, load các file sau (chỉ những gì cần thiết
183
183
  ```
184
184
 
185
185
  #### 4.3 Scan cascade references
186
- - Grep toàn `specs/` cho từng ID cũ.
186
+ - Grep toàn `.specs/` cho từng ID cũ.
187
187
  - **CRITICAL**: chỉ remap những match THUỘC Feature AC (Bước 4.1 list). KHÔNG đụng Story AC trùng namespace `AC-F{NNN}-{seq}` — đây là string overlap nhưng khác counter.
188
188
  - Tạo bảng impact:
189
189
  ```
@@ -358,7 +358,7 @@ Cho mỗi FRD đã migrate:
358
358
 
359
359
  Nếu artifact chưa có section `## Change History` (vì template cũ) → tạo section mới ở cuối file rồi append entry. Đây cũng là một migration vector ngầm — đảm bảo mọi main artifact sau migration đều có Change History section.
360
360
 
361
- Rollback (nếu user phát hiện sai sau khi skill xong): `git checkout -- specs/main/feature/{F-XXX}-{slug}/` để revert toàn bộ feature dir, hoặc `git restore -p` để revert per-hunk.
361
+ Rollback (nếu user phát hiện sai sau khi skill xong): `git checkout -- .specs/main/feature/{F-XXX}-{slug}/` để revert toàn bộ feature dir, hoặc `git restore -p` để revert per-hunk.
362
362
 
363
363
  Append vào [changelogs.md](../../changelogs.md) `## [Unreleased]`:
364
364
 
@@ -7,7 +7,7 @@ description: Tạo spec.md cho một integration mới thông qua interview có
7
7
 
8
8
  ## Overview
9
9
 
10
- Tạo `spec.md` cho một integration mới trong `specs/integrations/{NNN}-{slug}/`.
10
+ Tạo `spec.md` cho một integration mới trong `.specs/integrations/{NNN}-{slug}/`.
11
11
 
12
12
  `spec.md` là functional spec — định nghĩa **what to build**: vấn đề, requirements, acceptance criteria, out of scope. Không chứa technical design.
13
13
 
@@ -33,7 +33,7 @@ Tạo `spec.md` cho một integration mới trong `specs/integrations/{NNN}-{slu
33
33
 
34
34
  **Nếu không có ARGUMENT:**
35
35
 
36
- Đọc `specs/main/prd.md`. Nếu file không tồn tại hoặc là template rỗng → dừng:
36
+ Đọc `.specs/main/prd.md`. Nếu file không tồn tại hoặc là template rỗng → dừng:
37
37
  > `prd.md` chưa có nội dung. Hãy chạy `/spec-prd` trước.
38
38
 
39
39
  Đọc toàn bộ bảng Features. Hiển thị **tất cả** features kèm trạng thái — không lọc — để thấy rõ feature nào có FRD cần update:
@@ -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/feature/{F-XXX}-*/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>`.
@@ -88,10 +88,10 @@ Lưu lại lựa chọn section.
88
88
 
89
89
  Từ raw requirement, agent xác định features và components liên quan, rồi load các file sau:
90
90
 
91
- - `specs/main/prd.md` — đọc Problem Statement, Target Users, Scope, Feature Index, Component Index; **đặc biệt ghi nhận cột `ADO` trong bảng Features** — nếu feature đã có ticket ID thì lưu lại `{feature_id → ado_ticket_id, ado_ticket_title, ado_ticket_url}`
92
- - `specs/main/domain.md` — đọc Glossary và Shared Entities
93
- - `specs/main/feature/{F-XXX}-{slug}/frd.md` — cho mỗi feature liên quan (nếu file đã tồn tại)
94
- - `specs/main/component/{C-XXX}-{slug}/crd.md` — cho mỗi component bị touched (nếu file đã tồn tại)
91
+ - `.specs/main/prd.md` — đọc Problem Statement, Target Users, Scope, Feature Index, Component Index; **đặc biệt ghi nhận cột `ADO` trong bảng Features** — nếu feature đã có ticket ID thì lưu lại `{feature_id → ado_ticket_id, ado_ticket_title, ado_ticket_url}`
92
+ - `.specs/main/domain.md` — đọc Glossary và Shared Entities
93
+ - `.specs/main/feature/{F-XXX}-{slug}/frd.md` — cho mỗi feature liên quan (nếu file đã tồn tại)
94
+ - `.specs/main/component/{C-XXX}-{slug}/crd.md` — cho mỗi component bị touched (nếu file đã tồn tại)
95
95
 
96
96
  Tóm tắt context và surface assumptions:
97
97
 
@@ -150,11 +150,11 @@ Từ title của integration, sinh slug:
150
150
  - Nếu từ prd.md: dùng `{feature-id}-{feature-slug}`, ví dụ: `f001-authentication`
151
151
 
152
152
  Xác định số thứ tự (`NNN`):
153
- - Liệt kê các thư mục hiện có trong `specs/integrations/` theo pattern `{NNN}-*`
153
+ - Liệt kê các thư mục hiện có trong `.specs/integrations/` theo pattern `{NNN}-*`
154
154
  - Lấy số lớn nhất hiện có và cộng thêm 1, format 3 chữ số (ví dụ: `001`, `002`, `012`)
155
155
  - Nếu chưa có thư mục nào → bắt đầu từ `001`
156
156
 
157
- Output path: `specs/integrations/{NNN}-{slug}/spec.md`
157
+ Output path: `.specs/integrations/{NNN}-{slug}/spec.md`
158
158
 
159
159
  ---
160
160
 
@@ -339,7 +339,7 @@ Chỉ tiến hành Bước 7 sau khi user confirm. Nếu user yêu cầu chỉnh
339
339
 
340
340
  ### Bước 7: Save + Auto-cascade
341
341
 
342
- Tạo thư mục `specs/integrations/{NNN}-{slug}/` nếu chưa có.
342
+ Tạo thư mục `.specs/integrations/{NNN}-{slug}/` nếu chưa có.
343
343
 
344
344
  **[7.1] Ghi spec.md** với status `approved` (không phải `draft` — human đã confirm ở Bước 6 chính là approval). Frontmatter `features` và `components` phải được điền theo những gì đã nhận diện ở Bước 2.
345
345
 
@@ -391,7 +391,7 @@ Cho mỗi artifact:
391
391
  **[7.4] Thông báo kết quả:**
392
392
 
393
393
  ```
394
- ✓ specs/integrations/{NNN}-{slug}/spec.md đã được tạo (status: approved)
394
+ .specs/integrations/{NNN}-{slug}/spec.md đã được tạo (status: approved)
395
395
 
396
396
  Auto-cascade applied:
397
397
  ✓ prd.md — {summary}
@@ -7,15 +7,15 @@ description: Điền hoặc cập nhật prd.md — Product Requirements Documen
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, features, components, 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
- 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).
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
13
 
14
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`.
15
15
 
16
16
  ## When to Use
17
17
 
18
- - `specs/main/prd.md` chưa có nội dung hoặc vẫn còn là template
18
+ - `.specs/main/prd.md` chưa có nội dung hoặc vẫn còn là template
19
19
  - Cần bổ sung hoặc cập nhật một phần của PRD hiện tại
20
20
  - Requirements thay đổi và PRD cần được đồng bộ lại
21
21
 
@@ -118,9 +118,9 @@ Nếu không có nguồn → bỏ qua, interview từ đầu như bình thườn
118
118
 
119
119
  ### Bước 1: Kiểm tra preconditions
120
120
 
121
- Đọc `specs/main/prd.md`:
121
+ Đọc `.specs/main/prd.md`:
122
122
 
123
- - **File không tồn tại** → tạo thư mục `specs/main/` (nếu chưa có) rồi tiến hành Bước 2 (full interview).
123
+ - **File không tồn tại** → tạo thư mục `.specs/main/` (nếu chưa có) rồi tiến hành Bước 2 (full interview).
124
124
 
125
125
  - **File là template rỗng** → tiến hành Bước 2 (full interview).
126
126
 
@@ -240,11 +240,11 @@ Chỉ ghi file sau khi user confirm. Nếu user yêu cầu chỉnh sửa → c
240
240
 
241
241
  ### Bước 5: Save
242
242
 
243
- **5a. Ghi `specs/main/prd.md`** — nội dung đã được confirm, thay thế toàn bộ nội dung cũ.
243
+ **5a. Ghi `.specs/main/prd.md`** — nội dung đã được confirm, thay thế toàn bộ nội dung cũ.
244
244
 
245
- **5b. Scaffold `specs/main/domain.md`** *(chỉ khi file này chưa tồn tại)*:
245
+ **5b. Scaffold `.specs/main/domain.md`** *(chỉ khi file này chưa tồn tại)*:
246
246
 
247
- - Copy `.claude/templates/main/domain-template.md` thành `specs/main/domain.md`.
247
+ - Copy `.claude/templates/main/domain-template.md` thành `.specs/main/domain.md`.
248
248
  - Section **Glossary** giữ format bảng rỗng — terms sẽ được thêm dần qua cascade từ integrations.
249
249
  - Section **Shared Entities** giữ block placeholder — entities sẽ mọc dần qua cascade khi integration giới thiệu shared entity.
250
250
 
@@ -264,8 +264,8 @@ Nếu `domain.md` đã tồn tại với nội dung thực → không đụng t
264
264
 
265
265
  Thông báo kết quả:
266
266
  ```
267
- ✓ specs/main/prd.md đã được cập nhật (status: draft)
268
- {nếu vừa scaffold} ✓ specs/main/domain.md đã được scaffold (skeleton — sẽ mọc dần qua cascade)
267
+ .specs/main/prd.md đã được cập nhật (status: draft)
268
+ {nếu vừa scaffold} ✓ .specs/main/domain.md đã được scaffold (skeleton — sẽ mọc dần qua cascade)
269
269
 
270
270
  Bước tiếp theo:
271
271
  - /spec-sad → thiết kế kiến trúc kỹ thuật
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: spec-remove
3
- description: Remove một feature toàn diện — tạo removal integration với Code Inventory, Reverse Dependency Audit, reverse-TDD test strategy, và Finalize Plan (move feature artifacts sang specs/removed/ + đóng ADO tickets) như task cuối trong todo.md. Nhận F-XXX làm argument.
3
+ description: Remove một feature toàn diện — tạo removal integration với Code Inventory, Reverse Dependency Audit, reverse-TDD test strategy, và Finalize Plan (move feature artifacts sang .specs/removed/ + đóng ADO tickets) như task cuối trong todo.md. Nhận F-XXX làm argument.
4
4
  ---
5
5
 
6
6
  # spec-remove
@@ -12,7 +12,7 @@ Tạo removal integration cho 1 feature đã tồn tại. Output là `spec.md` v
12
12
  - **Code Inventory** — code, route, DB, feature flag, config liên quan
13
13
  - **Reverse Dependency Audit** — ai còn reference, an toàn xoá hay không
14
14
  - **Test Strategy** — reverse-TDD (regression test "thing is gone")
15
- - **Finalize Plan** — move feature artifacts sang `specs/removed/` + đóng ADO tickets, được DEV chạy như task cuối trong `todo.md`
15
+ - **Finalize Plan** — move feature artifacts sang `.specs/removed/` + đóng ADO tickets, được DEV chạy như task cuối trong `todo.md`
16
16
  - **Changes blocks** — `[REMOVE]` markers cho mọi artifact bị touched
17
17
 
18
18
  Skill **không** sinh `tech.md` / `plan.md` / `todo.md`. Sau khi `spec.md` được approve, chạy `/spec-tech` → `/plan` → `/build` như flow thường. `spec.md` đủ giàu để 3 skill đó hoạt động không cần modification.
@@ -33,8 +33,8 @@ Skill **không** sinh `tech.md` / `plan.md` / `todo.md`. Sau khi `spec.md` đư
33
33
 
34
34
  ## Prerequisites
35
35
 
36
- - `specs/main/feature/{F-XXX}-*/frd.md` tồn tại
37
- - `specs/main/prd.md` có row của feature trong Feature Index
36
+ - `.specs/main/feature/{F-XXX}-*/frd.md` tồn tại
37
+ - `.specs/main/prd.md` có row của feature trong Feature Index
38
38
  - (Optional) `.claude/ado.yaml` cấu hình nếu muốn đóng ADO tickets ở finalize step
39
39
 
40
40
  ---
@@ -49,7 +49,7 @@ Argument BẮT BUỘC là Feature ID dạng `F-XXX` (3 chữ số). Nếu argume
49
49
  spec-remove cần Feature ID. Ví dụ: /spec-remove F-001
50
50
  ```
51
51
 
52
- Tìm thư mục `specs/main/feature/F-XXX-*/`:
52
+ Tìm thư mục `.specs/main/feature/F-XXX-*/`:
53
53
  - 0 matches → báo lỗi feature không tồn tại, dừng.
54
54
  - ≥ 2 matches → báo lỗi data inconsistency (nhiều thư mục cùng prefix), dừng.
55
55
  - 1 match → tiếp.
@@ -71,20 +71,20 @@ F-XXX đã có status `removed`. Bạn muốn:
71
71
  Đọc các file sau:
72
72
 
73
73
  **Bắt buộc:**
74
- - `specs/main/feature/{F-XXX}-*/frd.md` — full content
75
- - `specs/main/feature/{F-XXX}-*/fdd.md` — nếu tồn tại
76
- - `specs/main/prd.md` — Feature Index (capture ADO ticket ID cho F-XXX), Component Index, NFR
77
- - `specs/main/domain.md` — Glossary + Shared Entities (xác định entity nào owned bởi component thuộc F-XXX)
74
+ - `.specs/main/feature/{F-XXX}-*/frd.md` — full content
75
+ - `.specs/main/feature/{F-XXX}-*/fdd.md` — nếu tồn tại
76
+ - `.specs/main/prd.md` — Feature Index (capture ADO ticket ID cho F-XXX), Component Index, NFR
77
+ - `.specs/main/domain.md` — Glossary + Shared Entities (xác định entity nào owned bởi component thuộc F-XXX)
78
78
 
79
79
  **Components used by F-XXX:**
80
80
 
81
81
  Trích từ `frd.md` section `Components Used` + `fdd.md` section `Components Touched`. Với mỗi C-YYY:
82
- - `specs/main/component/{C-YYY}-*/crd.md`
83
- - `specs/main/component/{C-YYY}-*/cdd.md` — nếu tồn tại
82
+ - `.specs/main/component/{C-YYY}-*/crd.md`
83
+ - `.specs/main/component/{C-YYY}-*/cdd.md` — nếu tồn tại
84
84
 
85
85
  **Reverse dependency scan:**
86
86
 
87
- Với mỗi C-YYY mà F-XXX sử dụng, grep `specs/main/feature/F-*/frd.md` (trừ F-XXX) tìm references tới C-YYY. Mọi feature khác có reference → load `frd.md` của feature đó để hiểu nó dùng C-YYY làm gì.
87
+ Với mỗi C-YYY mà F-XXX sử dụng, grep `.specs/main/feature/F-*/frd.md` (trừ F-XXX) tìm references tới C-YYY. Mọi feature khác có reference → load `frd.md` của feature đó để hiểu nó dùng C-YYY làm gì.
88
88
 
89
89
  Output context summary cho user:
90
90
 
@@ -243,9 +243,9 @@ Sau khi migration deploy xong, chạy lại /spec-remove F-XXX.
243
243
 
244
244
  Xác định slug và NNN giống `/spec-new`:
245
245
  - Slug: `remove-{f-xxx-slug}` (ví dụ `remove-f001-authentication`)
246
- - NNN: max của thư mục hiện có trong `specs/integrations/` + 1, format 3 chữ số.
246
+ - NNN: max của thư mục hiện có trong `.specs/integrations/` + 1, format 3 chữ số.
247
247
 
248
- Output path: `specs/integrations/{NNN}-remove-{f-xxx-slug}/spec.md`
248
+ Output path: `.specs/integrations/{NNN}-remove-{f-xxx-slug}/spec.md`
249
249
 
250
250
  Cấu trúc spec.md:
251
251
 
@@ -319,20 +319,20 @@ Regression tests **được giữ lại** trong codebase như guardrail — futu
319
319
 
320
320
  1. **Move feature artifacts:**
321
321
  ```bash
322
- mkdir -p specs/removed
323
- mv specs/main/feature/{F-XXX}-{slug}/ specs/removed/{F-XXX}-{slug}/
322
+ mkdir -p .specs/removed
323
+ mv .specs/main/feature/{F-XXX}-{slug}/ .specs/removed/{F-XXX}-{slug}/
324
324
  ```
325
325
 
326
- 2. **Append Change History** vào `specs/removed/{F-XXX}-{slug}/frd.md` (nếu file còn tồn tại sau move):
326
+ 2. **Append Change History** vào `.specs/removed/{F-XXX}-{slug}/frd.md` (nếu file còn tồn tại sau move):
327
327
  ```markdown
328
328
  ### {YYYY-MM-DD} — [{NNN}-remove-{slug}](../../integrations/{NNN}-remove-{slug}/spec.md) — removed
329
- - **Feature decommissioned**: moved from specs/main/feature/ to specs/removed/
329
+ - **Feature decommissioned**: moved from .specs/main/feature/ to .specs/removed/
330
330
  - Reason: {lý do từ Problem Statement}
331
331
  ```
332
332
 
333
333
  3. **Update prd.md Feature Index:**
334
334
  - Row F-XXX: status → `Removed`
335
- - Add note column hoặc inline: `(see specs/removed/{F-XXX}-{slug}/)`
335
+ - Add note column hoặc inline: `(see .specs/removed/{F-XXX}-{slug}/)`
336
336
 
337
337
  4. **Close ADO tickets** (nếu prd.md có ADO ticket ID cho F-XXX):
338
338
  - Feature ticket → state `Removed`
@@ -342,8 +342,8 @@ Regression tests **được giữ lại** trong codebase như guardrail — futu
342
342
  - Nếu ADO state name khác (vd "Closed") → xem `.claude/ado.yaml` hoặc fetch từ `wit_get_work_item_type`
343
343
 
344
344
  5. **Verify finalize:**
345
- - `ls specs/main/feature/ | grep {F-XXX}` → không còn match
346
- - `ls specs/removed/{F-XXX}-{slug}/` → tồn tại
345
+ - `ls .specs/main/feature/ | grep {F-XXX}` → không còn match
346
+ - `ls .specs/removed/{F-XXX}-{slug}/` → tồn tại
347
347
  - prd.md grep `F-XXX` → status `Removed`
348
348
  - ADO ticket fetch → state khớp
349
349
 
@@ -356,7 +356,7 @@ Regression tests **được giữ lại** trong codebase như guardrail — futu
356
356
 
357
357
  #### Features (Feature Index)
358
358
  - Row [MODIFY status]: `F-XXX` {current status} → `Removed`
359
- - {nếu có note column} Row [MODIFY note]: `F-XXX` add note "see specs/removed/"
359
+ - {nếu có note column} Row [MODIFY note]: `F-XXX` add note "see .specs/removed/"
360
360
 
361
361
  #### Components (Component Index) — chỉ component exclusive với F-XXX
362
362
  - Row [MODIFY status]: `C-YYY` {current status} → `Removed`
@@ -367,7 +367,7 @@ Regression tests **được giữ lại** trong codebase như guardrail — futu
367
367
  **Format reference:** [frd-template.md](../../templates/main/feature/frd-template.md)
368
368
 
369
369
  <!--
370
- Đánh dấu mọi item bằng [REMOVE]. File sẽ bị move sang specs/removed/ ở Finalize step
370
+ Đánh dấu mọi item bằng [REMOVE]. File sẽ bị move sang .specs/removed/ ở Finalize step
371
371
  nhưng cascade content vẫn ghi vào file gốc trước (để Change History entry được apply).
372
372
  -->
373
373
 
@@ -462,7 +462,7 @@ Draft trên đã đúng chưa?
462
462
 
463
463
  Sau khi confirm, agent sẽ auto-apply Changes blocks lên main artifacts.
464
464
  File feature artifacts (frd/fdd) KHÔNG bị move ngay — chỉ apply [REMOVE] markers
465
- + Change History entry. Move sang specs/removed/ là task cuối trong todo.md,
465
+ + Change History entry. Move sang .specs/removed/ là task cuối trong todo.md,
466
466
  do /build chạy sau khi mọi deletion task khác xong.
467
467
  ```
468
468
 
@@ -500,7 +500,7 @@ Giống `/spec-new` Bước 7, nhưng với removal-specific extensions.
500
500
  **[8.5] Thông báo kết quả:**
501
501
 
502
502
  ```
503
- ✓ specs/integrations/{NNN}-remove-{f-xxx-slug}/spec.md đã được tạo (status: approved, removal: true)
503
+ .specs/integrations/{NNN}-remove-{f-xxx-slug}/spec.md đã được tạo (status: approved, removal: true)
504
504
 
505
505
  Auto-cascade applied:
506
506
  ✓ prd.md — F-XXX status → Removed; {N} components status → Removed
@@ -509,7 +509,7 @@ Auto-cascade applied:
509
509
  ✓ feature/F-XXX-*/frd.md — all items [REMOVE], status → removed
510
510
  ✓ feature/F-XXX-*/fdd.md — all items [REMOVE], status → removed
511
511
 
512
- ⚠ File feature/F-XXX-*/ vẫn ở specs/main/feature/. Sẽ được move sang specs/removed/ ở task cuối todo.md.
512
+ ⚠ File feature/F-XXX-*/ vẫn ở .specs/main/feature/. Sẽ được move sang .specs/removed/ ở task cuối todo.md.
513
513
  ⚠ ADO tickets giữ nguyên state. Sẽ được close ở task cuối todo.md (cần .claude/ado.yaml).
514
514
 
515
515
  Bước tiếp theo:
@@ -583,6 +583,6 @@ Sau khi user confirm (Bước 8):
583
583
  - [ ] Auto-cascade chạy đúng thứ tự prd → domain → sad → crd → cdd → frd → fdd
584
584
  - [ ] Mọi artifact bị touched có Change History entry
585
585
  - [ ] prd.md row F-XXX status = Removed (đổi ngay sau approve)
586
- - [ ] File feature/F-XXX-*/ VẪN ở specs/main/feature/ (chưa move — chỉ move ở Finalize task)
586
+ - [ ] File feature/F-XXX-*/ VẪN ở .specs/main/feature/ (chưa move — chỉ move ở Finalize task)
587
587
  - [ ] ADO tickets KHÔNG bị transition (chưa close — chỉ close ở Finalize task)
588
588
  - [ ] Notification cuối ghi rõ 2 ⚠ về việc folder + ADO chưa được động vào
@@ -7,7 +7,7 @@ description: Điền hoặc cập nhật sad.md — System Architecture Document
7
7
 
8
8
  ## Overview
9
9
 
10
- Tạo nội dung cho `specs/main/sad.md` thông qua interview có cấu trúc. SAD là bản đồ kỹ thuật của hệ thống — nó định nghĩa các quyết định kiến trúc, tech stack, và đặc biệt là **Architectural Guardrails**: các nguyên tắc bất biến mà mọi agent phải tuân theo khi sinh `tech.md`.
10
+ Tạo nội dung cho `.specs/main/sad.md` thông qua interview có cấu trúc. SAD là bản đồ kỹ thuật của hệ thống — nó định nghĩa các quyết định kiến trúc, tech stack, và đặc biệt là **Architectural Guardrails**: các nguyên tắc bất biến mà mọi agent phải tuân theo khi sinh `tech.md`.
11
11
 
12
12
  SAD không chứa: feature-level design, business rules, entity details — những thứ đó thuộc về `domain.md` và `fdd.md`.
13
13
 
@@ -30,21 +30,21 @@ SAD không chứa: feature-level design, business rules, entity details — nh
30
30
 
31
31
  ### Bước 1: Kiểm tra preconditions
32
32
 
33
- **Đọc `specs/main/prd.md`:**
33
+ **Đọc `.specs/main/prd.md`:**
34
34
 
35
35
  - **Chưa tồn tại hoặc là template** → dừng ngay:
36
36
  > `prd.md` chưa có nội dung. Hãy chạy `/spec-prd` trước.
37
37
 
38
38
  - **Đã có nội dung** → đọc để lấy: NFRs (performance, security, availability targets), business constraints, scope.
39
39
 
40
- **Đọc `specs/main/domain.md`:**
40
+ **Đọc `.specs/main/domain.md`:**
41
41
 
42
42
  - **Chưa tồn tại** → dừng ngay:
43
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
45
  - **Đã tồn tại** → đọc để hiểu: glossary và shared entities (nếu có). 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
- **Đọc `specs/main/sad.md`:**
47
+ **Đọc `.specs/main/sad.md`:**
48
48
 
49
49
  - **Chưa tồn tại** → tiến hành Bước 2 (full interview).
50
50
 
@@ -167,7 +167,7 @@ Chỉ ghi file sau khi user confirm. Nếu user yêu cầu chỉnh sửa → c
167
167
 
168
168
  ### Bước 5: Save
169
169
 
170
- Ghi nội dung đã được confirm vào `specs/main/sad.md`.
170
+ Ghi nội dung đã được confirm vào `.specs/main/sad.md`.
171
171
 
172
172
  **Change History:** Append entry vào section `## Change History` cuối `sad.md` (theo `conventions.md` §5.5):
173
173
 
@@ -181,7 +181,7 @@ Nếu chạy lần thứ N (sad.md đã có) → operation = `update`, body li
181
181
 
182
182
  Thông báo kết quả:
183
183
  ```
184
- ✓ specs/main/sad.md đã được cập nhật (status: draft)
184
+ .specs/main/sad.md đã được cập nhật (status: draft)
185
185
 
186
186
  Bước tiếp theo:
187
187
  - /spec-new {feature-name} → định nghĩa requirements của từng feature