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,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dw-thinking
|
|
3
|
+
description: "Áp dụng framework tư duy phản biện, hệ thống và đa góc nhìn vào vấn đề. Auto-load khi planning hoặc khi cần phân tích sâu. Dùng proactively."
|
|
4
|
+
argument-hint: "[vấn đề cần phân tích]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Framework Tư Duy — Áp Dụng Vào Task
|
|
9
|
+
|
|
10
|
+
Vấn đề: **$ARGUMENTS**
|
|
11
|
+
|
|
12
|
+
## Nạp Framework
|
|
13
|
+
|
|
14
|
+
@THINKING.md
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Áp Dụng Vào Task Hiện Tại
|
|
19
|
+
|
|
20
|
+
Sau khi đọc framework trên, áp dụng vào vấn đề `$ARGUMENTS`:
|
|
21
|
+
|
|
22
|
+
### 1. Tư Duy Phản Biện
|
|
23
|
+
|
|
24
|
+
**Giả định đang dùng:**
|
|
25
|
+
- [ ] [Giả định 1] — Cách kiểm chứng: ...
|
|
26
|
+
- [ ] [Giả định 2]
|
|
27
|
+
|
|
28
|
+
**Rủi ro chính (top 3):**
|
|
29
|
+
1. [Rủi ro] — Xác suất: Cao/TB/Thấp — Tác động: ...
|
|
30
|
+
2. ...
|
|
31
|
+
3. ...
|
|
32
|
+
|
|
33
|
+
**Phương án thay thế đã loại:**
|
|
34
|
+
- [Phương án A] — Loại vì: ...
|
|
35
|
+
|
|
36
|
+
**Edge cases cần xử lý:**
|
|
37
|
+
- [ ] [Edge case 1]
|
|
38
|
+
|
|
39
|
+
### 2. Tư Duy Hệ Thống
|
|
40
|
+
|
|
41
|
+
**Dependencies:**
|
|
42
|
+
- Upstream: [ai/module gì phụ thuộc vào]
|
|
43
|
+
- Downstream: [bị ảnh hưởng bởi thay đổi này]
|
|
44
|
+
|
|
45
|
+
**Tác động cascade:**
|
|
46
|
+
- Nếu thay đổi X → Y bị ảnh hưởng → Z cần cập nhật
|
|
47
|
+
|
|
48
|
+
**Failure modes:**
|
|
49
|
+
- [Nếu phần A fail → hệ thống phản ứng thế nào]
|
|
50
|
+
|
|
51
|
+
### 3. Đa Góc Nhìn
|
|
52
|
+
|
|
53
|
+
| Góc nhìn | Câu hỏi | Đánh giá |
|
|
54
|
+
|----------|---------|----------|
|
|
55
|
+
| User | [Ảnh hưởng UX?] | [OK / Concern] |
|
|
56
|
+
| Developer | [Maintainable?] | |
|
|
57
|
+
| Security | [Expose gì?] | |
|
|
58
|
+
| Ops | [Deploy issues?] | |
|
|
59
|
+
| Business | [Giá trị delivered?] | |
|
|
60
|
+
|
|
61
|
+
### 4. Kết Luận
|
|
62
|
+
|
|
63
|
+
**Quyết định:**
|
|
64
|
+
[Approach được chọn và lý do]
|
|
65
|
+
|
|
66
|
+
**Trade-offs chấp nhận:**
|
|
67
|
+
[Điểm yếu nào của approach này được chấp nhận]
|
|
68
|
+
|
|
69
|
+
**Điểm cần monitor:**
|
|
70
|
+
[Theo dõi gì sau khi implement]
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Tư Duy Phản Biện, Hệ Thống & Đa Góc Nhìn
|
|
2
|
+
|
|
3
|
+
Tài liệu này hướng dẫn cách áp dụng **tư duy phản biện tích cực**, **tư duy hệ thống** và **đa góc nhìn** khi lập kế hoạch, nghiên cứu và triển khai tasks — dùng cho cả người và agent.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Tư duy phản biện tích cực (Critical Thinking)
|
|
8
|
+
|
|
9
|
+
**Mục đích:** Không chấp nhận giả định một chiều; đặt câu hỏi, xem xét rủi ro và phương án thay thế để ra quyết định tốt hơn.
|
|
10
|
+
|
|
11
|
+
### 1.1 Câu hỏi nên đặt khi đọc/viết Research & Plan
|
|
12
|
+
|
|
13
|
+
- **Giả định:** Những giả định nào đang được coi là đúng? Nếu sai thì ảnh hưởng thế nào?
|
|
14
|
+
- **Bằng chứng:** Kết luận dựa trên đâu (code, doc, đo lường)? Thiếu bằng chứng ở đâu?
|
|
15
|
+
- **Edge case:** Trường hợp biên nào có thể làm hỏng thiết kế (user xóa, group đổi, đồng thời, rollback)?
|
|
16
|
+
- **Rủi ro:** Rủi ro kỹ thuật, vận hành, bảo mật nào? Xác suất và tác động?
|
|
17
|
+
- **Phương án thay thế:** Còn cách nào khác đạt mục tiêu? Trade-off so với phương án hiện tại?
|
|
18
|
+
- **Ngược lại:** Nếu *không* làm tính năng này thì sao? Có cách nào đơn giản hơn (workaround, process thủ công)?
|
|
19
|
+
|
|
20
|
+
### 1.2 Áp dụng trong task
|
|
21
|
+
|
|
22
|
+
- Trong **Research**: Ghi rõ "Giả định", "Hạn chế đã biết", "Chưa rõ / cần kiểm chứng".
|
|
23
|
+
- Trong **Plan**: Có mục **Rủi ro & Giả định** và **Phương án thay thế đã xem xét**; **Edge cases / Điều kiện bất thường** cần xử lý.
|
|
24
|
+
- Khi **thực hiện**: Nếu phát hiện giả định sai hoặc rủi ro mới → dừng lại ghi vào Changelog/Notes và (nếu cần) cập nhật plan.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. Tư duy hệ thống (Systems Thinking)
|
|
29
|
+
|
|
30
|
+
**Mục đích:** Xem task trong bối cảnh hệ thống lớn: phụ thuộc, tác động lan truyền, ranh giới, vòng lặp phản hồi.
|
|
31
|
+
|
|
32
|
+
### 2.1 Các khía cạnh cần xem xét
|
|
33
|
+
|
|
34
|
+
- **Phụ thuộc (Dependencies):** Task này phụ thuộc vào module/API/data nào? Ai phụ thuộc vào kết quả của task này (frontend, tích hợp, cron)?
|
|
35
|
+
- **Biên giới (Boundaries):** Ranh giới rõ ràng giữa "bên trong task" và "bên ngoài" (upstream, admin, bên thứ ba)? Giao diện (API, schema) ổn định chưa?
|
|
36
|
+
- **Luồng dữ liệu:** Dữ liệu đi từ đâu đến đâu? Có thêm DB, cache, queue không? Consistency và thứ tự cập nhật?
|
|
37
|
+
- **Tác động ngược (Feedback):** Thay đổi có tạo vòng lặp không (vd: share → notification → user vào share → lại trigger)? Cần giới hạn hoặc debounce?
|
|
38
|
+
- **Failure mode:** Một phần hệ thống lỗi thì task/hệ thống còn lại ứng xử thế nào (graceful degradation, rollback, alert)?
|
|
39
|
+
- **Scale & performance:** Khi số lượng share/recipient/user tăng, điểm nghẽn ở đâu (query N+1, index, lock)?
|
|
40
|
+
|
|
41
|
+
### 2.2 Áp dụng trong task
|
|
42
|
+
|
|
43
|
+
- **Plan** có mục **Tác động hệ thống**: danh sách module/API bị ảnh hưởng; migration/backward compatibility.
|
|
44
|
+
- **Research** nên vẽ (hoặc mô tả) luồng hiện tại và vị trí task trong bức tranh lớn.
|
|
45
|
+
- **Subtasks** tách rõ "thay đổi schema", "thay đổi service", "thay đổi route", "ảnh hưởng frontend" để dễ review dependency.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 3. Đa góc nhìn (Multiple Perspectives)
|
|
50
|
+
|
|
51
|
+
**Mục đích:** Tránh tối ưu cho một vai duy nhất; cân bằng nhu cầu của nhiều bên liên quan và bối cảnh khác nhau.
|
|
52
|
+
|
|
53
|
+
### 3.1 Các góc nhìn gợi ý
|
|
54
|
+
|
|
55
|
+
| Góc nhìn | Câu hỏi điển hình |
|
|
56
|
+
|----------|--------------------|
|
|
57
|
+
| **End user** | Dễ dùng không? Hiểu rõ feature vs use cases? Thu hồi có rõ ràng không? |
|
|
58
|
+
| **Admin** | Quản lý share/recipient toàn hệ thống thế nào? Audit, abuse (spam share)? |
|
|
59
|
+
| **Developer / Maintainer** | Code dễ đọc, dễ test không? API nhất quán với phần còn lại? |
|
|
60
|
+
| **Ops / Vận hành** | Backup, restore, migration? Log, metric, debug khi lỗi? |
|
|
61
|
+
| **Bảo mật** | Ai được xem/tải gì? Lộ gì? lộ metadata? Rate limit, audit log? |
|
|
62
|
+
| **Sản phẩm / Business** | Giải quyết đúng pain point chưa? Có thể launch từng phần (phase1, phase2,...)? |
|
|
63
|
+
| **Thời gian:** ngắn hạn vs dài hạn | Ship nhanh vs kiến trúc bền vững; tech debt có chấp nhận tạm không? |
|
|
64
|
+
|
|
65
|
+
### 3.2 Áp dụng trong task
|
|
66
|
+
|
|
67
|
+
- Trong **Plan**: mục **Góc nhìn & Trade-off** — với mỗi quyết định lớn, ghi ngắn tác động lên user / admin / dev / security.
|
|
68
|
+
- **Acceptance criteria** có thể tách: "User: ...", "Admin: ...", "Security: ...".
|
|
69
|
+
- Khi **review** hoặc **agent thực hiện**: nếu chỉ làm đúng "yêu cầu kỹ thuật" mà bỏ qua góc admin/security → nhắc bổ sung.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. Checklist nhanh khi tạo/cập nhật task
|
|
74
|
+
|
|
75
|
+
- [ ] **Research:** Đã ghi giả định, hạn chế, chưa rõ?
|
|
76
|
+
- [ ] **Plan:** Có mục Rủi ro & Giả định, Phương án thay thế, Edge cases?
|
|
77
|
+
- [ ] **Plan:** Có mục Tác động hệ thống (module, API, migration)?
|
|
78
|
+
- [ ] **Plan:** Có xem xét ít nhất 2–3 góc nhìn (user, admin, security hoặc dev)?
|
|
79
|
+
- [ ] **Subtasks:** Thứ tự có tính đến dependency và failure mode không?
|
|
80
|
+
- [ ] **Changelog:** Khi giả định sai hoặc rủi ro mới xuất hiện, đã ghi lại chưa?
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 5. Gợi ý prompt cho Agent
|
|
85
|
+
|
|
86
|
+
Khi giao task cho agent, có thể thêm:
|
|
87
|
+
|
|
88
|
+
- "Khi làm task nên áp dụng kết hợp tư duy trong `.claude/skills/dw-thinking/THINKING.md`: xem xét rủi ro và edge case, tác động lên các module khác, và ít nhất 2 góc nhìn (vd: user + security). Nếu phát hiện giả định sai hoặc thiếu, ghi vào Notes/Changelog của task."
|
|
89
|
+
- "Trước khi implement, liệt kê ngắn: (1) giả định đang dùng, (2) 2 rủi ro chính, (3) 1 phương án thay thế đã loại và lý do."
|
|
90
|
+
|
|
91
|
+
Như vậy agent vừa làm đúng spec vừa bổ sung tư duy phản biện và hệ thống vào doc, giúp người review và task sau có thêm ngữ cảnh.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dw-upgrade
|
|
3
|
+
description: "Upgrade dv-workflow-kit lên version mới. So sánh toolkit files, báo cáo thay đổi, cho phép selective update mà không overwrite customizations."
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Upgrade dv-workflow-kit
|
|
8
|
+
|
|
9
|
+
## Điều Kiện Tiên Quyết
|
|
10
|
+
|
|
11
|
+
Skill này yêu cầu toolkit được cài qua git submodule tại `.dw-module/`.
|
|
12
|
+
|
|
13
|
+
## Bước 1: Kiểm tra setup
|
|
14
|
+
|
|
15
|
+
Kiểm tra `.dw-module/` có tồn tại và là git repo:
|
|
16
|
+
```bash
|
|
17
|
+
ls .dw-module/.git
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Nếu không có → thông báo: "Toolkit chưa được cài dạng git submodule. Xem `examples/integration-guide/README.md`."
|
|
21
|
+
|
|
22
|
+
## Bước 2: Pull version mới nhất
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
cd .dv-workflow && git fetch origin && git log origin/main --oneline -5
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Hiển thị 5 commits mới nhất của upstream để user biết có gì thay đổi.
|
|
29
|
+
|
|
30
|
+
## Bước 3: Backup config
|
|
31
|
+
|
|
32
|
+
Trước khi update, backup config hiện tại:
|
|
33
|
+
```bash
|
|
34
|
+
cp .dw/config/dw.config.yml .dw/config/dw.config.yml.backup-$(date +%Y%m%d)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Thông báo: "Config đã backup tại `.dw/config/dw.config.yml.backup-[date]`"
|
|
38
|
+
|
|
39
|
+
## Bước 4: Update submodule
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
cd .dv-workflow && git pull origin main
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Bước 5: So sánh và update files
|
|
46
|
+
|
|
47
|
+
Chạy setup script với mode update (không overwrite):
|
|
48
|
+
```bash
|
|
49
|
+
bash .dw-module/examples/integration-guide/setup.sh
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Script dùng `cp -n` (no-clobber) — chỉ copy files MỚI, không overwrite files đã customize.
|
|
53
|
+
|
|
54
|
+
## Bước 6: Báo cáo kết quả
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
=== Upgrade Report ===
|
|
58
|
+
|
|
59
|
+
Từ: [old version/commit]
|
|
60
|
+
Đến: [new version/commit]
|
|
61
|
+
|
|
62
|
+
Files mới (đã copy):
|
|
63
|
+
+ .claude/skills/dw-[new-skill]/SKILL.md
|
|
64
|
+
+ .claude/templates/en/task-context.md
|
|
65
|
+
|
|
66
|
+
Files đã thay đổi trong toolkit (KHÔNG tự động update vì bạn có thể đã customize):
|
|
67
|
+
~ .claude/skills/dw-task-init/SKILL.md — xem diff: git diff .dw-module/.claude/skills/dw-task-init/SKILL.md
|
|
68
|
+
~ .claude/agents/planner.md
|
|
69
|
+
|
|
70
|
+
Files của bạn (giữ nguyên):
|
|
71
|
+
= .dw/config/dw.config.yml (backup tại .backup-[date])
|
|
72
|
+
|
|
73
|
+
Lưu ý:
|
|
74
|
+
- Review các files "đã thay đổi" và merge thủ công nếu cần
|
|
75
|
+
- Xem CHANGELOG tại .dw-module/CHANGELOG.md để biết breaking changes
|
|
76
|
+
- Chạy /dw-config-validate sau khi upgrade để kiểm tra config
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Bước 7: Cleanup backup (tùy chọn)
|
|
80
|
+
|
|
81
|
+
Hỏi user: "Bạn có muốn xóa file backup config không? (y/n)"
|
|
82
|
+
Nếu y: `rm .dw/config/dw.config.yml.backup-*`
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Context: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Survey date: [date]
|
|
4
|
+
## Performed by: [dev / agent]
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Original Requirements
|
|
9
|
+
|
|
10
|
+
> [Copy/paste requirements from user, ticket, or BA requirements doc]
|
|
11
|
+
|
|
12
|
+
## Codebase Analysis
|
|
13
|
+
|
|
14
|
+
### Related Files
|
|
15
|
+
|
|
16
|
+
| # | File | Role | Needs change? | Notes |
|
|
17
|
+
|---|------|------|---------------|-------|
|
|
18
|
+
| 1 | | | | |
|
|
19
|
+
|
|
20
|
+
### Current Architecture
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
[Describe current flow, ASCII diagram if needed]
|
|
24
|
+
|
|
25
|
+
Input → [Module A] → [Module B] → Output
|
|
26
|
+
↓
|
|
27
|
+
[Database]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Data Flow
|
|
31
|
+
|
|
32
|
+
- **Input**: [Where does input come from, what format]
|
|
33
|
+
- **Processing**: [Main processing logic]
|
|
34
|
+
- **Output**: [Where does output go, what format]
|
|
35
|
+
- **Storage**: [Where is it stored, what schema]
|
|
36
|
+
|
|
37
|
+
## Dependencies
|
|
38
|
+
|
|
39
|
+
### Upstream (task depends on)
|
|
40
|
+
- [ ] [Module/API/Service] — [role]
|
|
41
|
+
|
|
42
|
+
### Downstream (affected by this task)
|
|
43
|
+
- [ ] [Module/API/Service] — [how affected]
|
|
44
|
+
|
|
45
|
+
## Patterns & Conventions Found
|
|
46
|
+
|
|
47
|
+
| Pattern | Description | Example (file:line) |
|
|
48
|
+
|---------|-------------|---------------------|
|
|
49
|
+
| | | |
|
|
50
|
+
|
|
51
|
+
## Current Test Coverage
|
|
52
|
+
|
|
53
|
+
- [ ] Are there tests for the affected area? [Yes/No]
|
|
54
|
+
- Test files: [list]
|
|
55
|
+
- Coverage: [% or description]
|
|
56
|
+
- Gaps: [where tests are missing]
|
|
57
|
+
|
|
58
|
+
## Assumptions
|
|
59
|
+
|
|
60
|
+
| # | Assumption | Needs verification? | If wrong, impact? |
|
|
61
|
+
|---|-----------|---------------------|-------------------|
|
|
62
|
+
| 1 | | Yes / No | |
|
|
63
|
+
|
|
64
|
+
## Known Constraints
|
|
65
|
+
- [Constraint 1]
|
|
66
|
+
|
|
67
|
+
## Unclear / Needs Clarification
|
|
68
|
+
- [ ] [Question 1] — who to ask?
|
|
69
|
+
- [ ] [Question 2]
|
|
70
|
+
|
|
71
|
+
## Additional Notes
|
|
72
|
+
|
|
73
|
+
[Any other important information: gotchas, tech debt, recent change history]
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Plan: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Created: [date]
|
|
4
|
+
## Status: Draft | Approved | In Progress | Done
|
|
5
|
+
## Approved by: [name / role]
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Solution Summary
|
|
10
|
+
|
|
11
|
+
[1-2 paragraphs describing the goal and chosen approach]
|
|
12
|
+
|
|
13
|
+
## Options Considered
|
|
14
|
+
|
|
15
|
+
| # | Option | Pros | Cons | Selected? |
|
|
16
|
+
|---|--------|------|------|-----------|
|
|
17
|
+
| 1 | [Approach A] | | | **Selected** |
|
|
18
|
+
| 2 | [Approach B] | | | Rejected — reason: |
|
|
19
|
+
|
|
20
|
+
## Subtasks
|
|
21
|
+
|
|
22
|
+
### ST-1: [Subtask name]
|
|
23
|
+
- **Description**: [Specific, actionable]
|
|
24
|
+
- **Files**: [List of files to change]
|
|
25
|
+
- **Acceptance Criteria**:
|
|
26
|
+
- [ ] [Condition 1]
|
|
27
|
+
- [ ] [Condition 2]
|
|
28
|
+
- **Dependencies**: none
|
|
29
|
+
- **Estimate**: [effort — if estimation enabled]
|
|
30
|
+
|
|
31
|
+
### ST-2: [Subtask name]
|
|
32
|
+
- **Description**: ...
|
|
33
|
+
- **Files**: ...
|
|
34
|
+
- **Acceptance Criteria**:
|
|
35
|
+
- [ ] ...
|
|
36
|
+
- **Dependencies**: ST-1
|
|
37
|
+
- **Estimate**: ...
|
|
38
|
+
|
|
39
|
+
<!-- Add more subtasks as needed -->
|
|
40
|
+
|
|
41
|
+
## Risks & Assumptions
|
|
42
|
+
|
|
43
|
+
| # | Type | Description | Probability | Impact | Mitigation |
|
|
44
|
+
|---|------|-------------|-------------|--------|------------|
|
|
45
|
+
| 1 | Assumption | | | | Verify by: |
|
|
46
|
+
| 2 | Risk | | High/Med/Low | High/Med/Low | |
|
|
47
|
+
|
|
48
|
+
## Edge Cases
|
|
49
|
+
|
|
50
|
+
- [ ] [Edge case 1 — when it occurs, how to handle]
|
|
51
|
+
- [ ] [Edge case 2]
|
|
52
|
+
|
|
53
|
+
## System Impact
|
|
54
|
+
|
|
55
|
+
- **Affected modules**: [list]
|
|
56
|
+
- **API changes**: [new/modified/removed endpoints]
|
|
57
|
+
- **Database changes**: [migrations needed]
|
|
58
|
+
- **Backward compatibility**: [Yes/No — details]
|
|
59
|
+
- **Breaking changes**: [if any]
|
|
60
|
+
|
|
61
|
+
## Perspectives & Trade-offs
|
|
62
|
+
|
|
63
|
+
| Decision | User impact | Developer impact | Security | Ops/Deploy |
|
|
64
|
+
|----------|-------------|------------------|----------|------------|
|
|
65
|
+
| [Decision 1] | | | | |
|
|
66
|
+
|
|
67
|
+
<!-- Section below only shown when flags.estimation = true -->
|
|
68
|
+
|
|
69
|
+
## Estimation Summary
|
|
70
|
+
|
|
71
|
+
| Phase | Estimate | Notes |
|
|
72
|
+
|-------|----------|-------|
|
|
73
|
+
| Research | [done] | |
|
|
74
|
+
| Planning | [done] | |
|
|
75
|
+
| Coding | | |
|
|
76
|
+
| Testing | | |
|
|
77
|
+
| Review | | |
|
|
78
|
+
| Documentation | | |
|
|
79
|
+
| **Total** | **[sum]** | |
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Progress: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Status: Not Started | In Progress | Blocked | Done
|
|
4
|
+
## Branch: [branch-name]
|
|
5
|
+
## Started: [date]
|
|
6
|
+
## Completed: [date — when done]
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Subtask Progress
|
|
11
|
+
|
|
12
|
+
| # | Subtask | Status | Commit | Owner | Notes |
|
|
13
|
+
|---|---------|--------|--------|-------|-------|
|
|
14
|
+
| ST-1 | | Pending | | | |
|
|
15
|
+
| ST-2 | | Pending | | | |
|
|
16
|
+
|
|
17
|
+
**Status values**: Pending → In Progress → Done | Blocked | Skipped
|
|
18
|
+
|
|
19
|
+
## Changelog
|
|
20
|
+
|
|
21
|
+
Record all deviations from the original plan.
|
|
22
|
+
|
|
23
|
+
### [date] — [description of change]
|
|
24
|
+
- **Reason**: [why the change was made]
|
|
25
|
+
- **Impact**: [which subtasks are affected]
|
|
26
|
+
- **Decision by**: [human / agent / both]
|
|
27
|
+
|
|
28
|
+
## New Findings
|
|
29
|
+
|
|
30
|
+
Record when assumptions are wrong, new risks appear, or scope changes.
|
|
31
|
+
|
|
32
|
+
| # | Finding | Impact | Action | Status |
|
|
33
|
+
|---|---------|--------|--------|--------|
|
|
34
|
+
| 1 | | | | Resolved / Open |
|
|
35
|
+
|
|
36
|
+
## Blockers
|
|
37
|
+
|
|
38
|
+
- [ ] [Blocker 1] — owner: [who is responsible] — since: [date]
|
|
39
|
+
|
|
40
|
+
<!-- Section below only shown when flags.log_work = true -->
|
|
41
|
+
|
|
42
|
+
## Effort Log
|
|
43
|
+
|
|
44
|
+
| Date | Subtask | Work type | Estimate | Actual | Notes |
|
|
45
|
+
|------|---------|-----------|----------|--------|-------|
|
|
46
|
+
| | | coding/testing/review | | | |
|
|
47
|
+
|
|
48
|
+
### Effort Summary
|
|
49
|
+
|
|
50
|
+
| Metric | Value |
|
|
51
|
+
|--------|-------|
|
|
52
|
+
| Total Estimate | |
|
|
53
|
+
| Total Actual | |
|
|
54
|
+
| Variance | |
|
|
55
|
+
| Accuracy | % |
|
|
56
|
+
|
|
57
|
+
## Handoff Notes
|
|
58
|
+
|
|
59
|
+
Record at end of session so next person/agent can continue without asking.
|
|
60
|
+
|
|
61
|
+
### Session [date]
|
|
62
|
+
- **Currently at**: ST-[N] — [describe current state]
|
|
63
|
+
- **Important context**: [decisions, gotchas]
|
|
64
|
+
- **Next steps**: [what to do immediately]
|
|
65
|
+
- **Watch out for**: [warnings, edge cases encountered]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
## Tóm Tắt
|
|
2
|
+
|
|
3
|
+
[Mô tả ngắn: thay đổi gì, tại sao]
|
|
4
|
+
|
|
5
|
+
## Loại Thay Đổi
|
|
6
|
+
|
|
7
|
+
- [ ] Feature mới (feat)
|
|
8
|
+
- [ ] Bug fix (fix)
|
|
9
|
+
- [ ] Refactoring (refactor)
|
|
10
|
+
- [ ] Tests (test)
|
|
11
|
+
- [ ] Documentation (docs)
|
|
12
|
+
- [ ] Performance (perf)
|
|
13
|
+
- [ ] Chore/Config (chore)
|
|
14
|
+
|
|
15
|
+
## Thay Đổi Chi Tiết
|
|
16
|
+
|
|
17
|
+
- [Thay đổi 1]: [mô tả]
|
|
18
|
+
- [Thay đổi 2]: [mô tả]
|
|
19
|
+
|
|
20
|
+
## Task Documentation
|
|
21
|
+
|
|
22
|
+
- Plan: `.dw/tasks/[task-name]/[task-name]-plan.md`
|
|
23
|
+
- Context: `.dw/tasks/[task-name]/[task-name]-context.md`
|
|
24
|
+
- Progress: `.dw/tasks/[task-name]/[task-name]-progress.md`
|
|
25
|
+
|
|
26
|
+
## Testing
|
|
27
|
+
|
|
28
|
+
- [ ] Unit tests pass
|
|
29
|
+
- [ ] Integration tests pass (nếu applicable)
|
|
30
|
+
- [ ] Manual testing done
|
|
31
|
+
- [ ] Edge cases đã test: [liệt kê]
|
|
32
|
+
|
|
33
|
+
## Checklist
|
|
34
|
+
|
|
35
|
+
- [ ] Code tuân thủ conventions (`.claude/rules/code-style.md`)
|
|
36
|
+
- [ ] Commit messages đúng format
|
|
37
|
+
- [ ] Không có sensitive data (secrets, tokens, .env)
|
|
38
|
+
- [ ] Không có debug code (console.log, debugger)
|
|
39
|
+
- [ ] Documentation cập nhật (nếu applicable)
|
|
40
|
+
- [ ] Breaking changes đã documented (nếu có)
|
|
41
|
+
- [ ] Backward compatible (hoặc migration plan có sẵn)
|
|
42
|
+
|
|
43
|
+
## Screenshots / Demo
|
|
44
|
+
|
|
45
|
+
[Nếu UI changes — đính kèm screenshots]
|
|
46
|
+
|
|
47
|
+
## Estimate vs Actual
|
|
48
|
+
|
|
49
|
+
| Metric | Giá trị |
|
|
50
|
+
|--------|---------|
|
|
51
|
+
| Estimated | [hours/points] |
|
|
52
|
+
| Actual | [hours/points] |
|
|
53
|
+
| Notes | |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
> PR này được tạo với sự hỗ trợ của AI Agent (dv-workflow-kit)
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Context: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Ngày khảo sát: [date]
|
|
4
|
+
## Người thực hiện: [dev / agent]
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Yêu Cầu Gốc
|
|
9
|
+
|
|
10
|
+
> [Copy/paste yêu cầu từ user, ticket, hoặc BA requirements doc]
|
|
11
|
+
|
|
12
|
+
## Codebase Analysis
|
|
13
|
+
|
|
14
|
+
### Files Liên Quan
|
|
15
|
+
|
|
16
|
+
| # | File | Vai trò | Cần thay đổi? | Ghi chú |
|
|
17
|
+
|---|------|---------|----------------|---------|
|
|
18
|
+
| 1 | | | | |
|
|
19
|
+
|
|
20
|
+
### Kiến Trúc Hiện Tại
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
[Mô tả luồng hiện tại, có thể dùng ASCII diagram]
|
|
24
|
+
|
|
25
|
+
Input → [Module A] → [Module B] → Output
|
|
26
|
+
↓
|
|
27
|
+
[Database]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Data Flow
|
|
31
|
+
|
|
32
|
+
- **Input**: [Dữ liệu đầu vào từ đâu, format gì]
|
|
33
|
+
- **Processing**: [Logic xử lý chính]
|
|
34
|
+
- **Output**: [Kết quả đi đâu, format gì]
|
|
35
|
+
- **Storage**: [Lưu ở đâu, schema gì]
|
|
36
|
+
|
|
37
|
+
## Dependencies
|
|
38
|
+
|
|
39
|
+
### Upstream (task phụ thuộc vào)
|
|
40
|
+
- [ ] [Module/API/Service] — [vai trò]
|
|
41
|
+
|
|
42
|
+
### Downstream (bị ảnh hưởng bởi task)
|
|
43
|
+
- [ ] [Module/API/Service] — [ảnh hưởng thế nào]
|
|
44
|
+
|
|
45
|
+
## Patterns & Conventions Phát Hiện
|
|
46
|
+
|
|
47
|
+
| Pattern | Mô tả | Ví dụ (file:line) |
|
|
48
|
+
|---------|--------|--------------------|
|
|
49
|
+
| | | |
|
|
50
|
+
|
|
51
|
+
## Test Coverage Hiện Tại
|
|
52
|
+
|
|
53
|
+
- [ ] Có tests cho khu vực liên quan? [Có/Không]
|
|
54
|
+
- Test files: [danh sách]
|
|
55
|
+
- Coverage: [% hoặc mô tả]
|
|
56
|
+
- Gaps: [thiếu test ở đâu]
|
|
57
|
+
|
|
58
|
+
## Giả Định
|
|
59
|
+
|
|
60
|
+
| # | Giả định | Cần kiểm chứng? | Nếu sai thì sao? |
|
|
61
|
+
|---|----------|------------------|-------------------|
|
|
62
|
+
| 1 | | Có / Không | |
|
|
63
|
+
|
|
64
|
+
## Hạn Chế Đã Biết
|
|
65
|
+
- [Hạn chế 1]
|
|
66
|
+
|
|
67
|
+
## Chưa Rõ / Cần Làm Rõ
|
|
68
|
+
- [ ] [Câu hỏi 1] — cần hỏi ai?
|
|
69
|
+
- [ ] [Câu hỏi 2]
|
|
70
|
+
|
|
71
|
+
## Ghi Chú Bổ Sung
|
|
72
|
+
|
|
73
|
+
[Bất kỳ thông tin quan trọng khác: gotchas, tech debt, lịch sử thay đổi gần đây]
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Plan: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Ngày tạo: [date]
|
|
4
|
+
## Trạng thái: Draft | Approved | In Progress | Done
|
|
5
|
+
## Approved by: [tên / role]
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Tóm Tắt Giải Pháp
|
|
10
|
+
|
|
11
|
+
[1-2 đoạn mô tả mục tiêu và approach đã chọn]
|
|
12
|
+
|
|
13
|
+
## Phương Án Đã Xem Xét
|
|
14
|
+
|
|
15
|
+
| # | Phương án | Ưu điểm | Nhược điểm | Chọn? |
|
|
16
|
+
|---|-----------|---------|------------|-------|
|
|
17
|
+
| 1 | [Approach A] | | | **Chọn** |
|
|
18
|
+
| 2 | [Approach B] | | | Loại — lý do: |
|
|
19
|
+
|
|
20
|
+
## Subtasks
|
|
21
|
+
|
|
22
|
+
### ST-1: [Tên subtask]
|
|
23
|
+
- **Mô tả**: [Cụ thể, actionable]
|
|
24
|
+
- **Files**: [Danh sách files cần thay đổi]
|
|
25
|
+
- **Acceptance Criteria**:
|
|
26
|
+
- [ ] [Điều kiện 1]
|
|
27
|
+
- [ ] [Điều kiện 2]
|
|
28
|
+
- **Dependencies**: none
|
|
29
|
+
- **Estimate**: [effort — nếu estimation enabled]
|
|
30
|
+
|
|
31
|
+
### ST-2: [Tên subtask]
|
|
32
|
+
- **Mô tả**: ...
|
|
33
|
+
- **Files**: ...
|
|
34
|
+
- **Acceptance Criteria**:
|
|
35
|
+
- [ ] ...
|
|
36
|
+
- **Dependencies**: ST-1
|
|
37
|
+
- **Estimate**: ...
|
|
38
|
+
|
|
39
|
+
<!-- Thêm subtasks theo nhu cầu -->
|
|
40
|
+
|
|
41
|
+
## Rủi Ro & Giả Định
|
|
42
|
+
|
|
43
|
+
| # | Loại | Mô tả | Xác suất | Tác động | Giảm thiểu |
|
|
44
|
+
|---|------|--------|----------|----------|------------|
|
|
45
|
+
| 1 | Giả định | | | | Kiểm chứng bằng: |
|
|
46
|
+
| 2 | Rủi ro | | Cao/TB/Thấp | Cao/TB/Thấp | |
|
|
47
|
+
|
|
48
|
+
## Edge Cases
|
|
49
|
+
|
|
50
|
+
- [ ] [Edge case 1 — khi nào xảy ra, xử lý thế nào]
|
|
51
|
+
- [ ] [Edge case 2]
|
|
52
|
+
|
|
53
|
+
## Tác Động Hệ Thống
|
|
54
|
+
|
|
55
|
+
- **Modules bị ảnh hưởng**: [danh sách]
|
|
56
|
+
- **API changes**: [endpoints mới/sửa/xóa]
|
|
57
|
+
- **Database changes**: [migration cần thiết]
|
|
58
|
+
- **Backward compatibility**: [Có/Không — chi tiết]
|
|
59
|
+
- **Breaking changes**: [nếu có]
|
|
60
|
+
|
|
61
|
+
## Góc Nhìn & Trade-offs
|
|
62
|
+
|
|
63
|
+
| Quyết định | User impact | Developer impact | Security | Ops/Deploy |
|
|
64
|
+
|-----------|-------------|------------------|----------|------------|
|
|
65
|
+
| [Quyết định 1] | | | | |
|
|
66
|
+
|
|
67
|
+
<!-- Section dưới chỉ hiển thị khi flags.estimation = true -->
|
|
68
|
+
|
|
69
|
+
## Estimation Tổng
|
|
70
|
+
|
|
71
|
+
| Phase | Estimate | Ghi chú |
|
|
72
|
+
|-------|----------|---------|
|
|
73
|
+
| Research | [done] | |
|
|
74
|
+
| Planning | [done] | |
|
|
75
|
+
| Coding | | |
|
|
76
|
+
| Testing | | |
|
|
77
|
+
| Review | | |
|
|
78
|
+
| Documentation | | |
|
|
79
|
+
| **Total** | **[sum]** | |
|