- Implemented a utility function `detectJsonInLine` to identify and parse JSON data from different formats including direct JSON, tool calls, tool results, embedded JSON, and code blocks. - Introduced `JsonDetectionResult` interface to standardize the detection results. - Added a new test results file to track the status of tests.
23 KiB
name, description, argument-hint, allowed-tools
| name | description | argument-hint | allowed-tools |
|---|---|---|---|
| workflow:collaborative-plan-with-file | Collaborative planning with Plan Note - Understanding agent creates shared plan-note.md template, parallel agents fill pre-allocated sections, conflict detection without merge. Outputs executable plan-note.md. | [-y|--yes] <task description> [--max-agents=5] | TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Bash(*), Write(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*) |
Auto Mode
When --yes or -y: Auto-approve splits, skip confirmations.
Collaborative Planning Command
Quick Start
# Basic usage
/workflow:collaborative-plan-with-file "Implement real-time notification system"
# With options
/workflow:collaborative-plan-with-file "Refactor authentication module" --max-agents=4
/workflow:collaborative-plan-with-file "Add payment gateway support" -y
Context Source: Understanding-Agent + Per-agent exploration
Output Directory: .workflow/.planning/{session-id}/
Default Max Agents: 5 (actual count based on requirement complexity)
Core Innovation: Plan Note - shared collaborative document, no merge needed
Output Artifacts
Phase 1: Understanding Agent
| Artifact | Description |
|---|---|
plan-note.md |
Shared collaborative document with pre-allocated sections |
requirement-analysis.json |
Sub-domain assignments and TASK ID ranges |
Phase 2: Per Sub-Agent
| Artifact | Description |
|---|---|
planning-context.md |
Evidence paths + synthesized understanding |
plan.json |
Complete agent plan (detailed implementation) |
Updates to plan-note.md |
Agent fills pre-allocated sections |
Phase 3: Final Output
| Artifact | Description |
|---|---|
plan-note.md |
⭐ Executable plan with conflict markers |
conflicts.json |
Detected conflicts with resolution options |
plan.md |
Human-readable summary |
Overview
Unified collaborative planning workflow using Plan Note architecture:
- Understanding: Agent analyzes requirements and creates plan-note.md template with pre-allocated sections
- Parallel Planning: Each agent generates plan.json + fills their pre-allocated section in plan-note.md
- Conflict Detection: Scan plan-note.md for conflicts (no merge needed)
- Completion: Generate plan.md summary, ready for execution
┌─────────────────────────────────────────────────────────────────────────┐
│ PLAN NOTE COLLABORATIVE PLANNING │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Phase 1: Understanding & Template Creation │
│ ├─ Understanding-Agent analyzes requirements │
│ ├─ Identify 2-5 sub-domains (focus areas) │
│ ├─ Create plan-note.md with pre-allocated sections │
│ └─ Assign TASK ID ranges (no conflicts) │
│ │
│ Phase 2: Parallel Agent Execution (No Locks Needed) │
│ ┌──────────────┬──────────────┬──────────────┐ │
│ │ Agent 1 │ Agent 2 │ Agent N │ │
│ ├──────────────┼──────────────┼──────────────┤ │
│ │ Own Section │ Own Section │ Own Section │ ← Pre-allocated │
│ │ plan.json │ plan.json │ plan.json │ ← Detailed plans │
│ └──────────────┴──────────────┴──────────────┘ │
│ │
│ Phase 3: Conflict Detection (Single Source) │
│ ├─ Parse plan-note.md (all sections) │
│ ├─ Detect file/dependency/strategy conflicts │
│ └─ Update plan-note.md conflict section │
│ │
│ Phase 4: Completion (No Merge) │
│ ├─ Generate plan.md (human-readable) │
│ └─ Ready for execution │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Output Structure
.workflow/.planning/{CPLAN-slug-YYYY-MM-DD}/
├── plan-note.md # ⭐ Core: Requirements + Tasks + Conflicts
├── requirement-analysis.json # Phase 1: Sub-domain assignments
├── agents/ # Phase 2: Per-agent detailed plans
│ ├── {focus-area-1}/
│ │ ├── planning-context.md # Evidence + understanding
│ │ └── plan.json # Complete agent plan
│ ├── {focus-area-2}/
│ │ └── ...
│ └── {focus-area-N}/
│ └── ...
├── conflicts.json # Phase 3: Conflict details
└── plan.md # Phase 4: Human-readable summary
Implementation
Session Initialization
Objective: Create session context and directory structure for collaborative planning.
Required Actions:
- Extract task description from
$ARGUMENTS - Generate session ID with format:
CPLAN-{slug}-{date}- slug: lowercase, alphanumeric, max 30 chars
- date: YYYY-MM-DD (UTC+8)
- Define session folder:
.workflow/.planning/{session-id} - Parse command options:
--max-agents=N(default: 5)-yor--yesfor auto-approval mode
- Create directory structure:
{session-folder}/agents/
Session Variables:
sessionId: Unique session identifiersessionFolder: Base directory for all artifactsmaxAgents: Maximum number of parallel agentsautoMode: Boolean for auto-confirmation
Phase 1: Understanding & Template Creation
Objective: Analyze requirements and create the plan-note.md template with pre-allocated sections for parallel agents.
Prerequisites:
- Session initialized with valid sessionId and sessionFolder
- Task description available from $ARGUMENTS
Workflow Steps:
-
Initialize Progress Tracking
- Create 4 todo items for workflow phases
- Set Phase 1 status to
in_progress
-
Launch Understanding Agent
- Agent type:
cli-lite-planning-agent - Execution mode: synchronous (run_in_background: false)
- Agent type:
-
Agent Tasks:
- Understand Requirements: Extract core objective, key points, constraints from task description
- Form Checklist: Identify critical questions needing clarification
- Split Sub-Domains: Identify 2-{maxAgents} parallelizable focus areas
- Create Plan Note: Generate plan-note.md with pre-allocated sections
Output Files:
| File | Purpose |
|---|---|
{sessionFolder}/plan-note.md |
Collaborative template with pre-allocated sections per agent |
{sessionFolder}/requirement-analysis.json |
Sub-domain assignments and TASK ID ranges |
requirement-analysis.json Schema:
session_id: Session identifieroriginal_requirement: Task descriptioncomplexity: Low | Medium | Highsub_domains[]: Array of focus areas with task_id_range and estimated_efforttotal_agents: Number of agents to spawn
Success Criteria:
- 2-{maxAgents} clear sub-domains identified
- Each sub-domain can be planned independently
- Plan Note template includes all pre-allocated sections
- TASK ID ranges have no overlap (100 IDs per agent)
- Requirements understanding is comprehensive
Completion:
- Log created artifacts
- Update Phase 1 todo status to
completed
Agent Call:
Task(
subagent_type="cli-lite-planning-agent",
run_in_background=false,
description="Understand requirements and create plan template",
prompt=`
## Mission: Create Plan Note Template
### Input Requirements
${taskDescription}
### Tasks
1. **Understand Requirements**: Extract core objective, key points, constraints
2. **Form Checklist**: Identify critical questions needing clarification
3. **Split Sub-Domains**: Identify 2-${maxAgents} parallelizable focus areas
4. **Create Plan Note**: Generate plan-note.md with pre-allocated sections
### Output Files
**File 1**: ${sessionFolder}/plan-note.md
Structure Requirements:
- YAML frontmatter: session_id, original_requirement, created_at, contributors, sub_domains, agent_sections, agent_task_id_ranges, status
- Section: ## 需求理解 (Core objectives, key points, constraints, split strategy)
- Section: ## 任务池 - {Focus Area 1} (Pre-allocated task section for agent 1, TASK-001 ~ TASK-100)
- Section: ## 任务池 - {Focus Area 2} (Pre-allocated task section for agent 2, TASK-101 ~ TASK-200)
- ... (One task pool section per sub-domain)
- Section: ## 依赖关系 (Auto-generated after all agents complete)
- Section: ## 冲突标记 (Populated in Phase 3)
- Section: ## 上下文证据 - {Focus Area 1} (Evidence for agent 1)
- Section: ## 上下文证据 - {Focus Area 2} (Evidence for agent 2)
- ... (One evidence section per sub-domain)
**File 2**: ${sessionFolder}/requirement-analysis.json
- session_id, original_requirement, complexity, sub_domains[], total_agents
### Success Criteria
- [ ] 2-${maxAgents} clear sub-domains identified
- [ ] Each sub-domain can be planned independently
- [ ] Plan Note template includes all pre-allocated sections
- [ ] TASK ID ranges have no overlap (100 IDs per agent)
`
)
Phase 2: Parallel Sub-Agent Execution
Objective: Launch parallel planning agents to fill their pre-allocated sections in plan-note.md.
Prerequisites:
- Phase 1 completed successfully
{sessionFolder}/requirement-analysis.jsonexists with sub-domain definitions{sessionFolder}/plan-note.mdtemplate created
Workflow Steps:
-
Load Sub-Domain Configuration
- Read
{sessionFolder}/requirement-analysis.json - Extract sub-domains array with focus_area, description, task_id_range
- Read
-
Update Progress Tracking
- Set Phase 2 status to
in_progress - Add sub-todo for each agent
- Set Phase 2 status to
-
User Confirmation (unless autoMode)
- Display identified sub-domains with descriptions
- Options: "开始规划" / "调整拆分" / "取消"
- Skip if autoMode enabled
-
Create Agent Directories
- For each sub-domain:
{sessionFolder}/agents/{focus-area}/
- For each sub-domain:
-
Launch Parallel Agents
- Agent type:
cli-lite-planning-agent - Execution mode: synchronous (run_in_background: false)
- Launch ALL agents in parallel (single message with multiple Task calls)
- Agent type:
Per-Agent Context:
- Focus area name and description
- Assigned TASK ID range (no overlap with other agents)
- Session ID and folder path
Per-Agent Tasks:
| Task | Output | Description |
|---|---|---|
| Generate plan.json | {sessionFolder}/agents/{focus-area}/plan.json |
Complete detailed plan following schema |
| Update plan-note.md | Sync to shared file | Fill pre-allocated "任务池" and "上下文证据" sections |
Task Summary Format (for plan-note.md):
- Task header:
### TASK-{ID}: {Title} [{focus-area}] - Status, Complexity, Dependencies
- Scope description
- Modification points with file:line references
- Conflict risk assessment
Evidence Format (for plan-note.md):
- Related files with relevance scores
- Existing patterns identified
- Constraints discovered
Agent Execution Rules:
- Each agent modifies ONLY its pre-allocated sections
- Use assigned TASK ID range exclusively
- No locking needed (exclusive sections)
- Include conflict_risk assessment for each task
Completion:
- Wait for all agents to complete
- Log generated artifacts for each agent
- Update Phase 2 todo status to
completed
User Confirmation (unless autoMode):
if (!autoMode) {
AskUserQuestion({
questions: [{
question: `已识别 ${subDomains.length} 个子领域:\n${subDomains.map((s, i) => `${i+1}. ${s.focus_area}: ${s.description}`).join('\n')}\n\n确认开始并行规划?`,
header: "Confirm Split",
multiSelect: false,
options: [
{ label: "开始规划", description: "启动并行sub-agent" },
{ label: "调整拆分", description: "修改子领域划分" },
{ label: "取消", description: "退出规划" }
]
}]
})
}
Launch Parallel Agents (single message, multiple Task calls):
// Create agent directories
subDomains.forEach(sub => {
Bash(`mkdir -p ${sessionFolder}/agents/${sub.focus_area}`)
})
// Launch all agents in parallel
subDomains.map(sub =>
Task(
subagent_type="cli-lite-planning-agent",
run_in_background=false,
description=`Plan: ${sub.focus_area}`,
prompt=`
## Sub-Agent Context
**Focus Area**: ${sub.focus_area}
**Description**: ${sub.description}
**TASK ID Range**: ${sub.task_id_range[0]}-${sub.task_id_range[1]}
**Session**: ${sessionId}
## Dual Output Tasks
### Task 1: Generate Complete plan.json
Output: ${sessionFolder}/agents/${sub.focus_area}/plan.json
Schema: ~/.claude/workflows/cli-templates/schemas/plan-json-schema.json
### Task 2: Sync Summary to plan-note.md
**Locate Your Sections**:
- Task Pool: "## 任务池 - ${toTitleCase(sub.focus_area)}"
- Evidence: "## 上下文证据 - ${toTitleCase(sub.focus_area)}"
**Task Summary Format**:
- Task header: ### TASK-${sub.task_id_range[0]}: Task Title [${sub.focus_area}]
- Fields: 状态, 复杂度, 依赖, 范围, 修改点, 冲突风险
**Evidence Format**:
- 相关文件, 现有模式, 约束
## Execution Steps
1. Generate complete plan.json
2. Extract summary from plan.json
3. Read ${sessionFolder}/plan-note.md
4. Locate and replace your task pool section
5. Locate and replace your evidence section
6. Write back plan-note.md
## Important
- Only modify your pre-allocated sections
- Use assigned TASK ID range: ${sub.task_id_range[0]}-${sub.task_id_range[1]}
`
)
)
Phase 3: Conflict Detection
Objective: Analyze plan-note.md for conflicts across all agent contributions without merging files.
Prerequisites:
- Phase 2 completed successfully
- All agents have updated plan-note.md with their sections
{sessionFolder}/plan-note.mdcontains all task and evidence sections
Workflow Steps:
-
Update Progress Tracking
- Set Phase 3 status to
in_progress
- Set Phase 3 status to
-
Parse Plan Note
- Read
{sessionFolder}/plan-note.md - Extract YAML frontmatter (session metadata)
- Parse markdown sections by heading levels
- Identify all "任务池" sections
- Read
-
Extract All Tasks
- For each "任务池" section:
- Extract tasks matching pattern:
### TASK-{ID}: {Title} [{author}] - Parse task details: status, complexity, dependencies, modification points, conflict risk
- Extract tasks matching pattern:
- Consolidate into single task list
- For each "任务池" section:
-
Detect Conflicts
File Conflicts:
- Group modification points by file:location
- Identify locations modified by multiple agents
- Record: severity=high, tasks involved, agents involved, suggested resolution
Dependency Cycles:
- Build dependency graph from task dependencies
- Detect cycles using depth-first search
- Record: severity=critical, cycle path, suggested resolution
Strategy Conflicts:
- Group tasks by files they modify
- Identify files with high/medium conflict risk from multiple agents
- Record: severity=medium, tasks involved, agents involved, suggested resolution
-
Generate Conflict Artifacts
conflicts.json:
- Write to
{sessionFolder}/conflicts.json - Include: detected_at, total_tasks, total_agents, conflicts array
- Each conflict: type, severity, tasks_involved, description, suggested_resolution
Update plan-note.md:
- Locate "## 冲突标记" section
- Generate markdown summary of conflicts
- Replace section content with conflict markdown
- Write to
-
Completion
- Log conflict detection summary
- Display conflict details if any found
- Update Phase 3 todo status to
completed
Conflict Types:
| Type | Severity | Detection Logic |
|---|---|---|
| file_conflict | high | Same file:location modified by multiple agents |
| dependency_cycle | critical | Circular dependencies in task graph |
| strategy_conflict | medium | Multiple high-risk tasks in same file from different agents |
Conflict Detection Functions:
parsePlanNote(markdown):
- Input: Raw markdown content of plan-note.md
- Process:
- Extract YAML frontmatter between
---markers - Parse frontmatter as YAML to get session metadata
- Scan for heading patterns
^(#{2,})\s+(.+)$ - Build sections array with: level, heading, start position, content
- Extract YAML frontmatter between
- Output:
{ frontmatter: object, sections: array }
extractTasksFromSection(content, sectionHeading):
- Input: Section content text, section heading for attribution
- Process:
- Match task pattern:
### (TASK-\d+):\s+(.+?)\s+\[(.+?)\] - For each match: extract taskId, title, author
- Call parseTaskDetails for additional fields
- Match task pattern:
- Output: Array of task objects with id, title, author, source_section, ...details
parseTaskDetails(content):
- Input: Task content block
- Process:
- Extract fields via regex patterns:
**状态**:\s*(.+)→ status**复杂度**:\s*(.+)→ complexity**依赖**:\s*(.+)→ depends_on (extract TASK-\d+ references)**冲突风险**:\s*(.+)→ conflict_risk
- Extract modification points:
-\s+\([^]+):\s*([^]+)`:\s*(.+)` → file, location, summary
- Extract fields via regex patterns:
- Output: Details object with status, complexity, depends_on[], modification_points[], conflict_risk
detectFileConflicts(tasks):
- Input: All tasks array
- Process:
- Build fileMap:
{ "file:location": [{ task_id, task_title, source_agent, change }] } - For each location with multiple modifications from different agents:
- Create conflict with type='file_conflict', severity='high'
- Include: location, tasks_involved, agents_involved, modifications
- Suggested resolution: 'Coordinate modification order or merge changes'
- Build fileMap:
- Output: Array of file conflict objects
detectDependencyCycles(tasks):
- Input: All tasks array
- Process:
- Build dependency graph:
{ taskId: [dependsOn_taskIds] } - Use DFS with recursion stack to detect cycles
- For each cycle found:
- Create conflict with type='dependency_cycle', severity='critical'
- Include: cycle path as tasks_involved
- Suggested resolution: 'Remove or reorganize dependencies'
- Build dependency graph:
- Output: Array of dependency cycle conflict objects
detectStrategyConflicts(tasks):
- Input: All tasks array
- Process:
- Group tasks by files they modify
- For each file with tasks from multiple agents:
- Filter for high/medium conflict_risk tasks
- If >1 high-risk tasks from different agents:
- Create conflict with type='strategy_conflict', severity='medium'
- Include: file, tasks_involved, agents_involved
- Suggested resolution: 'Review approaches and align on single strategy'
- Output: Array of strategy conflict objects
generateConflictMarkdown(conflicts):
- Input: Array of conflict objects
- Process:
- If empty: return '✅ 无冲突检测到'
- For each conflict:
- Generate header:
### CONFLICT-{padded_index}: {description} - Add fields: 严重程度, 涉及任务, 涉及Agent
- Add 问题详情 based on conflict type
- Add 建议解决方案
- Add 决策状态: [ ] 待解决
- Generate header:
- Output: Markdown string for plan-note.md "## 冲突标记" section
replaceSectionContent(markdown, sectionHeading, newContent):
- Input: Original markdown, target section heading, new content
- Process:
- Find section heading position via regex
- Find next heading of same or higher level
- Replace content between heading and next section
- If section not found: append at end
- Output: Updated markdown string
Phase 4: Completion
Objective: Generate human-readable plan summary and finalize workflow.
Prerequisites:
- Phase 3 completed successfully
- Conflicts detected and documented in plan-note.md
- All artifacts generated
Workflow Steps:
-
Update Progress Tracking
- Set Phase 4 status to
in_progress
- Set Phase 4 status to
-
Read Final State
- Read
{sessionFolder}/plan-note.md - Extract frontmatter metadata
- Load conflicts from Phase 3
- Read
-
Generate plan.md
- Create human-readable summary including:
- Session metadata
- Requirements understanding
- Sub-domain breakdown
- Task overview by focus area
- Conflict report
- Execution instructions
- Create human-readable summary including:
-
Write Summary File
- Write to
{sessionFolder}/plan.md
- Write to
-
Display Completion Summary
- Session statistics
- File structure
- Execution command
- Conflict status
-
Update Todo
- Set Phase 4 status to
completed
- Set Phase 4 status to
plan.md Structure:
| Section | Content |
|---|---|
| Header | Session ID, created time, original requirement |
| Requirements | Copy from plan-note.md "## 需求理解" section |
| Sub-Domain Split | List each focus area with description and task ID range |
| Task Overview | Tasks grouped by focus area with complexity and dependencies |
| Conflict Report | Summary of detected conflicts or "无冲突" |
| Execution | Command to execute the plan |
Required Function (semantic description):
- generateHumanReadablePlan: Extract sections from plan-note.md and format as readable plan.md with session info, requirements, tasks, and conflicts
Configuration
| Flag | Default | Description |
|---|---|---|
--max-agents |
5 | Maximum sub-agents to spawn |
-y, --yes |
false | Auto-confirm all decisions |
Error Handling
| Error | Resolution |
|---|---|
| Understanding agent fails | Retry once, provide more context |
| Planning agent fails | Skip failed agent, continue with others |
| Section not found in plan-note | Agent creates section (defensive) |
| Conflict detection fails | Continue with empty conflicts |
Best Practices
- Clear Requirements: Detailed requirements → better sub-domain splitting
- Review Plan Note: Check plan-note.md before execution
- Resolve Conflicts: Address high/critical conflicts before execution
- Inspect Details: Use agents/{focus-area}/plan.json for deep dive
Now execute collaborative-plan-with-file for: $ARGUMENTS