dw-kit 1.3.0 → 1.3.5

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.
@@ -0,0 +1,102 @@
1
+ #!/bin/bash
2
+ # .claude/hooks/supply-chain-scan.sh
3
+ # Fires after Claude Code Write/Edit. If the file is a lockfile, runs `dw security-scan --quick`
4
+ # to detect known-vulnerable dependency pins (offline IoC + advisory snapshot check).
5
+ # Non-blocking — never aborts the parent tool call. Emits telemetry.
6
+ # Reference: ADR-0005 (AI-Native Supply-Chain Guard). Sunset review 2026-08-12.
7
+
8
+ set -e
9
+
10
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
11
+ TELEMETRY_SCRIPT="$PROJECT_DIR/.claude/hooks/telemetry-log.sh"
12
+
13
+ if [ "${DW_NO_TELEMETRY:-}" != "1" ] && [ -x "$TELEMETRY_SCRIPT" ]; then
14
+ "$TELEMETRY_SCRIPT" hook supply-chain-scan >/dev/null 2>&1 || true
15
+ fi
16
+
17
+ if [ "${DW_SC_GUARD_DISABLED:-}" = "1" ]; then
18
+ exit 0
19
+ fi
20
+
21
+ INPUT=$(cat)
22
+
23
+ FILE_PATH=$(echo "$INPUT" | node -e "
24
+ let d='';
25
+ process.stdin.on('data',c=>d+=c).on('end',()=>{
26
+ try{
27
+ const data=JSON.parse(d);
28
+ const p=data.file_path||data.path||data.filePath||(data.tool_input&&(data.tool_input.file_path||data.tool_input.path))||'';
29
+ process.stdout.write(p);
30
+ }catch(e){}
31
+ });
32
+ " 2>/dev/null || true)
33
+
34
+ [ -z "$FILE_PATH" ] && exit 0
35
+
36
+ # Match: package-lock.json, npm-shrinkwrap.json (case-insensitive).
37
+ # pnpm-lock.yaml and yarn.lock are out-of-scope per ADR-0005 v1.3.5.
38
+ BASENAME=$(basename "$FILE_PATH")
39
+ case "$BASENAME" in
40
+ package-lock.json|npm-shrinkwrap.json)
41
+ ;;
42
+ *)
43
+ exit 0
44
+ ;;
45
+ esac
46
+
47
+ # Find the project root that contains the lockfile (in case PROJECT_DIR differs)
48
+ LOCKFILE_DIR=$(dirname "$FILE_PATH")
49
+ [ -d "$LOCKFILE_DIR" ] || exit 0
50
+
51
+ # Locate dw binary — prefer local node_modules, fall back to global PATH
52
+ DW_BIN=""
53
+ if command -v dw >/dev/null 2>&1; then
54
+ DW_BIN="dw"
55
+ elif [ -f "$PROJECT_DIR/bin/dw.mjs" ]; then
56
+ DW_BIN="node $PROJECT_DIR/bin/dw.mjs"
57
+ else
58
+ exit 0
59
+ fi
60
+
61
+ START_TS=$(date +%s%N 2>/dev/null || date +%s)
62
+
63
+ # Run scan in lockfile's project dir. Capture exit code without failing parent.
64
+ set +e
65
+ SCAN_OUTPUT=$(cd "$LOCKFILE_DIR" && $DW_BIN security-scan --quick 2>&1)
66
+ SCAN_EXIT=$?
67
+ set -e
68
+
69
+ END_TS=$(date +%s%N 2>/dev/null || date +%s)
70
+ LATENCY_MS=$(( (END_TS - START_TS) / 1000000 ))
71
+
72
+ case "$SCAN_EXIT" in
73
+ 0)
74
+ # Clean — silent unless verbose
75
+ if [ "${DW_SC_GUARD_VERBOSE:-}" = "1" ]; then
76
+ echo "✓ supply-chain-scan: clean (no advisory matches in $BASENAME)" >&2
77
+ fi
78
+ ;;
79
+ 1)
80
+ # Low/medium matches — warn, do not block
81
+ echo "" >&2
82
+ echo "⚠ supply-chain-scan: advisory matches in $BASENAME (low/medium)" >&2
83
+ echo "$SCAN_OUTPUT" | tail -20 >&2
84
+ echo " (advisory — not blocking; run \`dw security-scan\` for full report)" >&2
85
+ ;;
86
+ 2)
87
+ # HIGH+ matches — loud warning, still non-blocking per ADR-0005 v1.3.5 (advisory-only)
88
+ echo "" >&2
89
+ echo "⚠ supply-chain-scan: HIGH+ severity advisory match in $BASENAME" >&2
90
+ echo "$SCAN_OUTPUT" | tail -25 >&2
91
+ echo " ADVISORY ONLY — threshold matrix in v14-evaluation-protocol.md is authoritative." >&2
92
+ echo " Run \`dw security-scan\` for full report. Public sunset review 2026-08-12 (ADR-0005)." >&2
93
+ ;;
94
+ *)
95
+ # Setup error (no snapshot, schema mismatch, etc.) — quiet hint
96
+ if [ "${DW_SC_GUARD_VERBOSE:-}" = "1" ]; then
97
+ echo "supply-chain-scan: setup needed — run \`dw security-scan --update-db\`" >&2
98
+ fi
99
+ ;;
100
+ esac
101
+
102
+ exit 0
@@ -65,6 +65,8 @@ All dw skills invoke via `/dw:{name}` (colon namespace separator).
65
65
 
