dw-kit 1.3.0 → 1.3.4

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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: dw:retroactive
3
- description: "Retroactively document một feature/task đã được implement trước khi dùng dw. Reverse-engineer từ code + git history, tạo đầy đủ context + as-built plan + progress docs. Dùng khi cần AI hiểu sâu một module cũ."
3
+ description: "Retroactively document một feature/task đã được implement trước khi dùng dw. Reverse-engineer từ code + git history, tạo spec.md + tracking.md (v2 format, As-Built flavor)."
4
4
  argument-hint: "[feature-name]"
5
5
  allowed-tools:
6
6
  - Read
@@ -19,7 +19,7 @@ allowed-tools:
19
19
 
20
20
  Feature: **$ARGUMENTS**
21
21
 
22
- > Reverse-engineer feature đã tồn tại từ code git history. Tạo đầy đủ task docs như thể đã đi qua workflow dw — để AI (và team) có context đầy đủ khi làm việc liên quan feature này.
22
+ > Reverse-engineer feature đã tồn tại từ code + git history. Tạo task docs v2 format (`spec.md` + `tracking.md`) với flavor As-Built — để AI và team có context đầy đủ khi làm task liên quan.
23
23
 
24
24
  ---
25
25
 
@@ -27,12 +27,12 @@ Feature: **$ARGUMENTS**
27
27
 
28
28
  Đọc `.dw/config/dw.config.yml`:
29
29
  - `paths.tasks` → output location (mặc định `.dw/tasks`)
30
- - `project.language` → ngôn ngữ docs
30
+ - `project.language` → ngôn ngữ docs (vi/en)
31
31
 
32
32
  ## Kiểm tra đã có docs chưa
33
33
 
34
34
  Kiểm tra `{paths.tasks}/$ARGUMENTS/` đã tồn tại chưa:
35
- - Nếu rồi → hỏi user: "Đã có task docs cho `$ARGUMENTS`. Overwrite hay skip?"
35
+ - Nếu `spec.md` hoặc `tracking.md` → hỏi user: "Đã có task docs cho `$ARGUMENTS`. Overwrite hay skip?"
36
36
  - Nếu chưa → tiếp tục
37
37
 
38
38
  ---
@@ -47,229 +47,113 @@ Grep: "$ARGUMENTS" trong toàn codebase (case-insensitive)
47
47
  Grep: tên function/class/route liên quan (nếu có thể suy ra từ tên)
48
48
  ```
49
49
 
50
- Nếu không tìm được → hỏi user: "Không tìm thấy files liên quan `$ARGUMENTS`. Bạn có thể cung cấp thêm keyword hoặc path không?"
50
+ Nếu không tìm được → hỏi user cung cấp thêm keyword hoặc path.
51
51
 
52
52
  ## Bước 2: Đọc và phân tích code
53
53
 
54
54
  Với mỗi file tìm được:
55
55
 
56
56
  1. **Đọc toàn bộ file** (hoặc phần liên quan)
57
- 2. Xác định:
58
- - Vai trò của file trong feature này
59
- - Logic chính / business rules
60
- - Input/Output/Side effects
61
- - Error handling patterns
62
- 3. **Trace data flow**: đầu vào từ đâu → xử lý gì → kết quả đi đâu
63
- 4. **Tìm dependencies**: module này gọi gì? Ai gọi module này?
64
- 5. **Tìm tests**: test files liên quan, coverage hiện tại
57
+ 2. Xác định: vai trò trong feature, logic chính, I/O, side effects, error handling
58
+ 3. **Trace data flow**: input xử lý → output
59
+ 4. **Dependencies**: upstream (gọi ai) / downstream (ai gọi)
60
+ 5. **Tests**: test files liên quan, coverage hiện tại
65
61
 
66
62
  ## Bước 3: Phân tích git history
67
63
 
68
64
  ```bash
69
- # Commits liên quan feature
70
65
  git log --oneline --follow -- [files-found]
71
-
72
- # Ai đã implement
73
66
  git shortlog -sn -- [files-found]
74
-
75
- # Thay đổi đáng kể
76
- git log --oneline --diff-filter=A -- [files-found] # khi files được tạo
77
-
78
- # Context của lần commit đầu tiên
67
+ git log --oneline --diff-filter=A -- [files-found]
79
68
  git show [first-commit] --stat
