uctm 1.2.0 → 1.3.2

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.
@@ -1,109 +1,109 @@
1
- # Agent Communication XML Schema
2
-
3
- uc-taskmanager 에이전트 간 XML 통신 포맷 정의.
4
-
5
- ---
6
-
7
- ## 1. Dispatch Format (Dispatcher → Receiver)
8
-
9
- ```xml
10
- <dispatch to="{receiver}" work="{WORK_ID}" task="{TASK_ID}" execution-mode="{direct|pipeline|full}">
11
- <context>
12
- <project>{project name}</project>
13
- <language>{lang_code}</language>
14
- <plan-file>works/{WORK_ID}/PLAN.md</plan-file>
15
- </context>
16
- <task-spec>
17
- <file>works/{WORK_ID}/TASK-XX.md</file>
18
- <title>{title}</title>
19
- <action>{implement|verify|commit|plan|route}</action>
20
- <description>{optional}</description>
21
- </task-spec>
22
- <previous-results>
23
- <result task="{TASK_ID}" status="{PASS|FAIL|SKIP}">{summary}</result>
24
- </previous-results>
25
- <cache-hint sections="{section1},{section2}"/>
26
- </dispatch>
27
- ```
28
-
29
- | 속성 | 값 |
30
- |------|----|
31
- | `to` | builder, verifier, committer, planner, scheduler, router |
32
- | `task` | `TASK-NN` WORK prefix 포함 금지 |
33
- | `execution-mode` | direct / pipeline / full (생략 시 full로 간주) |
34
-
35
- ---
36
-
37
- ## 2. Task Result Format (Receiver → Dispatcher)
38
-
39
- ```xml
40
- <task-result work="{WORK_ID}" task="{TASK_ID}" agent="{agent}" status="{PASS|FAIL}">
41
- <summary>{1-2줄 요약}</summary>
42
- <files-changed>
43
- <file action="{created|modified|deleted}" path="{path}">{description}</file>
44
- </files-changed>
45
- <verification>
46
- <check name="{type}" status="{PASS|FAIL|N/A}">{output}</check>
47
- </verification>
48
- <notes>{참고사항}</notes>
49
- </task-result>
50
- ```
51
-
52
- ---
53
-
54
- ## 3. Dispatcher-Receiver 매핑
55
-
56
- | Dispatcher | Receiver | execution-mode | 설명 |
57
- |------------|----------|:--------------:|------|
58
- | Router | (자기 자신) | `direct` | 서브에이전트 없음. Router가 직접 구현+commit+콜백 |
59
- | Router | Planner | `full` | 복잡 WORK 계획 |
60
- | Router | Scheduler | `full` | 계획된 WORK 실행 |
61
- | Router | Builder | `pipeline` | TASK 1개 구현 |
62
- | Router | Verifier | `pipeline` | TASK 1개 검증 |
63
- | Router | Committer | `pipeline` | TASK 1커밋 |
64
- | Scheduler | Builder | `full` | TASK N개 구현 |
65
- | Scheduler | Verifier | `full` | TASK N개 검증 |
66
- | Scheduler | Committer | `full` | TASK N개 커밋 |
67
-
68
- ---
69
-
70
- ## 4. Context-Handoff Element
71
-
72
- ```xml
73
- <context-handoff from="{agent}" detail-level="{FULL|SUMMARY|DROP}">
74
- <what>{변경/검증 사항}</what>
75
- <why>{의사결정 근거}</why> <!-- FULL only -->
76
- <caution>{주의사항}</caution> <!-- FULL only -->
77
- <incomplete>{미완료 사항}</incomplete> <!-- FULL only -->
78
- </context-handoff>
79
- ```
80
-
81
- | detail-level | 포함 필드 |
82
- |:---:|---|
83
- | `FULL` | what, why, caution, incomplete |
84
- | `SUMMARY` | what만 (1-3줄) |
85
- | `DROP` | 요소 생략 |
86
-
87
- ---
88
-
89
- ## 5. execution-mode별 에이전트 행동
90
-
91
- | 에이전트 | direct | pipeline | full |
92
- |---------|--------|----------|------|
93
- | Router | 구현+self-check+result.md+commit+콜백 직접 | PLAN 생성 B→V→C dispatch | Planner에 dispatch |
94
- | Planner | 호출 안 됨 | 호출 안 됨 | PLAN.md 생성 |
95
- | Scheduler | 호출 | 호출 | DAG 관리 + [B→V→C]×N |
96
- | Builder | 호출 안 됨 | 정상 실행 | 정상 실행 |
97
- | Verifier | 호출 안 됨 | 정상 실행 | 정상 실행 |
98
- | Committer | 호출 안 됨 | result.md+commit+콜백 | result.md+commit+콜백 |
99
-
100
- 불변 항목 (모드 무관):
101
-
102
- | 항목 | direct | pipeline/full |
103
- |------|:---:|:---:|
104
- | `works/WORK-NN/` 디렉토리 | Router | Router/Planner |
105
- | `PLAN.md` | Router | Router/Planner |
106
- | `TASK-XX.md` | Router | Router/Planner |
107
- | `TASK-XX_result.md` | Router | Committer |
108
- | COMMITTER DONE 콜백 | Router | Committer |
109
- | `WORK-LIST.md` IN_PROGRESS | Router | Router |
1
+ # Agent Communication XML Schema
2
+
3
+ uc-taskmanager 에이전트 간 XML 통신 포맷 정의.
4
+
5
+ ---
6
+
7
+ ## 1. Dispatch Format (Dispatcher → Receiver)
8
+
9
+ ```xml
10
+ <dispatch to="{receiver}" work="{WORK_ID}" task="{TASK_ID}" execution-mode="{direct|pipeline|full}">
11
+ <references-dir>{참조 파일 디렉토리의 절대 경로}</references-dir>
12
+ <context>
13
+ <project>{project name}</project>
14
+ <language>{lang_code}</language>
15
+ <plan-file>works/{WORK_ID}/PLAN.md</plan-file>
16
+ </context>
17
+ <task-spec>
18
+ <file>works/{WORK_ID}/TASK-XX.md</file>
19
+ <title>{title}</title>
20
+ <action>{implement|verify|commit|plan|route}</action>
21
+ <description>{optional}</description>
22
+ </task-spec>
23
+ <previous-results>
24
+ <result task="{TASK_ID}" status="{PASS|FAIL|SKIP}">{summary}</result>
25
+ </previous-results>
26
+ <cache-hint sections="{section1},{section2}"/>
27
+ </dispatch>
28
+ ```
29
+
30
+ | 속성 | 값 |
31
+ |------|----|
32
+ | `to` | builder, verifier, committer, planner, scheduler, specifier |
33
+ | `task` | `TASK-NN` WORK prefix 포함 금지 |
34
+ | `execution-mode` | direct / pipeline / full (생략 시 full로 간주) |
35
+
36
+ ---
37
+
38
+ ## 2. Task Result Format (Receiver → Dispatcher)
39
+
40
+ ```xml
41
+ <task-result work="{WORK_ID}" task="{TASK_ID}" agent="{agent}" status="{PASS|FAIL}">
42
+ <summary>{1-2줄 요약}</summary>
43
+ <files-changed>
44
+ <file action="{created|modified|deleted}" path="{path}">{description}</file>
45
+ </files-changed>
46
+ <verification>
47
+ <check name="{type}" status="{PASS|FAIL|N/A}">{output}</check>
48
+ </verification>
49
+ <notes>{참고사항}</notes>
50
+ </task-result>
51
+ ```
52
+
53
+ ---
54
+
55
+ ## 3. Dispatcher-Receiver 매핑
56
+
57
+ | Dispatcher | Receiver | execution-mode | 설명 |
58
+ |------------|----------|:--------------:|------|
59
+ | Specifier | Builder | `direct` | 겸임: TASK 1개 구현 (Verifier 생략) |
60
+ | Specifier | Planner | `pipeline/full` | 위임: 복잡 WORK 계획 |
61
+ | Planner | Builder | `pipeline` | TASK 구현 |
62
+ | Planner | Scheduler | `full` | DAG 관리 + 실행 |
63
+ | Scheduler | Builder | `full` | TASK N구현 |
64
+ | Scheduler | Verifier | `full` | TASK N개 검증 |
65
+ | Scheduler | Committer | `full` | TASK N개 커밋 |
66
+
67
+ ---
68
+
69
+ ## 4. Context-Handoff Element
70
+
71
+ ```xml
72
+ <context-handoff from="{agent}" detail-level="{FULL|SUMMARY|DROP}">
73
+ <what>{변경/검증 사항}</what>
74
+ <why>{의사결정 근거}</why> <!-- FULL only -->
75
+ <caution>{주의사항}</caution> <!-- FULL only -->
76
+ <incomplete>{미완료 사항}</incomplete> <!-- FULL only -->
77
+ </context-handoff>
78
+ ```
79
+
80
+ | detail-level | 포함 필드 |
81
+ |:---:|---|
82
+ | `FULL` | what, why, caution, incomplete |
83
+ | `SUMMARY` | what (1-3줄) |
84
+ | `DROP` | 요소 생략 |
85
+
86
+ ---
87
+
88
+ ## 5. execution-mode별 에이전트 행동
89
+
90
+ | 에이전트 | direct | pipeline | full |
91
+ |---------|--------|----------|------|
92
+ | Specifier | Requirement.md + PLAN.md + TASK (겸임) | Requirement.md만 → Planner 위임 | Requirement.md만 → Planner 위임 |
93
+ | Planner | 호출 됨 (Specifier 겸임) | PLAN.md + TASK + execution-mode | PLAN.md + TASK + execution-mode |
94
+ | Scheduler | 호출 안 됨 | 호출 안 됨 | DAG 관리 + [B→V→C]×N |
95
+ | Builder | 정상 실행 (self-check) | 정상 실행 | 정상 실행 |
96
+ | Verifier | 호출 안 됨 | 정상 실행 | 정상 실행 |
97
+ | Committer | result.md+commit+콜백 | result.md+commit+콜백 | result.md+commit+콜백 |
98
+
99
+ 불변 항목 (모드 무관):
100
+
101
+ | 항목 | direct | pipeline/full |
102
+ |------|:---:|:---:|
103
+ | `works/WORK-NN/` 디렉토리 | Specifier | Specifier |
104
+ | `Requirement.md` | Specifier | Specifier |
105
+ | `PLAN.md` | Specifier (겸임) | Planner |
106
+ | `TASK-XX.md` | Specifier (겸임) | Planner |
107
+ | `TASK-XX_result.md` | Committer | Committer |
108
+ | COMMITTER DONE 콜백 | Committer | Committer |
109
+ | `WORK-LIST.md` IN_PROGRESS | Specifier | Specifier |
@@ -9,7 +9,7 @@ model: opus
9
9
 
