uctm 1.1.0 → 1.2.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.
@@ -106,12 +106,12 @@ echo "$DONE / $TOTAL"
106
106
 
107
107
  ## § 7. PLAN.md 필수 메타정보 7개 필드
108
108
 
109
- `agents/file-content-schema.md` § 1 참조
109
+ `.claude/agents/file-content-schema.md` § 1 참조
110
110
 
111
111
  | 필드 | 필수 | 설명 |
112
112
  |------|------|------|
113
113
  | `> Created:` | ✅ | YYYY-MM-DD |
114
- | `> 요구사항:` | ✅ | `REQ-XXX` 또는 `N/A` |
114
+ | `> 요구사항:` | ✅ | `REQ-XXX` 또는 사용자 요청 텍스트 |
115
115
  | `> Execution-Mode:` | ✅ | `direct` / `pipeline` / `full` |
116
116
  | `> Project:` | ✅ | 프로젝트명 |
117
117
  | `> Tech Stack:` | ✅ | 감지된 기술 스택 |
@@ -127,11 +127,10 @@ echo "$DONE / $TOTAL"
127
127
  | 상태 | 시점 |
128
128
  |------|------|
129
129
  | `IN_PROGRESS` | WORK 디렉토리 생성 시 추가 |
130
- | `COMPLETED` | git push 시에만 변경 |
130
+ | `COMPLETED` | 마지막 TASK 완료 시 committer가 자동 변경 |
131
131
 
132
- - committer / scheduler → COMPLETED 변경 금지
133
132
  - WORK 디렉토리 생성 시 반드시 IN_PROGRESS 추가
134
- - push 후 IN_PROGRESS 방치 금지
133
+ - committer: 마지막 TASK commit WORK-LIST.md를 `IN_PROGRESS` `COMPLETED`로 변경
135
134
 
136
135
  ---
137
136
 
@@ -35,10 +35,10 @@ Builder가 완료한 TASK 결과물을 검증하여 빌드, 린트, 테스트, A
35
35
 
36
36
  | 파일 | 목적 |
37
37
  |------|------|
38
- | `agents/shared-prompt-sections.md` | 공통 규칙 |
39
- | `agents/xml-schema.md` | XML 통신 포맷 |
40
- | `agents/context-policy.md` | 슬라이딩 윈도우 규칙 |
41
- | `agents/work-activity-log.md` | Activity Log 규칙 (log_work 함수, STAGE 테이블) |
38
+ | `.claude/agents/shared-prompt-sections.md` | 공통 규칙 |
39
+ | `.claude/agents/xml-schema.md` | XML 통신 포맷 |
40
+ | `.claude/agents/context-policy.md` | 슬라이딩 윈도우 규칙 |
41
+ | `.claude/agents/work-activity-log.md` | Activity Log 규칙 (log_work 함수, STAGE 테이블) |
42
42
 
43
43
  ### 3-2. XML 입력 파싱
44
44
 