80
69
  ```
81
70
 
82
- Xác định:
83
- - Feature được tạo khi nào
84
- - Ai implement (để biết ai có thể được hỏi)
85
- - Có breaking changes nào đã được fix sau đó không
86
- - Tech debt nào đang tồn tại (TODO, FIXME trong code)
71
+ Xác định: thời điểm tạo, maintainer chính, breaking changes, tech debt (TODO/FIXME).
87
72
 
88
73
  ## Bước 4: Áp dụng tư duy phản biện
89
74
 
90
- Từ framework `core/THINKING.md` (hoặc `.claude/skills/dw-thinking/THINKING.md`):
91
-
92
- - **Giả định**: Code đang giả định gì về input, state, environment?
93
- - **Failure modes**: Điều gì có thể làm feature này fail? Edge cases nào?
94
- - **Tech debt**: TODO/FIXME? Có antipatterns? Code mùi?
95
- - **Security**: Có điểm nào đáng lo ngại về auth, validation, data exposure?
96
-
97
- ## Bước 5: Tạo task docs
98
-
99
- Tạo thư mục `{paths.tasks}/$ARGUMENTS/` và 3 files:
100
-
101
- ### 5a. Context doc
102
-
103
- Tạo `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md`:
104
-
105
- ```markdown
106
- # Context: $ARGUMENTS
107
-
108
- ## Ngày khảo sát: [date]
109
- ## Loại: Retroactive Documentation
110
- ## Người thực hiện: agent (dw-retroactive)
75
+ Từ framework `.dw/core/THINKING.md`:
76
+ - **Giả định** trong code về input/state/environment
77
+ - **Failure modes** + edge cases
78
+ - **Tech debt** (TODO/FIXME/antipatterns)
79
+ - **Security** (auth, validation, data exposure)
111
80
 
112
81
  ---
113
82
 
114
- ## Tả Feature
115
-
116
- [2-3 câu mô tả feature làm gì, phục vụ ai]
117
-
118
- ## Codebase Analysis
119
-
120
- ### Files Liên Quan
121
-
122
- | # | File | Vai trò | Ghi chú |
123
- |---|------|---------|---------|
124
- | 1 | [file] | [vai trò] | |
125
-
126
- ### Kiến Trúc
127
-
128
- ```
129
- [ASCII diagram hoặc mô tả luồng]
130
- Input → [Module] → Output
131
-
132
- [Dependencies]
133
- ```
134
-
135
- ### Data Flow
136
-
137
- - **Input**: [từ đâu, format gì]
138
- - **Processing**: [logic chính]
139
- - **Output**: [đi đâu, format gì]
140
- - **Side effects**: [DB writes, events, external calls]
141
-
142
- ## Dependencies
143
-
144
- ### Upstream (feature phụ thuộc vào)
145
- - [ ] [Module/Service] — [vai trò]
146
-
147
- ### Downstream (ai phụ thuộc vào feature này)
148
- - [ ] [Module/Service] — [ảnh hưởng thế nào]
149
-
150
- ## Git History
151
-
152
- - **Tạo lần đầu**: [date] bởi [author]
153
- - **Commits**: [N commits]
154
- - **Maintainer chính**: [author]
155
- - **Thay đổi đáng kể**: [mô tả nếu có]
156
-
157
- ## Test Coverage
83
+ ## Bước 5: Tạo task docs (v2 format, As-Built flavor)
158
84
 
159
- - [ ] tests: [Có/Không]
160
- - Test files: [danh sách]
161
- - Coverage: [mô tả]
162
- - Gaps: [thiếu test ở đâu]
85
+ Tạo thư mục `{paths.tasks}/$ARGUMENTS/` **2 files** theo template v2 tại `.dw/core/templates/v2/`.
163
86
 
164
- ## Giả Định & Hạn Chế
87
+ ### 5a. spec.md (As-Built)
165
88
 
166
- | # | Giả định/Hạn chế | Mức độ rủi ro |
167
- |---|-----------------|--------------|
168
- | 1 | [giả định trong code] | Cao/TB/Thấp |
89
+ Đọc template `.dw/core/templates/v2/spec.md`, điền:
169
90
 
