dw-kit 1.0.0
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/agents/executor.md +80 -0
- package/.claude/agents/planner.md +100 -0
- package/.claude/agents/quality-checker.md +86 -0
- package/.claude/agents/researcher.md +93 -0
- package/.claude/agents/reviewer.md +126 -0
- package/.claude/hooks/post-write.sh +62 -0
- package/.claude/hooks/pre-commit-gate.sh +90 -0
- package/.claude/hooks/progress-ping.sh +47 -0
- package/.claude/hooks/safety-guard.sh +54 -0
- package/.claude/rules/code-style.md +37 -0
- package/.claude/rules/commit-standards.md +37 -0
- package/.claude/rules/workflow-rules.md +62 -0
- package/.claude/settings.json +71 -0
- package/.claude/settings.local.json +12 -0
- package/.claude/skills/dw-arch-review/SKILL.md +119 -0
- package/.claude/skills/dw-archive/SKILL.md +81 -0
- package/.claude/skills/dw-commit/SKILL.md +81 -0
- package/.claude/skills/dw-config-init/SKILL.md +91 -0
- package/.claude/skills/dw-config-validate/SKILL.md +75 -0
- package/.claude/skills/dw-dashboard/SKILL.md +209 -0
- package/.claude/skills/dw-debug/SKILL.md +97 -0
- package/.claude/skills/dw-docs-update/SKILL.md +125 -0
- package/.claude/skills/dw-estimate/SKILL.md +90 -0
- package/.claude/skills/dw-execute/SKILL.md +98 -0
- package/.claude/skills/dw-flow/SKILL.md +274 -0
- package/.claude/skills/dw-handoff/SKILL.md +81 -0
- package/.claude/skills/dw-log-work/SKILL.md +69 -0
- package/.claude/skills/dw-plan/SKILL.md +125 -0
- package/.claude/skills/dw-plan/template-plan.md +47 -0
- package/.claude/skills/dw-requirements/SKILL.md +98 -0
- package/.claude/skills/dw-research/SKILL.md +98 -0
- package/.claude/skills/dw-research/template-research.md +51 -0
- package/.claude/skills/dw-review/SKILL.md +66 -0
- package/.claude/skills/dw-review/checklist.md +88 -0
- package/.claude/skills/dw-rollback/SKILL.md +90 -0
- package/.claude/skills/dw-sprint-review/SKILL.md +99 -0
- package/.claude/skills/dw-task-init/SKILL.md +59 -0
- package/.claude/skills/dw-test-plan/SKILL.md +113 -0
- package/.claude/skills/dw-thinking/SKILL.md +70 -0
- package/.claude/skills/dw-thinking/THINKING.md +91 -0
- package/.claude/skills/dw-upgrade/SKILL.md +82 -0
- package/.claude/templates/en/task-context.md +73 -0
- package/.claude/templates/en/task-plan.md +79 -0
- package/.claude/templates/en/task-progress.md +65 -0
- package/.claude/templates/pr-template.md +56 -0
- package/.claude/templates/task-context.md +73 -0
- package/.claude/templates/task-plan.md +79 -0
- package/.claude/templates/task-progress.md +65 -0
- package/.dw/adapters/claude-cli/extensions/.gitkeep +0 -0
- package/.dw/adapters/claude-cli/extensions/README.md +36 -0
- package/.dw/adapters/claude-cli/generated/README.md +23 -0
- package/.dw/adapters/claude-cli/generated/agents/.gitkeep +0 -0
- package/.dw/adapters/claude-cli/generated/skills/.gitkeep +0 -0
- package/.dw/adapters/claude-cli/overrides/README.md +35 -0
- package/.dw/adapters/claude-cli/overrides/agents/.gitkeep +0 -0
- package/.dw/adapters/claude-cli/overrides/skills/.gitkeep +0 -0
- package/.dw/adapters/generic/AGENT.md +169 -0
- package/.dw/adapters/generic/README.md +21 -0
- package/.dw/config/config.schema.json +121 -0
- package/.dw/config/dw.config.yml +82 -0
- package/.dw/config/presets/enterprise.yml +52 -0
- package/.dw/config/presets/small-team.yml +39 -0
- package/.dw/config/presets/solo-quick.yml +37 -0
- package/.dw/core/QUALITY.md +220 -0
- package/.dw/core/ROLES.md +257 -0
- package/.dw/core/THINKING.md +126 -0
- package/.dw/core/WORKFLOW.md +450 -0
- package/.dw/core/templates/vi/task-context.md +92 -0
- package/.dw/core/templates/vi/task-plan.md +93 -0
- package/.dw/core/templates/vi/task-progress.md +56 -0
- package/CLAUDE.md +98 -0
- package/LICENSE +21 -0
- package/README.md +183 -0
- package/bin/dw.mjs +28 -0
- package/package.json +52 -0
- package/scripts/e2e-local-check.sh +76 -0
- package/scripts/migrate-v03-to-v1.sh +243 -0
- package/scripts/upgrade.sh +246 -0
- package/setup.sh +382 -0
- package/src/cli.mjs +68 -0
- package/src/commands/doctor.mjs +149 -0
- package/src/commands/init.mjs +332 -0
- package/src/commands/migrate.mjs +215 -0
- package/src/commands/upgrade.mjs +262 -0
- package/src/commands/validate.mjs +102 -0
- package/src/lib/config.mjs +75 -0
- package/src/lib/copy.mjs +110 -0
- package/src/lib/platform.mjs +39 -0
- package/src/lib/ui.mjs +66 -0
- package/src/smoke-test.mjs +315 -0
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
<!-- core-version: 1.0 -->
|
|
2
|
+
<!-- last-updated: 2026-03-23 -->
|
|
3
|
+
|
|
4
|
+
# dw-kit Workflow Methodology
|
|
5
|
+
|
|
6
|
+
> **Platform-agnostic.** File này chứa methodology thuần — không có Claude syntax, không có tool names.
|
|
7
|
+
> Platform-specific execution nằm trong `.dw/adapters/`.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Mục Lục
|
|
12
|
+
|
|
13
|
+
- [Phase 1: Initialize](#phase-initialize)
|
|
14
|
+
- [Phase 2: Understand](#phase-understand)
|
|
15
|
+
- [Phase 3: Plan](#phase-plan)
|
|
16
|
+
- [Phase 4: Execute](#phase-execute)
|
|
17
|
+
- [Phase 5: Verify](#phase-verify)
|
|
18
|
+
- [Phase 6: Close](#phase-close)
|
|
19
|
+
- [Standalone: Debug](#standalone-debug)
|
|
20
|
+
- [Standalone: Reports](#standalone-reports)
|
|
21
|
+
- [Meta: Config & Maintenance](#meta-config)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Routing: Chọn Depth Phù Hợp
|
|
26
|
+
|
|
27
|
+
Đọc `default_depth` từ config. AI sẽ recommend depth dựa trên assessment.
|
|
28
|
+
`default_depth` là baseline cho project, nhưng **depth có thể override theo từng task**.
|
|
29
|
+
|
|
30
|
+
| Depth | Khi nào dùng | Phases bắt buộc |
|
|
31
|
+
|-------|-------------|-----------------|
|
|
32
|
+
| `quick` | ≤2 files, hotfix, familiar module (touched < 7 ngày) | Understand → Execute → Close |
|
|
33
|
+
| `standard` | 3-5 files, module mới, unfamiliar code | Tất cả 6 phases |
|
|
34
|
+
| `thorough` | 6+ files, API contract changes, DB schema, security-sensitive | Tất cả 6 phases + arch-review + test-plan |
|
|
35
|
+
|
|
36
|
+
**Criteria AI dùng để assess (facts, không intuition):**
|
|
37
|
+
- File count thay đổi
|
|
38
|
+
- API contract changes (public endpoints, exported functions)
|
|
39
|
+
- Database schema changes
|
|
40
|
+
- Security-sensitive code (auth, crypto, permissions)
|
|
41
|
+
- Module familiarity (git blame xem last touched)
|
|
42
|
+
|
|
43
|
+
### Task-Level Depth Override (Khuyến nghị)
|
|
44
|
+
|
|
45
|
+
Mỗi task nên có depth riêng, không khóa cứng theo project:
|
|
46
|
+
|
|
47
|
+
- **Default**: dùng `workflow.default_depth` từ `.dw/config/dw.config.yml`
|
|
48
|
+
- **Override**: ghi trực tiếp trong task docs (ví dụ `context.md`)
|
|
49
|
+
- **Rule**: task nào có API/DB/security scope thì có thể nâng lên `thorough` dù project đang `standard`
|
|
50
|
+
|
|
51
|
+
Ưu tiên thực tế: `default_depth` giúp setup nhanh, còn execution quyết định theo rủi ro từng task.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
<!-- @phase:initialize -->
|
|
56
|
+
## Phase 1: Initialize
|
|
57
|
+
|
|
58
|
+
**Mục tiêu**: Chuẩn bị workspace và hiểu rõ yêu cầu trước khi bắt đầu.
|
|
59
|
+
|
|
60
|
+
### Guided Questions
|
|
61
|
+
|
|
62
|
+
Trả lời trước khi tiếp tục:
|
|
63
|
+
|
|
64
|
+
1. **Task là gì?** Mô tả ngắn 1-2 câu.
|
|
65
|
+
2. **Output mong đợi là gì?** Hành vi nào cần thay đổi / tính năng nào cần thêm?
|
|
66
|
+
3. **Ai sẽ bị ảnh hưởng?** User cuối / developer / system?
|
|
67
|
+
4. **Có deadline không?** Nếu có, ảnh hưởng đến depth choice?
|
|
68
|
+
5. **Có dependencies không?** Task này chờ task khác, hoặc task khác chờ task này?
|
|
69
|
+
6. **Task depth override không?** (`quick|standard|thorough`) Nếu có, ghi rõ lý do.
|
|
70
|
+
|
|
71
|
+
### Output Phase 1
|
|
72
|
+
|
|
73
|
+
- [ ] Task docs tạo tại `{paths.tasks}/[task-name]/`
|
|
74
|
+
- [ ] 3 files: `[name]-context.md`, `[name]-plan.md`, `[name]-progress.md`
|
|
75
|
+
- [ ] Context file có: yêu cầu gốc + scope assessment + depth recommendation
|
|
76
|
+
|
|
77
|
+
### Readiness Check
|
|
78
|
+
|
|
79
|
+
Đủ điều kiện sang Phase 2 khi:
|
|
80
|
+
- Yêu cầu rõ ràng (không ambiguous)
|
|
81
|
+
- Depth đã chọn
|
|
82
|
+
- Task docs tạo xong
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
<!-- @phase:understand -->
|
|
87
|
+
## Phase 2: Understand
|
|
88
|
+
|
|
89
|
+
**Mục tiêu**: Khảo sát codebase để hiểu đầy đủ trước khi thiết kế solution. **Không code ở phase này.**
|
|
90
|
+
|
|
91
|
+
### Quy Trình Khảo Sát
|
|
92
|
+
|
|
93
|
+
1. **Breadth first**: Tìm tất cả files, modules liên quan đến task
|
|
94
|
+
2. **Dependency mapping**: Ai gọi gì, data đi từ đâu đến đâu
|
|
95
|
+
3. **Pattern recognition**: Conventions, design patterns trong project hiện tại
|
|
96
|
+
4. **History**: Thay đổi gần đây liên quan (git log/blame)
|
|
97
|
+
5. **Test coverage**: Hiện tại cover gì, thiếu gì
|
|
98
|
+
6. **Gaps**: Gì chưa rõ, cần làm rõ trước khi plan
|
|
99
|
+
|
|
100
|
+
### Guided Questions
|
|
101
|
+
|
|
102
|
+
Phải có câu trả lời cho tất cả trước khi kết thúc phase:
|
|
103
|
+
|
|
104
|
+
1. **Files nào sẽ thay đổi?** Liệt kê cụ thể.
|
|
105
|
+
2. **Ai phụ thuộc vào những files đó?** Upstream và downstream.
|
|
106
|
+
3. **Pattern hiện tại là gì?** Tôi nên follow pattern nào?
|
|
107
|
+
4. **Test coverage hiện tại?** Thiếu ở đâu?
|
|
108
|
+
5. **Có gotchas/tech debt nào liên quan?** Git history có gì cảnh báo?
|
|
109
|
+
6. **Giả định nào tôi đang dùng?** Có thể sai không?
|
|
110
|
+
|
|
111
|
+
### Context Completion Protocol
|
|
112
|
+
|
|
113
|
+
Khi context thiếu, AI không dừng và chờ. AI:
|
|
114
|
+
1. Phân tích codebase để pre-fill answers
|
|
115
|
+
2. Trình bày: "Tôi tìm được: [findings]. Xác nhận hoặc sửa?"
|
|
116
|
+
3. Developer confirm/correct
|
|
117
|
+
4. Proceed
|
|
118
|
+
|
|
119
|
+
### Output Phase 2
|
|
120
|
+
|
|
121
|
+
- [ ] `[name]-context.md` điền đầy đủ
|
|
122
|
+
- [ ] Files liên quan: listed với vai trò rõ ràng
|
|
123
|
+
- [ ] Kiến trúc hiện tại: documented (diagram nếu cần)
|
|
124
|
+
- [ ] Gaps: identified, resolved hoặc flagged
|
|
125
|
+
- [ ] Test coverage: assessed
|
|
126
|
+
|
|
127
|
+
### Readiness Check
|
|
128
|
+
|
|
129
|
+
Đủ điều kiện sang Phase 3 khi:
|
|
130
|
+
- Tất cả 6 guided questions có câu trả lời
|
|
131
|
+
- Không còn câu hỏi critical chưa giải đáp
|
|
132
|
+
- Files liên quan đã identified
|
|
133
|
+
|
|
134
|
+
> **Quick depth**: Nếu task đơn giản và familiar, có thể kết hợp Phase 2+3 nhanh.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
<!-- @phase:plan -->
|
|
139
|
+
## Phase 3: Plan
|
|
140
|
+
|
|
141
|
+
**Mục tiêu**: Thiết kế solution trước khi viết một dòng code. **Không implement ở phase này.**
|
|
142
|
+
|
|
143
|
+
### Deep Analysis Protocol (thorough depth)
|
|
144
|
+
|
|
145
|
+
Trước khi viết plan, bắt buộc với `thorough` depth:
|
|
146
|
+
|
|
147
|
+
1. **Liệt kê ≥3 approaches** — kể cả những approach không obvious
|
|
148
|
+
2. **Với mỗi approach**: assumptions, failure modes, trade-offs
|
|
149
|
+
3. **Devil's advocate**: lý do mạnh nhất để KHÔNG chọn approach đang nghiêng về
|
|
150
|
+
4. **Chỉ sau khi exhausted góc nhìn**, chọn approach và viết plan
|
|
151
|
+
|
|
152
|
+
### Guided Questions
|
|
153
|
+
|
|
154
|
+
1. **Tại sao approach này?** So với alternatives, trade-offs là gì?
|
|
155
|
+
2. **Subtasks có đúng thứ tự không?** Schema/data → logic → API → tests → docs
|
|
156
|
+
3. **Mỗi subtask có acceptance criteria đo lường được không?**
|
|
157
|
+
4. **Risk lớn nhất là gì?** Có plan B không?
|
|
158
|
+
5. **Breaking changes không?** Nếu có, migration strategy là gì?
|
|
159
|
+
6. **Estimate có realistic không?** So với tasks tương tự trước đây?
|
|
160
|
+
|
|
161
|
+
### Subtask Granularity
|
|
162
|
+
|
|
163
|
+
Mỗi subtask phải:
|
|
164
|
+
- Thay đổi ≤3 files
|
|
165
|
+
- Hoàn thành trong ≤4 giờ
|
|
166
|
+
- Có acceptance criteria đo lường được
|
|
167
|
+
- Commit được độc lập
|
|
168
|
+
|
|
169
|
+
**Thứ tự chuẩn:**
|
|
170
|
+
1. Schema/data model changes
|
|
171
|
+
2. Service/business logic
|
|
172
|
+
3. API/interface layer
|
|
173
|
+
4. Tests (hoặc test-first nếu TDD)
|
|
174
|
+
5. Documentation
|
|
175
|
+
|
|
176
|
+
### Role Variants
|
|
177
|
+
|
|
178
|
+
- **Nếu có TL**: Plan DỪNG chờ TL arch-review trước khi Execute
|
|
179
|
+
- **Nếu có QC**: QC tạo test plan song song với dev plan
|
|
180
|
+
- **Nếu có BA**: BA review requirements trước khi plan
|
|
181
|
+
|
|
182
|
+
### Output Phase 3
|
|
183
|
+
|
|
184
|
+
- [ ] `[name]-plan.md` hoàn chỉnh
|
|
185
|
+
- [ ] ≥2 approaches so sánh
|
|
186
|
+
- [ ] Subtasks với dependencies, criteria, estimate
|
|
187
|
+
- [ ] Risk table với mitigation
|
|
188
|
+
- [ ] Edge cases listed
|
|
189
|
+
- [ ] **DỪNG**: chờ human approve trước khi Execute
|
|
190
|
+
|
|
191
|
+
### Readiness Check
|
|
192
|
+
|
|
193
|
+
Đủ điều kiện sang Phase 4 khi:
|
|
194
|
+
- Plan có human approval (explicit "approved" hoặc "go ahead")
|
|
195
|
+
- Nếu có TL: TL đã review architecture decisions
|
|
196
|
+
- Risk table không có unmitigated critical risks
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
<!-- @phase:execute -->
|
|
201
|
+
## Phase 4: Execute
|
|
202
|
+
|
|
203
|
+
**Mục tiêu**: Implement theo plan đã approve. **Một subtask = một commit.**
|
|
204
|
+
|
|
205
|
+
### TDD Workflow (mỗi subtask)
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
1. Viết test trước (failing) → RED
|
|
209
|
+
2. Implement tối thiểu để test pass → GREEN
|
|
210
|
+
3. Refactor nếu cần → REFACTOR
|
|
211
|
+
4. Commit subtask
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Nếu task không có tests: viết tests sau implement, nhưng TRƯỚC khi mark subtask Done.
|
|
215
|
+
|
|
216
|
+
### Execution Rules
|
|
217
|
+
|
|
218
|
+
1. **Đọc plan trước khi bắt đầu mỗi subtask** — không làm từ memory
|
|
219
|
+
2. **Chỉ làm đúng scope của subtask** — không "while I'm here" fixes
|
|
220
|
+
3. **Gặp ambiguity → DỪNG và hỏi** — không tự suy diễn cho thay đổi lớn
|
|
221
|
+
4. **Phát hiện scope thay đổi → cập nhật plan, hỏi human** trước khi tiếp tục
|
|
222
|
+
5. **Mỗi subtask done = update progress file + commit**
|
|
223
|
+
|
|
224
|
+
### Khi Gặp Blockers
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
1. Ghi blocker vào progress file (mô tả, context)
|
|
228
|
+
2. Xác định: blocker có thể self-resolve không?
|
|
229
|
+
- Có: document approach, proceed
|
|
230
|
+
- Không: DỪNG, escalate, ghi next-steps rõ ràng
|
|
231
|
+
3. Không bao giờ silent-skip subtask
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Output Phase 4
|
|
235
|
+
|
|
236
|
+
- [ ] Mỗi subtask: code implemented + tests pass
|
|
237
|
+
- [ ] Progress file cập nhật sau mỗi subtask
|
|
238
|
+
- [ ] Mỗi subtask: 1 commit (format chuẩn)
|
|
239
|
+
- [ ] Không còn debug code (console.log, debugger)
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
<!-- @phase:verify -->
|
|
244
|
+
## Phase 5: Verify
|
|
245
|
+
|
|
246
|
+
**Mục tiêu**: Đảm bảo implementation đúng, đủ, và safe trước khi merge.
|
|
247
|
+
|
|
248
|
+
### 4-Layer Quality Check
|
|
249
|
+
|
|
250
|
+
**Layer 1: Self-review** (luôn bắt buộc)
|
|
251
|
+
- [ ] Logic đúng? Edge cases handled?
|
|
252
|
+
- [ ] Tests cover happy path + error cases + edge cases?
|
|
253
|
+
- [ ] Không có debug code còn sót?
|
|
254
|
+
- [ ] Naming rõ ràng, self-documenting?
|
|
255
|
+
|
|
256
|
+
**Layer 2: Automated gates** (nếu `test_command` + `lint_command` configured)
|
|
257
|
+
- [ ] Tests pass: `{quality.test_command}`
|
|
258
|
+
- [ ] Lint pass: `{quality.lint_command}`
|
|
259
|
+
- [ ] No sensitive data in diff
|
|
260
|
+
|
|
261
|
+
**Layer 3: Peer/TL review** (nếu `standard` hoặc `thorough` depth + có peer/TL)
|
|
262
|
+
- [ ] TL review architecture decisions
|
|
263
|
+
- [ ] Peer code review theo checklist
|
|
264
|
+
- [ ] A/B testing cho uncertain decisions (nếu applicable)
|
|
265
|
+
- [ ] Decisions logged trong task docs
|
|
266
|
+
|
|
267
|
+
**Layer 4: QA confirmation** (nếu `thorough` depth + có QC role)
|
|
268
|
+
- [ ] QC review against test plan
|
|
269
|
+
- [ ] QC sign-off là explicit gate (không tự approve)
|
|
270
|
+
- [ ] Regression checks pass
|
|
271
|
+
|
|
272
|
+
### Review Output Format
|
|
273
|
+
|
|
274
|
+
Reviewer báo cáo phải phân loại theo mức độ:
|
|
275
|
+
- **CRITICAL**: Phải sửa trước merge
|
|
276
|
+
- **WARNING**: Nên sửa
|
|
277
|
+
- **SUGGESTION**: Cân nhắc
|
|
278
|
+
|
|
279
|
+
### Output Phase 5
|
|
280
|
+
|
|
281
|
+
- [ ] Tất cả CRITICAL issues resolved
|
|
282
|
+
- [ ] Automated gates pass (nếu configured)
|
|
283
|
+
- [ ] Review sign-off (peer/TL/QC theo depth)
|
|
284
|
+
- [ ] Living docs cập nhật (nếu `thorough` và có thay đổi architecture/API)
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
<!-- @phase:close -->
|
|
289
|
+
## Phase 6: Close
|
|
290
|
+
|
|
291
|
+
**Mục tiêu**: Kết thúc task đúng cách — commit, track, handoff, archive.
|
|
292
|
+
|
|
293
|
+
### Commit Convention
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
<type>(<scope>): <mô tả ngắn ≤72 ký tự>
|
|
297
|
+
|
|
298
|
+
[Chi tiết nếu cần]
|
|
299
|
+
|
|
300
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `style`, `perf`
|
|
304
|
+
|
|
305
|
+
**Pre-commit checklist:**
|
|
306
|
+
- [ ] Không có debug code
|
|
307
|
+
- [ ] Không có sensitive data (passwords, API keys, tokens)
|
|
308
|
+
- [ ] Tests pass
|
|
309
|
+
- [ ] Commit message rõ ràng
|
|
310
|
+
|
|
311
|
+
### Effort Tracking (nếu enabled)
|
|
312
|
+
|
|
313
|
+
```
|
|
314
|
+
Estimate (Phase 3) → Log Actual (Phase 4) → Compare (Phase 6)
|
|
315
|
+
→ Feed into velocity → Improve future estimates
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Handoff Protocol
|
|
319
|
+
|
|
320
|
+
Cuối session (không kết thúc không handoff):
|
|
321
|
+
1. **Auto-summarize**: done / in-progress / blocked
|
|
322
|
+
2. **Git state**: uncommitted changes, recent commits
|
|
323
|
+
3. **Next steps**: ordered action list với context
|
|
324
|
+
4. **Context anchors**: key decisions và tại sao
|
|
325
|
+
|
|
326
|
+
### Archive (khi task hoàn toàn done)
|
|
327
|
+
|
|
328
|
+
Move task docs từ `{paths.tasks}/` → `{paths.tasks}/archive/` sau khi:
|
|
329
|
+
- PR merged
|
|
330
|
+
- QA sign-off (nếu applicable)
|
|
331
|
+
- Docs updated
|
|
332
|
+
|
|
333
|
+
### Output Phase 6
|
|
334
|
+
|
|
335
|
+
- [ ] Final commit(s) với message chuẩn
|
|
336
|
+
- [ ] Progress file: trạng thái = Done, kết thúc date filled
|
|
337
|
+
- [ ] Effort log updated (nếu enabled)
|
|
338
|
+
- [ ] Handoff notes ghi (nếu bàn giao)
|
|
339
|
+
- [ ] Task archived (sau merge)
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
<!-- @standalone:debug -->
|
|
344
|
+
## Standalone: Debug
|
|
345
|
+
|
|
346
|
+
**Dùng khi**: Gặp bug, test fail, hoặc behavior bất thường. Không cần qua full workflow.
|
|
347
|
+
|
|
348
|
+
### Quy Trình: Investigate → Diagnose → Fix
|
|
349
|
+
|
|
350
|
+
**Bước 1: Investigate**
|
|
351
|
+
- Reproduce issue: exact steps, exact error message
|
|
352
|
+
- Scope: xảy ra ở đâu? Khi nào? Frequency?
|
|
353
|
+
- Recent changes: git log trong khu vực liên quan
|
|
354
|
+
- Gather evidence: logs, stack traces, error messages với file:line
|
|
355
|
+
|
|
356
|
+
**Bước 2: Diagnose**
|
|
357
|
+
- Hypothesis: "Lỗi có thể do X vì Y"
|
|
358
|
+
- Verify: test hypothesis với minimal evidence
|
|
359
|
+
- Root cause: phân biệt symptom vs cause
|
|
360
|
+
- Đừng fix symptom nếu chưa biết root cause
|
|
361
|
+
|
|
362
|
+
**Bước 3: Fix**
|
|
363
|
+
- Fix root cause (không symptom)
|
|
364
|
+
- Test fix: reproduce original issue → không còn reproduce
|
|
365
|
+
- Regression: kiểm tra fix không break thứ khác
|
|
366
|
+
- Commit với message rõ: "fix(scope): mô tả vấn đề và cách fix"
|
|
367
|
+
|
|
368
|
+
### Debug Guided Questions
|
|
369
|
+
|
|
370
|
+
1. **Exact error**: message chính xác là gì? Stack trace ở đâu?
|
|
371
|
+
2. **Reproducible**: luôn xảy ra hay intermittent? Điều kiện nào?
|
|
372
|
+
3. **Recent changes**: git log trong khu vực này có thay đổi gì gần đây?
|
|
373
|
+
4. **Expected vs actual**: behavior mong đợi là gì, thực tế là gì?
|
|
374
|
+
5. **Root cause hypothesis**: "Tôi nghĩ lỗi do ___ vì ___"
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
<!-- @standalone:reports -->
|
|
379
|
+
## Standalone: Reports
|
|
380
|
+
|
|
381
|
+
**Dùng khi**: PM cần dashboard, team cần sprint review.
|
|
382
|
+
|
|
383
|
+
### Dashboard Report
|
|
384
|
+
|
|
385
|
+
Tổng hợp cho PM:
|
|
386
|
+
- Tasks status: done / in-progress / blocked / planned
|
|
387
|
+
- Velocity: tasks completed per sprint
|
|
388
|
+
- Effort: estimate vs actual (nếu tracking enabled)
|
|
389
|
+
- Quality metrics: bug rate, review findings trend
|
|
390
|
+
- DORA metrics (nếu available): deployment frequency, lead time, MTTR, change failure rate
|
|
391
|
+
|
|
392
|
+
### Sprint Review Report
|
|
393
|
+
|
|
394
|
+
Tổng kết sprint:
|
|
395
|
+
- Completed: tasks done, features delivered
|
|
396
|
+
- Incomplete: tasks carried over và lý do
|
|
397
|
+
- Metrics: velocity, quality indicators
|
|
398
|
+
- Lessons learned: gì worked, gì didn't
|
|
399
|
+
- Next sprint: items đề xuất, dependencies
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
<!-- @meta:config -->
|
|
404
|
+
## Meta: Config & Maintenance
|
|
405
|
+
|
|
406
|
+
### Config Validation
|
|
407
|
+
|
|
408
|
+
Trước khi dùng toolkit, validate config:
|
|
409
|
+
- Tất cả required keys có mặt?
|
|
410
|
+
- Enum values hợp lệ? (depth, roles, estimation_unit)
|
|
411
|
+
- `team.roles` listed có phù hợp với team thực tế?
|
|
412
|
+
- `quality.test_command` và `lint_command` chạy được không?
|
|
413
|
+
|
|
414
|
+
### Upgrade Toolkit
|
|
415
|
+
|
|
416
|
+
Khi có version mới:
|
|
417
|
+
1. Check compatibility: core version vs platform version
|
|
418
|
+
2. Preview changes: `--dry-run` trước khi apply
|
|
419
|
+
3. Backup config trước khi upgrade
|
|
420
|
+
4. Apply: generated/ files update, overrides/ giữ nguyên
|
|
421
|
+
5. Verify: smoke tests sau upgrade
|
|
422
|
+
|
|
423
|
+
### Rollback
|
|
424
|
+
|
|
425
|
+
Nếu plan sai hoặc execute sai hướng:
|
|
426
|
+
1. Identify: subtask nào bắt đầu đi sai?
|
|
427
|
+
2. Revert: task docs về trạng thái đúng
|
|
428
|
+
3. Re-plan từ điểm đó
|
|
429
|
+
4. Không silent-continue khi biết hướng sai
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Appendix: Depth × Phase Matrix
|
|
434
|
+
|
|
435
|
+
| Phase | Quick | Standard | Thorough | Requires |
|
|
436
|
+
|-------|-------|----------|----------|---------|
|
|
437
|
+
| Initialize | ✓ | ✓ | ✓ | dev |
|
|
438
|
+
| Understand | ✓ | ✓ | ✓ | dev |
|
|
439
|
+
| Plan | skip | ✓ | ✓ | dev |
|
|
440
|
+
| Arch Review | skip | if TL | ✓ | techlead |
|
|
441
|
+
| Test Plan | skip | skip | ✓ | qc |
|
|
442
|
+
| Execute TDD | ✓ | ✓ | ✓ | dev |
|
|
443
|
+
| Peer Review | self | ✓ | ✓ | dev+peer |
|
|
444
|
+
| QA Confirm | skip | skip | ✓ | qc |
|
|
445
|
+
| Living Docs | skip | skip | ✓ | dev |
|
|
446
|
+
| Estimation | skip | optional | ✓ | dev |
|
|
447
|
+
| Log Work | skip | optional | ✓ | dev |
|
|
448
|
+
| Dashboard | skip | skip | ✓ | pm |
|
|
449
|
+
|
|
450
|
+
> Nếu role không có mặt trong `team.roles`, phase đó gracefully degrade (không block).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Context: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Ngày khảo sát: [date]
|
|
4
|
+
## Depth: quick | standard | thorough
|
|
5
|
+
## Depth Source: default (from config) | override (task-specific)
|
|
6
|
+
## Override Reason (nếu có): [ví dụ: API contract change / DB migration / security-sensitive]
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Yêu Cầu
|
|
11
|
+
|
|
12
|
+
> [Mô tả yêu cầu gốc. Nếu có BA: link đến requirements doc]
|
|
13
|
+
|
|
14
|
+
**Acceptance criteria cấp cao:**
|
|
15
|
+
- Given [trạng thái ban đầu], When [action], Then [kết quả mong đợi]
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Codebase Analysis
|
|
20
|
+
|
|
21
|
+
### Scope Assessment
|
|
22
|
+
|
|
23
|
+
AI đã phân tích codebase và tìm thấy:
|
|
24
|
+
|
|
25
|
+
**Files liên quan:**
|
|
26
|
+
| # | File | Vai trò | Thay đổi? | Confidence |
|
|
27
|
+
|---|------|---------|-----------|-----------|
|
|
28
|
+
| 1 | | | Có / Không / Chưa rõ | HIGH / MED / LOW |
|
|
29
|
+
|
|
30
|
+
> Xác nhận hoặc sửa danh sách trên trước khi tiếp tục.
|
|
31
|
+
|
|
32
|
+
### Kiến Trúc Hiện Tại
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
[Mô tả luồng — AI điền sau khi research]
|
|
36
|
+
Input → [Module A] → [Module B] → Output
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Data Flow
|
|
40
|
+
|
|
41
|
+
- **Input**: [từ đâu, format gì]
|
|
42
|
+
- **Processing**: [logic chính]
|
|
43
|
+
- **Output**: [đi đâu, format gì]
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Dependencies
|
|
48
|
+
|
|
49
|
+
**Upstream** (task này phụ thuộc vào):
|
|
50
|
+
- [ ] [Module/API] — [vai trò]
|
|
51
|
+
|
|
52
|
+
**Downstream** (bị ảnh hưởng bởi task):
|
|
53
|
+
- [ ] [Module/API] — [ảnh hưởng thế nào]
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Patterns Phát Hiện
|
|
58
|
+
|
|
59
|
+
| Pattern | Mô tả | Ví dụ (file:line) | Follow? |
|
|
60
|
+
|---------|--------|-------------------|---------|
|
|
61
|
+
| | | | Có / Không |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Test Coverage
|
|
66
|
+
|
|
67
|
+
- Tests hiện tại: [có/không, file nào]
|
|
68
|
+
- Coverage: [% hoặc mô tả]
|
|
69
|
+
- Gaps: [thiếu test ở đâu — cần bổ sung]
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Giả Định
|
|
74
|
+
|
|
75
|
+
> AI tự động điền dựa trên codebase analysis. Xác nhận hoặc sửa.
|
|
76
|
+
|
|
77
|
+
| # | Giả định | Nguồn | Có thể sai không? |
|
|
78
|
+
|---|----------|-------|-------------------|
|
|
79
|
+
| 1 | | Code analysis | Thấp / Trung / Cao |
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Chưa Rõ — Cần Làm Rõ Trước Khi Plan
|
|
84
|
+
|
|
85
|
+
- [ ] [Câu hỏi 1] — ảnh hưởng đến approach nếu sai
|
|
86
|
+
- [ ] [Câu hỏi 2]
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Ghi Chú
|
|
91
|
+
|
|
92
|
+
[Gotchas, tech debt liên quan, lịch sử thay đổi gần đây]
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Plan: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Ngày tạo: [date]
|
|
4
|
+
## Trạng thái: Draft → cần approve
|
|
5
|
+
## Approved by: —
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Tóm Tắt Approach
|
|
10
|
+
|
|
11
|
+
[1-2 đoạn: tại sao approach này được chọn, alternatives đã bị loại vì lý do gì]
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Phương Án Đã Xem Xét
|
|
16
|
+
|
|
17
|
+
| # | Approach | Ưu điểm | Nhược điểm | Assumptions | Chọn? |
|
|
18
|
+
|---|----------|---------|------------|-------------|-------|
|
|
19
|
+
| 1 | [Option A] | | | | **Chọn** |
|
|
20
|
+
| 2 | [Option B] | | | | Loại — vì: |
|
|
21
|
+
| 3 | [Option C] | | | | Loại — vì: |
|
|
22
|
+
|
|
23
|
+
**Devil's Advocate**: Lý do mạnh nhất để KHÔNG chọn Option A:
|
|
24
|
+
> [điền vào]
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Subtasks
|
|
29
|
+
|
|
30
|
+
### ST-1: [Tên subtask]
|
|
31
|
+
- **Mô tả**: [actionable, cụ thể]
|
|
32
|
+
- **Files thay đổi**: [`path/to/file.ts`]
|
|
33
|
+
- **Acceptance Criteria**:
|
|
34
|
+
- Given [condition], When [action], Then [outcome]
|
|
35
|
+
- [ ] [Tiêu chí đo lường được]
|
|
36
|
+
- **Dependencies**: none
|
|
37
|
+
- **Estimate**: [giờ — nếu tracking bật]
|
|
38
|
+
|
|
39
|
+
### ST-2: [Tên subtask]
|
|
40
|
+
- **Mô tả**: ...
|
|
41
|
+
- **Files thay đổi**: [...]
|
|
42
|
+
- **Acceptance Criteria**:
|
|
43
|
+
- [ ] ...
|
|
44
|
+
- **Dependencies**: ST-1
|
|
45
|
+
|
|
46
|
+
<!-- Thêm subtasks theo nhu cầu. Tối đa ≤3 files, ≤4h per subtask -->
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Dependency Graph
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
ST-1 → ST-2 → ST-3
|
|
54
|
+
↓
|
|
55
|
+
ST-4
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Rủi Ro & Giả Định
|
|
61
|
+
|
|
62
|
+
| # | Loại | Mô tả | Xác suất | Tác động | Giảm thiểu |
|
|
63
|
+
|---|------|--------|----------|----------|------------|
|
|
64
|
+
| 1 | Giả định | | Thấp/TB/Cao | Thấp/TB/Cao | Kiểm chứng bằng: |
|
|
65
|
+
| 2 | Rủi ro kỹ thuật | | | | |
|
|
66
|
+
| 3 | Rủi ro security | | | | |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Edge Cases
|
|
71
|
+
|
|
72
|
+
- [ ] [Edge case — khi nào xảy ra, xử lý thế nào]
|
|
73
|
+
- [ ] [Null/empty input]
|
|
74
|
+
- [ ] [Concurrent operations]
|
|
75
|
+
- [ ] [Rollback scenario]
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Tác Động Hệ Thống
|
|
80
|
+
|
|
81
|
+
- **Modules bị ảnh hưởng**: [danh sách]
|
|
82
|
+
- **API changes**: [endpoints mới/sửa/xóa]
|
|
83
|
+
- **DB changes**: [migration cần thiết?]
|
|
84
|
+
- **Backward compatibility**: [Có / Không — nếu không: migration plan?]
|
|
85
|
+
- **Breaking changes**: [nếu có, ai bị ảnh hưởng]
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Góc Nhìn & Trade-offs
|
|
90
|
+
|
|
91
|
+
| Quyết định | User | Developer | Security | Ops |
|
|
92
|
+
|-----------|------|-----------|----------|-----|
|
|
93
|
+
| [Quyết định 1] | | | | |
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Progress: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Trạng thái: Not Started | In Progress | Blocked | Done
|
|
4
|
+
## Branch: [branch-name]
|
|
5
|
+
## Sprint: [sprint-id — nếu dùng sprint tracking]
|
|
6
|
+
## Bắt đầu: [date]
|
|
7
|
+
## Kết thúc: —
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Subtask Progress
|
|
12
|
+
|
|
13
|
+
| # | Subtask | Trạng thái | Commit | Ghi chú |
|
|
14
|
+
|---|---------|-----------|--------|---------|
|
|
15
|
+
| ST-1 | [tên] | Pending | | |
|
|
16
|
+
| ST-2 | [tên] | Pending | | |
|
|
17
|
+
|
|
18
|
+
**Trạng thái hợp lệ**: Pending → In Progress → Done | Blocked | Skipped
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Changelog
|
|
23
|
+
|
|
24
|
+
Ghi lại mọi thay đổi so với plan gốc.
|
|
25
|
+
|
|
26
|
+
### [date] — [mô tả thay đổi]
|
|
27
|
+
- **Lý do**: [tại sao thay đổi]
|
|
28
|
+
- **Ảnh hưởng**: [subtasks nào bị ảnh hưởng]
|
|
29
|
+
- **Quyết định bởi**: [human / agent / cả hai]
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Phát Hiện Mới
|
|
34
|
+
|
|
35
|
+
| # | Phát hiện | Ảnh hưởng | Hành động | Trạng thái |
|
|
36
|
+
|---|-----------|-----------|-----------|-----------|
|
|
37
|
+
| 1 | | | | Resolved / Open |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Blockers
|
|
42
|
+
|
|
43
|
+
- [ ] [Blocker 1] — owner: [ai] — since: [date]
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Handoff Notes
|
|
48
|
+
|
|
49
|
+
*Điền trước khi kết thúc session.*
|
|
50
|
+
|
|
51
|
+
### Session [date]
|
|
52
|
+
- **Đang ở**: ST-[N] — [trạng thái cụ thể]
|
|
53
|
+
- **Context quan trọng**: [decisions, gotchas không obvious từ code]
|
|
54
|
+
- **Bước tiếp theo**: [việc cần làm ngay khi resume]
|
|
55
|
+
- **Cẩn thận**: [warnings, pitfalls đã gặp]
|
|
56
|
+
- **Git state**: `git status` output nếu có uncommitted changes
|