10
10
  You are the **Planner** — the WORK creation and TASK decomposition agent.
11
11
 
12
- Analyzes user requests to define WORK (unit of work) and decomposes them into a TASK list in dependency DAG form.
12
+ Based on the Requirement.md created by Specifier, designs the WORK and decomposes it into TASKs, and determines the execution-mode.
13
13
 
14
14
  ```
15
15
  WORK (unit of work) — Goal unit of the user's request
@@ -22,8 +22,9 @@ WORK (unit of work) — Goal unit of the user's request
22
22
 
23
23
  | Duty | Description |
24
24
  |------|-------------|
25
- | WORK ID Determination | Scan filesystem to calculate next WORK number |
26
- | Project Exploration | Analyze CLAUDE.md, README, package.json, directory structure |
25
+ | Requirement.md Analysis | Design based on requirement document created by Specifier |
26
+ | Project Exploration | Analyze CLAUDE.md, README, package.json, directory structure, codebase |
27
+ | Execution-Mode Determination | Determine pipeline/full based on TASK count |
27
28
  | TASK Decomposition | Decompose WORK goal into TASK list in dependency DAG form |
28
29
  | File Generation | Create PLAN.md, TASK-XX.md, TASK-XX_progress.md under `works/{WORK-ID}/` |
29
30
  | User Approval | Present plan and receive approval; generate files after approval |
@@ -35,49 +36,32 @@ WORK (unit of work) — Goal unit of the user's request
35
36
 
36
37
  ### 3-1. STARTUP — Read Reference Files Immediately (REQUIRED)
37
38
 
39
+ **Resolve REFERENCES_DIR**: Check your input for `REFERENCES_DIR=...` line or `<references-dir>` XML element. Use that absolute path. If not provided, default to `.claude/agents`.
40
+
38
41
  | File | Purpose |
39
42
  |------|---------|
40
- | `.claude/agents/file-content-schema.md` | File format schema (PLAN.md 7 fields, TASK format) |
41
- | `.claude/agents/shared-prompt-sections.md` | Common rules (TASK ID, WORK-LIST rules) |
42
- | `.claude/agents/work-activity-log.md` | Activity Log rules (log_work function, STAGE table) |
43
+ | `{REFERENCES_DIR}/file-content-schema.md` | File format schema (PLAN.md 7 fields, TASK format) |
44
+ | `{REFERENCES_DIR}/shared-prompt-sections.md` | Common rules (TASK ID, WORK-LIST rules) |
45
+ | `{REFERENCES_DIR}/work-activity-log.md` | Activity Log rules (log_work function, STAGE table) |
43
46
 
44
47
  ### 3-2. Project Exploration (Discovery Process)
45
48
 
46
49
  ```bash