170
- ## Tech Debt & Warnings
91
+ **Frontmatter:**
92
+ - `task_id: $ARGUMENTS`
93
+ - `created: [today]`
94
+ - `status: Done` ← đã implement
95
+ - `owner: [main author từ git shortlog]`
96
+ - `depth: retroactive`
97
+ - `related_adr: none`
98
+ - `target_ship: [first-commit-date]`
171
99
 
172
- - [ ] [TODO/FIXME đang có]
173
- - [ ] [Antipatterns phát hiện]
174
- - [ ] [Security concerns]
100
+ **Body sections** (lấp bằng findings retroactive):
175
101
 
176
- ## Ghi Chú Cho AI
177
-
178
- > Context quan trọng khi làm task liên quan feature này:
179
- - [Gotcha 1]
180
- - [Gotcha 2]
181
- ```
182
-
183
- ### 5b. As-Built Plan doc
184
-
185
- Tạo `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md`:
102
+ - **Intent**: 1-2 paragraphs mô tả feature làm gì (dựa trên code)
103
+ - **Why Now**: "As-built documentation — feature pre-dw adoption" + lý do document hóa
104
+ - **Scope In Scope**: liệt component đã implement dưới dạng ST-1, ST-2... với:
105
+ - Concrete action = mô tả component đã implement
106
+ - Acceptance = how it was verified (tests / manual check)
107
+ - Effort = `as-built`
108
+ - **Scope → Out of Scope**: những gì rõ ràng KHÔNG nằm trong feature (suy từ code boundaries)
109
+ - **Risks & Mitigations**: tech debt, antipatterns, security concerns phát hiện
110
+ - **Success Criteria**: current behavior được kiểm chứng bằng gì (tests, prod metrics nếu biết)
111
+ - **Dependencies**: upstream modules/services + downstream consumers
112
+ - **Known Unknowns**: câu hỏi cần human review (verbal decisions không có trong code)
113
+ - **Acceptance**: đánh dấu `[x]` các items đã done (feature đang chạy prod)
186
114
 
115
+ **Thêm note trên đầu Intent**:
187
116
  ```markdown
188
- # As-Built Plan: $ARGUMENTS
189
-
190
- ## Ngày tạo: [date]
191
- ## Loại: As-Built (Retroactive) — không phải forward plan
192
- ## Trạng thái: Done (implemented trước khi adopt dw)
193
- ## Implemented by: [author từ git history]
194
-
195
- ---
196
-
197
- > ⚠ Đây là tài liệu retroactive — mô tả những gì ĐÃ được implement,
198
- > không phải plan cho việc sẽ làm. Dùng để AI và team hiểu context.
199
-
200
- ## Tóm Tắt Giải Pháp Đã Implement
201
-
202
- [Mô tả approach được dùng, dựa trên code analysis]
203
-
204
- ## Những Gì Đã Implement
205
-
206
- ### Component 1: [Tên]
207
- - **Mô tả**: [làm gì]
208
- - **Files**: [danh sách]
209
- - **Cách hoạt động**: [tóm tắt logic]
210
-
211
- ### Component 2: [Tên]
212
- ...
213
-
214
- ## Quyết Định Kỹ Thuật Đáng Chú Ý
215
-
216
- | Quyết định | Approach đã dùng | Lý do suy đoán |
217
- |-----------|-----------------|----------------|
218
- | [decision] | [approach] | [inferred from code/commits] |
219
-
220
- ## Rủi Ro & Hạn Chế Đã Biết
221
-
222
- | # | Mô tả | Mức độ | Trạng thái |
223
- |---|-------|--------|-----------|
224
- | 1 | [risk] | Cao/TB/Thấp | Open/Resolved |
225
-
226
- ## Edge Cases
227
-
228
- - [ ] [Edge case được xử lý hay chưa?]
229
-
230
- ## Tác Động Hệ Thống
231
-
232
- - **Modules ảnh hưởng**: [danh sách]
233
- - **API**: [endpoints liên quan]
234
- - **Database**: [schema/tables liên quan]
117
+ > As-Built Documentation — Generated retroactively from code + git history.
118
+ > Verbal context (Slack threads, meetings) có thể thiếu. Cần human review bổ sung.
235
119
  ```
236
120
 
237
- ### 5c. Progress doc
121
+ Ghi vào `{paths.tasks}/$ARGUMENTS/spec.md`.
238
122
 
239
- Tạo `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`:
123
+ ### 5b. tracking.md (As-Built)
240
124
 
241
- ```markdown
242
- # Progress: $ARGUMENTS
243
-
244
- ## Trạng thái: Done (Pre-dw Implementation)
245
- ## Loại: Retroactive Documentation
246
- ## Documented on: [date]
247
-
248
- ---
249
-
250
- > Feature này đã được implement trước khi adopt dw-kit.
251
- > File này được tạo retroactively để AI có context khi làm task liên quan.
125
+ Đọc template `.dw/core/templates/v2/tracking.md`, điền:
252
126
 
