dw-kit 1.2.1 → 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/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 +138 -0
- package/.claude/settings.json +28 -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 +121 -98
- package/.claude/skills/dw-flow/SKILL.md +274 -274
- package/.claude/skills/dw-handoff/SKILL.md +92 -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 +222 -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 +128 -114
- package/.claude/skills/dw-retroactive/SKILL.md +195 -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 +71 -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/ROLES.md +257 -257
- 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 +202 -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 +185 -0
- package/src/lib/active-index.mjs +87 -0
- package/src/lib/cut-analysis.mjs +240 -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,90 +1,90 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dw
|
|
3
|
-
description: "Revert task docs về trạng thái trước. Dùng khi plan sai, execute sai hướng, hoặc cần bắt đầu lại từ sau research."
|
|
4
|
-
argument-hint: "[task-name] [checkpoint: after-research | after-plan | clean]"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Rollback Task Docs: $ARGUMENTS
|
|
8
|
-
|
|
9
|
-
## Parse Arguments
|
|
10
|
-
|
|
11
|
-
Từ `$ARGUMENTS`:
|
|
12
|
-
- `task-name`: tên task cần rollback
|
|
13
|
-
- `checkpoint` (optional): điểm muốn revert về
|
|
14
|
-
- `after-research` — giữ context.md, xóa plan.md và reset progress.md
|
|
15
|
-
- `after-plan` — giữ context.md + plan.md, reset progress.md về trạng thái ban đầu
|
|
16
|
-
- `clean` — xóa toàn bộ nội dung, giữ files trống (restart từ đầu)
|
|
17
|
-
- (không có) → hỏi user chọn
|
|
18
|
-
|
|
19
|
-
## Bước 1: Đọc config
|
|
20
|
-
|
|
21
|
-
`paths.tasks` → xác định thư mục task.
|
|
22
|
-
|
|
23
|
-
## Bước 2: Kiểm tra task tồn tại
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
{paths.tasks}/[task-name]/
|
|
27
|
-
├── [task-name]-context.md
|
|
28
|
-
├── [task-name]-plan.md
|
|
29
|
-
└── [task-name]-progress.md
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Nếu không tìm thấy → thông báo và DỪNG.
|
|
33
|
-
|
|
34
|
-
## Bước 3: Git checkpoint (an toàn)
|
|
35
|
-
|
|
36
|
-
Kiểm tra uncommitted changes trong task docs:
|
|
37
|
-
```bash
|
|
38
|
-
git status {paths.tasks}/[task-name]/
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Nếu có uncommitted changes → hỏi: "Có uncommitted changes trong task docs. Commit trước khi rollback? (y/n/skip)"
|
|
42
|
-
|
|
43
|
-
## Bước 4: Hiển thị preview và confirm
|
|
44
|
-
|
|
45
|
-
Hiển thị rõ sẽ làm gì:
|
|
46
|
-
```
|
|
47
|
-
Rollback [task-name] về checkpoint: [checkpoint]
|
|
48
|
-
|
|
49
|
-
Sẽ GIỮ:
|
|
50
|
-
✓ [task-name]-context.md (research findings)
|
|
51
|
-
|
|
52
|
-
Sẽ RESET:
|
|
53
|
-
✗ [task-name]-plan.md → xóa nội dung, giữ file trống
|
|
54
|
-
✗ [task-name]-progress.md → reset về "Not Started"
|
|
55
|
-
|
|
56
|
-
Tiếp tục? (y/n)
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Chờ user confirm trước khi thực hiện.
|
|
60
|
-
|
|
61
|
-
## Bước 5: Thực hiện rollback
|
|
62
|
-
|
|
63
|
-
### checkpoint = "after-research"
|
|
64
|
-
- Giữ `context.md` nguyên vẹn
|
|
65
|
-
- Reset `plan.md` → file trống (chỉ giữ header)
|
|
66
|
-
- Reset `progress.md` → status = "Not Started", xóa subtask rows
|
|
67
|
-
|
|
68
|
-
### checkpoint = "after-plan"
|
|
69
|
-
- Giữ `context.md` nguyên vẹn
|
|
70
|
-
- Giữ `plan.md` nguyên vẹn
|
|
71
|
-
- Reset `progress.md` → status = "Not Started", tất cả subtasks = Pending
|
|
72
|
-
|
|
73
|
-
### checkpoint = "clean"
|
|
74
|
-
- Reset tất cả 3 files về template trống
|
|
75
|
-
- Điền lại [Task Name] và [date]
|
|
76
|
-
|
|
77
|
-
## Bước 6: Thông báo
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
Rollback hoàn tất.
|
|
81
|
-
|
|
82
|
-
Task: [task-name]
|
|
83
|
-
Checkpoint: [checkpoint]
|
|
84
|
-
Thời gian: [timestamp]
|
|
85
|
-
|
|
86
|
-
Bước tiếp theo:
|
|
87
|
-
- after-research → Chạy /dw
|
|
88
|
-
- after-plan → Chạy /dw
|
|
89
|
-
- clean → Chạy /dw
|
|
90
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: dw:rollback
|
|
3
|
+
description: "Revert task docs về trạng thái trước. Dùng khi plan sai, execute sai hướng, hoặc cần bắt đầu lại từ sau research."
|
|
4
|
+
argument-hint: "[task-name] [checkpoint: after-research | after-plan | clean]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Rollback Task Docs: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Parse Arguments
|
|
10
|
+
|
|
11
|
+
Từ `$ARGUMENTS`:
|
|
12
|
+
- `task-name`: tên task cần rollback
|
|
13
|
+
- `checkpoint` (optional): điểm muốn revert về
|
|
14
|
+
- `after-research` — giữ context.md, xóa plan.md và reset progress.md
|
|
15
|
+
- `after-plan` — giữ context.md + plan.md, reset progress.md về trạng thái ban đầu
|
|
16
|
+
- `clean` — xóa toàn bộ nội dung, giữ files trống (restart từ đầu)
|
|
17
|
+
- (không có) → hỏi user chọn
|
|
18
|
+
|
|
19
|
+
## Bước 1: Đọc config
|
|
20
|
+
|
|
21
|
+
`paths.tasks` → xác định thư mục task.
|
|
22
|
+
|
|
23
|
+
## Bước 2: Kiểm tra task tồn tại
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
{paths.tasks}/[task-name]/
|
|
27
|
+
├── [task-name]-context.md
|
|
28
|
+
├── [task-name]-plan.md
|
|
29
|
+
└── [task-name]-progress.md
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Nếu không tìm thấy → thông báo và DỪNG.
|
|
33
|
+
|
|
34
|
+
## Bước 3: Git checkpoint (an toàn)
|
|
35
|
+
|
|
36
|
+
Kiểm tra uncommitted changes trong task docs:
|
|
37
|
+
```bash
|
|
38
|
+
git status {paths.tasks}/[task-name]/
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Nếu có uncommitted changes → hỏi: "Có uncommitted changes trong task docs. Commit trước khi rollback? (y/n/skip)"
|
|
42
|
+
|
|
43
|
+
## Bước 4: Hiển thị preview và confirm
|
|
44
|
+
|
|
45
|
+
Hiển thị rõ sẽ làm gì:
|
|
46
|
+
```
|
|
47
|
+
Rollback [task-name] về checkpoint: [checkpoint]
|
|
48
|
+
|
|
49
|
+
Sẽ GIỮ:
|
|
50
|
+
✓ [task-name]-context.md (research findings)
|
|
51
|
+
|
|
52
|
+
Sẽ RESET:
|
|
53
|
+
✗ [task-name]-plan.md → xóa nội dung, giữ file trống
|
|
54
|
+
✗ [task-name]-progress.md → reset về "Not Started"
|
|
55
|
+
|
|
56
|
+
Tiếp tục? (y/n)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Chờ user confirm trước khi thực hiện.
|
|
60
|
+
|
|
61
|
+
## Bước 5: Thực hiện rollback
|
|
62
|
+
|
|
63
|
+
### checkpoint = "after-research"
|
|
64
|
+
- Giữ `context.md` nguyên vẹn
|
|
65
|
+
- Reset `plan.md` → file trống (chỉ giữ header)
|
|
66
|
+
- Reset `progress.md` → status = "Not Started", xóa subtask rows
|
|
67
|
+
|
|
68
|
+
### checkpoint = "after-plan"
|
|
69
|
+
- Giữ `context.md` nguyên vẹn
|
|
70
|
+
- Giữ `plan.md` nguyên vẹn
|
|
71
|
+
- Reset `progress.md` → status = "Not Started", tất cả subtasks = Pending
|
|
72
|
+
|
|
73
|
+
### checkpoint = "clean"
|
|
74
|
+
- Reset tất cả 3 files về template trống
|
|
75
|
+
- Điền lại [Task Name] và [date]
|
|
76
|
+
|
|
77
|
+
## Bước 6: Thông báo
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Rollback hoàn tất.
|
|
81
|
+
|
|
82
|
+
Task: [task-name]
|
|
83
|
+
Checkpoint: [checkpoint]
|
|
84
|
+
Thời gian: [timestamp]
|
|
85
|
+
|
|
86
|
+
Bước tiếp theo:
|
|
87
|
+
- after-research → Chạy /dw:plan [task-name] để lập kế hoạch lại
|
|
88
|
+
- after-plan → Chạy /dw:execute [task-name] để implement lại
|
|
89
|
+
- clean → Chạy /dw:research [task-name] để bắt đầu từ đầu
|
|
90
|
+
```
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dw
|
|
3
|
-
description: "Tổng kết sprint: tasks hoàn thành, metrics, lessons learned, items cho sprint tiếp theo. Dành cho team retrospective cuối sprint."
|
|
4
|
-
argument-hint: "[sprint-name hoặc period: e.g. sprint-3, 2026-03]"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Sprint Review: $ARGUMENTS
|
|
8
|
-
|
|
9
|
-
## Đọc Config
|
|
10
|
-
|
|
11
|
-
Đọc `.dw/config/dw.config.yml`:
|
|
12
|
-
- `paths.tasks` → tìm task docs
|
|
13
|
-
- `.dw/metrics` → tìm effort data
|
|
14
|
-
- `tracking.estimation`, `tracking.log_work` → biết có data nào
|
|
15
|
-
|
|
16
|
-
## Bước 1: Thu thập dữ liệu
|
|
17
|
-
|
|
18
|
-
### Tasks trong sprint
|
|
19
|
-
Scan `{paths.tasks}/` tìm tasks có status Done hoặc In Progress trong kỳ sprint.
|
|
20
|
-
Đọc `*-progress.md` của mỗi task để lấy:
|
|
21
|
-
- Trạng thái cuối
|
|
22
|
-
- Effort estimate vs actual
|
|
23
|
-
- Blockers gặp phải
|
|
24
|
-
- Commits liên quan
|
|
25
|
-
|
|
26
|
-
### Git history
|
|
27
|
-
```bash
|
|
28
|
-
git log --oneline --since="[sprint-start]" --until="[sprint-end]"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Bước 2: Tạo báo cáo sprint
|
|
32
|
-
|
|
33
|
-
Ghi vào `{paths.reports}/sprint-review-$ARGUMENTS.md`:
|
|
34
|
-
|
|
35
|
-
```markdown
|
|
36
|
-
# Sprint Review: [Sprint Name]
|
|
37
|
-
|
|
38
|
-
**Kỳ**: [start] → [end]
|
|
39
|
-
**Team**: [roles từ config]
|
|
40
|
-
**Ngày tạo**: [date]
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Tóm Tắt
|
|
45
|
-
|
|
46
|
-
| Metric | Giá trị |
|
|
47
|
-
|--------|---------|
|
|
48
|
-
| Tasks hoàn thành | X/Y |
|
|
49
|
-
| Estimate tổng | Xh |
|
|
50
|
-
| Actual tổng | Xh |
|
|
51
|
-
| Accuracy | X% |
|
|
52
|
-
| Commits | X |
|
|
53
|
-
|
|
54
|
-
## Tasks Hoàn Thành
|
|
55
|
-
|
|
56
|
-
| Task | Estimate | Actual | Variance | Ghi chú |
|
|
57
|
-
|------|----------|--------|----------|---------|
|
|
58
|
-
| [task-name] | | | | |
|
|
59
|
-
|
|
60
|
-
## Tasks Chưa Hoàn Thành / Carry-over
|
|
61
|
-
|
|
62
|
-
| Task | Lý do | Hành động |
|
|
63
|
-
|------|-------|-----------|
|
|
64
|
-
| | | |
|
|
65
|
-
|
|
66
|
-
## Blockers Gặp Phải
|
|
67
|
-
|
|
68
|
-
[Danh sách blockers, đã giải quyết hay chưa]
|
|
69
|
-
|
|
70
|
-
## Lessons Learned
|
|
71
|
-
|
|
72
|
-
### Làm tốt (Keep)
|
|
73
|
-
- [Điều gì hiệu quả trong sprint này]
|
|
74
|
-
|
|
75
|
-
### Cần cải thiện (Improve)
|
|
76
|
-
- [Điều gì cần làm khác đi]
|
|
77
|
-
|
|
78
|
-
### Thử nghiệm (Try)
|
|
79
|
-
- [Điều gì muốn thử trong sprint sau]
|
|
80
|
-
|
|
81
|
-
## Items Cho Sprint Tiếp Theo
|
|
82
|
-
|
|
83
|
-
- [ ] [Action item 1] — owner: [role]
|
|
84
|
-
- [ ] [Action item 2]
|
|
85
|
-
|
|
86
|
-
## DORA Metrics (nếu có data)
|
|
87
|
-
|
|
88
|
-
| Metric | Giá trị | Target |
|
|
89
|
-
|--------|---------|--------|
|
|
90
|
-
| Deployment frequency | | |
|
|
91
|
-
| Lead time for changes | | |
|
|
92
|
-
| Change failure rate | | |
|
|
93
|
-
| MTTR | | |
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Bước 3: Thông báo
|
|
97
|
-
|
|
98
|
-
Hiển thị summary và path đến file báo cáo.
|
|
99
|
-
Gợi ý: "PM có thể chạy `/dw
|
|
1
|
+
---
|
|
2
|
+
name: dw:sprint-review
|
|
3
|
+
description: "Tổng kết sprint: tasks hoàn thành, metrics, lessons learned, items cho sprint tiếp theo. Dành cho team retrospective cuối sprint."
|
|
4
|
+
argument-hint: "[sprint-name hoặc period: e.g. sprint-3, 2026-03]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Sprint Review: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Đọc Config
|
|
10
|
+
|
|
11
|
+
Đọc `.dw/config/dw.config.yml`:
|
|
12
|
+
- `paths.tasks` → tìm task docs
|
|
13
|
+
- `.dw/metrics` → tìm effort data
|
|
14
|
+
- `tracking.estimation`, `tracking.log_work` → biết có data nào
|
|
15
|
+
|
|
16
|
+
## Bước 1: Thu thập dữ liệu
|
|
17
|
+
|
|
18
|
+
### Tasks trong sprint
|
|
19
|
+
Scan `{paths.tasks}/` tìm tasks có status Done hoặc In Progress trong kỳ sprint.
|
|
20
|
+
Đọc `*-progress.md` của mỗi task để lấy:
|
|
21
|
+
- Trạng thái cuối
|
|
22
|
+
- Effort estimate vs actual
|
|
23
|
+
- Blockers gặp phải
|
|
24
|
+
- Commits liên quan
|
|
25
|
+
|
|
26
|
+
### Git history
|
|
27
|
+
```bash
|
|
28
|
+
git log --oneline --since="[sprint-start]" --until="[sprint-end]"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Bước 2: Tạo báo cáo sprint
|
|
32
|
+
|
|
33
|
+
Ghi vào `{paths.reports}/sprint-review-$ARGUMENTS.md`:
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
# Sprint Review: [Sprint Name]
|
|
37
|
+
|
|
38
|
+
**Kỳ**: [start] → [end]
|
|
39
|
+
**Team**: [roles từ config]
|
|
40
|
+
**Ngày tạo**: [date]
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Tóm Tắt
|
|
45
|
+
|
|
46
|
+
| Metric | Giá trị |
|
|
47
|
+
|--------|---------|
|
|
48
|
+
| Tasks hoàn thành | X/Y |
|
|
49
|
+
| Estimate tổng | Xh |
|
|
50
|
+
| Actual tổng | Xh |
|
|
51
|
+
| Accuracy | X% |
|
|
52
|
+
| Commits | X |
|
|
53
|
+
|
|
54
|
+
## Tasks Hoàn Thành
|
|
55
|
+
|
|
56
|
+
| Task | Estimate | Actual | Variance | Ghi chú |
|
|
57
|
+
|------|----------|--------|----------|---------|
|
|
58
|
+
| [task-name] | | | | |
|
|
59
|
+
|
|
60
|
+
## Tasks Chưa Hoàn Thành / Carry-over
|
|
61
|
+
|
|
62
|
+
| Task | Lý do | Hành động |
|
|
63
|
+
|------|-------|-----------|
|
|
64
|
+
| | | |
|
|
65
|
+
|
|
66
|
+
## Blockers Gặp Phải
|
|
67
|
+
|
|
68
|
+
[Danh sách blockers, đã giải quyết hay chưa]
|
|
69
|
+
|
|
70
|
+
## Lessons Learned
|
|
71
|
+
|
|
72
|
+
### Làm tốt (Keep)
|
|
73
|
+
- [Điều gì hiệu quả trong sprint này]
|
|
74
|
+
|
|
75
|
+
### Cần cải thiện (Improve)
|
|
76
|
+
- [Điều gì cần làm khác đi]
|
|
77
|
+
|
|
78
|
+
### Thử nghiệm (Try)
|
|
79
|
+
- [Điều gì muốn thử trong sprint sau]
|
|
80
|
+
|
|
81
|
+
## Items Cho Sprint Tiếp Theo
|
|
82
|
+
|
|
83
|
+
- [ ] [Action item 1] — owner: [role]
|
|
84
|
+
- [ ] [Action item 2]
|
|
85
|
+
|
|
86
|
+
## DORA Metrics (nếu có data)
|
|
87
|
+
|
|
88
|
+
| Metric | Giá trị | Target |
|
|
89
|
+
|--------|---------|--------|
|
|
90
|
+
| Deployment frequency | | |
|
|
91
|
+
| Lead time for changes | | |
|
|
92
|
+
| Change failure rate | | |
|
|
93
|
+
| MTTR | | |
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Bước 3: Thông báo
|
|
97
|
+
|
|
98
|
+
Hiển thị summary và path đến file báo cáo.
|
|
99
|
+
Gợi ý: "PM có thể chạy `/dw:dashboard` để xem báo cáo đầy đủ hơn."
|
|
@@ -1,59 +1,71 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dw
|
|
3
|
-
description: "Khởi tạo bộ documentation cho task mới. Tạo thư mục và
|
|
4
|
-
argument-hint: "[task-name]"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Khởi Tạo Task: $ARGUMENTS
|
|
8
|
-
|
|
9
|
-
## Đọc Config
|
|
10
|
-
|
|
11
|
-
Đọc `.dw/config/dw.config.yml
|
|
12
|
-
- `paths.tasks` → thư mục chứa task docs (mặc định: `.dw/tasks`)
|
|
13
|
-
- `workflow.default_depth` → `quick | standard | thorough`
|
|
14
|
-
- `
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- `
|
|
31
|
-
- `
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
###
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
---
|
|
2
|
+
name: dw:task-init
|
|
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
|
+
argument-hint: "[task-name]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Khởi Tạo Task: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Đọc Config
|
|
10
|
+
|
|
11
|
+
Đọc `.dw/config/dw.config.yml`:
|
|
12
|
+
- `paths.tasks` → thư mục chứa task docs (mặc định: `.dw/tasks`)
|
|
13
|
+
- `workflow.default_depth` → `quick | standard | thorough`
|
|
14
|
+
- `project.language` → ngôn ngữ note thêm (templates hiện tại là vi/en-agnostic)
|
|
15
|
+
|
|
16
|
+
## Tạo Thư Mục & Files (v2 format)
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
{paths.tasks}/$ARGUMENTS/
|
|
20
|
+
├── spec.md # Intent + subtasks + success criteria (stable after approve)
|
|
21
|
+
└── tracking.md # Progress + changelog + handoff (mutable)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 1. Tạo spec.md
|
|
25
|
+
|
|
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`
|
|
34
|
+
|
|
35
|
+
Ghi vào `{paths.tasks}/$ARGUMENTS/spec.md`.
|
|
36
|
+
|
|
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.
|
|
51
|
+
|
|
52
|
+
## Sau Khi Tạo
|
|
53
|
+
|
|
54
|
+
Hiển thị cho user:
|
|
55
|
+
|
|
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
|
|
68
|
+
|
|
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.
|