66
66
  Core workflow: `/dw:flow` · `/dw:task-init` · `/dw:research` · `/dw:plan` · `/dw:execute` · `/dw:commit` · `/dw:handoff`
67
67
 
68
+ `/dw:plan` includes **Quick Debate** (red/blue self-critique): default ON for `thorough`, auto-trigger on high-stakes signals for `standard`, off for `quick`. Override via `--debate` / `--no-debate` / `--debate-deep`.
69
+
68
70
  Decisions: `/dw:decision [title]` — create ADR
69
71
 
70
72
  Dev: `/dw:debug` · `/dw:review` · `/dw:thinking` · `/dw:prompt` · `/dw:docs-update`
@@ -29,7 +29,15 @@
29
29
  "Bash(bash -n /dev/stdin)",
30
30
  "Bash(dos2unix .claude/hooks/pre-commit-gate.sh)",
31
31
  "Bash(sed -i 's/\\\\r$//' .claude/hooks/pre-commit-gate.sh)",
32
- "Bash(git add *)"
32
+ "Bash(git add *)",
33
+ "Edit(/.claude/skills/dw-task-init/**)",
34
+ "Edit(/.claude/skills/dw-retroactive/**)",
35
+ "Edit(/.claude/skills/dw-research/**)",
36
+ "Edit(/.claude/skills/dw-plan/**)",
37
+ "Edit(/.claude/skills/dw-execute/**)",
38
+ "Edit(/.claude/skills/dw-handoff/**)",
39
+ "Bash(git commit -m 'fix\\(v1.3.3\\): writer skills v1/v2 compat + cleanup legacy slash-command refs *)",
40
+ "Bash(git commit -m 'feat\\(v1.3.4\\): /dw:plan integrated Quick Debate \\(red/blue team\\) - depth-driven *)"
33
41
  ],
34
42
  "additionalDirectories": [
35
43
  "D:\\huygdv_projects\\dw-kit\\.claude\\rules"
@@ -91,6 +99,10 @@
91
99
  {
92
100
  "type": "command",
93
101
  "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/post-write.sh\""
102
+ },
103
+ {
104
+ "type": "command",
105
+ "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/supply-chain-scan.sh\""
94
106
  }
95
107
  ]
96
108
  }
@@ -18,8 +18,20 @@ Task: **$ARGUMENTS**
18
18
  - `tracking.log_work` → ghi effort tracking không
19
19
  - `workflow.default_depth` → `thorough` = cần docs-update, review bắt buộc
20
20
 