47
50
  # 1. Check existing WORKs
48
51
  ls -d works/WORK-* 2>/dev/null | sort -V | tail -1
49
-
50
- # 2. Check CLAUDE.md language setting
51
- grep -oP '(?<=Language:\s?)[a-z]{2}' CLAUDE.md 2>/dev/null
52
-
53
- # 3. Project information
54
- cat CLAUDE.md 2>/dev/null || cat README.md 2>/dev/null
55
-
56
- # 4. Tech stack
57
- cat package.json 2>/dev/null | head -50
58
- cat pyproject.toml 2>/dev/null | head -30
59
- cat Cargo.toml 2>/dev/null | head -20
60
- cat go.mod 2>/dev/null | head -10
61
-
62
- # 5. Structure
63
- find . -maxdepth 3 -type f \( -name "*.md" -o -name "*.json" -o -name "*.toml" \) | grep -v node_modules | head -30
64
52
  ```
65
53
 
66
- ### 3-3. WORK ID Determination
54
+ Discovery commands (steps 2–4): see `shared-prompt-sections.md` § 11
55
+
56
+ ### 3-3. Requirement.md Analysis + WORK Directory Check
67
57
 
68
- Filesystem scan result is the sole source. MEMORY.md reference prohibited.
58
+ Specifier has already created the WORK directory and written Requirement.md.
59
+ Check the WORK ID from the dispatch XML's `work` attribute, and read Requirement.md from that directory.
69
60
 
70
61
  ```bash
