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 CHANGED
@@ -29,17 +29,17 @@ Chạy một lần để bootstrap main artifacts, sau đó vào Integration Pip
29
29
  ```
30
30
 
31
31
  #### `/spec-prd`
32
- Tạo hoặc cập nhật `specs/main/prd.md` thông qua interview có cấu trúc. Đồng thời scaffold `specs/main/domain.md` skeleton. Nhận tùy chọn một nguồn baseline (path/@file/paste proposal/BRD) để pre-fill interview.
32
+ Tạo hoặc cập nhật `.specs/main/prd.md` thông qua interview có cấu trúc. Đồng thời scaffold `.specs/main/domain.md` skeleton. Nhận tùy chọn một nguồn baseline (path/@file/paste proposal/BRD) để pre-fill interview.
33
33
 
34
34
  Sections: Problem Statement · Target Users · Scope · Features · Components · Non-Functional Requirements · Business Constraints
35
35
 
36
36
  #### `/spec-sad`
37
- 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.
37
+ 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.
38
38
 
39
39
  Sections: Architectural Style · System Overview · Tech Stack · Cross-Cutting Concerns · Inter-Service Communication · Infrastructure Overview · Architectural Guardrails
40
40
 
41
41
  #### `/spec-frd [F-XXX]` *(tùy chọn)*
42
- BA author `specs/main/feature/{F-XXX}-*/frd.md` trực tiếp qua interview, **trước** khi DEV bắt đầu integration — spec-first ở feature level. Cặp greenfield đối xứng với `/spec-brownfield-feature`. Nhận F-XXX (hoặc chọn từ Feature Index) + tùy chọn nguồn baseline (path/@file/paste).
42
+ BA author `.specs/main/feature/{F-XXX}-*/frd.md` trực tiếp qua interview, **trước** khi DEV bắt đầu integration — spec-first ở feature level. Cặp greenfield đối xứng với `/spec-brownfield-feature`. Nhận F-XXX (hoặc chọn từ Feature Index) + tùy chọn nguồn baseline (path/@file/paste).
43
43
 
44
44
  **Hai gate input (làm chặt):** (1) **Single-feature** — nguồn liên quan đúng 1 feature; xác định >1 → dừng, mô tả rõ lý do tách, redirect `/spec-prd`. (2) **Create-only** — frd.md đã tồn tại → dừng, redirect `/spec-new` (thay đổi feature đã spec đi qua integration để delta cascade + tech/test). Feature mới đơn lẻ chưa có trong Index → skill offer **register một row vào prd Features** rồi author.
45
45
 
@@ -114,19 +114,19 @@ Mỗi requirement mới đều đi qua pipeline này.
114
114
  ```
115
115
 
116
116
  #### `/spec-new [requirement]`
117
- Tạo `specs/integrations/{slug}/spec.md` cho một integration mới.
117
+ Tạo `.specs/integrations/{slug}/spec.md` cho một integration mới.
118
118
 
119
119
  - Có argument → dùng trực tiếp làm raw requirement
120
120
  - Không có argument → hiển thị danh sách features TODO từ `prd.md` để chọn
121
121
 
122
122
  #### `/spec-tech [number]`
123
- Tạo `specs/integrations/{slug}/tech.md` sau khi `spec.md` được approve. Chạy bởi **DEV**.
123
+ Tạo `.specs/integrations/{slug}/tech.md` sau khi `spec.md` được approve. Chạy bởi **DEV**.
124
124
 
125
125
  - Có argument → chọn integration theo số thứ tự luôn
126
126
  - Không có argument → hiển thị danh sách tất cả integrations
127
127
 
128
128
  #### `/spec-test [number]`
129
- Tạo `specs/integrations/{slug}/test.md` sau khi `spec.md` được approve. Chạy bởi **QC**, **song song / độc lập** với `/spec-tech` — cả hai chỉ phụ thuộc `spec.md`. Mechanical derive Test Scenarios + Test Cases từ frd.md (Flow → TS, US/AC → Functional TC, VR → positive + negative, FAC → Feature AC TC), priority deterministic. Cascade lên `feature/{F-XXX}/tsd.md` qua Changes blocks. Gate: integration phải có `features:` non-empty (component-thuần không áp dụng).
129
+ Tạo `.specs/integrations/{slug}/test.md` sau khi `spec.md` được approve. Chạy bởi **QC**, **song song / độc lập** với `/spec-tech` — cả hai chỉ phụ thuộc `spec.md`. Mechanical derive Test Scenarios + Test Cases từ frd.md (Flow → TS, US/AC → Functional TC, VR → positive + negative, FAC → Feature AC TC), priority deterministic. Cascade lên `feature/{F-XXX}/tsd.md` qua Changes blocks. Gate: integration phải có `features:` non-empty (component-thuần không áp dụng).
130
130
 
131
131
  #### `/plan`
132
132
  Tạo `plan.md` và `todo.md` từ `spec.md` + `tech.md`.
@@ -143,7 +143,7 @@ Review implementation sau `/build` theo năm trục: correctness, readability, a
143
143
  #### `/review-everything`
