dw-kit 1.2.1 → 1.3.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/hooks/post-write.sh +64 -58
- package/.claude/hooks/pre-commit-gate.sh +96 -90
- package/.claude/hooks/privacy-block.sh +99 -94
- package/.claude/hooks/progress-ping.sh +53 -47
- package/.claude/hooks/safety-guard.sh +60 -54
- package/.claude/hooks/scout-block.sh +88 -82
- package/.claude/hooks/session-init.sh +6 -0
- package/.claude/hooks/stop-check.sh +88 -36
- package/.claude/hooks/telemetry-log.sh +34 -0
- package/.claude/rules/dw.md +136 -0
- package/.claude/settings.json +20 -1
- package/.claude/skills/dw-arch-review/SKILL.md +119 -119
- package/.claude/skills/dw-archive/SKILL.md +81 -81
- package/.claude/skills/dw-commit/SKILL.md +81 -81
- package/.claude/skills/dw-config-init/SKILL.md +91 -91
- package/.claude/skills/dw-config-validate/SKILL.md +75 -75
- package/.claude/skills/dw-dashboard/SKILL.md +209 -209
- package/.claude/skills/dw-debug/SKILL.md +97 -97
- package/.claude/skills/dw-decision/SKILL.md +116 -0
- package/.claude/skills/dw-docs-update/SKILL.md +125 -125
- package/.claude/skills/dw-estimate/SKILL.md +90 -90
- package/.claude/skills/dw-execute/SKILL.md +98 -98
- package/.claude/skills/dw-flow/SKILL.md +274 -274
- package/.claude/skills/dw-handoff/SKILL.md +81 -81
- package/.claude/skills/dw-kit-report/SKILL.md +152 -152
- package/.claude/skills/dw-log-work/SKILL.md +69 -69
- package/.claude/skills/dw-onboard/SKILL.md +201 -201
- package/.claude/skills/dw-plan/SKILL.md +125 -125
- package/.claude/skills/dw-prompt/SKILL.md +62 -62
- package/.claude/skills/dw-requirements/SKILL.md +98 -98
- package/.claude/skills/dw-research/SKILL.md +114 -114
- package/.claude/skills/dw-retroactive/SKILL.md +311 -311
- package/.claude/skills/dw-review/SKILL.md +66 -66
- package/.claude/skills/dw-rollback/SKILL.md +90 -90
- package/.claude/skills/dw-sprint-review/SKILL.md +99 -99
- package/.claude/skills/dw-task-init/SKILL.md +59 -59
- package/.claude/skills/dw-test-plan/SKILL.md +113 -113
- package/.claude/skills/dw-thinking/SKILL.md +70 -70
- package/.claude/skills/dw-upgrade/SKILL.md +72 -72
- package/.dw/core/PILLARS.md +122 -0
- package/.dw/core/templates/v2/spec.md +68 -0
- package/.dw/core/templates/v2/tracking.md +62 -0
- package/.dw/core/v14-evaluation-protocol.md +118 -0
- package/CLAUDE.md +42 -39
- package/MIGRATION-v1.3.md +201 -0
- package/README.md +35 -6
- package/package.json +4 -2
- package/src/cli.mjs +29 -1
- package/src/commands/dashboard.mjs +116 -0
- package/src/commands/doctor.mjs +165 -149
- package/src/commands/init.mjs +339 -332
- package/src/commands/metrics.mjs +165 -0
- package/src/lib/active-index.mjs +87 -0
- package/src/lib/cut-analysis.mjs +161 -0
- package/src/lib/telemetry.mjs +80 -0
- package/.claude/rules/dw-core.md +0 -100
- package/.claude/rules/dw-skills.md +0 -53
- package/.claude/rules/workflow-rules.md +0 -77
|
@@ -1,201 +1,201 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dw
|
|
3
|
-
description: "Onboard dw-kit vào project đang chạy. Scan codebase, tạo project map và context docs cho các modules hiện có. Chạy một lần khi adopt dw vào existing project."
|
|
4
|
-
argument-hint: ""
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Grep
|
|
8
|
-
- Glob
|
|
9
|
-
- Write
|
|
10
|
-
- "Bash(git log *)"
|
|
11
|
-
- "Bash(git shortlog *)"
|
|
12
|
-
- "Bash(ls *)"
|
|
13
|
-
- "Bash(wc *)"
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# dw-onboard — Onboard Existing Project vào dw-kit
|
|
17
|
-
|
|
18
|
-
> Dùng khi adopt dw-kit vào project đã chạy. Chạy **một lần**. Output là project map và context docs cho các modules hiện có — làm nền tảng cho AI trong các sessions sau.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Đọc Config
|
|
23
|
-
|
|
24
|
-
Đọc `.dw/config/dw.config.yml`:
|
|
25
|
-
- `paths.tasks` → base tasks path
|
|
26
|
-
- `project.language` → ngôn ngữ output
|
|
27
|
-
- `project.name` → tên project
|
|
28
|
-
|
|
29
|
-
## Bước 1: Khám phá cấu trúc project
|
|
30
|
-
|
|
31
|
-
Scan top-level structure của codebase:
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
Glob: src/**, app/**, lib/**, packages/**, services/**, modules/**
|
|
35
|
-
Bash: ls -la (top level)
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Xác định:
|
|
39
|
-
- **Project type**: monorepo / single app / microservices / library
|
|
40
|
-
- **Tech stack**: ngôn ngữ, framework chính (từ package.json, go.mod, requirements.txt, Cargo.toml, v.v.)
|
|
41
|
-
- **Entry points**: main files, index files, routers
|
|
42
|
-
- **Major directories**: mỗi dir là 1 potential module
|
|
43
|
-
|
|
44
|
-
## Bước 2: Phân loại modules
|
|
45
|
-
|
|
46
|
-
Với mỗi major directory/module, xác định:
|
|
47
|
-
|
|
48
|
-
| Module | Type | Vai trò | Files | Phức tạp? |
|
|
49
|
-
|--------|------|---------|-------|-----------|
|
|
50
|
-
| [dir] | feature/service/util/infra | [mô tả 1 dòng] | [số files] | Cao/TB/Thấp |
|
|
51
|
-
|
|
52
|
-
**Phức tạp = Cao** nếu: nhiều files (>10), có DB/API, business logic phức tạp.
|
|
53
|
-
→ Modules phức tạp Cao: recommend `/dw
|
|
54
|
-
|
|
55
|
-
## Bước 3: Phân tích nhanh từng module
|
|
56
|
-
|
|
57
|
-
Với mỗi module (không cần đọc toàn bộ — chỉ đọc đủ để hiểu):
|
|
58
|
-
|
|
59
|
-
1. **Entry file**: đọc file chính (index, main, router, controller)
|
|
60
|
-
2. **Exports/Public API**: function/class/endpoint nào được expose?
|
|
61
|
-
3. **Dependencies**: module này gọi đến module nào khác?
|
|
62
|
-
4. **Git activity**: `git shortlog --since="6 months ago" -- [path]` → ai đang maintain?
|
|
63
|
-
|
|
64
|
-
Ghi tóm tắt ngắn gọn (3-5 dòng) per module.
|
|
65
|
-
|
|
66
|
-
## Bước 4: Check git history toàn project
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
git log --oneline --since="3 months ago" | head -30
|
|
70
|
-
git shortlog -sn --since="3 months ago" | head -10
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Xác định:
|
|
74
|
-
- Modules nào đang active development
|
|
75
|
-
- Modules nào stable / ít thay đổi
|
|
76
|
-
- Contributors chính
|
|
77
|
-
|
|
78
|
-
## Bước 5: Tạo output
|
|
79
|
-
|
|
80
|
-
### 5a. Project Map
|
|
81
|
-
|
|
82
|
-
Tạo `.dw/context/project-map.md`:
|
|
83
|
-
|
|
84
|
-
```markdown
|
|
85
|
-
# Project Map: [project.name]
|
|
86
|
-
|
|
87
|
-
## Ngày tạo: [date]
|
|
88
|
-
## Tạo bởi: dw-onboard
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Tech Stack
|
|
93
|
-
|
|
94
|
-
- **Ngôn ngữ**: [language]
|
|
95
|
-
- **Framework**: [framework]
|
|
96
|
-
- **Database**: [db nếu có]
|
|
97
|
-
- **Infrastructure**: [docker, k8s, cloud nếu có]
|
|
98
|
-
|
|
99
|
-
## Cấu Trúc Tổng Quan
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
[ASCII tree của top-level structure]
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
## Modules
|
|
106
|
-
|
|
107
|
-
| Module | Type | Vai trò | Phức tạp | Active? | Deep-dive? |
|
|
108
|
-
|--------|------|---------|----------|---------|------------|
|
|
109
|
-
| [name] | [type] | [mô tả ngắn] | Cao/TB/Thấp | Có/Không | `/dw
|
|
110
|
-
|
|
111
|
-
## Dependencies giữa Modules
|
|
112
|
-
|
|
113
|
-
```
|
|
114
|
-
[Module A] → [Module B] → [Module C]
|
|
115
|
-
↓
|
|
116
|
-
[Module D]
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## Entry Points chính
|
|
120
|
-
|
|
121
|
-
- [file/endpoint]: [mô tả]
|
|
122
|
-
|
|
123
|
-
## Conventions phát hiện
|
|
124
|
-
|
|
125
|
-
- [Convention 1]: [mô tả]
|
|
126
|
-
- [Convention 2]
|
|
127
|
-
|
|
128
|
-
## Git Activity (3 tháng gần nhất)
|
|
129
|
-
|
|
130
|
-
- **Active modules**: [danh sách]
|
|
131
|
-
- **Stable modules**: [danh sách]
|
|
132
|
-
- **Top contributors**: [tên]
|
|
133
|
-
|
|
134
|
-
## Gợi ý Deep-dive
|
|
135
|
-
|
|
136
|
-
Các modules phức tạp nên chạy `/dw
|
|
137
|
-
- [ ] `/dw
|
|
138
|
-
- [ ] `/dw
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### 5b. Module context docs
|
|
142
|
-
|
|
143
|
-
Với mỗi module **phức tạp Cao**: tạo `.dw/context/modules/[module-name].md`:
|
|
144
|
-
|
|
145
|
-
```markdown
|
|
146
|
-
# Module: [module-name]
|
|
147
|
-
|
|
148
|
-
## Vai trò
|
|
149
|
-
[1-2 câu mô tả]
|
|
150
|
-
|
|
151
|
-
## Files chính
|
|
152
|
-
| File | Vai trò |
|
|
153
|
-
|------|---------|
|
|
154
|
-
| [file] | [vai trò] |
|
|
155
|
-
|
|
156
|
-
## Public API / Exports
|
|
157
|
-
- [function/endpoint]: [mô tả]
|
|
158
|
-
|
|
159
|
-
## Dependencies
|
|
160
|
-
- Upstream: [modules gọi đến đây]
|
|
161
|
-
- Downstream: [modules được đây gọi]
|
|
162
|
-
|
|
163
|
-
## Conventions riêng
|
|
164
|
-
- [Convention đặc thù của module này]
|
|
165
|
-
|
|
166
|
-
## Lưu ý cho AI
|
|
167
|
-
- [Gotchas, tech debt, context quan trọng]
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
Với modules **phức tạp TB/Thấp**: chỉ ghi entry trong project-map.md, không tạo file riêng.
|
|
171
|
-
|
|
172
|
-
## Bước 6: Báo cáo kết quả
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
╔══════════════════════════════════════════════════════╗
|
|
176
|
-
║ ✅ dw-onboard complete: [project.name]
|
|
177
|
-
╠══════════════════════════════════════════════════════╣
|
|
178
|
-
║ Modules discovered : [N]
|
|
179
|
-
║ Docs tạo :
|
|
180
|
-
║ .dw/context/project-map.md
|
|
181
|
-
║ .dw/context/modules/[X files]
|
|
182
|
-
║ Tech stack : [summary]
|
|
183
|
-
╠══════════════════════════════════════════════════════╣
|
|
184
|
-
║ Gợi ý tiếp theo:
|
|
185
|
-
║ Modules phức tạp cần deep-dive:
|
|
186
|
-
║ → /dw
|
|
187
|
-
║ → /dw
|
|
188
|
-
║
|
|
189
|
-
║ Khi bắt đầu task mới liên quan module đã có:
|
|
190
|
-
║ → AI sẽ tự đọc .dw/context/ để có context
|
|
191
|
-
╚══════════════════════════════════════════════════════╝
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Lưu ý
|
|
197
|
-
|
|
198
|
-
- **Không tạo `.dw/tasks/`** — onboard output vào `.dw/context/`, tách khỏi task docs
|
|
199
|
-
- **Không đọc toàn bộ code** — chỉ cần đủ để hiểu vai trò và interface của module
|
|
200
|
-
- **Không analyze chi tiết logic** — đó là việc của `/dw
|
|
201
|
-
- Nếu project đã có `.dw/context/project-map.md` → hỏi user: "Đã có project map. Update hay skip?"
|
|
1
|
+
---
|
|
2
|
+
name: dw:onboard
|
|
3
|
+
description: "Onboard dw-kit vào project đang chạy. Scan codebase, tạo project map và context docs cho các modules hiện có. Chạy một lần khi adopt dw vào existing project."
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Grep
|
|
8
|
+
- Glob
|
|
9
|
+
- Write
|
|
10
|
+
- "Bash(git log *)"
|
|
11
|
+
- "Bash(git shortlog *)"
|
|
12
|
+
- "Bash(ls *)"
|
|
13
|
+
- "Bash(wc *)"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# dw-onboard — Onboard Existing Project vào dw-kit
|
|
17
|
+
|
|
18
|
+
> Dùng khi adopt dw-kit vào project đã chạy. Chạy **một lần**. Output là project map và context docs cho các modules hiện có — làm nền tảng cho AI trong các sessions sau.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Đọc Config
|
|
23
|
+
|
|
24
|
+
Đọc `.dw/config/dw.config.yml`:
|
|
25
|
+
- `paths.tasks` → base tasks path
|
|
26
|
+
- `project.language` → ngôn ngữ output
|
|
27
|
+
- `project.name` → tên project
|
|
28
|
+
|
|
29
|
+
## Bước 1: Khám phá cấu trúc project
|
|
30
|
+
|
|
31
|
+
Scan top-level structure của codebase:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Glob: src/**, app/**, lib/**, packages/**, services/**, modules/**
|
|
35
|
+
Bash: ls -la (top level)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Xác định:
|
|
39
|
+
- **Project type**: monorepo / single app / microservices / library
|
|
40
|
+
- **Tech stack**: ngôn ngữ, framework chính (từ package.json, go.mod, requirements.txt, Cargo.toml, v.v.)
|
|
41
|
+
- **Entry points**: main files, index files, routers
|
|
42
|
+
- **Major directories**: mỗi dir là 1 potential module
|
|
43
|
+
|
|
44
|
+
## Bước 2: Phân loại modules
|
|
45
|
+
|
|
46
|
+
Với mỗi major directory/module, xác định:
|
|
47
|
+
|
|
48
|
+
| Module | Type | Vai trò | Files | Phức tạp? |
|
|
49
|
+
|--------|------|---------|-------|-----------|
|
|
50
|
+
| [dir] | feature/service/util/infra | [mô tả 1 dòng] | [số files] | Cao/TB/Thấp |
|
|
51
|
+
|
|
52
|
+
**Phức tạp = Cao** nếu: nhiều files (>10), có DB/API, business logic phức tạp.
|
|
53
|
+
→ Modules phức tạp Cao: recommend `/dw:retroactive [module]` sau.
|
|
54
|
+
|
|
55
|
+
## Bước 3: Phân tích nhanh từng module
|
|
56
|
+
|
|
57
|
+
Với mỗi module (không cần đọc toàn bộ — chỉ đọc đủ để hiểu):
|
|
58
|
+
|
|
59
|
+
1. **Entry file**: đọc file chính (index, main, router, controller)
|
|
60
|
+
2. **Exports/Public API**: function/class/endpoint nào được expose?
|
|
61
|
+
3. **Dependencies**: module này gọi đến module nào khác?
|
|
62
|
+
4. **Git activity**: `git shortlog --since="6 months ago" -- [path]` → ai đang maintain?
|
|
63
|
+
|
|
64
|
+
Ghi tóm tắt ngắn gọn (3-5 dòng) per module.
|
|
65
|
+
|
|
66
|
+
## Bước 4: Check git history toàn project
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
git log --oneline --since="3 months ago" | head -30
|
|
70
|
+
git shortlog -sn --since="3 months ago" | head -10
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Xác định:
|
|
74
|
+
- Modules nào đang active development
|
|
75
|
+
- Modules nào stable / ít thay đổi
|
|
76
|
+
- Contributors chính
|
|
77
|
+
|
|
78
|
+
## Bước 5: Tạo output
|
|
79
|
+
|
|
80
|
+
### 5a. Project Map
|
|
81
|
+
|
|
82
|
+
Tạo `.dw/context/project-map.md`:
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
# Project Map: [project.name]
|
|
86
|
+
|
|
87
|
+
## Ngày tạo: [date]
|
|
88
|
+
## Tạo bởi: dw-onboard
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Tech Stack
|
|
93
|
+
|
|
94
|
+
- **Ngôn ngữ**: [language]
|
|
95
|
+
- **Framework**: [framework]
|
|
96
|
+
- **Database**: [db nếu có]
|
|
97
|
+
- **Infrastructure**: [docker, k8s, cloud nếu có]
|
|
98
|
+
|
|
99
|
+
## Cấu Trúc Tổng Quan
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
[ASCII tree của top-level structure]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Modules
|
|
106
|
+
|
|
107
|
+
| Module | Type | Vai trò | Phức tạp | Active? | Deep-dive? |
|
|
108
|
+
|--------|------|---------|----------|---------|------------|
|
|
109
|
+
| [name] | [type] | [mô tả ngắn] | Cao/TB/Thấp | Có/Không | `/dw:retroactive [name]` |
|
|
110
|
+
|
|
111
|
+
## Dependencies giữa Modules
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
[Module A] → [Module B] → [Module C]
|
|
115
|
+
↓
|
|
116
|
+
[Module D]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Entry Points chính
|
|
120
|
+
|
|
121
|
+
- [file/endpoint]: [mô tả]
|
|
122
|
+
|
|
123
|
+
## Conventions phát hiện
|
|
124
|
+
|
|
125
|
+
- [Convention 1]: [mô tả]
|
|
126
|
+
- [Convention 2]
|
|
127
|
+
|
|
128
|
+
## Git Activity (3 tháng gần nhất)
|
|
129
|
+
|
|
130
|
+
- **Active modules**: [danh sách]
|
|
131
|
+
- **Stable modules**: [danh sách]
|
|
132
|
+
- **Top contributors**: [tên]
|
|
133
|
+
|
|
134
|
+
## Gợi ý Deep-dive
|
|
135
|
+
|
|
136
|
+
Các modules phức tạp nên chạy `/dw:retroactive` để AI có context đầy đủ:
|
|
137
|
+
- [ ] `/dw:retroactive [module-a]` — [lý do: nhiều files, core business logic]
|
|
138
|
+
- [ ] `/dw:retroactive [module-b]`
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 5b. Module context docs
|
|
142
|
+
|
|
143
|
+
Với mỗi module **phức tạp Cao**: tạo `.dw/context/modules/[module-name].md`:
|
|
144
|
+
|
|
145
|
+
```markdown
|
|
146
|
+
# Module: [module-name]
|
|
147
|
+
|
|
148
|
+
## Vai trò
|
|
149
|
+
[1-2 câu mô tả]
|
|
150
|
+
|
|
151
|
+
## Files chính
|
|
152
|
+
| File | Vai trò |
|
|
153
|
+
|------|---------|
|
|
154
|
+
| [file] | [vai trò] |
|
|
155
|
+
|
|
156
|
+
## Public API / Exports
|
|
157
|
+
- [function/endpoint]: [mô tả]
|
|
158
|
+
|
|
159
|
+
## Dependencies
|
|
160
|
+
- Upstream: [modules gọi đến đây]
|
|
161
|
+
- Downstream: [modules được đây gọi]
|
|
162
|
+
|
|
163
|
+
## Conventions riêng
|
|
164
|
+
- [Convention đặc thù của module này]
|
|
165
|
+
|
|
166
|
+
## Lưu ý cho AI
|
|
167
|
+
- [Gotchas, tech debt, context quan trọng]
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Với modules **phức tạp TB/Thấp**: chỉ ghi entry trong project-map.md, không tạo file riêng.
|
|
171
|
+
|
|
172
|
+
## Bước 6: Báo cáo kết quả
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
╔══════════════════════════════════════════════════════╗
|
|
176
|
+
║ ✅ dw-onboard complete: [project.name]
|
|
177
|
+
╠══════════════════════════════════════════════════════╣
|
|
178
|
+
║ Modules discovered : [N]
|
|
179
|
+
║ Docs tạo :
|
|
180
|
+
║ .dw/context/project-map.md
|
|
181
|
+
║ .dw/context/modules/[X files]
|
|
182
|
+
║ Tech stack : [summary]
|
|
183
|
+
╠══════════════════════════════════════════════════════╣
|
|
184
|
+
║ Gợi ý tiếp theo:
|
|
185
|
+
║ Modules phức tạp cần deep-dive:
|
|
186
|
+
║ → /dw:retroactive [module-a]
|
|
187
|
+
║ → /dw:retroactive [module-b]
|
|
188
|
+
║
|
|
189
|
+
║ Khi bắt đầu task mới liên quan module đã có:
|
|
190
|
+
║ → AI sẽ tự đọc .dw/context/ để có context
|
|
191
|
+
╚══════════════════════════════════════════════════════╝
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Lưu ý
|
|
197
|
+
|
|
198
|
+
- **Không tạo `.dw/tasks/`** — onboard output vào `.dw/context/`, tách khỏi task docs
|
|
199
|
+
- **Không đọc toàn bộ code** — chỉ cần đủ để hiểu vai trò và interface của module
|
|
200
|
+
- **Không analyze chi tiết logic** — đó là việc của `/dw:retroactive` khi cần deep-dive
|
|
201
|
+
- Nếu project đã có `.dw/context/project-map.md` → hỏi user: "Đã có project map. Update hay skip?"
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dw
|
|
3
|
-
description: "Lập kế hoạch implementation chi tiết sau khi đã research. Thiết kế giải pháp, phân chia subtasks, xác định rủi ro. DỪNG để chờ approval trước khi execute."
|
|
4
|
-
argument-hint: "[task-name]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Grep
|
|
8
|
-
- Glob
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Lập Kế Hoạch Implementation
|
|
12
|
-
|
|
13
|
-
Task: **$ARGUMENTS**
|
|
14
|
-
|
|
15
|
-
## Đọc Config
|
|
16
|
-
|
|
17
|
-
Đọc `.dw/config/dw.config.yml` → lấy:
|
|
18
|
-
- `paths.tasks` → location task docs
|
|
19
|
-
- `tracking.estimation` → có include estimation trong plan không
|
|
20
|
-
- `tracking.estimation_unit` → đơn vị (hours / story-points / t-shirt)
|
|
21
|
-
- `team.roles` → ai cần approve (có `techlead` → plan cần TL review)
|
|
22
|
-
- `workflow.default_depth` → `thorough` = cần arch-review trước execute
|
|
23
|
-
|
|
24
|
-
## QUAN TRỌNG
|
|
25
|
-
- KHÔNG implement bất cứ gì
|
|
26
|
-
- KHÔNG sửa code
|
|
27
|
-
- CHỈ đọc, phân tích, và viết plan
|
|
28
|
-
- DỪNG LẠI cuối cùng để chờ user/TL approve
|
|
29
|
-
|
|
30
|
-
## Bước 1: Đọc Context
|
|
31
|
-
|
|
32
|
-
Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md` — file research đã tạo.
|
|
33
|
-
Nếu chưa có → thông báo: "Cần chạy `/dw
|
|
34
|
-
|
|
35
|
-
## Bước 2: Thiết kế giải pháp
|
|
36
|
-
|
|
37
|
-
### Xem xét phương án
|
|
38
|
-
- Liệt kê ÍT NHẤT 2 phương án khả thi
|
|
39
|
-
- So sánh trade-offs: complexity, performance, maintainability, timeline
|
|
40
|
-
- Chọn phương án tối ưu và giải thích lý do
|
|
41
|
-
|
|
42
|
-
### Áp dụng THINKING.md
|
|
43
|
-
1. **Critical Thinking**: Giả định nào? Rủi ro gì? Edge cases?
|
|
44
|
-
2. **Systems Thinking**: Tác động lên modules khác? Data flow thay đổi?
|
|
45
|
-
3. **Multiple Perspectives**: User? Developer? Security? Ops?
|
|
46
|
-
|
|
47
|
-
## Bước 3: Phân chia subtasks
|
|
48
|
-
|
|
49
|
-
Mỗi subtask PHẢI có:
|
|
50
|
-
- **Mô tả**: Cụ thể, actionable
|
|
51
|
-
- **Files**: Danh sách files cần thay đổi
|
|
52
|
-
- **Acceptance criteria**: Điều kiện hoàn thành rõ ràng
|
|
53
|
-
- **Dependencies**: Subtask nào phải xong trước
|
|
54
|
-
- **Estimate** (nếu `tracking.estimation = true`): Effort dự kiến theo `tracking.estimation_unit`
|
|
55
|
-
|
|
56
|
-
Thứ tự subtasks theo dependency graph:
|
|
57
|
-
1. Schema/data changes trước
|
|
58
|
-
2. Service/business logic tiếp
|
|
59
|
-
3. API/routes sau
|
|
60
|
-
4. Tests song song hoặc trước (TDD)
|
|
61
|
-
5. Docs cuối
|
|
62
|
-
|
|
63
|
-
## Bước 4: Viết plan
|
|
64
|
-
|
|
65
|
-
Ghi vào `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md`:
|
|
66
|
-
|
|
67
|
-
```markdown
|
|
68
|
-
# Plan: [Task Name]
|
|
69
|
-
|
|
70
|
-
## Ngày tạo: [date]
|
|
71
|
-
## Trạng thái: Draft → cần approve
|
|
72
|
-
|
|
73
|
-
## Tóm Tắt Giải Pháp
|
|
74
|
-
[1-2 đoạn mô tả approach đã chọn]
|
|
75
|
-
|
|
76
|
-
## Phương Án Đã Xem Xét
|
|
77
|
-
| # | Phương án | Ưu điểm | Nhược điểm | Chọn? |
|
|
78
|
-
|---|-----------|---------|------------|-------|
|
|
79
|
-
|
|
80
|
-
## Subtasks
|
|
81
|
-
### ST-1: [Tên subtask]
|
|
82
|
-
- **Mô tả**: ...
|
|
83
|
-
- **Files**: ...
|
|
84
|
-
- **Criteria**: ...
|
|
85
|
-
- **Dependencies**: none
|
|
86
|
-
- **Estimate**: [nếu có]
|
|
87
|
-
|
|
88
|
-
### ST-2: [Tên subtask]
|
|
89
|
-
...
|
|
90
|
-
|
|
91
|
-
## Rủi Ro & Giả Định
|
|
92
|
-
| # | Loại | Mô tả | Xác suất | Tác động | Giảm thiểu |
|
|
93
|
-
|---|------|--------|----------|----------|------------|
|
|
94
|
-
|
|
95
|
-
## Edge Cases
|
|
96
|
-
- [ ] ...
|
|
97
|
-
|
|
98
|
-
## Tác Động Hệ Thống
|
|
99
|
-
- Modules ảnh hưởng: ...
|
|
100
|
-
- API changes: ...
|
|
101
|
-
- Migration: ...
|
|
102
|
-
- Backward compatibility: ...
|
|
103
|
-
|
|
104
|
-
## Góc Nhìn & Trade-offs
|
|
105
|
-
| Quyết định | User | Dev | Security |
|
|
106
|
-
|-----------|------|-----|----------|
|
|
107
|
-
|
|
108
|
-
## Estimation Tổng (nếu enabled)
|
|
109
|
-
- Research: [done]
|
|
110
|
-
- Planning: [done]
|
|
111
|
-
- Coding: [estimate]
|
|
112
|
-
- Testing: [estimate]
|
|
113
|
-
- Review: [estimate]
|
|
114
|
-
- Total: [sum]
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Bước 5: DỪNG & Trình bày
|
|
118
|
-
|
|
119
|
-
Trình bày plan cho user với:
|
|
120
|
-
1. Tóm tắt approach (3-5 câu)
|
|
121
|
-
2. Số subtasks và estimate tổng (nếu có)
|
|
122
|
-
3. Top 2 risks
|
|
123
|
-
4. Yêu cầu: "Approve plan này để tiếp tục `/dw
|
|
124
|
-
|
|
125
|
-
Nếu team có TL: "Plan cần TL review trước khi execute."
|
|
1
|
+
---
|
|
2
|
+
name: dw:plan
|
|
3
|
+
description: "Lập kế hoạch implementation chi tiết sau khi đã research. Thiết kế giải pháp, phân chia subtasks, xác định rủi ro. DỪNG để chờ approval trước khi execute."
|
|
4
|
+
argument-hint: "[task-name]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Grep
|
|
8
|
+
- Glob
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Lập Kế Hoạch Implementation
|
|
12
|
+
|
|
13
|
+
Task: **$ARGUMENTS**
|
|
14
|
+
|
|
15
|
+
## Đọc Config
|
|
16
|
+
|
|
17
|
+
Đọc `.dw/config/dw.config.yml` → lấy:
|
|
18
|
+
- `paths.tasks` → location task docs
|
|
19
|
+
- `tracking.estimation` → có include estimation trong plan không
|
|
20
|
+
- `tracking.estimation_unit` → đơn vị (hours / story-points / t-shirt)
|
|
21
|
+
- `team.roles` → ai cần approve (có `techlead` → plan cần TL review)
|
|
22
|
+
- `workflow.default_depth` → `thorough` = cần arch-review trước execute
|
|
23
|
+
|
|
24
|
+
## QUAN TRỌNG
|
|
25
|
+
- KHÔNG implement bất cứ gì
|
|
26
|
+
- KHÔNG sửa code
|
|
27
|
+
- CHỈ đọc, phân tích, và viết plan
|
|
28
|
+
- DỪNG LẠI cuối cùng để chờ user/TL approve
|
|
29
|
+
|
|
30
|
+
## Bước 1: Đọc Context
|
|
31
|
+
|
|
32
|
+
Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md` — file research đã tạo.
|
|
33
|
+
Nếu chưa có → thông báo: "Cần chạy `/dw:research $ARGUMENTS` trước."
|
|
34
|
+
|
|
35
|
+
## Bước 2: Thiết kế giải pháp
|
|
36
|
+
|
|
37
|
+
### Xem xét phương án
|
|
38
|
+
- Liệt kê ÍT NHẤT 2 phương án khả thi
|
|
39
|
+
- So sánh trade-offs: complexity, performance, maintainability, timeline
|
|
40
|
+
- Chọn phương án tối ưu và giải thích lý do
|
|
41
|
+
|
|
42
|
+
### Áp dụng THINKING.md
|
|
43
|
+
1. **Critical Thinking**: Giả định nào? Rủi ro gì? Edge cases?
|
|
44
|
+
2. **Systems Thinking**: Tác động lên modules khác? Data flow thay đổi?
|
|
45
|
+
3. **Multiple Perspectives**: User? Developer? Security? Ops?
|
|
46
|
+
|
|
47
|
+
## Bước 3: Phân chia subtasks
|
|
48
|
+
|
|
49
|
+
Mỗi subtask PHẢI có:
|
|
50
|
+
- **Mô tả**: Cụ thể, actionable
|
|
51
|
+
- **Files**: Danh sách files cần thay đổi
|
|
52
|
+
- **Acceptance criteria**: Điều kiện hoàn thành rõ ràng
|
|
53
|
+
- **Dependencies**: Subtask nào phải xong trước
|
|
54
|
+
- **Estimate** (nếu `tracking.estimation = true`): Effort dự kiến theo `tracking.estimation_unit`
|
|
55
|
+
|
|
56
|
+
Thứ tự subtasks theo dependency graph:
|
|
57
|
+
1. Schema/data changes trước
|
|
58
|
+
2. Service/business logic tiếp
|
|
59
|
+
3. API/routes sau
|
|
60
|
+
4. Tests song song hoặc trước (TDD)
|
|
61
|
+
5. Docs cuối
|
|
62
|
+
|
|
63
|
+
## Bước 4: Viết plan
|
|
64
|
+
|
|
65
|
+
Ghi vào `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md`:
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
# Plan: [Task Name]
|
|
69
|
+
|
|
70
|
+
## Ngày tạo: [date]
|
|
71
|
+
## Trạng thái: Draft → cần approve
|
|
72
|
+
|
|
73
|
+
## Tóm Tắt Giải Pháp
|
|
74
|
+
[1-2 đoạn mô tả approach đã chọn]
|
|
75
|
+
|
|
76
|
+
## Phương Án Đã Xem Xét
|
|
77
|
+
| # | Phương án | Ưu điểm | Nhược điểm | Chọn? |
|
|
78
|
+
|---|-----------|---------|------------|-------|
|
|
79
|
+
|
|
80
|
+
## Subtasks
|
|
81
|
+
### ST-1: [Tên subtask]
|
|
82
|
+
- **Mô tả**: ...
|
|
83
|
+
- **Files**: ...
|
|
84
|
+
- **Criteria**: ...
|
|
85
|
+
- **Dependencies**: none
|
|
86
|
+
- **Estimate**: [nếu có]
|
|
87
|
+
|
|
88
|
+
### ST-2: [Tên subtask]
|
|
89
|
+
...
|
|
90
|
+
|
|
91
|
+
## Rủi Ro & Giả Định
|
|
92
|
+
| # | Loại | Mô tả | Xác suất | Tác động | Giảm thiểu |
|
|
93
|
+
|---|------|--------|----------|----------|------------|
|
|
94
|
+
|
|
95
|
+
## Edge Cases
|
|
96
|
+
- [ ] ...
|
|
97
|
+
|
|
98
|
+
## Tác Động Hệ Thống
|
|
99
|
+
- Modules ảnh hưởng: ...
|
|
100
|
+
- API changes: ...
|
|
101
|
+
- Migration: ...
|
|
102
|
+
- Backward compatibility: ...
|
|
103
|
+
|
|
104
|
+
## Góc Nhìn & Trade-offs
|
|
105
|
+
| Quyết định | User | Dev | Security |
|
|
106
|
+
|-----------|------|-----|----------|
|
|
107
|
+
|
|
108
|
+
## Estimation Tổng (nếu enabled)
|
|
109
|
+
- Research: [done]
|
|
110
|
+
- Planning: [done]
|
|
111
|
+
- Coding: [estimate]
|
|
112
|
+
- Testing: [estimate]
|
|
113
|
+
- Review: [estimate]
|
|
114
|
+
- Total: [sum]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Bước 5: DỪNG & Trình bày
|
|
118
|
+
|
|
119
|
+
Trình bày plan cho user với:
|
|
120
|
+
1. Tóm tắt approach (3-5 câu)
|
|
121
|
+
2. Số subtasks và estimate tổng (nếu có)
|
|
122
|
+
3. Top 2 risks
|
|
123
|
+
4. Yêu cầu: "Approve plan này để tiếp tục `/dw:execute $ARGUMENTS`"
|
|
124
|
+
|
|
125
|
+
Nếu team có TL: "Plan cần TL review trước khi execute."
|