team-planex
npx skills add https://github.com/catlog22/claude-code-workflow --skill team-planex
Agent 安装分布
Skill 文档
Team PlanEx
2 æåè¾¹è§åè¾¹æ§è¡å¢éãéè¿é Issue èææµæ°´çº¿å®ç° planner å executor å¹¶è¡å·¥ä½ï¼planner æ¯å®æä¸ä¸ª issue ç solution åç«å³å建 EXEC-* ä»»å¡ï¼å«ä¸é´äº§ç©æä»¶è·¯å¾ï¼ï¼executor 仿件å è½½ solution å¼å§å®ç°ãæææåéè¿ --role=xxx è·¯ç±ã
Architecture Overview
ââââââââââââââââââââââââââââââââââââââââââââââââ
â Skill(skill="team-planex", args="--role=xxx") â
ââââââââââââââââââ¬ââââââââââââââââââââââââââââââ
â Role Router
âââââââââ´ââââââââ
â â
âââââââââââ ââââââââââââ
â planner â â executor â
â PLAN-* â â EXEC-* â
âââââââââââ ââââââââââââ
设计åå: åªæ 2 个è§è²ï¼æ²¡æç¬ç« coordinatorãSKILL.md å ¥å£æ¿æ è½»éç¼æï¼å建å¢éãæ´¾ååå§ä»»å¡é¾ï¼ï¼ç¶å planner æ ä»» lead è§è²æç»æ¨è¿ã
Role Router
Input Parsing
Parse $ARGUMENTS to extract --role. If absent -> Orchestration Mode (SKILL.md as lightweight coordinator).
Optional flags: --team (default: “planex”), --exec (execution method), -y/--yes (auto mode).
Role Registry
| Role | File | Task Prefix | Type | Compact |
|---|---|---|---|---|
| planner | roles/planner.md | PLAN-* | pipeline (lead) | å缩åå¿ é¡»é读 |
| executor | roles/executor.md | EXEC-* | pipeline | å缩åå¿ é¡»é读 |
COMPACT PROTECTION: è§è²æä»¶æ¯æ§è¡ææ¡£ï¼ä¸æ¯åèèµæãå½ context compression åçåï¼è§è²æä»¤ä» å©æè¦æ¶ï¼å¿ é¡»ç«å³
Readå¯¹åº role.md éæ°å è½½ååç»§ç»æ§è¡ãä¸å¾åºäºæè¦æ§è¡ä»»ä½ Phaseã
Dispatch
- Extract
--rolefrom arguments - If no
--role-> Orchestration Mode (SKILL.md as lightweight coordinator) - Look up role in registry -> Read the role file -> Execute its phases
- Unknown role -> Error with available role list: planner, executor
Input Types
æ¯æ 3 ç§è¾å ¥æ¹å¼ï¼éè¿ args ä¼ å ¥ plannerï¼ï¼
| è¾å ¥ç±»å | æ ¼å¼ | ç¤ºä¾ |
|---|---|---|
| Issue IDs | ç´æ¥ä¼ å ¥ ID | --role=planner ISS-20260215-001 ISS-20260215-002 |
| éæ±ææ¬ | --text '...' |
--role=planner --text 'å®ç°ç¨æ·è®¤è¯æ¨¡å' |
| Plan æä»¶ | --plan path |
--role=planner --plan plan/2026-02-15-auth.md |
Shared Infrastructure
Role Isolation Rules
Output Taggingï¼å¼ºå¶ï¼
ææè§è²çè¾åºï¼SendMessageãteam_msgï¼å¿
须带 [role_name] æ è¯åç¼ã
Planner è¾¹ç
| å 许 | ç¦æ¢ |
|---|---|
| éæ±æè§£ (issue å建) | ç´æ¥ç¼å/ä¿®æ¹ä»£ç |
| æ¹æ¡è®¾è®¡ (issue-plan-agent) | è°ç¨ code-developer |
| å²çªæ£æ¥ (inline files_touched) | è¿è¡æµè¯ |
| å建 EXEC-* ä»»å¡ | git commit |
| çæ§è¿åº¦ (æ¶æ¯æ»çº¿) |
Executor è¾¹ç
| å 许 | ç¦æ¢ |
|---|---|
| å¤ç EXEC-* åç¼çä»»å¡ | å建 issue |
| è°ç¨ code-developer å®ç° | ä¿®æ¹ solution/queue |
| è¿è¡æµè¯éªè¯ | 为 planner å建 PLAN-* ä»»å¡ |
| git commit æäº¤ | ç´æ¥ä¸ç¨æ·äº¤äº (AskUserQuestion) |
| SendMessage ç» planner |
Team Configuration
| Key | Value |
|---|---|
| name | planex |
| sessionDir | .workflow/.team/PEX-{slug}-{date}/ |
| artifactsDir | .workflow/.team/PEX-{slug}-{date}/artifacts/ |
| issueDataDir | .workflow/issues/ |
Message Bus
æ¯æ¬¡ SendMessage åï¼å
è°ç¨ mcp__ccw-tools__team_msg è®°å½ï¼
- åæ°: operation=”log”, team=
<session-id>, from=<role>, to=<target-role>, type=<type>, summary=”[<role>]<summary>“, ref=<file_path> - 注æ:
teamå¿ é¡»æ¯ session ID (å¦PEX-project-2026-02-27), 䏿¯ team name. ä»ä»»å¡æè¿°çSession:åæ®µæå. - CLI fallback: å½ MCP ä¸å¯ç¨æ¶ ->
ccw team log --team <session-id> --from <role> --to <target> --type <type> --summary "[<role>] ..." --json
Message types by role:
| Role | Types |
|---|---|
| planner | wave_ready, issue_ready, all_planned, error |
| executor | impl_complete, impl_failed, wave_done, error |
Task Lifecycle (Both Roles)
æ¯ä¸ª worker å¯å¨åæ§è¡ç¸åçä»»å¡åç°æµç¨ï¼
- è°ç¨
TaskList()è·åææä»»å¡ - çé: subject å¹é æ¬è§è²åç¼ + owner æ¯æ¬è§è² + status 为 pending + blockedBy 为空
- æ ä»»å¡ -> idle çå¾
- æä»»å¡ ->
TaskGetè·å详æ ->TaskUpdateæ è®° in_progress - Phase 2-4: Role-specific (see roles/{role}.md)
- Phase 5: Report + Loop
Resume Artifact Check (鲿¢æ¢å¤åéå¤äº§åº):
- æ£æ¥æ¬ä»»å¡çè¾åºäº§ç©æ¯å¦å·²åå¨
- 产ç©å®æ´ -> è·³å° Phase 5 æ¥å宿
- 产ç©ä¸å®æ´æä¸åå¨ -> æ£å¸¸æ§è¡ Phase 2-4
Wave Pipeline (é Issue èæ)
Issue 1: planner è§å solution -> åä¸é´äº§ç© -> å²çªæ£æ¥ -> å建 EXEC-* -> issue_ready
â (executor ç«å³å¼å§)
Issue 2: planner è§å solution -> åä¸é´äº§ç© -> å²çªæ£æ¥ -> å建 EXEC-* -> issue_ready
â (executor å¹¶è¡æ¶è´¹)
Issue N: ...
Final: planner åé all_planned -> executor 宿å©ä½ EXEC-* -> ç»æ
èæè§å:
- planner æ¯å®æä¸ä¸ª issue ç solution åï¼ç«å³å建 EXEC-* ä»»å¡å¹¶åé
issue_readyä¿¡å· - solution åå
¥ä¸é´äº§ç©æä»¶ï¼
artifacts/solutions/{issueId}.jsonï¼ï¼EXEC-* ä»»å¡å å«solution_fileè·¯å¾ - executor 仿件å è½½ solutionï¼æ éåè°
ccw issue solutionï¼ï¼fallback å ¼å®¹æ§æ¨¡å¼ - planner ä¸çå¾ executorï¼æç»æ¨è¿ä¸ä¸ä¸ª issue
- å½ planner åé
all_plannedæ¶æ¯åï¼executor 宿ææå©ä½ä»»å¡å³å¯ç»æ
Execution Method Selection
å¨ç¼ææ¨¡å¼æç´æ¥è°ç¨ executor åï¼å¿ é¡»å ç¡®å®æ§è¡æ¹å¼ãæ¯æ 3 ç§æ§è¡å端ï¼
| Executor | å端 | éç¨åºæ¯ |
|---|---|---|
agent |
code-developer subagent | ç®åä»»å¡ã忥æ§è¡ |
codex |
ccw cli --tool codex --mode write |
夿任å¡ãåå°æ§è¡ |
gemini |
ccw cli --tool gemini --mode write |
åæç±»ä»»å¡ãåå°æ§è¡ |
Selection Decision Table
| Condition | Execution Method | Code Review |
|---|---|---|
--exec=agent specified |
Agent | Skip |
--exec=codex specified |
Codex | Skip |
--exec=gemini specified |
Gemini | Skip |
-y or --yes flag present |
Auto (default Agent) | Skip |
| No flags (interactive) | AskUserQuestion -> user choice | AskUserQuestion -> user choice |
| Auto + task_count <= 3 | Agent | Skip |
| Auto + task_count > 3 | Codex | Skip |
Interactive Prompt (no flags)
彿 -y/--yes 䏿 --exec æ¶ï¼éè¿ AskUserQuestion 交äºéæ©ï¼
- æ§è¡æ¹å¼é项: Agent / Codex / Gemini / Auto
- 代ç 审æ¥é项: Skip / Gemini Review / Codex Review / Agent Review
éè¿ args æå®
# æ¾å¼æå®
Skill(skill="team-planex", args="--exec=codex ISS-xxx")
Skill(skill="team-planex", args="--exec=agent --text 'ç®ååè½'")
# Auto 模å¼ï¼è·³è¿äº¤äºï¼-y æ --yesï¼
Skill(skill="team-planex", args="-y --text 'æ·»å æ¥å¿'")
Orchestration Mode
å½ä¸å¸¦ --role è°ç¨æ¶ï¼SKILL.md è¿å
¥è½»éç¼ææ¨¡å¼ï¼æ ç¬ç« coordinator è§è²ï¼SKILL.md èªèº«æ¿æ
ç¼æï¼ã
Invocation: Skill(skill="team-planex", args="ä»»å¡æè¿°")
Lifecycle:
ç¨æ·æä¾ä»»å¡æè¿°
-> SKILL.md è§£æè¾å
¥ï¼Issue IDs / éæ±ææ¬ / Plan æä»¶ï¼
-> åå§å sessionDir + artifacts ç®å½
-> æ§è¡æ¹å¼éæ©ï¼è§ Execution Method Selectionï¼
-> å建 PLAN-001 ä»»å¡ï¼owner: plannerï¼
-> Spawn planner agent (åå°)
-> Spawn executor agent (åå°)
-> è¿åï¼planner lead åç»æ¨è¿ï¼
User Commands (å¤é / æ£æ¥ç¶æ):
| Command | Action |
|---|---|
check / status |
è¾åºæ§è¡ç¶æå¾ï¼ä¸æ¨è¿ |
resume / continue |
æ£æ¥ worker ç¶æï¼æ¨è¿ä¸ä¸æ¥ |
add <issue-ids or --text '...' or --plan path> |
è¿½å æ°ä»»å¡å° planner éåï¼ä¸å½±åå·²æä»»å¡ |
add å½ä»¤å¤çé»è¾:
- è§£æè¾å
¥ï¼Issue IDs /
--text/--planï¼ - è·åå½åæå¤§ PLAN-* åºå·ï¼
TaskListçéPLAN-*prefixï¼ï¼è®¡ç®ä¸ä¸ä¸ªåºå· N TaskCreate({ subject: "PLAN-00N: ...", owner: "planner", status: "pending" })ï¼description åå ¥æ° issue IDs æéæ±ææ¬- è¥ planner å·²åé
all_plannedï¼æ£æ¥ team_msg æ¥å¿ï¼ï¼é¢å¤SendMessageéç¥ planner ææ°ä»»å¡ï¼ä½¿å ¶éæ°è¿å ¥ Loop Check - è¥ executor å·²éåºçå¾
ï¼åæ ·åéæ¶æ¯å¤é executor ç»§ç»è½®è¯¢
EXEC-*ä»»å¡
Coordinator Spawn Template
SKILL.md ç¼ææ¨¡å¼ spawn workers æ¶ä½¿ç¨åå°æ¨¡å¼ (Spawn-and-Go):
Planner Spawn:
Task({
subagent_type: "general-purpose",
description: "Spawn planner worker",
team_name: <team-name>,
name: "planner",
run_in_background: true,
prompt: `ä½ æ¯ team "<team-name>" ç PLANNERã
## é¦è¦æä»¤
ä½ çææå·¥ä½å¿
é¡»éè¿è°ç¨ Skill è·åè§è²å®ä¹åæ§è¡ï¼
Skill(skill="team-planex", args="--role=planner")
å½åè¾å
¥: <planner-input>
Session: <session-dir>
## æ§è¡é
ç½®
executor çæ§è¡æ¹å¼: <execution-method>
å建 EXEC-* 任塿¶ï¼description ä¸å
å«:
execution_method: <method>
code_review: <review-tool>
## ä¸é´äº§ç©ï¼å¿
é¡»ï¼
æ¯ä¸ª issue ç solution åå
¥: <session-dir>/artifacts/solutions/{issueId}.json
EXEC-* ä»»å¡ description å¿
é¡»å
å« solution_file åæ®µæå该æä»¶
æ¯å®æä¸ä¸ª issue ç«å³åé issue_ready æ¶æ¯å¹¶å建 EXEC-* ä»»å¡
## è§è²åå
- åªå¤ç PLAN-* ä»»å¡ï¼ä¸æ§è¡å
¶ä»è§è²å·¥ä½
- ææè¾åºå¸¦ [planner] æ è¯åç¼
- ä»
ä¸ coordinator éä¿¡
- ä¸ä½¿ç¨ TaskCreate 为å
¶ä»è§è²å建任å¡ï¼EXEC-* é¤å¤ï¼
- æ¯æ¬¡ SendMessage åå
è°ç¨ mcp__ccw-tools__team_msg è®°å½
## 工使µç¨
1. è°ç¨ Skill -> è·åè§è²å®ä¹åæ§è¡é»è¾
2. æ role.md 5-Phase æµç¨æ§è¡
3. team_msg + SendMessage ç»æç» coordinator
4. TaskUpdate completed -> æ£æ¥ä¸ä¸ä¸ªä»»å¡`
})
Executor Spawn:
Task({
subagent_type: "general-purpose",
description: "Spawn executor worker",
team_name: <team-name>,
name: "executor",
run_in_background: true,
prompt: `ä½ æ¯ team "<team-name>" ç EXECUTORã
## é¦è¦æä»¤
ä½ çææå·¥ä½å¿
é¡»éè¿è°ç¨ Skill è·åè§è²å®ä¹åæ§è¡ï¼
Skill(skill="team-planex", args="--role=executor")
## æ§è¡é
ç½®
é»è®¤æ§è¡æ¹å¼: <execution-method>
代ç 审æ¥: <review-tool>
ï¼æ¯ä¸ª EXEC-* ä»»å¡ description ä¸å¯è½å
å« execution_method è¦çï¼
## Solution å è½½
ä¼å
ä» EXEC-* ä»»å¡ description ä¸ç solution_file è·¯å¾è¯»å solution JSON æä»¶
æ solution_file æ¶ fallback å° ccw issue solution å½ä»¤
## è§è²åå
- åªå¤ç EXEC-* ä»»å¡ï¼ä¸æ§è¡å
¶ä»è§è²å·¥ä½
- ææè¾åºå¸¦ [executor] æ è¯åç¼
- æ ¹æ® execution_method éæ©æ§è¡å端ï¼Agent/Codex/Geminiï¼
- ä»
ä¸ coordinator éä¿¡
- æ¯æ¬¡ SendMessage åå
è°ç¨ mcp__ccw-tools__team_msg è®°å½
## 工使µç¨
1. è°ç¨ Skill -> è·åè§è²å®ä¹åæ§è¡é»è¾
2. æ role.md 5-Phase æµç¨æ§è¡
3. team_msg + SendMessage ç»æç» coordinator
4. TaskUpdate completed -> æ£æ¥ä¸ä¸ä¸ªä»»å¡`
})
Cadence Control
èææ¨¡å: Wave beat — planner æç»æ¨è¿ï¼executor å¹¶è¡æ¶è´¹ãæ¯ä¸ª wave = planner 宿ä¸ä¸ª issue -> executor å¼å§å®ç°ã
Wave Beat Cycle (é Issue èæ)
===================================================================
Event SKILL.md (ç¼æ) Workers
-------------------------------------------------------------------
ç¨æ·è°ç¨ ---------> ââ è§£æè¾å
¥ ââââââââââ
â åå§å session â
â éæ©æ§è¡æ¹å¼ â
ââ å建 PLAN-001 ââââââ¤
â spawn planner âââââââ¼ââ> [Planner] Phase 1-5
â spawn executor ââââââ¼ââ> [Executor] Phase 1 (idle)
ââ è¿å (ç¼æç»æ) ââââ â
â
Wave 1: Planner: issue-1 solution
-> åäº§ç© -> å建 EXEC-001
-> issue_ready ---------> Executor å¼å§ EXEC-001
Wave 2: Planner: issue-2 solution
-> åäº§ç© -> å建 EXEC-002
-> issue_ready ---------> Executor å¹¶è¡æ¶è´¹
...
Wave N: Planner: all_planned
Executor: 宿å©ä½ EXEC-*
===================================================================
Pipeline èæè§å¾:
Wave pipeline (planner lead, executor follows)
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Wave 1 2 3 ... N Final
â â â â â
P:iss-1 P:iss-2 P:iss-3 P:iss-N P:all_planned
â â â â â
E:exec1 E:exec2 E:exec3 E:execN E:finish
â â
(å¹¶è¡æ¶è´¹ï¼executor ä¸ç planner å
¨é¨å®æ)
P=planner E=executor
æ£æ¥ç¹ (Checkpoint):
| è§¦åæ¡ä»¶ | ä½ç½® | è¡ä¸º |
|---|---|---|
| Planner å ¨é¨å®æ | all_planned ä¿¡å· | Executor 宿å©ä½ EXEC-* åç»æ |
| Pipeline åæ» | æ ready + æ running | Planner æ£æ¥å¹¶ escalate to user |
| Executor é»å¡ | Executor blocked > 2 tasks | Planner escalate to user |
Stall æ£æµ:
| æ£æ¥é¡¹ | æ¡ä»¶ | å¤ç |
|---|---|---|
| Executor æ ååº | in_progress EXEC-* æ åè° | æ¥åçå¾ ä¸çä»»å¡å表 |
| Pipeline æ»é | æ ready + æ running + æ pending | æ£æ¥ blockedBy ä¾èµé¾ |
| Planner è§å失败 | issue planning error | Retry once, then skip to next issue |
Task Metadata Registry
| Task ID | Role | Phase | Dependencies | Description |
|---|---|---|---|---|
| PLAN-001 | planner | planning | (none) | åå§è§åï¼éæ±æè§£ãissue åå»ºãæ¹æ¡è®¾è®¡ |
| EXEC-001 | executor | execution | PLAN-001 (implicit via issue_ready) | 第ä¸ä¸ª issue ç代ç å®ç° |
| EXEC-002 | executor | execution | (planner issue_ready) | 第äºä¸ª issue ç代ç å®ç° |
| EXEC-N | executor | execution | (planner issue_ready) | 第 N 个 issue ç代ç å®ç° |
注: EXEC-* ä»»å¡ç± planner å¨è¿è¡æ¶é个å建ï¼é Issue èæï¼ï¼ä¸é¢å å®ä¹å®æ´ä»»å¡é¾ã
Wisdom Accumulation (ææè§è²)
跨任å¡ç¥è¯ç§¯ç´¯ãSKILL.md ç¼ææ¨¡å¼å¨ session åå§åæ¶å建 wisdom/ ç®å½ã
ç®å½:
<session-folder>/wisdom/
âââ learnings.md # 模å¼åæ´å¯
âââ decisions.md # æ¶æå设计å³ç
âââ conventions.md # 代ç åºçº¦å®
âââ issues.md # å·²ç¥é£é©åé®é¢
Worker å è½½ (Phase 2): ä» task description æå Session: <path>, 读å wisdom ç®å½ä¸åæä»¶ã
Worker è´¡ç® (Phase 4/5): å°æ¬ä»»å¡åç°åå
¥å¯¹åº wisdom æä»¶ã
Session Directory
.workflow/.team/PEX-{slug}-{date}/
âââ team-session.json # Session state
âââ artifacts/
â âââ solutions/ # Planner solution output per issue
â âââ {issueId-1}.json
â âââ {issueId-N}.json
âââ wisdom/ # Cross-task knowledge
â âââ learnings.md
â âââ decisions.md
â âââ conventions.md
â âââ issues.md
âââ shared-memory.json # Cross-role state
Error Handling
| Scenario | Resolution |
|---|---|
| Unknown –role value | Error with available role list: planner, executor |
| Missing –role arg | Enter orchestration mode (SKILL.md as lightweight coordinator) |
| Role file not found | Error with expected path (roles/{name}.md) |
| Planner issue planning failure | Retry once, then report error and skip to next issue |
| Executor impl failure | Report to planner, continue with next EXEC-* task |
| No EXEC-* tasks yet | Executor idles, polls for new tasks |
| Pipeline stall | Planner monitors — if executor blocked > 2 tasks, escalate to user |