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.
- package/.claude/rules/dw.md +2 -0
- package/.claude/settings.json +9 -1
- package/.claude/skills/dw-execute/SKILL.md +30 -7
- package/.claude/skills/dw-handoff/SKILL.md +14 -3
- package/.claude/skills/dw-plan/SKILL.md +103 -6
- package/.claude/skills/dw-research/SKILL.md +18 -4
- package/.claude/skills/dw-retroactive/SKILL.md +84 -200
- package/.claude/skills/dw-task-init/SKILL.md +45 -33
- package/.dw/core/ROLES.md +257 -257
- package/MIGRATION-v1.3.md +5 -4
- package/package.json +1 -1
- package/src/commands/metrics.mjs +21 -1
- package/src/lib/cut-analysis.mjs +79 -0
|
@@ -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
|
|
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
|
|
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
|
|
35
|
+
- Nếu có `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
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
91
|
-
|
|
92
|
-
- **
|
|
93
|
-
- **
|
|
94
|
-
- **
|
|
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
|
-
##
|
|
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
|
-
|
|
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/` và **2 files** theo template v2 tại `.dw/core/templates/v2/`.
|
|
163
86
|
|
|
164
|
-
|
|
87
|
+
### 5a. spec.md (As-Built)
|
|
165
88
|
|
|
166
|
-
|
|
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
|
-
|
|
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
|
-
|
|
173
|
-
- [ ] [Antipatterns phát hiện]
|
|
174
|
-
- [ ] [Security concerns]
|
|
100
|
+
**Body sections** (lấp bằng findings retroactive):
|
|
175
101
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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 kê 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
|
-
|
|
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
|
-
|
|
121
|
+
Ghi vào `{paths.tasks}/$ARGUMENTS/spec.md`.
|
|
238
122
|
|
|
239
|
-
|
|
123
|
+
### 5b. tracking.md (As-Built)
|
|
240
124
|
|
|
241
|
-
|
|
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
|
-
|
|
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
|
-
|
|
256
|
-
|-----------|---------|--------|
|
|
257
|
-
| [date] | Feature được tạo | [author] |
|
|
258
|
-
| [date] | [notable change] | [author] |
|
|
135
|
+
**Body sections:**
|
|
259
136
|
|
|
260
|
-
|
|
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
|
-
|
|
263
|
-
- [ ] [Tech debt cần xử lý]
|
|
152
|
+
Ghi vào `{paths.tasks}/$ARGUMENTS/tracking.md`.
|
|
264
153
|
|
|
265
|
-
|
|
154
|
+
### 5c. Cập nhật ACTIVE.md
|
|
266
155
|
|
|
267
|
-
|
|
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
|
|
164
|
+
║ ✅ dw:retroactive complete: $ARGUMENTS
|
|
281
165
|
╠══════════════════════════════════════════════════════╣
|
|
282
166
|
║ Files khảo sát : [N files]
|
|
283
|
-
║ Git commits : [N
|
|
167
|
+
║ Git commits : [N, từ [date] đến [date]]
|
|
284
168
|
║ Maintainer chính : [author]
|
|
285
169
|
╠══════════════════════════════════════════════════════╣
|
|
286
|
-
║ Docs đã tạo:
|
|
287
|
-
║ {paths.tasks}/$ARGUMENTS
|
|
288
|
-
║ {paths.tasks}/$ARGUMENTS
|
|
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
|
-
║ →
|
|
301
|
-
║
|
|
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**:
|
|
310
|
-
- **Best-effort**: AI chỉ thấy
|
|
311
|
-
- **
|
|
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 là 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
|
+
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
|
|
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
|
-
- `
|
|
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
|
-
├──
|
|
24
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
34
|
-
- `
|
|
35
|
-
- `
|
|
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
|
-
|
|
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
|
-
###
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
69
|
+
- `spec.md` ổn định sau khi approve — subtasks + success criteria không thay đổi mà 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.
|