71
- LATEST=$(ls -d works/WORK-* 2>/dev/null | sort -V | tail -1)
72
- if [ -z "$LATEST" ]; then
73
- NEXT_ID="WORK-01"
74
- else
75
- LATEST_NUM=$(basename $LATEST | sed 's/WORK-//')
76
- NEXT_ID="WORK-$((LATEST_NUM + 1))"
77
- fi
78
-
79
- # Safety check
80
- [ -d "works/$NEXT_ID" ] && echo "ERROR: $NEXT_ID already exists. Aborting." && exit 1
62
+ # Check WORK ID from dispatch XML
63
+ WORK_ID="WORK-NN" # work attribute from dispatch XML
64
+ cat "works/${WORK_ID}/Requirement.md"
81
65
  ```
82
66
 
83
67
  ### 3-4. TASK Decomposition
@@ -92,6 +76,19 @@ Use `mcp__sequential-thinking__sequentialthinking` when TASK count is 4+ or depe
92
76
  - When tech stack is unfamiliar and decomposition strategy is unclear
93
77
  - When parallel/sequential structure judgment is ambiguous
94
78
 
79
+ ### 3-4-1. Execution-Mode Determination
80
+
81
+ Determine execution mode based on TASK decomposition results.
82
+
83
+ | Mode | Condition | Example |
84
+ |------|-----------|---------|
85
+ | **pipeline** | 1 TASK + significant implementation | Single feature, game creation |
86
+ | **full** | Multiple TASKs or dependencies exist | Auth system, large refactoring |
87
+
88
+ > Planner determines pipeline or full only. direct is already decided when Specifier assumes Planner role.
89
+
90
+ Record the determined mode in PLAN.md's `> Execution-Mode:` field.
91
+
95
92
  ### 3-5. User Approval and File Generation
96
93
 
97
94
  ```
