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,65 @@
|
|
|
1
|
+
# Progress: [Task Name]
|
|
2
|
+
|
|
3
|
+
## Trạng thái: Not Started | In Progress | Blocked | Done
|
|
4
|
+
## Branch: [branch-name]
|
|
5
|
+
## Bắt đầu: [date]
|
|
6
|
+
## Kết thúc: [date — khi done]
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Subtask Progress
|
|
11
|
+
|
|
12
|
+
| # | Subtask | Trạng thái | Commit | Người thực hiện | Ghi chú |
|
|
13
|
+
|---|---------|-----------|--------|-----------------|---------|
|
|
14
|
+
| ST-1 | | Pending | | | |
|
|
15
|
+
| ST-2 | | Pending | | | |
|
|
16
|
+
|
|
17
|
+
**Trạng thái**: Pending → In Progress → Done | Blocked | Skipped
|
|
18
|
+
|
|
19
|
+
## Changelog
|
|
20
|
+
|
|
21
|
+
Ghi lại mọi thay đổi so với plan gốc.
|
|
22
|
+
|
|
23
|
+
### [date] — [mô tả thay đổi]
|
|
24
|
+
- **Lý do**: [tại sao thay đổi]
|
|
25
|
+
- **Ảnh hưởng**: [subtasks nào bị ảnh hưởng]
|
|
26
|
+
- **Quyết định bởi**: [human / agent / cả hai]
|
|
27
|
+
|
|
28
|
+
## Phát Hiện Mới
|
|
29
|
+
|
|
30
|
+
Ghi lại khi phát hiện giả định sai, rủi ro mới, hoặc scope thay đổi.
|
|
31
|
+
|
|
32
|
+
| # | Phát hiện | Ảnh hưởng | Hành động | Trạng thái |
|
|
33
|
+
|---|-----------|-----------|-----------|-----------|
|
|
34
|
+
| 1 | | | | Resolved / Open |
|
|
35
|
+
|
|
36
|
+
## Blockers
|
|
37
|
+
|
|
38
|
+
- [ ] [Blocker 1] — owner: [ai chịu trách nhiệm] — since: [date]
|
|
39
|
+
|
|
40
|
+
<!-- Section dưới chỉ hiển thị khi flags.log_work = true -->
|
|
41
|
+
|
|
42
|
+
## Effort Log
|
|
43
|
+
|
|
44
|
+
| Ngày | Subtask | Loại công việc | Estimate | Actual | Ghi chú |
|
|
45
|
+
|------|---------|---------------|----------|--------|---------|
|
|
46
|
+
| | | coding/testing/review | | | |
|
|
47
|
+
|
|
48
|
+
### Tổng kết Effort
|
|
49
|
+
|
|
50
|
+
| Metric | Giá trị |
|
|
51
|
+
|--------|---------|
|
|
52
|
+
| Total Estimate | |
|
|
53
|
+
| Total Actual | |
|
|
54
|
+
| Variance | |
|
|
55
|
+
| Accuracy | % |
|
|
56
|
+
|
|
57
|
+
## Handoff Notes
|
|
58
|
+
|
|
59
|
+
Ghi lại khi kết thúc session để người/agent tiếp theo hiểu context.
|
|
60
|
+
|
|
61
|
+
### Session [date]
|
|
62
|
+
- **Đang ở**: ST-[N] — [mô tả trạng thái]
|
|
63
|
+
- **Context quan trọng**: [decisions, gotchas]
|
|
64
|
+
- **Bước tiếp theo**: [việc cần làm ngay]
|
|
65
|
+
- **Cẩn thận**: [warnings, edge cases đã gặp]
|
|
File without changes
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# .dw/adapters/claude-cli/extensions/
|
|
2
|
+
|
|
3
|
+
> **NET-NEW TEAM SKILLS — Không conflict với generated, không bị overwrite.**
|
|
4
|
+
|
|
5
|
+
## Mục đích
|
|
6
|
+
|
|
7
|
+
Thêm skills hoàn toàn mới mà không có trong dw-kit core.
|
|
8
|
+
|
|
9
|
+
## Cách dùng
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
extensions/
|
|
13
|
+
└── dw-deploy/
|
|
14
|
+
├── SKILL.md ← skill definition
|
|
15
|
+
└── README.md ← optional: mô tả skill
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`setup.sh` copy tất cả skills trong thư mục này vào `.claude/skills/`.
|
|
19
|
+
|
|
20
|
+
## Ví dụ Skills Phù Hợp
|
|
21
|
+
|
|
22
|
+
- `/dw-deploy` — deployment workflow cho team
|
|
23
|
+
- `/dw-migration` — database migration helper
|
|
24
|
+
- `/dw-release` — release checklist
|
|
25
|
+
- `/dw-notify` — team notification integration
|
|
26
|
+
|
|
27
|
+
## Convention
|
|
28
|
+
|
|
29
|
+
- Tên folder = tên skill (kebab-case)
|
|
30
|
+
- SKILL.md theo format chuẩn (xem `.claude/skills/` cho examples)
|
|
31
|
+
- Tên skill nên bắt đầu bằng `dw-` để nhất quán
|
|
32
|
+
|
|
33
|
+
## Đóng góp cho community
|
|
34
|
+
|
|
35
|
+
Nếu skill hữu ích cho mọi team, submit PR vào toolkit repo.
|
|
36
|
+
Xem `docs/custom-skills.md` để biết hướng dẫn.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# .dw/adapters/claude-cli/generated/
|
|
2
|
+
|
|
3
|
+
> **AUTO-GENERATED — Không edit tay.**
|
|
4
|
+
> Thư mục này được overwrite khi chạy `scripts/upgrade.sh` hoặc `setup.sh`.
|
|
5
|
+
|
|
6
|
+
## Nội dung
|
|
7
|
+
|
|
8
|
+
Chứa Claude Code-specific files được generate từ `core/` + `.dw/config/dw.config.yml`:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
generated/
|
|
12
|
+
├── skills/ # Skill shell files (.claude/skills/ → populated từ đây)
|
|
13
|
+
├── agents/ # Agent files (.claude/agents/ → populated từ đây)
|
|
14
|
+
└── settings.json # settings.json base template
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Cách hoạt động
|
|
18
|
+
|
|
19
|
+
`setup.sh` → copy `generated/` → `.claude/`, với overrides từ `overrides/` thắng.
|
|
20
|
+
|
|
21
|
+
## Nếu muốn customize
|
|
22
|
+
|
|
23
|
+
Đặt file override vào `.dw/adapters/claude-cli/overrides/` — không edit tay ở đây.
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# .dw/adapters/claude-cli/overrides/
|
|
2
|
+
|
|
3
|
+
> **TEAM CUSTOMIZATIONS — KHÔNG BAO GIỜ bị overwrite khi upgrade.**
|
|
4
|
+
|
|
5
|
+
## Mục đích
|
|
6
|
+
|
|
7
|
+
Đặt file override vào đây khi team muốn customize skill hoặc agent mà không mất khi upgrade toolkit.
|
|
8
|
+
|
|
9
|
+
## Cách dùng
|
|
10
|
+
|
|
11
|
+
Tạo file với đường dẫn tương tự `generated/`:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
overrides/
|
|
15
|
+
├── skills/
|
|
16
|
+
│ └── plan/
|
|
17
|
+
│ └── SKILL.md ← override generated/skills/plan/SKILL.md
|
|
18
|
+
└── agents/
|
|
19
|
+
└── reviewer.md ← override generated/agents/reviewer.md
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Khi upgrade, `scripts/upgrade.sh` sẽ:
|
|
23
|
+
1. Update `generated/` từ toolkit mới
|
|
24
|
+
2. Apply overrides từ thư mục này (overrides thắng generated)
|
|
25
|
+
3. Copy kết quả vào `.claude/`
|
|
26
|
+
|
|
27
|
+
## Khi nào nên override?
|
|
28
|
+
|
|
29
|
+
- Team có domain-specific review rules
|
|
30
|
+
- Team muốn thêm instruction vào planning workflow
|
|
31
|
+
- Team cần custom output format
|
|
32
|
+
|
|
33
|
+
## Khi nào dùng extensions/ thay vì overrides/?
|
|
34
|
+
|
|
35
|
+
Dùng `extensions/` cho skills net-new (không override gì trong generated).
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# dw-kit Workflow — Generic Agent Instructions
|
|
2
|
+
|
|
3
|
+
> **For**: Cursor, Windsurf, Copilot Chat, or any AI coding assistant
|
|
4
|
+
> **Note**: This is a methodology reference. It cannot replicate Claude Code-specific features
|
|
5
|
+
> (agent delegation with tool constraints, hooks, MCP integration). For full capabilities, use the Claude CLI adapter.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Setup
|
|
10
|
+
|
|
11
|
+
1. Copy this file to your project root as `AGENT.md` (or paste into your AI assistant's context)
|
|
12
|
+
2. Copy `.dw/config/dw.config.yml` to your project and fill in your settings
|
|
13
|
+
3. Create `.dw/tasks/` directory for task documentation
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Configuration
|
|
18
|
+
|
|
19
|
+
Read `.dw/config/dw.config.yml` for:
|
|
20
|
+
- `workflow.default_depth` — quick | standard | thorough
|
|
21
|
+
- `team.roles` — available team roles
|
|
22
|
+
- `quality.test_command`, `quality.lint_command` — quality gates
|
|
23
|
+
- `paths.tasks` — where task docs are stored
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Depth Routing
|
|
28
|
+
|
|
29
|
+
| Scope | Depth | Workflow |
|
|
30
|
+
|-------|-------|---------|
|
|
31
|
+
| ≤2 files, hotfix | quick | Understand → Execute → Close |
|
|
32
|
+
| 3-5 files | standard | All 6 phases |
|
|
33
|
+
| 6+ files, API/DB changes | thorough | All phases + arch review |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Workflow Phases
|
|
38
|
+
|
|
39
|
+
### Phase 1: Initialize
|
|
40
|
+
|
|
41
|
+
Create task documentation at `{paths.tasks}/[task-name]/`:
|
|
42
|
+
```
|
|
43
|
+
[name]-context.md # Research findings
|
|
44
|
+
[name]-plan.md # Implementation plan
|
|
45
|
+
[name]-progress.md # Progress tracking
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Before proceeding**: Task name defined, scope assessed, depth chosen.
|
|
49
|
+
|
|
50
|
+
### Phase 2: Understand (Research)
|
|
51
|
+
|
|
52
|
+
Explore the codebase:
|
|
53
|
+
- Find all files related to the task
|
|
54
|
+
- Map dependencies (upstream and downstream)
|
|
55
|
+
- Identify current patterns and conventions
|
|
56
|
+
- Check test coverage
|
|
57
|
+
- Note git history for recent changes in the area
|
|
58
|
+
- Document what is unclear
|
|
59
|
+
|
|
60
|
+
Fill in `[name]-context.md` with findings.
|
|
61
|
+
|
|
62
|
+
**Before proceeding**: All files identified, no critical unknowns.
|
|
63
|
+
|
|
64
|
+
### Phase 3: Plan
|
|
65
|
+
|
|
66
|
+
Design solution before writing any code:
|
|
67
|
+
- Consider ≥2 approaches with trade-offs
|
|
68
|
+
- Apply devil's advocate: strongest reason NOT to choose your preferred approach
|
|
69
|
+
- Break into subtasks (each ≤3 files, ≤4 hours, independent commit)
|
|
70
|
+
- Order: schema → service → API → tests → docs
|
|
71
|
+
|
|
72
|
+
Fill in `[name]-plan.md`.
|
|
73
|
+
|
|
74
|
+
**STOP**: Wait for human approval before executing.
|
|
75
|
+
If team has TL: TL must review architecture decisions.
|
|
76
|
+
|
|
77
|
+
### Phase 4: Execute
|
|
78
|
+
|
|
79
|
+
For each subtask:
|
|
80
|
+
1. Read acceptance criteria
|
|
81
|
+
2. Write tests first (failing) — RED
|
|
82
|
+
3. Implement to make tests pass — GREEN
|
|
83
|
+
4. Refactor if needed — REFACTOR
|
|
84
|
+
5. Update progress file
|
|
85
|
+
6. Commit: `type(scope): description`
|
|
86
|
+
|
|
87
|
+
**Rules**:
|
|
88
|
+
- Only work within subtask scope
|
|
89
|
+
- If ambiguous → stop and ask (don't guess for large changes)
|
|
90
|
+
- If scope changes → update plan, ask human
|
|
91
|
+
|
|
92
|
+
### Phase 5: Verify
|
|
93
|
+
|
|
94
|
+
**Self-review** (always):
|
|
95
|
+
- Logic correct? Edge cases handled?
|
|
96
|
+
- No debug code (console.log, debugger, etc.)
|
|
97
|
+
- No sensitive data (passwords, tokens, keys)
|
|
98
|
+
|
|
99
|
+
**Automated** (if configured):
|
|
100
|
+
```bash
|
|
101
|
+
{quality.test_command}
|
|
102
|
+
{quality.lint_command}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Peer/TL review** (standard+):
|
|
106
|
+
- Architecture decisions reviewed
|
|
107
|
+
- Code review with checklist (see `.dw/core/QUALITY.md`)
|
|
108
|
+
|
|
109
|
+
**QA** (thorough + qc role):
|
|
110
|
+
- QA reviews against test plan
|
|
111
|
+
- Explicit sign-off required
|
|
112
|
+
|
|
113
|
+
### Phase 6: Close
|
|
114
|
+
|
|
115
|
+
Commit format:
|
|
116
|
+
```
|
|
117
|
+
<type>(<scope>): <description ≤72 chars>
|
|
118
|
+
|
|
119
|
+
Co-Authored-By: [AI assistant name]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Update progress file: status → Done.
|
|
123
|
+
If handing off: write handoff notes (done/in-progress/blocked, next steps).
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Standalone: Debug
|
|
128
|
+
|
|
129
|
+
When encountering a bug:
|
|
130
|
+
1. **Investigate**: Reproduce exactly. Gather evidence (error, stack trace, file:line).
|
|
131
|
+
2. **Diagnose**: Form hypothesis. Verify. Find root cause (not symptom).
|
|
132
|
+
3. **Fix**: Fix root cause. Test the fix. Check for regressions. Commit.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Quality Principles
|
|
137
|
+
|
|
138
|
+
Full quality strategy: `.dw/core/QUALITY.md`
|
|
139
|
+
|
|
140
|
+
Key principles:
|
|
141
|
+
- Write tests before implementation (TDD)
|
|
142
|
+
- Each subtask = one commit
|
|
143
|
+
- Review checklist: correctness, security, performance, maintainability, tests
|
|
144
|
+
- CRITICAL issues must be fixed before merge
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Limitations of This Adapter
|
|
149
|
+
|
|
150
|
+
This generic adapter provides the **methodology** but cannot provide:
|
|
151
|
+
|
|
152
|
+
| Feature | Claude CLI Adapter | Generic Adapter |
|
|
153
|
+
|---------|-------------------|-----------------|
|
|
154
|
+
| Agent delegation (researcher/planner/reviewer) | ✅ | ❌ |
|
|
155
|
+
| Tool constraints (read-only research agent) | ✅ | ❌ |
|
|
156
|
+
| Pre-commit hooks (safety-guard, quality gates) | ✅ | ❌ |
|
|
157
|
+
| MCP server integration | ✅ | ❌ |
|
|
158
|
+
| Automatic progress tracking | ✅ | Manual |
|
|
159
|
+
|
|
160
|
+
For full capabilities, use Claude Code with the Claude CLI adapter.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Full Methodology Reference
|
|
165
|
+
|
|
166
|
+
- Workflow phases: `.dw/core/WORKFLOW.md`
|
|
167
|
+
- Thinking framework: `.dw/core/THINKING.md`
|
|
168
|
+
- Quality strategy: `.dw/core/QUALITY.md`
|
|
169
|
+
- Role definitions: `.dw/core/ROLES.md`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Generic Adapter
|
|
2
|
+
|
|
3
|
+
Dành cho bất kỳ AI coding assistant nào (Cursor, Windsurf, Copilot, etc.).
|
|
4
|
+
|
|
5
|
+
## Cách dùng
|
|
6
|
+
|
|
7
|
+
1. Copy `AGENT.md` vào project root
|
|
8
|
+
2. Copy `.dw/config/dw.config.yml` và điền settings
|
|
9
|
+
3. Tạo `.dw/tasks/` directory
|
|
10
|
+
|
|
11
|
+
## Limitations
|
|
12
|
+
|
|
13
|
+
Generic adapter cung cấp **methodology** (what to do), không phải **execution** (how Claude Code does it).
|
|
14
|
+
|
|
15
|
+
Không có:
|
|
16
|
+
- Agent delegation với tool constraints
|
|
17
|
+
- Pre-commit hooks (safety-guard, quality gates)
|
|
18
|
+
- MCP server integration
|
|
19
|
+
- Automatic context management
|
|
20
|
+
|
|
21
|
+
Muốn full capabilities → dùng Claude Code với Claude CLI adapter.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "dw-kit Configuration Schema",
|
|
4
|
+
"description": "Schema for config/dw.config.yml",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"properties": {
|
|
8
|
+
"project": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"additionalProperties": false,
|
|
11
|
+
"required": ["name"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"name": { "type": "string", "minLength": 1 },
|
|
14
|
+
"language": { "type": "string", "enum": ["vi", "en"], "default": "vi" }
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"workflow": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"properties": {
|
|
21
|
+
"default_depth": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": ["quick", "standard", "thorough"],
|
|
24
|
+
"default": "standard"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"team": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"properties": {
|
|
32
|
+
"roles": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"enum": ["dev", "techlead", "ba", "qc", "pm"]
|
|
37
|
+
},
|
|
38
|
+
"minItems": 1,
|
|
39
|
+
"contains": { "const": "dev" },
|
|
40
|
+
"description": "dev is always required"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"quality": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"additionalProperties": false,
|
|
47
|
+
"properties": {
|
|
48
|
+
"test_command": { "type": "string", "default": "" },
|
|
49
|
+
"lint_command": { "type": "string", "default": "" },
|
|
50
|
+
"block_on_fail": { "type": "boolean", "default": false }
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"tracking": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"additionalProperties": false,
|
|
56
|
+
"properties": {
|
|
57
|
+
"estimation": { "type": "boolean", "default": false },
|
|
58
|
+
"log_work": { "type": "boolean", "default": false },
|
|
59
|
+
"estimation_unit": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"enum": ["hours", "story-points", "t-shirt"],
|
|
62
|
+
"default": "hours"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"paths": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"additionalProperties": false,
|
|
69
|
+
"properties": {
|
|
70
|
+
"tasks": { "type": "string", "default": ".dw/tasks" },
|
|
71
|
+
"docs": { "type": "string", "default": ".dw/docs" }
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"claude": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"additionalProperties": false,
|
|
77
|
+
"properties": {
|
|
78
|
+
"models": {
|
|
79
|
+
"type": "object",
|
|
80
|
+
"additionalProperties": false,
|
|
81
|
+
"properties": {
|
|
82
|
+
"plan": { "type": "string", "default": "" },
|
|
83
|
+
"execute": { "type": "string", "default": "" },
|
|
84
|
+
"review": { "type": "string", "default": "" }
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"structured_output": { "type": "boolean", "default": true },
|
|
88
|
+
"worktree_execution": { "type": "boolean", "default": false },
|
|
89
|
+
"mcp": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"items": {
|
|
92
|
+
"type": "object",
|
|
93
|
+
"required": ["name", "command"],
|
|
94
|
+
"additionalProperties": false,
|
|
95
|
+
"properties": {
|
|
96
|
+
"name": { "type": "string" },
|
|
97
|
+
"command": { "type": "string" },
|
|
98
|
+
"args": { "type": "array", "items": { "type": "string" } },
|
|
99
|
+
"env": {
|
|
100
|
+
"type": "object",
|
|
101
|
+
"additionalProperties": { "type": "string" }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"_toolkit": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"additionalProperties": true,
|
|
111
|
+
"properties": {
|
|
112
|
+
"core_version": { "type": "string" },
|
|
113
|
+
"platform_version": { "type": "string" },
|
|
114
|
+
"capability_version": { "type": "string" },
|
|
115
|
+
"installed": { "type": "string" },
|
|
116
|
+
"last_upgrade": { "type": "string" },
|
|
117
|
+
"migrated_from": { "type": "string" }
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# ============================================================================
|
|
2
|
+
# dw-kit Configuration — v1
|
|
3
|
+
# ============================================================================
|
|
4
|
+
# Copy file này vào project và tùy chỉnh theo nhu cầu.
|
|
5
|
+
# Toolkit đọc file này để điều chỉnh behavior per project.
|
|
6
|
+
# ============================================================================
|
|
7
|
+
|
|
8
|
+
# --- Project Info -----------------------------------------------------------
|
|
9
|
+
project:
|
|
10
|
+
name: "my-project"
|
|
11
|
+
language: "vi" # vi | en
|
|
12
|
+
|
|
13
|
+
# --- Workflow ----------------------------------------------------------------
|
|
14
|
+
workflow:
|
|
15
|
+
default_depth: "standard" # quick | standard | thorough
|
|
16
|
+
# AI assesses per-task và có thể recommend depth khác nhau:
|
|
17
|
+
# quick : ≤2 files, hotfix, familiar module
|
|
18
|
+
# standard : 3-5 files, module mới, unfamiliar code
|
|
19
|
+
# thorough : 6+ files, API contract changes, DB schema, security
|
|
20
|
+
|
|
21
|
+
# --- Team -------------------------------------------------------------------
|
|
22
|
+
team:
|
|
23
|
+
roles:
|
|
24
|
+
- dev # luôn có
|
|
25
|
+
- techlead # architecture review, plan approval
|
|
26
|
+
# - ba # requirements, user stories
|
|
27
|
+
# - qc # test plans, QA sign-off
|
|
28
|
+
# - pm # dashboard, reports
|
|
29
|
+
|
|
30
|
+
# --- Quality Gates ----------------------------------------------------------
|
|
31
|
+
quality:
|
|
32
|
+
test_command: "" # ví dụ: "npm test" | "pytest" | "go test ./..."
|
|
33
|
+
lint_command: "" # ví dụ: "npm run lint" | "ruff check ." | "golangci-lint run"
|
|
34
|
+
block_on_fail: false # true = block commit nếu test/lint fail
|
|
35
|
+
|
|
36
|
+
# --- Tracking ---------------------------------------------------------------
|
|
37
|
+
tracking:
|
|
38
|
+
estimation: false
|
|
39
|
+
log_work: false
|
|
40
|
+
estimation_unit: "hours" # hours | story-points | t-shirt
|
|
41
|
+
|
|
42
|
+
# --- Paths ------------------------------------------------------------------
|
|
43
|
+
paths:
|
|
44
|
+
tasks: ".dw/tasks"
|
|
45
|
+
docs: ".dw/docs"
|
|
46
|
+
|
|
47
|
+
# --- Claude Capabilities (Layer 2) ------------------------------------------
|
|
48
|
+
# Tính năng đặc thù của Claude Code.
|
|
49
|
+
claude:
|
|
50
|
+
# Model per phase — để trống = dùng model mặc định từ Claude Code settings
|
|
51
|
+
models:
|
|
52
|
+
plan: "" # ví dụ: "claude-opus-4-6" cho complex planning
|
|
53
|
+
execute: "" # ví dụ: "claude-sonnet-4-6"
|
|
54
|
+
review: ""
|
|
55
|
+
|
|
56
|
+
# Structured JSON output từ reviewer và estimate skills
|
|
57
|
+
structured_output: true
|
|
58
|
+
|
|
59
|
+
# Isolate execution trong git worktree (cho risky refactors)
|
|
60
|
+
worktree_execution: false
|
|
61
|
+
|
|
62
|
+
# MCP servers — Claude Code sẽ load các servers này
|
|
63
|
+
mcp: []
|
|
64
|
+
# Ví dụ:
|
|
65
|
+
# mcp:
|
|
66
|
+
# - name: "github"
|
|
67
|
+
# command: "npx @modelcontextprotocol/server-github"
|
|
68
|
+
# env:
|
|
69
|
+
# GITHUB_TOKEN: "${GITHUB_TOKEN}"
|
|
70
|
+
# - name: "jira"
|
|
71
|
+
# command: "npx @anthropic/mcp-server-jira"
|
|
72
|
+
# env:
|
|
73
|
+
# JIRA_URL: "${JIRA_URL}"
|
|
74
|
+
# JIRA_TOKEN: "${JIRA_TOKEN}"
|
|
75
|
+
|
|
76
|
+
# --- Toolkit Version (do not edit manually) ---------------------------------
|
|
77
|
+
_toolkit:
|
|
78
|
+
core_version: "1.0"
|
|
79
|
+
platform_version: "1.0"
|
|
80
|
+
capability_version: "1.0"
|
|
81
|
+
installed: "2026-03-23"
|
|
82
|
+
last_upgrade: "2026-03-23"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# dw-kit Preset: Enterprise — Full Workflow
|
|
2
|
+
# Dùng cho: 5+ devs, full team roles, metrics tracking
|
|
3
|
+
# Kế thừa từ: config/dw.config.yml (copy và modify)
|
|
4
|
+
|
|
5
|
+
project:
|
|
6
|
+
name: "my-project"
|
|
7
|
+
language: "vi"
|
|
8
|
+
|
|
9
|
+
workflow:
|
|
10
|
+
default_depth: "thorough"
|
|
11
|
+
|
|
12
|
+
team:
|
|
13
|
+
roles:
|
|
14
|
+
- dev
|
|
15
|
+
- techlead
|
|
16
|
+
- ba
|
|
17
|
+
- qc
|
|
18
|
+
- pm
|
|
19
|
+
|
|
20
|
+
quality:
|
|
21
|
+
test_command: "" # BẮT BUỘC điền: "npm test" | "pytest" | ...
|
|
22
|
+
lint_command: "" # BẮT BUỘC điền: "npm run lint" | ...
|
|
23
|
+
block_on_fail: true # Block commit nếu fail
|
|
24
|
+
|
|
25
|
+
tracking:
|
|
26
|
+
estimation: true
|
|
27
|
+
log_work: true
|
|
28
|
+
estimation_unit: "story-points"
|
|
29
|
+
|
|
30
|
+
paths:
|
|
31
|
+
tasks: ".dw/tasks"
|
|
32
|
+
docs: ".dw/docs"
|
|
33
|
+
|
|
34
|
+
claude:
|
|
35
|
+
models:
|
|
36
|
+
plan: "claude-opus-4-6" # Dùng model mạnh nhất cho planning
|
|
37
|
+
execute: "claude-sonnet-4-6"
|
|
38
|
+
review: "claude-sonnet-4-6"
|
|
39
|
+
structured_output: true
|
|
40
|
+
worktree_execution: true # Isolate risky refactors
|
|
41
|
+
mcp: []
|
|
42
|
+
# Uncomment và điền env vars để enable external integrations:
|
|
43
|
+
# mcp:
|
|
44
|
+
# - name: "github"
|
|
45
|
+
# command: "npx @modelcontextprotocol/server-github"
|
|
46
|
+
# env:
|
|
47
|
+
# GITHUB_TOKEN: "${GITHUB_TOKEN}"
|
|
48
|
+
|
|
49
|
+
_toolkit:
|
|
50
|
+
core_version: "1.0"
|
|
51
|
+
platform_version: "1.0"
|
|
52
|
+
capability_version: "1.0"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# dw-kit Preset: Small Team — Standard Workflow
|
|
2
|
+
# Dùng cho: 2-5 devs, có TL, sprint-based development
|
|
3
|
+
# Kế thừa từ: config/dw.config.yml (copy và modify)
|
|
4
|
+
|
|
5
|
+
project:
|
|
6
|
+
name: "my-project"
|
|
7
|
+
language: "vi"
|
|
8
|
+
|
|
9
|
+
workflow:
|
|
10
|
+
default_depth: "standard"
|
|
11
|
+
|
|
12
|
+
team:
|
|
13
|
+
roles:
|
|
14
|
+
- dev
|
|
15
|
+
- techlead
|
|
16
|
+
|
|
17
|
+
quality:
|
|
18
|
+
test_command: "" # điền vào: "npm test" | "pytest" | ...
|
|
19
|
+
lint_command: "" # điền vào: "npm run lint" | "ruff check ." | ...
|
|
20
|
+
block_on_fail: false
|
|
21
|
+
|
|
22
|
+
tracking:
|
|
23
|
+
estimation: true
|
|
24
|
+
log_work: false
|
|
25
|
+
estimation_unit: "hours"
|
|
26
|
+
|
|
27
|
+
paths:
|
|
28
|
+
tasks: ".dw/tasks"
|
|
29
|
+
docs: ".dw/docs"
|
|
30
|
+
|
|
31
|
+
claude:
|
|
32
|
+
structured_output: true
|
|
33
|
+
worktree_execution: false
|
|
34
|
+
mcp: []
|
|
35
|
+
|
|
36
|
+
_toolkit:
|
|
37
|
+
core_version: "1.0"
|
|
38
|
+
platform_version: "1.0"
|
|
39
|
+
capability_version: "1.0"
|