@@ -1,45 +1,45 @@
1
- # Work Activity Log
2
-
3
- 각 에이전트가 WORK 진행 상황을 `works/{WORK_ID}/work_{WORK_ID}.log` 파일에 기록하는 규칙을 정의한다.
4
-
5
- ---
6
-
7
- # 1. 작업 단계 및 로그 기록 내용
8
- * 최초 실행 시 : 수신한 프롬프트 메시지** Agent 시작 시 수신한 프롬프트 메시지 내용 (Required 필수)
9
- * Callback 호출 시 : 호출한 Callback URL, 성공여부, Payload, Respoonse (Required 필수)
10
- * 작업 진행 시 : 작업항목 및 작업내용
11
- * 수행작업 완료 시 : 타 Agent에 전송한 프롬프트 메시지** Agent 시작 시 수신한 프롬프트 메시지 내용 (Required 필수)
12
-
13
- ## log_work 함수
14
-
15
- ```bash
16
- AGENT_NAME="ROUTER" # 각 에이전트 파일에서 적절히 설정
17
-
18
- log_work() {
19
- local WORK_ID="$1" AGENT="$2" STAGE="$3" DESC="$4"
20
- mkdir -p "works/${WORK_ID}"
21
- printf '[%s]_%s_%s_%s\n' \
22
- "$(date '+%Y-%m-%dT%H:%M:%S')" "$AGENT" "$STAGE" "$DESC" \
23
- >> "works/${WORK_ID}/work_${WORK_ID}.log"
24
- }
25
- ```
26
-
27
- ---
28
-
29
- ## STAGE 테이블
30
-
31
- | STAGE | 시점 | 설명 예시 |
32
- |-------|------|-----------|
33
- | `INIT` | WORK_ID 결정 후 | `WORK-NN 생성 — Execution-Mode: direct/pipeline/full` |
34
- | `REF` | STARTUP 참조 직후 | `참조: CLAUDE.md, .agent/router_rule_config.json, agents/file-content-schema.md` |
35
- | `PLAN` | PLAN.md + TASK 파일 생성 완료 | `PLAN.md, TASK-00.md 생성 완료` |
36
- | `IMPL` | direct 모드 코드 구현 시작 | `코드 구현 시작 — 참조: {수정 대상 파일 목록}` |
37
- | `BUILD` | self-check 통과 | `빌드/린트 통과` |
38
- | `COMMIT` | git commit 완료 | `commit {hash}` |
39
- | `DISPATCH` | pipeline/full dispatch | `Builder dispatch` 또는 `Planner dispatch` |
40
-
41
- ---
42
-
43
- ## 참조 자료 수집 규칙
44
-
45
- STARTUP에서 읽은 파일과 이후 탐색한 파일을 누적 추적하여 `REF` 단계에서 한 번에 기록.
1
+ # Work Activity Log
2
+
3
+ 각 에이전트가 WORK 진행 상황을 `works/{WORK_ID}/work_{WORK_ID}.log` 파일에 기록하는 규칙을 정의한다.
4
+
5
+ ---
6
+
7
+ # 1. 작업 단계 및 로그 기록 내용
8
+ * 최초 실행 시 : 수신한 프롬프트 메시지** Agent 시작 시 수신한 프롬프트 메시지 내용 (Required 필수)
9
+ * Callback 호출 시 : 호출한 Callback URL, 성공여부, Payload, Respoonse (Required 필수)
10
+ * 작업 진행 시 : 작업항목 및 작업내용
11
+ * 수행작업 완료 시 : 타 Agent에 전송한 프롬프트 메시지** Agent 시작 시 수신한 프롬프트 메시지 내용 (Required 필수)
12
+
13
+ ## log_work 함수
14
+
15
+ ```bash
16
+ AGENT_NAME="ROUTER" # 각 에이전트 파일에서 적절히 설정
17
+
18
+ log_work() {
19
+ local WORK_ID="$1" AGENT="$2" STAGE="$3" DESC="$4"
20
+ mkdir -p "works/${WORK_ID}"
21
+ printf '[%s]_%s_%s_%s\n' \
22
+ "$(date '+%Y-%m-%dT%H:%M:%S')" "$AGENT" "$STAGE" "$DESC" \
23
+ >> "works/${WORK_ID}/work_${WORK_ID}.log"
24
+ }
25
+ ```
26
+
27
+ ---
28
+
29
+ ## STAGE 테이블
30
+
31
+ | STAGE | 시점 | 설명 예시 |
32
+ |-------|------|-----------|
33
+ | `INIT` | WORK_ID 결정 후 | `WORK-NN 생성 — Execution-Mode: direct/pipeline/full` |
34
+ | `REF` | STARTUP 참조 직후 | `참조: CLAUDE.md, .agent/router_rule_config.json, agents/file-content-schema.md` |
35
+ | `PLAN` | PLAN.md + TASK 파일 생성 완료 | `PLAN.md, TASK-00.md 생성 완료` |
36
+ | `IMPL` | direct 모드 코드 구현 시작 | `코드 구현 시작 — 참조: {수정 대상 파일 목록}` |
37
+ | `BUILD` | self-check 통과 | `빌드/린트 통과` |
38
+ | `COMMIT` | git commit 완료 | `commit {hash}` |
39
+ | `DISPATCH` | pipeline/full dispatch | `Builder dispatch` 또는 `Planner dispatch` |
40
+
41
+ ---
42
+
43
+ ## 참조 자료 수집 규칙
44
+
45
+ STARTUP에서 읽은 파일과 이후 탐색한 파일을 누적 추적하여 `REF` 단계에서 한 번에 기록.
@@ -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
+ <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 |
package/lib/constants.mjs CHANGED
@@ -31,12 +31,12 @@ export function getAgentsSrcDir(lang) {
31
31
  export const CLAUDE_MD_SECTION_KO = `
32
32
  ## Agent 호출 규칙
33
33
 
34
- \`[]\` 태그로 시작하는 요청 → \`agents/agent-flow.md\` 를 읽고 파이프라인을 실행한다.
34
+ \`[]\` 태그로 시작하는 요청 → \`.claude/agents/agent-flow.md\` 를 읽고 파이프라인을 실행한다.
35
35
 
36
36
  - **Main Claude가 오케스트레이터**다. 모든 에이전트 호출은 Main Claude가 직접 수행한다.
37
37
  - 각 에이전트는 작업 완료 후 결과(dispatch XML 또는 task-result XML)만 반환한다.
38
38
  - Main Claude가 반환값을 받아 다음 에이전트를 순서대로 호출한다.
39
- - 파이프라인 흐름은 \`agents/agent-flow.md\` 기준을 따른다.
39
+ - 파이프라인 흐름은 \`.claude/agents/agent-flow.md\` 기준을 따른다.
40
40
 
41
41
  예: \`[추가기능]\`, \`[버그수정]\`, \`[리팩토링]\`, \`[WORK 시작]\` 등
42
42
  `.trimStart();
@@ -44,12 +44,12 @@ export const CLAUDE_MD_SECTION_KO = `
44
44
  export const CLAUDE_MD_SECTION_EN = `
45
45
  ## Agent Invocation Rules
46
46
 
47
- Requests starting with a \`[]\` tag → read \`agents/agent-flow.md\` and execute the pipeline.
47
+ Requests starting with a \`[]\` tag → read \`.claude/agents/agent-flow.md\` and execute the pipeline.
48
48
 
49
49
  - **Main Claude is the orchestrator.** All agent invocations are performed directly by Main Claude.
50
50
  - Each agent only returns results (dispatch XML or task-result XML) after completing its work.
51
51
  - Main Claude receives return values and invokes the next agent in sequence.
52
- - Pipeline flow follows \`agents/agent-flow.md\`.
52
+ - Pipeline flow follows \`.claude/agents/agent-flow.md\`.
53
53
 
54
54
  Examples: \`[new-feature]\`, \`[bugfix]\`, \`[enhancement]\`, \`[new-work]\`, etc.
55
55
  `.trimStart();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uctm",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Universal Claude Task Manager — SDD-based task pipeline subagent system for Claude Code CLI",
5
5
  "type": "module",
6
6
  "bin": {