253
- ## Implementation History (từ git)
127
+ **Frontmatter:**
128
+ - `task_id: $ARGUMENTS`
129
+ - `started: [first-commit-date từ git]`
130
+ - `last_updated: [today]`
131
+ - `status: Done`
132
+ - `current_phase: Maintained`
133
+ - `blockers: none`
254
134
 
255
- | Thời điểm | Sự kiện | Author |
256
- |-----------|---------|--------|
257
- | [date] | Feature được tạo | [author] |
258
- | [date] | [notable change] | [author] |
135
+ **Body sections:**
259
136
 
260
- ## Known Issues / Open Items
137
+ - **Status Snapshot**: Phase `Done (pre-dw)` · Next milestone `— (maintained as-is)`
138
+ - **Subtask Progress** table: map các component đã tìm ở Bước 2 thành ST-N với status ✅ Done, Date = commit date đầu tiên của component, Notes = commit SHA hoặc file path
139
+ - **Changelog**: parse git log ra thành entries theo ngày. Format:
140
+ ```
141
+ ### YYYY-MM-DD — [commit subject]
142
+ **Actions taken:** [summary]
143
+ ```
144
+ - **Handoff Notes**: cho next session/agent:
145
+ - **Read first:** `spec.md` (as-built) + key files từ bước 2
146
+ - **Current state:** Done, maintained
147
+ - **Don't do:** [stable contracts không nên thay đổi]
148
+ - **Watch out:** [tech debt + gotchas]
149
+ - **Friction Journal**: để trống hoặc nhập tech debt đã ghi nhận từ Bước 4
150
+ - **Agent Debate Log**: bỏ qua (không applicable cho retroactive)
261
151
 
262
- - [ ] [Issue đang mở nếu có]
263
- - [ ] [Tech debt cần xử lý]
152
+ Ghi vào `{paths.tasks}/$ARGUMENTS/tracking.md`.
264
153
 
265
- ## Handoff Notes cho AI
154
+ ### 5c. Cập nhật ACTIVE.md
266
155
 
267
- Khi làm task liên quan feature này:
268
- - **Đọc trước**: `$ARGUMENTS-context.md` để hiểu architecture
269
- - **Cẩn thận**: [warning 1]
270
- - **Không thay đổi**: [phần nào là stable contract]
271
- - **Có thể refactor**: [phần nào an toàn để thay đổi]
272
- ```
156
+ Chạy `dw active` (hoặc `writeActiveIndex`) để regenerate team index.
273
157
 
274
158
  ---
275
159
 
@@ -277,28 +161,27 @@ Khi làm task liên quan feature này:
277
161
 
278
162
  ```
279
163
  ╔══════════════════════════════════════════════════════╗
280
- ║ ✅ dw-retroactive complete: $ARGUMENTS
164
+ ║ ✅ dw:retroactive complete: $ARGUMENTS
281
165
  ╠══════════════════════════════════════════════════════╣
282
166
  ║ Files khảo sát : [N files]
283
- ║ Git commits : [N commits, từ [date] đến [date]]
167
+ ║ Git commits : [N, từ [date] đến [date]]
284
168
  ║ Maintainer chính : [author]
285
169
  ╠══════════════════════════════════════════════════════╣