21
+ ## Detect Task Format (v1 vs v2)
22
+
23
+ Kiểm tra `{paths.tasks}/$ARGUMENTS/`:
24
+ - **v2**: có `spec.md` + `tracking.md` → đọc/ghi 2 files này.
25
+ - **v1** (legacy): có `-context.md`/`-plan.md`/`-progress.md` → đọc/ghi bộ 3 files.
26
+
21
27
  ## Trước Khi Bắt Đầu
22
28
 
29
+ **v2:**
30
+ 1. Đọc `{paths.tasks}/$ARGUMENTS/spec.md` — Intent, Scope, Subtasks, Success Criteria, Research Findings.
31
+ 2. Đọc `{paths.tasks}/$ARGUMENTS/tracking.md` — Subtask Progress table, Changelog, Handoff Notes.
32
+ 3. Xác nhận `spec.md` frontmatter có `status: Approved`.
33
+
34
+ **v1:**
23
35
  1. Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md`
24
36
  2. Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md`
25
37
  3. Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`
@@ -52,16 +64,27 @@ Nếu có progress → tiếp tục từ subtask cuối cùng chưa done.
52
64
  - Nếu `quality.block_on_fail = false` → cảnh báo, cho phép tiếp tục
53
65
 
54
66
  ### Step 5: Cập nhật Progress
55
- Cập nhật `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`:
67
+ **v2**: Cập nhật `{paths.tasks}/$ARGUMENTS/tracking.md`:
68
+ - Update row trong section `## Subtask Progress` table với status `✅ Done`, Date, Notes (commit SHA).
69
+ - Append entry vào `## Changelog` theo format:
70
+ ```markdown
71
+ ### {date} — ST-N complete
72
+ **Actions taken:** ...
73
+ ```
74
+ - Update frontmatter `last_updated`.
75
+
76
+ **v1**: Cập nhật `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`:
56
77
  ```markdown
57
78
  | ST-N | [Subtask name] | Done | abc1234 | [ghi chú] |
58
79
  ```
59
80
 
60
- Nếu `tracking.log_work = true`, ghi effort thực tế vào:
61
- ```markdown
62
- ### Effort Log
63
- | Subtask | Estimate | Actual | Ghi chú |
64
- ```
81
+ Nếu `tracking.log_work = true`, ghi effort thực tế:
82
+ - **v2**: thêm cột "Actual" vào Subtask Progress table hoặc ghi trong Changelog entry.
83
+ - **v1**:
84
+ ```markdown
85
+ ### Effort Log
86
+ | Subtask | Estimate | Actual | Ghi chú |
87
+ ```
65
88
 
66
89
  ### Step 6: Commit
67
90
  ```
@@ -91,7 +114,7 @@ Subtask ST-N of $ARGUMENTS
91
114
 
92
115
  ## Khi Hoàn Thành Tất Cả Subtasks
93
116
 
94
- 1. Cập nhật progress: Trạng thái `Done`
117
+ 1. Cập nhật status: **v2** `tracking.md` frontmatter `status: Done` · **v1** progress.md `Trạng thái: Done`.
95
118
  2. Tóm tắt: subtasks completed, commits, issues encountered
96
119
  3. Luôn gợi ý: "Tiếp theo: `/dw:review $ARGUMENTS`"
97
120
  4. Nếu `workflow.default_depth = thorough`: "Cần chạy `/dw:docs-update $ARGUMENTS`"
@@ -22,7 +22,13 @@ git stash list # stashed work
22
22
  ```
23
23
 
24
24
  ### 2. Task progress
25
- Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`:
25
+
26
+ **Detect format**: Nếu có `tracking.md` → v2. Nếu có `-progress.md` → v1.
27
+
28
+ - **v2**: Đọc `{paths.tasks}/$ARGUMENTS/tracking.md` — Subtask Progress table, Changelog, Handoff Notes (nếu đã có).
29
+ - **v1**: Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`.
30
+
31
+ Tìm:
26
32
  - Subtask nào đã done?
27
33
  - Subtask nào đang làm dở?
28
34
  - Blockers nào đang tồn tại?