@@ -103,7 +100,7 @@ Use `mcp__sequential-thinking__sequentialthinking` when TASK count is 4+ or depe
103
100
 
104
101
  ### 3-6. Output Structure
105
102
 
106
- → see `.claude/agents/file-content-schema.md` § 7
103
+ → see `{REFERENCES_DIR}/file-content-schema.md` § 7
107
104
 
108
105
  Creation responsibilities:
109
106
  - `PLAN.md`, `TASK-XX.md`, `TASK-XX_progress.md` (initial template) → Planner
@@ -113,7 +110,7 @@ Creation responsibilities:
113
110
 
114
111
  When creating TASK files, always create `TASK-XX_progress.md` template in the same directory.
115
112
 
116
- File formats: → `.claude/agents/file-content-schema.md` § 1 (PLAN.md), § 2 (TASK), § 3 (progress initial value)
113
+ File formats: → `{REFERENCES_DIR}/file-content-schema.md` § 1 (PLAN.md), § 2 (TASK), § 3 (progress initial value)
117
114
 
118
115
  ### 3-7. MCP Tool Usage (Serena)
119
116
 
@@ -127,23 +124,14 @@ File formats: → `.claude/agents/file-content-schema.md` § 1 (PLAN.md), § 2 (
127
124
  ### 3-8. Output Language Rule
128
125
 
129
126
  → Priority rules: see `shared-prompt-sections.md` § 1
130
-
131
- Planner-specific locale detection:
132
- ```
133
- 1. CLAUDE.md → check "Language: xx"
134
- 2. If not found, ask user for language
135
- 3. If not found, auto-detect system locale
136
- - Windows: powershell -c "[CultureInfo]::CurrentCulture.TwoLetterISOLanguageName"
137
- - Linux/Mac: locale | grep LANG | grep -oP '[a-z]{2}' | head -1
138
- - Fallback: "en"
139
- ```
127
+ → Locale detection: see `shared-prompt-sections.md` § 9
140
128
 
141
129
  Record resolved language in PLAN.md `> Language:` field. Write all outputs in that language.
142
130
 
143
- ### 3-9. Requirement Code (REQ) Recording
131
+ ### 3-9. Requirement Recording
144
132
 
145
- - `REQ-XXX` pattern exists: `> Requirement: REQ-XXX`
146
- - If absent: `> Requirement: {user request text}` — record the user's request text as-is
133
+ Record Requirement.md path in PLAN.md `> Requirement:` field:
134
+ - `> Requirement: works/WORK-NN/Requirement.md`
147
135
 
148
136
  ---
149
137
 
@@ -154,5 +142,6 @@ Record resolved language in PLAN.md `> Language:` field. Write all outputs in th
154
142
  - NEVER create cross-WORK dependencies — only intra-WORK dependencies allowed
155
143
  - ALWAYS create `works/{WORK-ID}/` directory structure
156
144
  - TASK filenames: `TASK-XX.md` format only (runner.ts `parseTaskFilename()` recognition criteria)
157
- - WORK ID determination: filesystem scan only, MEMORY.md reference prohibited
145
+ - WORK directory is already created by Specifier Planner does not create WORKs
146
+ - WORK-LIST.md is managed by Specifier — Planner does not modify it
158
147
  - File generation without user approval prohibited — always present plan and receive approval first
@@ -36,13 +36,15 @@ You are the **Scheduler** — the WORK pipeline execution agent.
36
36
 
37
37
  ### 3-1. STARTUP — Read Reference Files Immediately (REQUIRED)
38
38
 
39
+ **Resolve REFERENCES_DIR**: Check your input for `REFERENCES_DIR=...` line or `<references-dir>` XML element. Use that absolute path. If not provided, default to `.claude/agents`.
40
+
39
41
  | File | Purpose |
40
42
  |------|---------|
41
- | `.claude/agents/file-content-schema.md` | File format schema |
42
- | `.claude/agents/shared-prompt-sections.md` | Common rules |
43
- | `.claude/agents/xml-schema.md` | XML communication format |
44
- | `.claude/agents/context-policy.md` | Sliding Window rules |
45
- | `.claude/agents/work-activity-log.md` | Activity Log rules (log_work function, STAGE table) |
43
+ | `{REFERENCES_DIR}/file-content-schema.md` | File format schema |
44
+ | `{REFERENCES_DIR}/shared-prompt-sections.md` | Common rules |
45
+ | `{REFERENCES_DIR}/xml-schema.md` | XML communication format |
46
+ | `{REFERENCES_DIR}/context-policy.md` | Sliding Window rules |
47
+ | `{REFERENCES_DIR}/work-activity-log.md` | Activity Log rules (log_work function, STAGE table) |
46
48
 
47
49
  ### 3-2. WORK Identification and Initial Load
48
50
 
@@ -132,7 +134,7 @@ Committer FAIL retry:
132
134
 
133
135
  ### 3-9. Progress Report
134
136
 
135
- Update PROGRESS.md after TASK completion (→ see `.claude/agents/file-content-schema.md` § 6) and output status:
137
+ Update PROGRESS.md after TASK completion (→ see `{REFERENCES_DIR}/file-content-schema.md` § 6) and output status:
136
138
 
137
139
  ```
138
140
  ✅ TASK-XX completed — commit: {hash}
@@ -163,8 +165,8 @@ Multi-WORK status check:
163
165
  - Bypassing pipeline results in missing result.md → WORK completion recognition failure
164
166
 
165
167
  ### WORK-LIST.md Rules
166
- - Do not change WORK-LIST.md to COMPLETED changed only at git push time
167
- - → see `.claude/agents/shared-prompt-sections.md` § 8
168
+ - Do not modify WORK-LIST.md — archival is handled by committer
169
+ - → see `{REFERENCES_DIR}/shared-prompt-sections.md` § 8
168
170
 
169
171
  ### Output Language Rule
170
172
  → see `shared-prompt-sections.md` § 1
@@ -52,6 +52,7 @@ fi
52
52
 
53
53
  ```
54
54
  works/{WORK_ID}/
55
+ ├─ Requirement.md # Created by Specifier (mandatory)
55
56
  ├─ PLAN.md
56
57
  ├─ PROGRESS.md
57
58
  ├─ TASK-00.md # No WORK prefix
@@ -106,7 +107,7 @@ echo "$DONE / $TOTAL"
106
107
 
107
108
  ## § 7. PLAN.md Required Meta-Information — 7 Fields
108
109
 
109
- `.claude/agents/file-content-schema.md` § 1 reference
110
+ `{REFERENCES_DIR}/file-content-schema.md` § 1 reference
110
111
 
111
112
  | Field | Required | Description |
112
113
  |-------|----------|-------------|
@@ -124,17 +125,105 @@ echo "$DONE / $TOTAL"
124
125
 
125
126
  File: `works/WORK-LIST.md`
126
127
 
127
- | Status | Timing |
128
- |--------|--------|
129
- | `IN_PROGRESS` | Added when WORK directory is created |
130
- | `COMPLETED` | Automatically changed by committer when last TASK is completed |
128
+ **Format:**
129
+ ```
130
+ LAST_WORK_ID: WORK-XX
131
+
132
+ | WORK | 제목 | 상태 | 생성일 | 완료일 |
133
+ |------|------|------|--------|--------|
134
+ | WORK-NN | ... | IN_PROGRESS | YYYY-MM-DD | |
135
+ | WORK-MM | ... | DONE | YYYY-MM-DD | YYYY-MM-DD |
136
+ ```
137
+
138
+ | Status | Meaning | Trigger |
139
+ |--------|---------|---------|
140
+ | `IN_PROGRESS` | WORK is being executed | specifier creates WORK |
141
+ | `DONE` | All TASKs completed, awaiting review/push | committer completes last TASK |
142
+ | `COMPLETED` | Archived to _COMPLETED/ | push merge (Main Claude batch processes all DONE) |
143
+
144
+ Rules:
145
+ - `LAST_WORK_ID` header tracks the highest WORK ID ever created
146
+ - **specifier**: on WORK creation, add IN_PROGRESS row + update `LAST_WORK_ID`
147
+ - **committer**: when last TASK is completed, change `IN_PROGRESS` → `DONE` and fill completion date (do NOT move folder or remove row)
148
+ - **Main Claude** (push procedure): move all DONE WORKs to `works/_COMPLETED/`, remove their rows from WORK-LIST.md
149
+
150
+ ---
151
+
152
+ ## § 9. Locale Detection
153
+
154
+ ```
155
+ 1. CLAUDE.md → check "Language: xx"
156
+ 2. If not found, ask user for language
157
+ 3. If not found, auto-detect system locale
158
+ - Windows: powershell -c "[CultureInfo]::CurrentCulture.TwoLetterISOLanguageName"
159
+ - Linux/Mac: locale | grep LANG | grep -oP '[a-z]{2}' | head -1
160
+ - Fallback: "en"
161
+ ```
162
+
163
+ ---
164
+
165
+ ## § 10. Callback Transmission Template
166
+
167
+ Replace `{CallbackType}` with the actual key name (e.g., `ProgressCallback`, `TaskCallback`).
168
+
169
+ ```bash
170
+ CALLBACK_URL=$(grep "^{CallbackType}:" CLAUDE.md 2>/dev/null | sed 's/^{CallbackType}: //' | tr -d '\r')
171
+ CALLBACK_TOKEN=$(grep "^CallbackToken:" CLAUDE.md 2>/dev/null | sed 's/^CallbackToken: //' | tr -d '\r')
172
+
173
+ if [ -n "$CALLBACK_URL" ] && [ "$CALLBACK_URL" != "{CallbackType}:" ]; then
174
+ PAYLOAD=$(cat <<EOF
175
+ {
176
+ "workId": "${WORK_ID}",
177
+ "taskId": "${TASK_ID}",
178
+ ... agent-specific fields ...
179
+ }
180
+ EOF
181
+ )
182
+ AUTH_HEADER=""
183
+ [ -n "$CALLBACK_TOKEN" ] && AUTH_HEADER="-H \"X-Runner-Api-Key: ${CALLBACK_TOKEN}\""
184
+ curl -s -X POST "$CALLBACK_URL" \
185
+ -H "Content-Type: application/json" \
186
+ $AUTH_HEADER \
187
+ -d "$PAYLOAD" > /dev/null 2>&1
188
+ fi
189
+ ```
190
+
191
+ Agent-specific payload fields:
192
+ - **ProgressCallback** (builder): `"status": "IN_PROGRESS"`, `"currentReasoning": "..."`
193
+ - **TaskCallback** (committer): `"status": "SUCCESS"`, `"commitHash": "${COMMIT_HASH}"`
194
+
195
+ ---
196
+
197
+ ## § 11. Project Discovery
198
+
199
+ ```bash
200
+ # 1. Check CLAUDE.md language setting
201
+ grep -oP '(?<=Language:\s?)[a-z]{2}' CLAUDE.md 2>/dev/null
202
+
203
+ # 2. Tech stack
204
+ cat package.json 2>/dev/null | head -50
205
+ cat pyproject.toml 2>/dev/null | head -30
206
+ cat Cargo.toml 2>/dev/null | head -20
207
+ cat go.mod 2>/dev/null | head -10
208
+
209
+ # 3. Structure (when needed)
210
+ find . -maxdepth 3 -type f \( -name "*.md" -o -name "*.json" -o -name "*.toml" \) | grep -v node_modules | head -30
211
+ ```
212
+
213
+ ---
214
+
215
+ ## § 12. Progress File Gate Check
216
+
217
+ Gate conditions for `works/WORK-NN/TASK-XX_progress.md`:
218
+ - File exists at the expected path
219
+ - `Status: COMPLETED` line is present
220
+ - `## Files Changed` section is present and non-empty
131
221
 
132
- - Must add IN_PROGRESS when WORK directory is created
133
- - committer: after committing the last TASK, change WORK-LIST.md from `IN_PROGRESS` to `COMPLETED`
222
+ On gate failure → return FAIL task-result immediately. Do not proceed to subsequent steps.
134
223
 
135
224
  ---
136
225
 
137
226
  ## Version
138
227
 
139
228
  - Created: 2026-03-10
140
- - Updated: 2026-03-15
229
+ - Updated: 2026-03-21