286
- ║ Docs đã tạo:
287
- ║ {paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md
288
- ║ {paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md (as-built)
289
- ║ {paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md
170
+ ║ Docs đã tạo (v2 format):
171
+ ║ {paths.tasks}/$ARGUMENTS/spec.md (As-Built)
172
+ ║ {paths.tasks}/$ARGUMENTS/tracking.md (Done, maintained)
290
173
  ╠══════════════════════════════════════════════════════╣
291
174
  ║ Key findings:
292
175
  ║ • [Finding 1]
293
176
  ║ • [Finding 2]
294
- ║ • [Finding 3]
295
177
  ╠══════════════════════════════════════════════════════╣
296
178
  ║ Tech debt / warnings:
297
179
  ║ • [Warning nếu có]
298
180
  ╠══════════════════════════════════════════════════════╣
299
181
  ║ Tiếp theo:
300
- ║ → Khi cần task liên quan: /dw:research $ARGUMENTS
301
- (AI sẽ đọc context docs vừa tạo làm foundation)
182
+ ║ → Task liên quan: /dw:research $ARGUMENTS
183
+ (AI đọc spec.md làm foundation)
184
+ ║ → Human review: điền Known Unknowns + Handoff Notes
302
185
  ╚══════════════════════════════════════════════════════╝
303
186
  ```
304
187
 
@@ -306,6 +189,7 @@ Khi làm task liên quan feature này:
306
189
 
307
190
  ## Lưu ý
308
191
 
309
- - **As-built ≠ forward plan**: Docs này mô tả hiện trạng, không phải kế hoạch
310
- - **Best-effort**: AI chỉ thấy được những gì có trong code git — context ẩn (verbal decisions, Slack threads) có thể thiếu. Cần human review bổ sung.
311
- - **Sau khi tạo**: Khuyến khích dev liên quan review bổ sung `## Ghi Chú Cho AI` section
192
+ - **As-built ≠ forward plan**: spec.md mô tả hiện trạng, không phải kế hoạch tương lai.
193
+ - **Best-effort**: AI chỉ thấy code + git — context ẩn (verbal decisions, Slack threads) có thể thiếu. Human review bắt buộc cho phần `Known Unknowns`.
194
+ - **v2 format**: Chỉ tạo 2 files (`spec.md` + `tracking.md`). Không dùng lại v1 3-file format (`context + plan + progress`) nữa.
195
+ - **Tools khác vẫn đọc được**: `dw active`, `session-init` hook, `/dw:dashboard` đều hỗ trợ v2 format song song với legacy v1.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: dw:task-init
3
- description: "Khởi tạo bộ documentation cho task mới. Tạo thư mục và 3 template files (context, plan, progress)."
3
+ description: "Khởi tạo bộ documentation cho task mới. Tạo thư mục và 2 files v2 (spec.md + tracking.md)."
4
4
  argument-hint: "[task-name]"
5
5
  ---
6
6
 
@@ -8,52 +8,64 @@ argument-hint: "[task-name]"
8
8
 
9
9
  ## Đọc Config
10
10
 
11
- Đọc `.dw/config/dw.config.yml` để lấy:
11
+ Đọc `.dw/config/dw.config.yml`:
12
12
  - `paths.tasks` → thư mục chứa task docs (mặc định: `.dw/tasks`)
13
13
  - `workflow.default_depth` → `quick | standard | thorough`
14
- - `tracking.estimation` → tạo section estimation không
15
- - `tracking.log_work` → có tạo section effort log không
16
- - `team.roles` → hiển thị workflow phù hợp
17
- - `project.language` → chọn template ngôn ngữ
14
+ - `project.language` → ngôn ngữ note thêm (templates hiện tại là vi/en-agnostic)
18
15
 
19
- ## Tạo Thư Mục & Files
16
+ ## Tạo Thư Mục & Files (v2 format)
20
17
 
21
18
  ```
22
19
  {paths.tasks}/$ARGUMENTS/
23
- ├── $ARGUMENTS-context.md # Research findings & codebase analysis
24
- ├── $ARGUMENTS-plan.md # Implementation plan & design
25
- └── $ARGUMENTS-progress.md # Progress tracking, effort log, changelog
20
+ ├── spec.md # Intent + subtasks + success criteria (stable after approve)
21
+ └── tracking.md # Progress + changelog + handoff (mutable)
26
22
  ```
27
23
 
28
- ### File context.md
29
- Đọc `project.language` từ config để chọn template:
30
- - `language: "vi"` → dùng `.claude/templates/task-context.md`
31
- - `language: "en"` → dùng `.claude/templates/en/task-context.md`
24
+ ### 1. Tạo spec.md
32
25
 
33
- Điền vào template:
34
- - `[Task Name]` = `$ARGUMENTS`
35
- - `[date]` = ngày hiện tại
26
+ Đọc template từ `.dw/core/templates/v2/spec.md`, điền vào:
27
+ - `{task-name}` `$ARGUMENTS`
28
+ - `{YYYY-MM-DD}` (created) ngày hiện tại
29
+ - `status` → `Draft`
30
+ - `depth` → giá trị `workflow.default_depth` từ config
31
+ - `owner` → để trống (user tự điền)
32
+ - `related_adr` → `none`
33
+ - `target_ship` → `none`
36
34
 
37
- ### File plan.md
38
- Chọn template theo `project.language` (`.claude/templates/[lang]/task-plan.md`).
39
- - Nếu `tracking.estimation = true`: giữ nguyên section Estimation
40
- - Nếu `tracking.estimation = false`: xóa section Estimation
35
+ Ghi vào `{paths.tasks}/$ARGUMENTS/spec.md`.
41
36
 
42
- ### File progress.md
43
- Chọn template theo `project.language` (`.claude/templates/[lang]/task-progress.md`).
44
- - Điền `[Task Name]` = `$ARGUMENTS`
45
- - Điền `[date]` = ngày hiện tại
46
- - Nếu `tracking.log_work = true`: giữ section Effort Log
47
- - Nếu `tracking.log_work = false`: xóa section Effort Log
37
+ ### 2. Tạo tracking.md
38
+
39
+ Đọc template từ `.dw/core/templates/v2/tracking.md`, điền vào:
40
+ - `{task-name}` `$ARGUMENTS`
41
+ - `{YYYY-MM-DD}` (started & last_updated) ngày hiện tại
42
+ - `status` `Not Started`
43
+ - `current_phase` → `Init`
44
+ - `blockers` → `none`
45
+
46
+ Ghi vào `{paths.tasks}/$ARGUMENTS/tracking.md`.
47
+
48
+ ### 3. Cập nhật ACTIVE.md
49
+
50
+ Sau khi tạo xong 2 files, chạy `dw active` (hoặc invoke `writeActiveIndex`) để regenerate `{paths.tasks}/ACTIVE.md` — team index sẽ thấy task mới.
48
51
 
49
52
  ## Sau Khi Tạo
50
53
 
51
54
  Hiển thị cho user:
52
- 1. Danh sách files đã tạo
53
- 2. Workflow tiếp theo dựa trên `workflow.default_depth`:
54
55
 
55
- **quick**: "Tiếp theo: Code ngay hoặc `/dw:research $ARGUMENTS` nếu cần khảo sát"
56
- **standard**: "Tiếp theo: `/dw:research $ARGUMENTS` → `/dw:plan $ARGUMENTS` → approve → `/dw:execute $ARGUMENTS`"
57
- **thorough**: "Tiếp theo: `/dw:requirements $ARGUMENTS` → `/dw:research $ARGUMENTS` → `/dw:estimate $ARGUMENTS` → `/dw:plan $ARGUMENTS`"
56
+ 1. Danh sách files đã tạo:
57
+ - `{paths.tasks}/$ARGUMENTS/spec.md`
58
+ - `{paths.tasks}/$ARGUMENTS/tracking.md`
59
+
60
+ 2. Workflow tiếp theo theo `workflow.default_depth`:
61
+ - **quick**: "Code ngay hoặc `/dw:research $ARGUMENTS` nếu cần khảo sát."
62
+ - **standard**: "`/dw:research $ARGUMENTS` → `/dw:plan $ARGUMENTS` → approve → `/dw:execute $ARGUMENTS`"
63
+ - **thorough**: "`/dw:requirements $ARGUMENTS` → `/dw:research $ARGUMENTS` → `/dw:estimate $ARGUMENTS` → `/dw:plan $ARGUMENTS`"
64
+
65
+ 3. Nếu team có BA role: "BA có thể chạy `/dw:requirements $ARGUMENTS` trước để chuẩn bị yêu cầu."
66
+
67
+ ## Lưu ý v2 format
58
68
 
59
- Nếu team BA: "Gợi ý: BA thể chạy `/dw:requirements $ARGUMENTS` trước để chuẩn bị yêu cầu"
69
+ - `spec.md` ổn định sau khi approve subtasks + success criteria không thay đổi không có lý do.
70
+ - `tracking.md` mutable — cập nhật mỗi session (Subtask Progress table, Changelog, Friction Journal).
71
+ - Legacy 3-file format (`context + plan + progress`) vẫn được đọc bởi các skill khác để backward compat, nhưng **không tạo mới** cho task mới.