@@ -34,7 +40,11 @@ git stash list # stashed work
34
40
 
35
41
  ## Viết Handoff Notes
36
42
 
37
- Ghi vào mục "Handoff Notes" trong `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`:
43
+ **v2**: Replace (hoặc append nếu muốn giữ lịch sử) section `## Handoff Notes` trong `{paths.tasks}/$ARGUMENTS/tracking.md`. Cũng update frontmatter `last_updated`.
44
+
45
+ **v1**: Ghi vào mục "Handoff Notes" trong `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md`.
46
+
47
+ Format (chung cho cả 2):
38
48
 
39
49
  ```markdown
40
50
  ## Handoff Notes
@@ -76,6 +86,7 @@ Sau khi ghi xong, hiển thị:
76
86
  - Tóm tắt handoff notes
77
87
  - Lệnh để người/agent tiếp theo bắt đầu:
78
88
  ```
79
- Đọc: {paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md
89
+ Đọc: {paths.tasks}/$ARGUMENTS/tracking.md (v2)
90
+ hoặc {paths.tasks}/$ARGUMENTS/$ARGUMENTS-progress.md (v1 legacy)
80
91
  Tiếp tục: /dw:execute $ARGUMENTS
81
92
  ```
@@ -1,11 +1,12 @@
1
1
  ---
2
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]"
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. Tích hợp Quick Debate (red/blue team) tùy depth. DỪNG để chờ approval trước khi execute."
4
+ argument-hint: "[task-name] [--debate | --no-debate]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Grep
8
8
  - Glob
9
+ - Agent
9
10
  ---
10
11
 
11
12
  # Lập Kế Hoạch Implementation
@@ -27,10 +28,18 @@ Task: **$ARGUMENTS**
27
28
  - CHỈ đọc, phân tích, và viết plan
28
29
  - DỪNG LẠI cuối cùng để chờ user/TL approve
29
30
 
31
+ ## Detect Task Format (v1 vs v2)
32
+
33
+ Kiểm tra `{paths.tasks}/$ARGUMENTS/`:
34
+ - **v2**: có `spec.md` + `tracking.md` → plan output update trực tiếp vào `spec.md` (sections Scope/Subtasks/Risks/Success Criteria).
35
+ - **v1** (legacy): có `-context.md`/`-plan.md`/`-progress.md` → plan output ghi vào `$ARGUMENTS-plan.md`.
36
+ - Chưa có gì → gợi ý `/dw:task-init $ARGUMENTS` trước.
37
+
30
38
  ## Bước 1: Đọc Context
31
39
 
32
- Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md` file research đã tạo.
33
- Nếu chưa thông báo: "Cần chạy `/dw:research $ARGUMENTS` trước."
40
+ - **v2**: Đọc `{paths.tasks}/$ARGUMENTS/spec.md` (bao gồm section `## Research Findings` nếu đã chạy `/dw:research`).
41
+ - **v1**: Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md` file research đã tạo.
42
+ - Nếu chưa có research findings → thông báo: "Cần chạy `/dw:research $ARGUMENTS` trước."
34
43
 
35
44
  ## Bước 2: Thiết kế giải pháp
36
45
 
@@ -62,7 +71,15 @@ Thứ tự subtasks theo dependency graph:
62
71
 
63
72
  ## Bước 4: Viết plan
64
73
 
65
- Ghi vào `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md`:
74
+ **v2**: Update `spec.md` trực tiếp — điền vào các section có sẵn:
75
+ - `## Scope → In Scope`: thêm ST-1, ST-2, ... với mô tả + acceptance + effort
76
+ - `## Scope → Out of Scope`: các điểm loại trừ rõ ràng
77
+ - `## Risks & Mitigations`: bảng risks
78
+ - `## Success Criteria`: tiêu chí measurable
79
+ - `## Dependencies`: blockers upstream / external
80
+ Frontmatter: đổi `status: Draft` → `status: Approved` chỉ SAU khi user approve.
81
+
82
+ **v1**: Ghi vào `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md` theo template:
66
83
 
67
84
  ```markdown
68
85
  # Plan: [Task Name]
@@ -114,12 +131,92 @@ Ghi vào `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md`:
114
131
  - Total: [sum]
115
132
  ```
116
133
 
134
+ ## Bước 4.5: Quick Debate (depth-driven, pre-approval gate)
135
+
136
+ Trước khi trình bày cho user, chạy red/blue quick debate để tự phản biện plan. Tránh ceremony overhead:
137
+
138
+ ### Khi nào chạy
139
+
140
+ | Depth | Behavior | Override |
141
+ |-------|----------|----------|
142
+ | `quick` | **SKIP** debate | `--debate` bật thủ công |
143
+ | `standard` | **SKIP** mặc định — CHẠY nếu detect signal high-stakes | `--debate` bật / `--no-debate` tắt |
144
+ | `thorough` | **DEFAULT ON** | `--no-debate` tắt |
145
+
146
+ **Auto-detect signal (standard depth)** — chạy nếu plan đụng:
147
+ - API contract changes (new endpoints, breaking signatures)
148
+ - Database schema migrations
149
+ - Auth / security / permissions
150
+ - Cross-module refactoring ≥3 modules
151
+ - Third-party integration mới
152
+ - Performance-critical path
153
+
154
+ Nếu nghi ngờ → chạy. Chi phí debate < chi phí rollback.
155
+
156
+ ### Mode A — Lightweight (single-agent, 2-pass) — DEFAULT
157
+
158
+ Tự thực hiện 2 pass liên tiếp trong cùng session:
159
+
160
+ **Pass 1 — Red Team (attack)**: Đọc lại plan vừa viết, trả lời cụ thể:
161
+ 1. Top 3 giả định đáng nghi nhất — cái nào chưa verify?
162
+ 2. Top 3 failure modes — plan fail thế nào trong edge cases?
163
+ 3. Subtask nào over-scoped (làm nhiều hơn cần) hoặc under-scoped (thiếu)?
164
+ 4. Dependency nào bị missing / fragile?
165
+
166
+ **Pass 2 — Blue Team (strengthen)**: Respond từng red concern:
167
+ 1. Concern đó valid? Nếu valid → đề xuất mitigation cụ thể.
168
+ 2. Top 2 strengthenings để plan resilient hơn (thêm test, fallback, kiểm tra assumption).
169
+
170
+ ### Mode B — Deep (parallel subagents) — opt-in `--debate-deep`
171
+
172
+ Chỉ khi stakes cực cao (breaking change, regulatory, production incident). Spawn 2 subagents parallel:
173
+
174
+ ```
175
+ Agent[red-bot]: critique plan như tấn công — tìm failure modes, hidden assumptions, timing issues
176
+ Agent[blue-bot]: defend + strengthen — propose concrete improvements
177
+ ```
178
+
179
+ Dùng `Agent` tool với `subagent_type: general-purpose` (hoặc `Plan` cho review sâu). Prompt phải self-contained (subagent không thấy conversation).
180
+
181
+ ### Output debate
182
+
183
+ **v2 format** — Append vào `tracking.md` section `## Agent Debate Log`:
184
+
185
+ ```markdown
186
+ ### {date} — Plan debate
187
+
188
+ **Mode:** lightweight / deep
189
+ **Red-bot findings:**
190
+ - [Concern 1] — severity: H/M/L
191
+ - [Concern 2] — ...
192
+ - [Concern 3] — ...
193
+
194
+ **Blue-bot response:**
195
+ - [Mitigation or counter-argument]
196
+ - [Strengthening proposal]
197
+
198
+ **Incorporated into plan:**
199
+ - [Specific change made to spec.md — e.g., "Added ST-X: validate schema migration on staging before prod"]
200
+
201
+ **Deferred (noted but not blocking):**
202
+ - [Lower-priority items for post-execute review]
203
+ ```
204
+
205
+ **v1 format** — Append "## Debate Log" vào `$ARGUMENTS-plan.md` với cùng cấu trúc.
206
+
207
+ ### Nguyên tắc
208
+
209
+ - **Không ceremony**: nếu debate không catch gì mới sau 2 pass → ghi "No new concerns" rồi tiếp tục. Đừng tạo finding giả để fill template.
210
+ - **Incorporate hoặc defer rõ ràng**: mỗi red concern phải có quyết định (fix now / defer / won't fix + reason).
211
+ - **Thời gian cap**: Mode A ≤3 phút agent time. Mode B ≤10 phút.
212
+
117
213
  ## Bước 5: DỪNG & Trình bày
118
214
 
119
215
  Trình bày plan cho user với:
120
216
  1. Tóm tắt approach (3-5 câu)
121
217
  2. Số subtasks và estimate tổng (nếu có)
122
218
  3. Top 2 risks
123
- 4. Yêu cầu: "Approve plan này để tiếp tục `/dw:execute $ARGUMENTS`"
219
+ 4. **Nếu chạy debate**: Top 2 debate findings + incorporated changes (1-2 dòng)
220
+ 5. Yêu cầu: "Approve plan này để tiếp tục `/dw:execute $ARGUMENTS`"
124
221
 
125
222
  Nếu team có TL: "Plan cần TL review trước khi execute."
@@ -24,10 +24,20 @@ Task: **$ARGUMENTS**
24
24
 
25
25
  Đọc `.dw/config/dw.config.yml` → lấy `paths.tasks` để biết output location.
26
26
 
27
+ ## Detect Task Format (v1 vs v2)
28
+
29
+ Kiểm tra `{paths.tasks}/$ARGUMENTS/`:
30
+ - Nếu có `spec.md` + `tracking.md` → **v2 format**. Output ghi vào spec.md section "## Research Findings".
31
+ - Nếu có `-context.md`/`-plan.md`/`-progress.md` → **v1 format** (legacy). Output ghi vào `$ARGUMENTS-context.md` như cũ.
32
+ - Nếu chưa có gì → gợi ý user chạy `/dw:task-init $ARGUMENTS` trước.
33
+
34
+ Trong các bước dưới, "context file" = `spec.md` (v2) hoặc `$ARGUMENTS-context.md` (v1).
35
+
27
36
  ## Bước 1: Đọc yêu cầu
28
37
 
29
- - Đọc file `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md` nếu đã mô tả yêu cầu
30
- - Hoặc lấy yêu cầu từ conversation context
38
+ - **v2**: Đọc `{paths.tasks}/$ARGUMENTS/spec.md` lấy Intent + Scope.
39
+ - **v1**: Đọc `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-plan.md` nếu đã mô tả yêu cầu.
40
+ - Hoặc lấy yêu cầu từ conversation context.
31
41
 
32
42
  ## Bước 2: Khảo sát
33
43
 
@@ -53,7 +63,11 @@ Từ framework `.claude/skills/dw-thinking/THINKING.md`:
53
63
 
54
64
  ## Bước 4: Ghi kết quả
55
65
 
56
- Ghi vào `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md` theo cấu trúc:
66
+ **v2 format**: Append (hoặc replace nếu đã có) section `## Research Findings` vào `spec.md`, đặt ngay sau section `## Intent`. Giữ frontmatter và các section khác không đổi.
67
+
68
+ **v1 format** (legacy): Ghi vào `{paths.tasks}/$ARGUMENTS/$ARGUMENTS-context.md`.
69
+
70
+ Cấu trúc nội dung (dùng chung cho cả 2 format):
57
71
 
58
72
  ```markdown
59
73
  # Context: [Task Name]
@@ -103,7 +117,7 @@ Dùng template `.claude/templates/agent-report.md` với:
103
117
  - Details: key files, patterns, dependencies
104
118
  - Next Steps: những gì planner cần biết
105
119
 
106
- > Quick depth tasks: bỏ qua bước này — progress.md đã đủ.
120
+ > Quick depth tasks: bỏ qua bước này — tracking.md (v2) / progress.md (v1) đã đủ.
107
121
 
108
122
  ## Bước 6: Tóm tắt
109
123