144
144
  Review toàn bộ codebase ở **project level** đối chiếu với `prd.md` / `domain.md` / `sad.md`. Spawn 5 subagent song song theo năm axis của `code-review-and-quality`.
145
145
 
146
- Sau khi có findings, hỏi user severity tier muốn xử lý (Critical / Critical+Required / +Optional / All / Bỏ qua). Nếu chọn fix → gom selected findings thành raw requirement và auto-invoke `/spec-new` để tạo integration. Findings full snapshot được lưu vào `specs/integrations/{NNN}-{slug}/review-findings.md`.
146
+ Sau khi có findings, hỏi user severity tier muốn xử lý (Critical / Critical+Required / +Optional / All / Bỏ qua). Nếu chọn fix → gom selected findings thành raw requirement và auto-invoke `/spec-new` để tạo integration. Findings full snapshot được lưu vào `.specs/integrations/{NNN}-{slug}/review-findings.md`.
147
147
 
148
148
  ---
149
149
 
@@ -162,20 +162,20 @@ Pre-flight yêu cầu git working tree clean — rollback dùng `git checkout --
162
162
 
163
163
  | Command | Output |
164
164
  |---------|--------|
165
- | `/spec-prd` | `specs/main/prd.md`, `specs/main/domain.md` (skeleton) |
166
- | `/spec-sad` | `specs/main/sad.md` |
167
- | `/spec-frd` | `specs/main/feature/{F-XXX}-*/frd.md` *(+ register feature row vào `prd.md` nếu feature mới)* |
168
- | `/spec-brownfield-init` | `specs/main/prd.md`, `specs/main/domain.md`, `specs/main/sad.md` |
169
- | `/spec-brownfield-component` | `specs/main/component/{C-XXX}-*/crd.md + cdd.md` |
170
- | `/spec-brownfield-feature` | `specs/main/feature/{F-XXX}-*/frd.md + fdd.md` |
171
- | `/spec-tsd` | `specs/main/feature/{F-XXX}-*/tsd.md` |
165
+ | `/spec-prd` | `.specs/main/prd.md`, `.specs/main/domain.md` (skeleton) |
166
+ | `/spec-sad` | `.specs/main/sad.md` |
167
+ | `/spec-frd` | `.specs/main/feature/{F-XXX}-*/frd.md` *(+ register feature row vào `prd.md` nếu feature mới)* |
168
+ | `/spec-brownfield-init` | `.specs/main/prd.md`, `.specs/main/domain.md`, `.specs/main/sad.md` |
169
+ | `/spec-brownfield-component` | `.specs/main/component/{C-XXX}-*/crd.md + cdd.md` |
170
+ | `/spec-brownfield-feature` | `.specs/main/feature/{F-XXX}-*/frd.md + fdd.md` |
171
+ | `/spec-tsd` | `.specs/main/feature/{F-XXX}-*/tsd.md` |
172
172
  | `/spec-frd-update` | *(modify in-place `feature/*/frd.md` + cascade refs)* |
173
- | `/spec-new` | `specs/integrations/{slug}/spec.md` |
174
- | `/spec-tech` | `specs/integrations/{slug}/tech.md` |
175
- | `/spec-test` | `specs/integrations/{slug}/test.md`, cascade: `feature/{F-XXX}/tsd.md` |
176
- | `/plan` | `specs/integrations/{slug}/plan.md`, `todo.md` |
173
+ | `/spec-new` | `.specs/integrations/{slug}/spec.md` |
174
+ | `/spec-tech` | `.specs/integrations/{slug}/tech.md` |
175
+ | `/spec-test` | `.specs/integrations/{slug}/test.md`, cascade: `feature/{F-XXX}/tsd.md` |
176
+ | `/plan` | `.specs/integrations/{slug}/plan.md`, `todo.md` |
177
177
  | `/build` | *(implements tasks từ `plan.md`/`todo.md`)* |
178
178
  | `/review-integration` | *(findings report — không tạo file)* |
179
- | `/review-everything` | `specs/integrations/{NNN}-{slug}/review-findings.md` *(qua /spec-new)* |
179
+ | `/review-everything` | `.specs/integrations/{NNN}-{slug}/review-findings.md` *(qua /spec-new)* |
180
180
 
181
181
  Feature artifacts (`frd.md`) ở greenfield có thể author trước bằng `/spec-frd`, hoặc mọc dần qua **cascade proposals** từ integrations (`/spec-new` fallback). Component artifacts (`crd.md`/`cdd.md`) ở greenfield chỉ mọc qua cascade — không có skill author trực tiếp (`/spec-frd` chỉ reference component, không tạo crd/cdd).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-lite",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "Spec-driven development kit for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -176,7 +176,7 @@ options:
176
176
  ```
177
177
 
178
178
  Nếu user chọn **"Dùng nội dung từ spec artifact"**:
179
- - Hỏi đường dẫn file (ví dụ `specs/integrations/001-implement-auth/spec.md`)
179
+ - Hỏi đường dẫn file (ví dụ `.specs/integrations/001-implement-auth/spec.md`)
180
180
  - Đọc file → dùng toàn bộ nội dung làm description của Epic (format Markdown)
181
181
 
182
182
  Nếu user chọn **"Tự nhập mô tả"**:
@@ -12,7 +12,7 @@ description: Tạo Feature và User Story tickets trên ADO từ spec.md của m
12
12
  ## Prerequisites
13
13
 
14
14
  - `.claude/ado.yaml` phải tồn tại và có `epic.id` (chạy `/ado-config` nếu chưa có)
15
- - `frd.md` tương ứng phải tồn tại trong `specs/main/features/` cho mỗi feature
15
+ - `frd.md` tương ứng phải tồn tại trong `.specs/main/features/` cho mỗi feature
16
16
 
17
17
  ---
18
18
 
@@ -49,7 +49,7 @@ Không resolve được ADO identity ID cho <email>. Kiểm tra lại PAT token
49
49
 
50
50
  ### Bước 2: Chọn integration
51
51
 
52
- List tất cả thư mục trong `specs/integrations/` trừ `000-scaffold`. Với mỗi thư mục, đọc frontmatter của `spec.md` để lấy `title` và `status`.
52
+ List tất cả thư mục trong `.specs/integrations/` trừ `000-scaffold`. Với mỗi thư mục, đọc frontmatter của `spec.md` để lấy `title` và `status`.
53
53
 
54
54
  Hỏi user bằng `AskUserQuestion`:
55
55
 
@@ -120,7 +120,7 @@ Thực hiện tuần tự với từng Feature chưa có ADO ticket:
120
120
 
121
121
  **5.1 Tìm frd.md:**
122
122
 
123
- Map `F-NNN` → tìm thư mục `specs/main/features/` bắt đầu bằng `NNN-`. Đọc `frd.md` trong thư mục đó.
123
+ Map `F-NNN` → tìm thư mục `.specs/main/features/` bắt đầu bằng `NNN-`. Đọc `frd.md` trong thư mục đó.
124
124
 
125
125
  Nếu không tìm thấy `frd.md` → cảnh báo, dùng phần mô tả Feature từ `spec.md` làm description thay thế.
126
126
 
@@ -226,7 +226,7 @@ Sau khi tất cả tickets đã được tạo, cập nhật `spec.md`:
226
226
 
227
227
  ### Bước 8: Cập nhật prd.md
228
228
 
229
- Mở `specs/main/prd.md`. Tìm bảng `## Features`.
229
+ Mở `.specs/main/prd.md`. Tìm bảng `## Features`.
230
230
 
231
231
  **Nếu bảng chưa có cột `ADO`:** Thêm cột vào header và separator row:
232
232
 
@@ -284,9 +284,9 @@ Tìm section `## ADO Tickets` trong file.
284
284
  ✓ #12348 — [SDLC-TEST] [Đăng ký / Đăng nhập] - US-F001-003 — Đăng xuất → F-001 #12345
285
285
 
286
286
  Files đã cập nhật:
287
- ✓ specs/integrations/001-implement-auth/spec.md
288
- ✓ specs/main/features/001-auth/frd.md
289
- ✓ specs/main/prd.md
287
+ .specs/integrations/001-implement-auth/spec.md
288
+ .specs/main/features/001-auth/frd.md
289
+ .specs/main/prd.md
290
290
 
291
291
  {nếu có lỗi tạo ticket}
292
292
  ✗ US-F001-004 — ... → tạo thất bại: <lý do>
@@ -92,7 +92,7 @@ Nếu `environments` trống hoặc không tồn tại trong file → dừng:
92
92
 
93
93
  ### Bước 2: Chọn integration
94
94
 
95
- List tất cả thư mục trong `specs/integrations/` trừ `000-scaffold`. Với mỗi thư mục, đọc frontmatter của `spec.md` để lấy `title` và `status`.
95
+ List tất cả thư mục trong `.specs/integrations/` trừ `000-scaffold`. Với mỗi thư mục, đọc frontmatter của `spec.md` để lấy `title` và `status`.
96
96
 
97
97
  Hỏi user bằng `AskUserQuestion`:
98
98
 
@@ -1,19 +1,19 @@
1
1
  ---
2
2
  name: archive
3
- description: Archive một integration từ specs/integrations sang specs/archive. Dùng khi một integration đã hoàn thành hoặc không còn active và cần được lưu trữ ra khỏi thư mục làm việc chính.
3
+ description: Archive một integration từ .specs/integrations sang .specs/archive. Dùng khi một integration đã hoàn thành hoặc không còn active và cần được lưu trữ ra khỏi thư mục làm việc chính.
4
4
  ---
5
5
 
6
6
  # archive
7
7
 
8
8
  ## Overview
9
9
 
10
- Di chuyển một integration từ `specs/integrations/` sang `specs/archive/` để dọn dẹp thư mục làm việc chính trong khi vẫn giữ nguyên toàn bộ nội dung integration đó.
10
+ Di chuyển một integration từ `.specs/integrations/` sang `.specs/archive/` để dọn dẹp thư mục làm việc chính trong khi vẫn giữ nguyên toàn bộ nội dung integration đó.
11
11
 
12
12
  ## When to Use
13
13
 
14
14
  - Integration đã hoàn thành (Done) và không cần active nữa
15
15
  - Integration bị cancel hoặc deferred vô thời hạn
16
- - Muốn dọn dẹp `specs/integrations/` khỏi các integration cũ
16
+ - Muốn dọn dẹp `.specs/integrations/` khỏi các integration cũ
17
17
 
18
18
  ## When NOT to Use
19
19
 
@@ -26,9 +26,9 @@ Di chuyển một integration từ `specs/integrations/` sang `specs/archive/`
26
26
 
27
27
  ### Bước 1: Kiểm tra thư mục archive
28
28
 
29
- Kiểm tra `specs/archive/` đã tồn tại chưa.
29
+ Kiểm tra `.specs/archive/` đã tồn tại chưa.
30
30
 
31
- **Nếu chưa tồn tại** → tạo thư mục `specs/archive/`.
31
+ **Nếu chưa tồn tại** → tạo thư mục `.specs/archive/`.
32
32
 
33
33
  **Nếu đã tồn tại** → tiếp tục.
34
34
 
@@ -36,12 +36,12 @@ Kiểm tra `specs/archive/` đã tồn tại chưa.
36
36
 
37
37
  ### Bước 2: Liệt kê integrations
38
38
 
39
- Quét `specs/integrations/` để tìm tất cả các integration (mỗi integration là một thư mục con).
39
+ Quét `.specs/integrations/` để tìm tất cả các integration (mỗi integration là một thư mục con).
40
40
 
41
41
  **Nếu không có integration nào:**
42
42
 
43
43
  ```
44
- Không có integration nào trong specs/integrations/.
44
+ Không có integration nào trong .specs/integrations/.
45
45
  ```
46
46
 
47
47
  Dừng lại.
@@ -49,7 +49,7 @@ Dừng lại.
49
49
  **Nếu có integrations**, hiển thị danh sách dạng numbered list, kèm trạng thái nếu đọc được từ `spec.md` (frontmatter `status` hoặc heading):
50
50
 
51
51
  ```
52
- Integrations trong specs/integrations/:
52
+ Integrations trong .specs/integrations/:
53
53
 
54
54
  [1] 001-user-authentication (approved)
55
55
  [2] 002-payment-integration (draft)
@@ -70,8 +70,8 @@ Sau khi user chọn, hiển thị xác nhận trước khi di chuyển:
70
70
  ```
71
71
  Sẽ archive các integration sau:
72
72
 
73
- specs/integrations/001-user-authentication/ → specs/archive/001-user-authentication/
74
- specs/integrations/003-notification-service/ → specs/archive/003-notification-service/
73
+ .specs/integrations/001-user-authentication/ → .specs/archive/001-user-authentication/
74
+ .specs/integrations/003-notification-service/ → .specs/archive/003-notification-service/
75
75
 
76
76
  Xác nhận? (yes/no)
77
77
  ```
@@ -84,13 +84,13 @@ Nếu user không confirm → hủy, không làm gì.
84
84
 
85
85
  Với mỗi integration đã được confirm:
86
86
 
87
- - Di chuyển toàn bộ thư mục `specs/integrations/{slug}/` sang `specs/archive/{slug}/`
87
+ - Di chuyển toàn bộ thư mục `.specs/integrations/{slug}/` sang `.specs/archive/{slug}/`
88
88
  - Giữ nguyên toàn bộ cấu trúc thư mục và file bên trong
89
89
 
90
- Nếu `specs/archive/{slug}/` đã tồn tại (trùng tên) → cảnh báo:
90
+ Nếu `.specs/archive/{slug}/` đã tồn tại (trùng tên) → cảnh báo:
91
91
 
92
92
  ```
93
- ⚠ specs/archive/001-user-authentication/ đã tồn tại. Bỏ qua integration này để tránh ghi đè.
93
+ .specs/archive/001-user-authentication/ đã tồn tại. Bỏ qua integration này để tránh ghi đè.
94
94
  ```
95
95
 
96
96
  Và bỏ qua integration đó, tiếp tục với các integration còn lại.
@@ -103,14 +103,14 @@ Thông báo kết quả:
103
103
 
104
104
  ```
105
105
  ✓ Đã archive:
106
- specs/archive/001-user-authentication/
107
- specs/archive/003-notification-service/
106
+ .specs/archive/001-user-authentication/
107
+ .specs/archive/003-notification-service/
108
108
 
109
109
  {nếu có lỗi}
110
110
  ⚠ Bỏ qua (đã tồn tại):
111
- specs/archive/005-foo/
111
+ .specs/archive/005-foo/
112
112
 
113
- specs/integrations/ hiện còn {N} integration(s).
113
+ .specs/integrations/ hiện còn {N} integration(s).
114
114
  ```
115
115
 
116
116
  ---
@@ -119,7 +119,7 @@ specs/integrations/ hiện còn {N} integration(s).
119
119
 
120
120
  Trước khi di chuyển:
121
121
 
122
- - [ ] `specs/archive/` đã tồn tại (tạo nếu chưa có)
122
+ - [ ] `.specs/archive/` đã tồn tại (tạo nếu chưa có)
123
123
  - [ ] User đã chọn ít nhất 1 integration
124
124
  - [ ] User đã confirm trước khi di chuyển
125
- - [ ] Không ghi đè nếu slug đã tồn tại trong `specs/archive/`
125
+ - [ ] Không ghi đè nếu slug đã tồn tại trong `.specs/archive/`
@@ -17,13 +17,13 @@ Invoke `incremental-implementation` và `test-driven-development` cùng nhau cho
17
17
 
18
18
  **Nếu có ARGUMENT:**
19
19
  - Parse argument: có thể là số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`)
20
- - Quét `specs/integrations/*/todo.md`, tìm integration khớp với argument
20
+ - Quét `.specs/integrations/*/todo.md`, tìm integration khớp với argument
21
21
  - Nếu không tìm thấy → báo lỗi:
22
22
  > Không tìm thấy integration khớp với "{argument}". Kiểm tra lại tên hoặc số thứ tự.
23
- - Nếu tìm thấy → dùng `specs/integrations/{slug}/` làm working integration, bắt đầu luôn
23
+ - Nếu tìm thấy → dùng `.specs/integrations/{slug}/` làm working integration, bắt đầu luôn
24
24
 
25
25
  **Nếu không có ARGUMENT:**
26
- - Quét `specs/integrations/*/todo.md`, liệt kê tất cả integrations có todo.md, đánh dấu tiến độ:
26
+ - Quét `.specs/integrations/*/todo.md`, liệt kê tất cả integrations có todo.md, đánh dấu tiến độ:
27
27
 
28
28
  ```
29
29
  Integrations:
@@ -40,7 +40,7 @@ Chọn số integration:
40
40
 
41
41
  ### Bước 0a: Gate check — plan.md phải approved
42
42
 
43
- Đọc frontmatter của `specs/integrations/{slug}/plan.md`.
43
+ Đọc frontmatter của `.specs/integrations/{slug}/plan.md`.
44
44
 
45
45
  Nếu `plan.md` chưa tồn tại:
46
46
 
@@ -59,7 +59,7 @@ Nếu `plan.md` tồn tại nhưng `status` **không phải** `approved`:
59
59
  > ⛔ `plan.md` của integration **{slug}** chưa được approve (status hiện tại: `{status}`).
60
60
  >
61
61
  > Để tiếp tục:
62
- > 1. Review `specs/integrations/{slug}/plan.md`
62
+ > 1. Review `.specs/integrations/{slug}/plan.md`
63
63
  > 2. Đổi `status: draft` → `status: approved` trong frontmatter
64
64
  >
65
65
  > Sau khi approve xong, chạy lại `/build`.
@@ -29,14 +29,14 @@ Mọi quyết định về sizing, slicing đều thuộc về `planning-and-tas
29
29
 
30
30
  **Nếu có ARGUMENT:**
31
31
  - Parse argument: có thể là số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`)
32
- - Quét `specs/integrations/*/`, tìm integration khớp với argument
32
+ - Quét `.specs/integrations/*/`, tìm integration khớp với argument
33
33
  - Nếu không tìm thấy → báo lỗi:
34
34
  > Không tìm thấy integration khớp với "{argument}". Kiểm tra lại tên hoặc số thứ tự.
35
35
  - Nếu tìm thấy → dùng integration đó, bắt đầu luôn
36
36
 
37
37
  **Nếu không có ARGUMENT:**
38
38
 
39
- Quét `specs/integrations/`. Liệt kê tất cả integrations:
39
+ Quét `.specs/integrations/`. Liệt kê tất cả integrations:
40
40
 
41
41
  ```
42
42
  Integrations:
@@ -55,7 +55,7 @@ Nếu plan.md / todo.md đã tồn tại → hỏi trước khi ghi đè.
55
55
 
56
56
  ### Bước 1b: Gate check — spec.md và tech.md phải approved
57
57
 
58
- Đọc frontmatter của `specs/integrations/{slug}/spec.md` và `specs/integrations/{slug}/tech.md`.
58
+ Đọc frontmatter của `.specs/integrations/{slug}/spec.md` và `.specs/integrations/{slug}/tech.md`.
59
59
 
60
60
  Nếu `tech.md` chưa tồn tại → coi như `status: missing`.
61
61
 
@@ -83,9 +83,9 @@ Nếu cả hai đều `approved` → tiếp tục sang Bước 2.
83
83
 
84
84
  Load:
85
85
 
86
- - `specs/integrations/{slug}/spec.md` — Requirements, Acceptance Criteria (ghi chú số AC và IDs)
87
- - `specs/integrations/{slug}/tech.md` — Technical Design, Interface Changes, Data Model Changes, Implementation Notes
88
- - `specs/main/domain.md` — Entities và Business Rules liên quan
86
+ - `.specs/integrations/{slug}/spec.md` — Requirements, Acceptance Criteria (ghi chú số AC và IDs)
87
+ - `.specs/integrations/{slug}/tech.md` — Technical Design, Interface Changes, Data Model Changes, Implementation Notes
88
+ - `.specs/main/domain.md` — Entities và Business Rules liên quan
89
89
 
90
90
  Surface tóm tắt để planning-and-task-breakdown có đủ context:
91
91
 
@@ -35,9 +35,9 @@ Khác với `/review-integration` (chạy sau `/build`, đối chiếu với spe
35
35
 
36
36
  Kiểm tra các file sau tồn tại và **có nội dung** (không phải template rỗng):
37
37
 
38
- - `specs/main/prd.md`
39
- - `specs/main/domain.md`
40
- - `specs/main/sad.md`
38
+ - `.specs/main/prd.md`
39
+ - `.specs/main/domain.md`
40
+ - `.specs/main/sad.md`
41
41
 
42
42
  Nếu thiếu hoặc rỗng → dừng:
43
43
 
@@ -65,7 +65,7 @@ CONTEXT
65
65
 
66
66
  SOURCE SCOPE
67
67
  - Roots: src/, packages/api/, …
68
- - Excluded: node_modules/, dist/, .claude/, specs/
68
+ - Excluded: node_modules/, dist/, .claude/, .specs/
69
69
 
70
70
  Tiếp tục review? (y/n)
71
71
  ```
@@ -175,7 +175,7 @@ options:
175
175
  description: "Không tạo integration. Findings vẫn được lưu nếu cần tham chiếu sau."
176
176
  ```
177
177
 
178
- Nếu user chọn "Bỏ qua" → ghi findings ra `specs/main/review/{YYYY-MM-DD-HHmm}.md` (tạo thư mục nếu chưa có) rồi dừng.
178
+ Nếu user chọn "Bỏ qua" → ghi findings ra `.specs/main/review/{YYYY-MM-DD-HHmm}.md` (tạo thư mục nếu chưa có) rồi dừng.
179
179
 
180
180
  Nếu user chọn một tier → tiếp Bước 6.
181
181
 
@@ -212,7 +212,7 @@ Gọi `Skill` tool: `skill=spec-new`, `args={raw requirement ở Bước 6}`.
212
212
  1. Nhận ARGUMENT làm raw requirement (bỏ qua nhánh "chọn từ prd.md").
213
213
  2. Load context (prd / domain / frd / crd liên quan).
214
214
  3. Interview 4 phần (Problem Statement, Requirements, Acceptance Criteria, Out of Scope) — agent **gợi ý sẵn** dựa trên findings, user chỉnh.
215
- 4. Sinh `specs/integrations/{NNN}-{slug}/spec.md` + cascade lên main artifacts.
215
+ 4. Sinh `.specs/integrations/{NNN}-{slug}/spec.md` + cascade lên main artifacts.
216
216
 
217
217
  **Khi `/spec-new` đề xuất slug**, gợi ý mặc định:
218
218
  - `review-{YYYY-MM-DD}` — ngắn, có ngày để truy ngược review nào.
@@ -222,12 +222,12 @@ Gọi `Skill` tool: `skill=spec-new`, `args={raw requirement ở Bước 6}`.
222
222
 
223
223
  ### Bước 8: Sau khi /spec-new tạo xong integration → lưu findings file
224
224
 
225
- `/spec-new` ghi `specs/integrations/{NNN}-{slug}/spec.md`. Đọc lại path đó để biết `{NNN}-{slug}`.
225
+ `/spec-new` ghi `.specs/integrations/{NNN}-{slug}/spec.md`. Đọc lại path đó để biết `{NNN}-{slug}`.
226
226
 
227
227
  Ghi **toàn bộ findings** (không chỉ selected — giữ full để tham chiếu sau) vào:
228
228
 
229
229
  ```
230
- specs/integrations/{NNN}-{slug}/review-findings.md
230
+ .specs/integrations/{NNN}-{slug}/review-findings.md
231
231
  ```
232
232
 
233
233
  Nội dung:
@@ -270,7 +270,7 @@ Thông báo:
270
270
 
271
271
  Findings: {N} total ({C} Critical · {R} Required · {O} Optional · {Ni} Nit · {F} FYI)
272
272
  Selected: {tier} → {K} findings
273
- Integration: specs/integrations/{NNN}-{slug}/
273
+ Integration: .specs/integrations/{NNN}-{slug}/
274
274
  ├── spec.md (đã tạo bởi /spec-new + cascade)
275
275
  └── review-findings.md (full snapshot)
276
276
 
@@ -11,10 +11,10 @@ Invoke `code-review-and-quality` để review toàn bộ thay đổi sau `/build
11
11
 
12
12
  Trước khi bắt đầu review, load context từ working integration:
13
13
 
14
- 1. `specs/integrations/{slug}/spec.md` — yêu cầu nghiệp vụ, acceptance criteria
15
- 2. `specs/integrations/{slug}/tech.md` — thiết kế kỹ thuật, API contract, data model
16
- 3. `specs/integrations/{slug}/plan.md` — task breakdown và acceptance criteria chi tiết
17
- 4. `specs/integrations/{slug}/todo.md` — task nào đã được implement (`[x]`)
14
+ 1. `.specs/integrations/{slug}/spec.md` — yêu cầu nghiệp vụ, acceptance criteria
15
+ 2. `.specs/integrations/{slug}/tech.md` — thiết kế kỹ thuật, API contract, data model
16
+ 3. `.specs/integrations/{slug}/plan.md` — task breakdown và acceptance criteria chi tiết
17
+ 4. `.specs/integrations/{slug}/todo.md` — task nào đã được implement (`[x]`)
18
18
 
19
19
  Chạy lệnh sau để lấy thay đổi cần review — diff từ điểm branch tách ra, không phải từ tip của base branch:
20
20
 
@@ -25,7 +25,7 @@ git diff $(git merge-base HEAD $BASE)...HEAD
25
25
 
26
26
  ## Xác định integration
27
27
 
28
- **Nếu có ARGUMENT:** Parse số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`). Quét `specs/integrations/*/todo.md`, dùng integration khớp.
28
+ **Nếu có ARGUMENT:** Parse số thứ tự (`2`, `002`) hoặc slug (`002-implement-todo`). Quét `.specs/integrations/*/todo.md`, dùng integration khớp.
29
29
 
30
30
  **Nếu không có ARGUMENT:** Liệt kê integrations có task đã done, cho user chọn.
31
31
 
@@ -45,7 +45,7 @@ Nhóm các findings thành tasks cụ thể có thể implement được. Mỗi
45
45
 
46
46
  Lấy short SHA hiện tại: `git rev-parse --short HEAD`.
47
47
 
48
- Ghi findings vào `specs/integrations/{slug}/techdebt.md`.
48
+ Ghi findings vào `.specs/integrations/{slug}/techdebt.md`.
49
49
 
50
50
  Nếu file chưa tồn tại, tạo mới từ `.claude/templates/integrations/techdebt-template.md`, điền `slug`, `title`, `created`.
51
51
 
@@ -141,7 +141,7 @@ Sau khi cập nhật xong plan.md và todo.md, invoke ngay `/build` để thực
141
141
  Thông báo:
142
142
 
143
143
  ```
144
- Findings đã được lưu vào specs/integrations/{slug}/techdebt.md.
144
+ Findings đã được lưu vào .specs/integrations/{slug}/techdebt.md.
145
145
  Chạy /review-integration lại hoặc /build khi sẵn sàng xử lý.
146
146
  ```
147
147
 
@@ -7,7 +7,7 @@ description: Khởi tạo project scaffold dựa trên sad.md — tạo plan.md
7
7
 
8
8
  ## Overview
9
9
 
10
- Đọc `specs/main/sad.md`, phân rã thành plan.md và todo.md cho bước khởi tạo project, sau đó thực thi từng task theo thứ tự.
10
+ Đọc `.specs/main/sad.md`, phân rã thành plan.md và todo.md cho bước khởi tạo project, sau đó thực thi từng task theo thứ tự.
11
11
 
12
12
  Khác với `/plan` — skill này không dừng lại sau khi sinh plan. Sau khi user confirm, nó execute luôn.
13
13
 
@@ -18,7 +18,7 @@ Khác với `/plan` — skill này không dừng lại sau khi sinh plan. Sau kh
18
18
 
19
19
  ## When NOT to Use
20
20
 
21
- - `specs/main/sad.md` chưa có → chạy `/spec-sad` trước
21
+ - `.specs/main/sad.md` chưa có → chạy `/spec-sad` trước
22
22
  - Project đã được khởi tạo rồi → implement trực tiếp
23
23
 
24
24
  ---
@@ -27,14 +27,14 @@ Khác với `/plan` — skill này không dừng lại sau khi sinh plan. Sau kh
27
27
 
28
28
  ### Bước 1: Kiểm tra preconditions
29
29
 
30
- Đọc `specs/main/sad.md`:
30
+ Đọc `.specs/main/sad.md`:
31
31
 
32
32
  - **Không tồn tại hoặc là template** → dừng ngay:
33
33
  > `sad.md` chưa có nội dung. Hãy chạy `/spec-sad` trước.
34
34
 
35
35
  - **Đã có nội dung** → tiếp tục.
36
36
 
37
- Kiểm tra `specs/integrations/000-scaffold/`:
37
+ Kiểm tra `.specs/integrations/000-scaffold/`:
38
38
 
39
39
  - **Không có plan.md và todo.md** → tiếp tục Bước 2 (sinh mới).
40
40
 
@@ -214,11 +214,11 @@ Chỉ tiếp tục sau khi user confirm. Nếu cần chỉnh → cập nhật dr
214
214
 
215
215
  ### Bước 5: Ghi file
216
216
 
217
- Tạo thư mục `specs/integrations/000-scaffold/` nếu chưa có.
217
+ Tạo thư mục `.specs/integrations/000-scaffold/` nếu chưa có.
218
218
 
219
219
  Ghi:
220
- - `specs/integrations/000-scaffold/plan.md`
221
- - `specs/integrations/000-scaffold/todo.md`
220
+ - `.specs/integrations/000-scaffold/plan.md`
221
+ - `.specs/integrations/000-scaffold/todo.md`
222
222
 
223
223
  ---
224
224
 
@@ -269,8 +269,8 @@ Sau khi tất cả tasks pass:
269
269
  ```
270
270
  ✓ Scaffold hoàn thành
271
271
 
272
- specs/integrations/000-scaffold/plan.md
273
- specs/integrations/000-scaffold/todo.md
272
+ .specs/integrations/000-scaffold/plan.md
273
+ .specs/integrations/000-scaffold/todo.md
274
274
 
275
275
  Tất cả tasks: {N}/{N} ✓
276
276
 
@@ -7,7 +7,7 @@ description: Discover components từ code, generate crd.md + cdd.md cho từng
7
7
 
8
8
  ## Overview
9
9
 
10
- Tạo `specs/main/component/{C-XXX}-{component-name}/crd.md` và `cdd.md` cho các components trong brownfield project.
10
+ Tạo `.specs/main/component/{C-XXX}-{component-name}/crd.md` và `cdd.md` cho các components trong brownfield project.
11
11
 
12
12
  Skill này **tự discover** component boundaries từ code (không dựa vào init), sau đó scan sâu từng component để extract responsibilities, entities, public interface, business rules. Khi hoàn thành, **điền Component Index vào prd.md** và **đề xuất Shared Entities cascade vào domain.md**.
13
13
 
@@ -30,8 +30,8 @@ Skill này **tự discover** component boundaries từ code (không dựa vào i
30
30
  **Path:** Nếu có ARGUMENT là path → dùng làm root. Nếu không → CWD.
31
31
 
32
32
  **Load:**
33
- - `specs/main/prd.md` — kiểm tra tồn tại; đọc problem statement và NFRs để hiểu business context
34
- - `specs/main/domain.md` — đọc Glossary để reuse business terms
33
+ - `.specs/main/prd.md` — kiểm tra tồn tại; đọc problem statement và NFRs để hiểu business context
34
+ - `.specs/main/domain.md` — đọc Glossary để reuse business terms
35
35
 
36
36
  Nếu `prd.md` không tồn tại → dừng:
37
37
  > `prd.md` chưa có nội dung. Hãy chạy `/spec-brownfield-init` trước.
@@ -178,7 +178,7 @@ Nếu có Shared Entities được phát hiện ở Bước 5:
178
178
  SHARED ENTITIES DETECTED
179
179
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
180
180
  Các entities sau được dùng bởi nhiều components.
181
- Đề xuất thêm vào specs/main/domain.md (Shared Entities):
181
+ Đề xuất thêm vào .specs/main/domain.md (Shared Entities):
182
182
 
183
183
  Entity: Order (Owner: C-003-payment)
184
184
  Dùng bởi: C-003-payment, C-005-inventory
@@ -191,7 +191,7 @@ Các entities sau được dùng bởi nhiều components.
191
191
  Apply cascade proposals vào domain.md? [y/n/edit]
192
192
  ```
193
193
 
194
- Nếu `y` → update `specs/main/domain.md` Shared Entities section, đồng thời append entry vào `## Change History` của domain.md (theo `conventions.md` §5.5):
194
+ Nếu `y` → update `.specs/main/domain.md` Shared Entities section, đồng thời append entry vào `## Change History` của domain.md (theo `conventions.md` §5.5):
195
195
 
196
196
  ```markdown
197
197
  ### {YYYY-MM-DD} — manual — update
@@ -209,10 +209,10 @@ Nếu `edit` → hỏi chỉnh sửa từng entity trước khi apply.
209
209
 
210
210
  ```
211
211
  Sẽ tạo {N} components ({2N} files):
212
- ✓ specs/main/component/C-001-auth/crd.md (3 NEEDS_CLARIFY)
213
- ✓ specs/main/component/C-001-auth/cdd.md (1 NEEDS_CLARIFY)
214
- ✓ specs/main/component/C-002-user/crd.md (0 NEEDS_CLARIFY)
215
- ✓ specs/main/component/C-002-user/cdd.md (2 NEEDS_CLARIFY)
212
+ .specs/main/component/C-001-auth/crd.md (3 NEEDS_CLARIFY)
213
+ .specs/main/component/C-001-auth/cdd.md (1 NEEDS_CLARIFY)
214
+ .specs/main/component/C-002-user/crd.md (0 NEEDS_CLARIFY)
215
+ .specs/main/component/C-002-user/cdd.md (2 NEEDS_CLARIFY)
216
216
  ...
217
217
 
218
218
  Ghi tất cả? [y] hoặc review từng file trước [r]:
@@ -273,8 +273,8 @@ Khi apply → đồng thời append entry vào `## Change History` của prd.md
273
273
 
274
274
  ```
275
275
  ✓ Generated {N} components:
276
- specs/main/component/C-001-auth/ (crd.md + cdd.md)
277
- specs/main/component/C-002-user/ (crd.md + cdd.md)
276
+ .specs/main/component/C-001-auth/ (crd.md + cdd.md)
277
+ .specs/main/component/C-002-user/ (crd.md + cdd.md)
278
278
  ...
279
279
 
280
280
  ✓ prd.md Component Index: {N} entries đã được điền