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: 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 `specs/integrations/{slug}/`.
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 `specs/integrations/*/spec.md`, tìm integration khớp với argument
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 `specs/integrations/`. Liệt kê **tất cả** integrations có `spec.md`, đánh dấu những cái đã có `tech.md`:
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 `specs/integrations/{slug}/spec.md`.
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
- - `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)
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** `specs/main/component/{C-XXX}-{component-slug}/cdd.md`
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** `specs/main/component/{C-XXX}-{component-slug}/cdd.md`
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** `specs/main/feature/{F-XXX}-{feature-slug}/fdd.md`
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** `specs/main/feature/{F-XXX}-{feature-slug}/fdd.md`
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 `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`.
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 `specs/integrations/{slug}/`.
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
- - `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.
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 `specs/integrations/*/spec.md`, tìm integration khớp với argument
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 `specs/integrations/`. Liệt kê **tất cả** integrations có `spec.md`, đánh dấu những cái đã có `test.md`:
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 `specs/integrations/{slug}/spec.md`.
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 `specs/integrations/{slug}/spec.md`
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
- - `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)
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
- > ⛔ `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.
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 `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`.
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 `specs/main/feature/{F-XXX}-{slug}/tsd.md`
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}
@@ -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 `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.
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 `specs/main/feature/*/frd.md`, tìm feature khớp
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 `specs/main/feature/`.
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 `specs/main/feature/`. Liệt kê **tất cả** features có `frd.md`, đánh dấu trạng thái tsd:
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 `specs/main/feature/{F-XXX}-{slug}/frd.md` không tồn tại → dừng:
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 `specs/main/feature/{F-XXX}-{slug}/tsd.md` đã tồn tại:
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
- - `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)
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 `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 đủ).
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
 
@@ -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)* | `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)* |
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 `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.
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 `specs/main/sad.md`. Yêu cầu `prd.md` và `domain.md` đã tồn tại (cả hai do `/spec-prd` scaffold).
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 `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).
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) | `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` |
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` | `specs/integrations/` | `specs/archive/` |
262
+ | `/archive` | `.specs/integrations/` | `.specs/archive/` |
263
263
 
264
264
  ### `/spec-new [requirement]`
265
265
 
266
- Tạo `specs/integrations/{slug}/spec.md` cho một integration mới. Chạy bởi BA.
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 `specs/integrations/{slug}/tech.md` cho một integration. Chạy bởi DEV sau khi `spec.md` đã được approve.
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 `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ị.
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 `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.
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 `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ị.
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 `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 đè.
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ừ `specs/integrations/` sang `specs/archive/` để dọn dẹp thư mục làm việc chính.
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 `specs/archive/` nếu chưa tồn tại.
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 `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.
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 `specs/archive/` → bỏ qua và cảnh báo để tránh ghi đè.
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 `specs/integrations/`.
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)* | `specs/integrations/{NNN}-{slug}/review-findings.md` *(qua /spec-new)* |
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 `specs/integrations/{NNN}-{slug}/` để traceability.
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ả `specs/integrations/` kèm title và status từ frontmatter `spec.md`.
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 `specs/integrations/` kèm title và status.
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 `specs/main/component/{C-XXX}-{component-name}/crd.md`.
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 `specs/main/component/{C-XXX}-...`.
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 `specs/main/component/{C-XXX}-{component-name}/`.
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
  | --- | --- | --- | --- |