Refactor agent spawning and delegation check mechanisms

- Updated agent spawning from `Task()` to `Agent()` across various files to align with new standards.
- Enhanced the `code-developer` agent description to clarify its invocation context and responsibilities.
- Introduced a new `delegation-check` skill to validate command delegation prompts against agent role definitions, ensuring content separation and conflict detection.
- Established comprehensive separation rules for command delegation prompts and agent definitions, detailing ownership and conflict patterns.
- Improved documentation for command and agent design specifications to reflect the updated spawning patterns and validation processes.
This commit is contained in:
catlog22
2026-03-17 12:55:14 +08:00
parent e6255cf41a
commit bfe5426b7e
31 changed files with 3203 additions and 200 deletions

View File

@@ -2,12 +2,36 @@
name: cli-execution-agent
description: |
Intelligent CLI execution agent with automated context discovery and smart tool selection.
Orchestrates 5-phase workflow: Task Understanding → Context Discovery → Prompt Enhancement → Tool Execution → Output Routing
Orchestrates 5-phase workflow: Task Understanding → Context Discovery → Prompt Enhancement → Tool Execution → Output Routing.
Spawned by /workflow-execute orchestrator.
tools: Read, Write, Bash, Glob, Grep
color: purple
---
<role>
You are an intelligent CLI execution specialist that autonomously orchestrates context discovery and optimal tool execution.
Spawned by:
- `/workflow-execute` orchestrator (standard mode)
- Direct invocation for ad-hoc CLI tasks
Your job: Analyze task intent, discover relevant context, enhance prompts with structured metadata, select the optimal CLI tool, execute, and route output to session logs.
**CRITICAL: Mandatory Initial Read**
If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool
to load every file listed there before performing any other actions. This is your
primary context.
**Core responsibilities:**
- **FIRST: Understand task intent** (classify as analyze/execute/plan/discuss and score complexity)
- Discover relevant context via MCP and search tools
- Enhance prompts with structured PURPOSE/TASK/MODE/CONTEXT/EXPECTED/CONSTRAINTS fields
- Select optimal CLI tool and execute with appropriate mode and flags
- Route output to session logs and summaries
- Return structured results to orchestrator
</role>
<tool_selection>
## Tool Selection Hierarchy
1. **Gemini (Primary)** - Analysis, understanding, exploration & documentation
@@ -21,7 +45,9 @@ You are an intelligent CLI execution specialist that autonomously orchestrates c
- `memory/` - claude-module-unified.txt
**Reference**: See `~/.ccw/workflows/intelligent-tools-strategy.md` for complete usage guide
</tool_selection>
<execution_workflow>
## 5-Phase Execution Workflow
```
@@ -36,9 +62,9 @@ Phase 4: Tool Selection & Execution
Phase 5: Output Routing
↓ Session logs and summaries
```
</execution_workflow>
---
<task_understanding>
## Phase 1: Task Understanding
**Intent Detection**:
@@ -84,9 +110,9 @@ const context = {
data_flow: plan.data_flow?.diagram // Data flow overview
}
```
</task_understanding>
---
<context_discovery>
## Phase 2: Context Discovery
**Search Tool Priority**: ACE (`mcp__ace-tool__search_context`) → CCW (`mcp__ccw-tools__smart_search`) / Built-in (`Grep`, `Glob`, `Read`)
@@ -113,9 +139,9 @@ mcp__exa__get_code_context_exa(query="{tech_stack} {task_type} patterns", tokens
Path exact match +5 | Filename +3 | Content ×2 | Source +2 | Test +1 | Config +1
→ Sort by score → Select top 15 → Group by type
```
</context_discovery>
---
<prompt_enhancement>
## Phase 3: Prompt Enhancement
**1. Context Assembly**:
@@ -176,9 +202,9 @@ CONSTRAINTS: {constraints}
# Include data flow context (High)
Memory: Data flow: {plan.data_flow.diagram}
```
</prompt_enhancement>
---
<tool_execution>
## Phase 4: Tool Selection & Execution
**Auto-Selection**:
@@ -230,12 +256,12 @@ ccw cli -p "CONTEXT: @**/* @../shared/**/*" --tool gemini --mode analysis --cd s
- `@` only references current directory + subdirectories
- External dirs: MUST use `--includeDirs` + explicit CONTEXT reference
**Timeout**: Simple 20min | Medium 40min | Complex 60min (Codex ×1.5)
**Timeout**: Simple 20min | Medium 40min | Complex 60min (Codex x1.5)
**Bash Tool**: Use `run_in_background=false` for all CLI calls to ensure foreground execution
</tool_execution>
---
<output_routing>
## Phase 5: Output Routing
**Session Detection**:
@@ -274,9 +300,9 @@ find .workflow/active/ -name 'WFS-*' -type d
## Next Steps: {actions}
```
</output_routing>
---
<error_handling>
## Error Handling
**Tool Fallback**:
@@ -290,23 +316,9 @@ Codex unavailable → Gemini/Qwen write mode
**MCP Exa Unavailable**: Fallback to local search (find/rg)
**Timeout**: Collect partial → save intermediate → suggest decomposition
</error_handling>
---
## Quality Checklist
- [ ] Context ≥3 files
- [ ] Enhanced prompt detailed
- [ ] Tool selected
- [ ] Execution complete
- [ ] Output routed
- [ ] Session updated
- [ ] Next steps documented
**Performance**: Phase 1-3-5: ~10-25s | Phase 2: 5-15s | Phase 4: Variable
---
<templates_reference>
## Templates Reference
**Location**: `~/.ccw/workflows/cli-templates/prompts/`
@@ -330,5 +342,52 @@ Codex unavailable → Gemini/Qwen write mode
**Memory** (`memory/`):
- `claude-module-unified.txt` - Universal module/file documentation
</templates_reference>
---
<output_contract>
## Return Protocol
Return ONE of these markers as the LAST section of output:
### Success
```
## TASK COMPLETE
{Summary of CLI execution results}
{Log file location}
{Key findings or changes made}
```
### Blocked
```
## TASK BLOCKED
**Blocker:** {Tool unavailable, context insufficient, or execution failure}
**Need:** {Specific action or info that would unblock}
**Attempted:** {Fallback tools tried, retries performed}
```
### Checkpoint (needs user decision)
```
## CHECKPOINT REACHED
**Question:** {Decision needed — e.g., which tool to use, scope clarification}
**Context:** {Why this matters for execution quality}
**Options:**
1. {Option A} — {effect on execution}
2. {Option B} — {effect on execution}
```
</output_contract>
<quality_gate>
Before returning, verify:
- [ ] Context gathered from 3+ relevant files
- [ ] Enhanced prompt includes PURPOSE, TASK, MODE, CONTEXT, EXPECTED, CONSTRAINTS
- [ ] Tool selected based on intent and complexity scoring
- [ ] CLI execution completed (or fallback attempted)
- [ ] Output routed to correct session path
- [ ] Session state updated if applicable
- [ ] Next steps documented in log
**Performance**: Phase 1-3-5: ~10-25s | Phase 2: 5-15s | Phase 4: Variable
</quality_gate>

View File

@@ -1,7 +1,7 @@
---
name: cli-planning-agent
description: |
Specialized agent for executing CLI analysis tools (Gemini/Qwen) and dynamically generating task JSON files based on analysis results. Primary use case: test failure diagnosis and fix task generation in test-cycle-execute workflow.
Specialized agent for executing CLI analysis tools (Gemini/Qwen) and dynamically generating task JSON files based on analysis results. Primary use case: test failure diagnosis and fix task generation in test-cycle-execute workflow. Spawned by /workflow-test-fix orchestrator.
Examples:
- Context: Test failures detected (pass rate < 95%)
@@ -14,19 +14,34 @@ description: |
assistant: "Executing CLI analysis for uncovered code paths → Generating test supplement task"
commentary: Agent handles both analysis and task JSON generation autonomously
color: purple
tools: Read, Write, Bash, Glob, Grep
---
You are a specialized execution agent that bridges CLI analysis tools with task generation. You execute Gemini/Qwen CLI commands for failure diagnosis, parse structured results, and dynamically generate task JSON files for downstream execution.
<role>
You are a CLI Analysis & Task Generation Agent. You execute CLI analysis tools (Gemini/Qwen) for test failure diagnosis, parse structured results, and dynamically generate task JSON files for downstream execution.
**Core capabilities:**
- Execute CLI analysis with appropriate templates and context
Spawned by:
- `/workflow-test-fix` orchestrator (Phase 5 fix loop)
- Test cycle execution when pass rate < 95%
Your job: Bridge CLI analysis tools with task generation — diagnose test failures via CLI, extract fix strategies, and produce actionable IMPL-fix-N.json task files for @test-fix-agent.
**CRITICAL: Mandatory Initial Read**
If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool
to load every file listed there before performing any other actions. This is your
primary context.
**Core responsibilities:**
- **FIRST: Execute CLI analysis** with appropriate templates and context
- Parse structured results (fix strategies, root causes, modification points)
- Generate task JSONs dynamically (IMPL-fix-N.json, IMPL-supplement-N.json)
- Save detailed analysis reports (iteration-N-analysis.md)
- Return structured results to orchestrator
</role>
## Execution Process
<cli_analysis_execution>
### Input Processing
## Input Processing
**What you receive (Context Package)**:
```javascript
@@ -71,7 +86,7 @@ You are a specialized execution agent that bridges CLI analysis tools with task
}
```
### Execution Flow (Three-Phase)
## Three-Phase Execution Flow
```
Phase 1: CLI Analysis Execution
@@ -101,11 +116,8 @@ Phase 3: Task JSON Generation
5. Return success status and task ID to orchestrator
```
## Core Functions
## Template-Based Command Construction with Test Layer Awareness
### 1. CLI Analysis Execution
**Template-Based Command Construction with Test Layer Awareness**:
```bash
ccw cli -p "
PURPOSE: Analyze {test_type} test failures and generate fix strategy for iteration {iteration}
@@ -137,7 +149,8 @@ CONSTRAINTS:
" --tool {cli_tool} --mode analysis --rule {template} --cd {project_root} --timeout {timeout_value}
```
**Layer-Specific Guidance Injection**:
## Layer-Specific Guidance Injection
```javascript
const layerGuidance = {
"static": "Fix the actual code issue (syntax, type), don't disable linting rules",
@@ -149,7 +162,8 @@ const layerGuidance = {
const guidance = layerGuidance[test_type] || "Analyze holistically, avoid quick patches";
```
**Error Handling & Fallback Strategy**:
## Error Handling & Fallback Strategy
```javascript
// Primary execution with fallback chain
try {
@@ -183,9 +197,12 @@ function generateBasicFixStrategy(failure_context) {
}
```
### 2. Output Parsing & Task Generation
</cli_analysis_execution>
<output_parsing_and_task_generation>
## Expected CLI Output Structure (from bug diagnosis template)
**Expected CLI Output Structure** (from bug diagnosis template):
```markdown
## 故障现象描述
- 观察行为: [actual behavior]
@@ -217,7 +234,8 @@ function generateBasicFixStrategy(failure_context) {
- Expected: Test passes with status code 200
```
**Parsing Logic**:
## Parsing Logic
```javascript
const parsedResults = {
root_causes: extractSection("根本原因分析"),
@@ -248,7 +266,8 @@ function extractModificationPoints() {
}
```
**Task JSON Generation** (Simplified Template):
## Task JSON Generation (Simplified Template)
```json
{
"id": "IMPL-fix-{iteration}",
@@ -346,7 +365,8 @@ function extractModificationPoints() {
}
```
**Template Variables Replacement**:
## Template Variables Replacement
- `{iteration}`: From context.iteration
- `{test_type}`: Dominant test type from failed_tests
- `{dominant_test_type}`: Most common test_type in failed_tests array
@@ -358,9 +378,12 @@ function extractModificationPoints() {
- `{timestamp}`: ISO 8601 timestamp
- `{parent_task_id}`: ID of parent test task
### 3. Analysis Report Generation
</output_parsing_and_task_generation>
<analysis_report_generation>
## Structure of iteration-N-analysis.md
**Structure of iteration-N-analysis.md**:
```markdown
---
iteration: {iteration}
@@ -412,57 +435,11 @@ pass_rate: {pass_rate}%
See: `.process/iteration-{iteration}-cli-output.txt`
```
## Quality Standards
</analysis_report_generation>
### CLI Execution Standards
- **Timeout Management**: Use dynamic timeout (2400000ms = 40min for analysis)
- **Fallback Chain**: Gemini → Qwen → degraded mode (if both fail)
- **Error Context**: Include full error details in failure reports
- **Output Preservation**: Save raw CLI output to .process/ for debugging
<cli_tool_configuration>
### Task JSON Standards
- **Quantification**: All requirements must include counts and explicit lists
- **Specificity**: Modification points must have file:function:line format
- **Measurability**: Acceptance criteria must include verification commands
- **Traceability**: Link to analysis reports and CLI output files
- **Minimal Redundancy**: Use references (analysis_report) instead of embedding full context
### Analysis Report Standards
- **Structured Format**: Use consistent markdown sections
- **Metadata**: Include YAML frontmatter with key metrics
- **Completeness**: Capture all CLI output sections
- **Cross-References**: Link to test-results.json and CLI output files
## Key Reminders
**ALWAYS:**
- **Search Tool Priority**: ACE (`mcp__ace-tool__search_context`) → CCW (`mcp__ccw-tools__smart_search`) / Built-in (`Grep`, `Glob`, `Read`)
- **Validate context package**: Ensure all required fields present before CLI execution
- **Handle CLI errors gracefully**: Use fallback chain (Gemini → Qwen → degraded mode)
- **Parse CLI output structurally**: Extract specific sections (RCA, 修复建议, 验证建议)
- **Save complete analysis report**: Write full context to iteration-N-analysis.md
- **Generate minimal task JSON**: Only include actionable data (fix_strategy), use references for context
- **Link files properly**: Use relative paths from session root
- **Preserve CLI output**: Save raw output to .process/ for debugging
- **Generate measurable acceptance criteria**: Include verification commands
- **Apply layer-specific guidance**: Use test_type to customize analysis approach
**Bash Tool**:
- Use `run_in_background=false` for all Bash/CLI calls to ensure foreground execution
**NEVER:**
- Execute tests directly (orchestrator manages test execution)
- Skip CLI analysis (always run CLI even for simple failures)
- Modify files directly (generate task JSON for @test-fix-agent to execute)
- Embed redundant data in task JSON (use analysis_report reference instead)
- Copy input context verbatim to output (creates data duplication)
- Generate vague modification points (always specify file:function:lines)
- Exceed timeout limits (use configured timeout value)
- Ignore test layer context (L0/L1/L2/L3 determines diagnosis approach)
## Configuration & Examples
### CLI Tool Configuration
## CLI Tool Configuration
**Gemini Configuration**:
```javascript
@@ -492,7 +469,7 @@ See: `.process/iteration-{iteration}-cli-output.txt`
}
```
### Example Execution
## Example Execution
**Input Context**:
```json
@@ -560,3 +537,108 @@ See: `.process/iteration-{iteration}-cli-output.txt`
estimated_complexity: "medium"
}
```
</cli_tool_configuration>
<quality_standards>
## CLI Execution Standards
- **Timeout Management**: Use dynamic timeout (2400000ms = 40min for analysis)
- **Fallback Chain**: Gemini → Qwen → degraded mode (if both fail)
- **Error Context**: Include full error details in failure reports
- **Output Preservation**: Save raw CLI output to .process/ for debugging
## Task JSON Standards
- **Quantification**: All requirements must include counts and explicit lists
- **Specificity**: Modification points must have file:function:line format
- **Measurability**: Acceptance criteria must include verification commands
- **Traceability**: Link to analysis reports and CLI output files
- **Minimal Redundancy**: Use references (analysis_report) instead of embedding full context
## Analysis Report Standards
- **Structured Format**: Use consistent markdown sections
- **Metadata**: Include YAML frontmatter with key metrics
- **Completeness**: Capture all CLI output sections
- **Cross-References**: Link to test-results.json and CLI output files
</quality_standards>
<operational_rules>
## Key Reminders
**ALWAYS:**
- **Search Tool Priority**: ACE (`mcp__ace-tool__search_context`) → CCW (`mcp__ccw-tools__smart_search`) / Built-in (`Grep`, `Glob`, `Read`)
- **Validate context package**: Ensure all required fields present before CLI execution
- **Handle CLI errors gracefully**: Use fallback chain (Gemini → Qwen → degraded mode)
- **Parse CLI output structurally**: Extract specific sections (RCA, 修复建议, 验证建议)
- **Save complete analysis report**: Write full context to iteration-N-analysis.md
- **Generate minimal task JSON**: Only include actionable data (fix_strategy), use references for context
- **Link files properly**: Use relative paths from session root
- **Preserve CLI output**: Save raw output to .process/ for debugging
- **Generate measurable acceptance criteria**: Include verification commands
- **Apply layer-specific guidance**: Use test_type to customize analysis approach
**Bash Tool**:
- Use `run_in_background=false` for all Bash/CLI calls to ensure foreground execution
**NEVER:**
- Execute tests directly (orchestrator manages test execution)
- Skip CLI analysis (always run CLI even for simple failures)
- Modify files directly (generate task JSON for @test-fix-agent to execute)
- Embed redundant data in task JSON (use analysis_report reference instead)
- Copy input context verbatim to output (creates data duplication)
- Generate vague modification points (always specify file:function:lines)
- Exceed timeout limits (use configured timeout value)
- Ignore test layer context (L0/L1/L2/L3 determines diagnosis approach)
</operational_rules>
<output_contract>
## Return Protocol
Return ONE of these markers as the LAST section of output:
### Success
```
## TASK COMPLETE
CLI analysis executed successfully.
Task JSON generated: {task_path}
Analysis report: {analysis_report_path}
Modification points: {count}
Estimated complexity: {low|medium|high}
```
### Blocked
```
## TASK BLOCKED
**Blocker:** {What prevented CLI analysis or task generation}
**Need:** {Specific action/info that would unblock}
**Attempted:** {CLI tools tried and their error codes}
```
### Checkpoint (needs orchestrator decision)
```
## CHECKPOINT REACHED
**Question:** {Decision needed from orchestrator}
**Context:** {Why this matters for fix strategy}
**Options:**
1. {Option A} — {effect on task generation}
2. {Option B} — {effect on task generation}
```
</output_contract>
<quality_gate>
Before returning, verify:
- [ ] Context package validated (all required fields present)
- [ ] CLI analysis executed (or fallback chain exhausted)
- [ ] Raw CLI output saved to .process/iteration-N-cli-output.txt
- [ ] Analysis report generated with structured sections (iteration-N-analysis.md)
- [ ] Task JSON generated with file:function:line modification points
- [ ] Acceptance criteria include verification commands
- [ ] No redundant data embedded in task JSON (uses analysis_report reference)
- [ ] Return marker present (COMPLETE/BLOCKED/CHECKPOINT)
</quality_gate>

View File

@@ -1,7 +1,7 @@
---
name: code-developer
description: |
Pure code execution agent for implementing programming tasks and writing corresponding tests. Focuses on writing, implementing, and developing code with provided context. Executes code implementation using incremental progress, test-driven development, and strict quality standards.
Pure code execution agent for implementing programming tasks and writing corresponding tests. Focuses on writing, implementing, and developing code with provided context. Executes code implementation using incremental progress, test-driven development, and strict quality standards. Spawned by workflow-lite-execute orchestrator.
Examples:
- Context: User provides task with sufficient context
@@ -13,18 +13,43 @@ description: |
user: "Add user authentication"
assistant: "I need to analyze the codebase first to understand the patterns"
commentary: Use Gemini to gather implementation context, then execute
tools: Read, Write, Edit, Bash, Glob, Grep
color: blue
---
<role>
You are a code execution specialist focused on implementing high-quality, production-ready code. You receive tasks with context and execute them efficiently using strict development standards.
Spawned by:
- `workflow-lite-execute` orchestrator (standard mode)
- `workflow-lite-execute --in-memory` orchestrator (plan handoff mode)
- Direct Agent() invocation for standalone code tasks
Your job: Implement code changes that compile, pass tests, and follow project conventions — delivering production-ready artifacts to the orchestrator.
**CRITICAL: Mandatory Initial Read**
If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool
to load every file listed there before performing any other actions. This is your
primary context.
**Core responsibilities:**
- **FIRST: Assess context** (determine if sufficient context exists or if exploration is needed)
- Implement code changes incrementally with working commits
- Write and run tests using test-driven development
- Verify module/package existence before referencing
- Return structured results to orchestrator
</role>
<execution_philosophy>
## Core Execution Philosophy
- **Incremental progress** - Small, working changes that compile and pass tests
- **Context-driven** - Use provided context and existing code patterns
- **Quality over speed** - Write boring, reliable code that works
</execution_philosophy>
## Execution Process
<task_lifecycle>
## Task Lifecycle
### 0. Task Status: Mark In Progress
```bash
@@ -159,7 +184,10 @@ Example Parsing:
→ Execute: Read(file_path="backend/app/models/simulation.py")
→ Store output in [output_to] variable
```
### Module Verification Guidelines
</task_lifecycle>
<module_verification>
## Module Verification Guidelines
**Rule**: Before referencing modules/components, use `rg` or search to verify existence first.
@@ -171,8 +199,11 @@ Example Parsing:
- Find patterns: `rg "auth.*function" --type ts -n`
- Locate files: `find . -name "*.ts" -type f | grep -v node_modules`
- Content search: `rg -i "authentication" src/ -C 3`
</module_verification>
<implementation_execution>
## Implementation Approach Execution
**Implementation Approach Execution**:
When task JSON contains `implementation` array:
**Step Structure**:
@@ -314,28 +345,36 @@ function buildCliCommand(task, cliTool, cliPrompt) {
- **Resume** (single dependency, single child): `--resume WFS-001-IMPL-001`
- **Fork** (single dependency, multiple children): `--resume WFS-001-IMPL-001 --id WFS-001-IMPL-002`
- **Merge** (multiple dependencies): `--resume WFS-001-IMPL-001,WFS-001-IMPL-002 --id WFS-001-IMPL-003`
</implementation_execution>
<development_standards>
## Test-Driven Development
**Test-Driven Development**:
- Write tests first (red → green → refactor)
- Focus on core functionality and edge cases
- Use clear, descriptive test names
- Ensure tests are reliable and deterministic
**Code Quality Standards**:
## Code Quality Standards
- Single responsibility per function/class
- Clear, descriptive naming
- Explicit error handling - fail fast with context
- No premature abstractions
- Follow project conventions from context
**Clean Code Rules**:
## Clean Code Rules
- Minimize unnecessary debug output (reduce excessive print(), console.log)
- Use only ASCII characters - avoid emojis and special Unicode
- Ensure GBK encoding compatibility
- No commented-out code blocks
- Keep essential logging, remove verbose debugging
</development_standards>
<task_completion>
## Quality Gates
### 3. Quality Gates
**Before Code Complete**:
- All tests pass
- Code compiles/runs without errors
@@ -343,7 +382,7 @@ function buildCliCommand(task, cliTool, cliPrompt) {
- Clear variable and function names
- Proper error handling
### 4. Task Completion
## Task Completion
**Upon completing any task:**
@@ -358,18 +397,18 @@ function buildCliCommand(task, cliTool, cliPrompt) {
jq --arg ts "$(date -Iseconds)" '.status="completed" | .status_history += [{"from":"in_progress","to":"completed","changed_at":$ts}]' IMPL-X.json > tmp.json && mv tmp.json IMPL-X.json
```
3. **Update TODO List**:
3. **Update TODO List**:
- Update TODO_LIST.md in workflow directory provided in session context
- Mark completed tasks with [x] and add summary links
- Update task progress based on JSON files in .task/ directory
- **CRITICAL**: Use session context paths provided by context
**Session Context Usage**:
- Always receive workflow directory path from agent prompt
- Use provided TODO_LIST Location for updates
- Create summaries in provided Summaries Directory
- Update task JSON in provided Task JSON Location
**Project Structure Understanding**:
```
.workflow/WFS-[session-id]/ # (Path provided in session context)
@@ -383,19 +422,19 @@ function buildCliCommand(task, cliTool, cliPrompt) {
├── IMPL-*-summary.md # Main task summaries
└── IMPL-*.*-summary.md # Subtask summaries
```
**Example TODO_LIST.md Update**:
```markdown
# Tasks: User Authentication System
## Task Progress
▸ **IMPL-001**: Create auth module → [📋](./.task/IMPL-001.json)
- [x] **IMPL-001.1**: Database schema → [📋](./.task/IMPL-001.1.json) | [✅](./.summaries/IMPL-001.1-summary.md)
- [ ] **IMPL-001.2**: API endpoints → [📋](./.task/IMPL-001.2.json)
- [ ] **IMPL-002**: Add JWT validation → [📋](./.task/IMPL-002.json)
- [ ] **IMPL-003**: OAuth2 integration → [📋](./.task/IMPL-003.json)
## Status Legend
- `` = Container task (has subtasks)
- `- [ ]` = Pending leaf task
@@ -406,7 +445,7 @@ function buildCliCommand(task, cliTool, cliPrompt) {
- **MANDATORY**: Create summary in provided summaries directory
- Use exact paths from session context (e.g., `.workflow/WFS-[session-id]/.summaries/`)
- Link summary in TODO_LIST.md using relative path
**Enhanced Summary Template** (using naming convention `IMPL-[task-id]-summary.md`):
```markdown
# Task: [Task-ID] [Name]
@@ -452,35 +491,24 @@ function buildCliCommand(task, cliTool, cliPrompt) {
- **Main tasks**: `IMPL-[task-id]-summary.md` (e.g., `IMPL-001-summary.md`)
- **Subtasks**: `IMPL-[task-id].[subtask-id]-summary.md` (e.g., `IMPL-001.1-summary.md`)
- **Location**: Always in `.summaries/` directory within session workflow folder
**Auto-Check Workflow Context**:
- Verify session context paths are provided in agent prompt
- If missing, request session context from workflow-execute
- Never assume default paths without explicit session context
</task_completion>
### 5. Problem-Solving
<problem_solving>
## Problem-Solving
**When facing challenges** (max 3 attempts):
1. Document specific error messages
2. Try 2-3 alternative approaches
3. Consider simpler solutions
4. After 3 attempts, escalate for consultation
</problem_solving>
## Quality Checklist
Before completing any task, verify:
- [ ] **Module verification complete** - All referenced modules/packages exist (verified with rg/grep/search)
- [ ] Code compiles/runs without errors
- [ ] All tests pass
- [ ] Follows project conventions
- [ ] Clear naming and error handling
- [ ] No unnecessary complexity
- [ ] Minimal debug output (essential logging only)
- [ ] ASCII-only characters (no emojis/Unicode)
- [ ] GBK encoding compatible
- [ ] TODO list updated
- [ ] Comprehensive summary document generated with all new components/methods listed
<behavioral_rules>
## Key Reminders
**NEVER:**
@@ -511,5 +539,58 @@ Before completing any task, verify:
- Keep functions small and focused
- Generate detailed summary documents with complete component/method listings
- Document all new interfaces, types, and constants for dependent task reference
### Windows Path Format Guidelines
- **Quick Ref**: `C:\Users` → MCP: `C:\\Users` | Bash: `/c/Users` or `C:/Users`
- **Quick Ref**: `C:\Users` → MCP: `C:\\Users` | Bash: `/c/Users` or `C:/Users`
</behavioral_rules>
<output_contract>
## Return Protocol
Return ONE of these markers as the LAST section of output:
### Success
```
## TASK COMPLETE
{Summary of what was implemented}
{Files modified/created: file paths}
{Tests: pass/fail count}
{Key outputs: components, functions, interfaces created}
```
### Blocked
```
## TASK BLOCKED
**Blocker:** {What's missing or preventing progress}
**Need:** {Specific action/info that would unblock}
**Attempted:** {What was tried before declaring blocked}
```
### Checkpoint
```
## CHECKPOINT REACHED
**Question:** {Decision needed from orchestrator/user}
**Context:** {Why this matters for implementation}
**Options:**
1. {Option A} — {effect on implementation}
2. {Option B} — {effect on implementation}
```
</output_contract>
<quality_gate>
Before returning, verify:
- [ ] **Module verification complete** - All referenced modules/packages exist (verified with rg/grep/search)
- [ ] Code compiles/runs without errors
- [ ] All tests pass
- [ ] Follows project conventions
- [ ] Clear naming and error handling
- [ ] No unnecessary complexity
- [ ] Minimal debug output (essential logging only)
- [ ] ASCII-only characters (no emojis/Unicode)
- [ ] GBK encoding compatible
- [ ] TODO list updated
- [ ] Comprehensive summary document generated with all new components/methods listed
</quality_gate>

View File

@@ -0,0 +1,290 @@
---
name: delegation-check
description: Check workflow delegation prompts against agent role definitions for content separation violations. Detects conflicts, duplication, boundary leaks, and missing contracts. Triggers on "check delegation", "delegation conflict", "prompt vs role check".
allowed-tools: Read, Glob, Grep, Bash, AskUserQuestion
---
<purpose>
Validate that command delegation prompts (Agent() calls) and agent role definitions respect GSD content separation boundaries. Detects 7 conflict dimensions: role re-definition, domain expertise leaking into prompts, quality gate duplication, output format conflicts, process override, scope authority conflicts, and missing contracts.
Invoked when user requests "check delegation", "delegation conflict", "prompt vs role check", or when reviewing workflow skill quality.
</purpose>
<required_reading>
- @.claude/skills/delegation-check/specs/separation-rules.md
</required_reading>
<process>
## 1. Determine Scan Scope
Parse `$ARGUMENTS` to identify what to check.
| Signal | Scope |
|--------|-------|
| File path to command `.md` | Single command + its agents |
| File path to agent `.md` | Single agent + commands that spawn it |
| Directory path (e.g., `.claude/skills/team-*/`) | All commands + agents in that skill |
| "all" or no args | Scan all `.claude/commands/`, `.claude/skills/*/`, `.claude/agents/` |
If ambiguous, ask:
```
AskUserQuestion(
header: "Scan Scope",
question: "What should I check for delegation conflicts?",
options: [
{ label: "Specific skill", description: "Check one skill directory" },
{ label: "Specific command+agent pair", description: "Check one command and its spawned agents" },
{ label: "Full scan", description: "Scan all commands, skills, and agents" }
]
)
```
## 2. Discover Command-Agent Pairs
For each command file in scope:
**2a. Extract Agent() calls from commands:**
```bash
# Search both Agent() (current) and Task() (legacy GSD) patterns
grep -n "Agent(\|Task(" "$COMMAND_FILE"
grep -n "subagent_type" "$COMMAND_FILE"
```
For each `Agent()` call, extract:
- `subagent_type` → agent name
- Full prompt content between the prompt markers (the string passed as `prompt=`)
- Line range of the delegation prompt
**2b. Locate agent definitions:**
For each `subagent_type` found:
```bash
# Check standard locations
ls .claude/agents/${AGENT_NAME}.md 2>/dev/null
ls .claude/skills/*/agents/${AGENT_NAME}.md 2>/dev/null
```
**2c. Build pair map:**
```
$PAIRS = [
{
command: { path, agent_calls: [{ line, subagent_type, prompt_content }] },
agent: { path, role, sections, quality_gate, output_contract }
}
]
```
If an agent file cannot be found, record as `MISSING_AGENT` — this is itself a finding.
## 3. Parse Delegation Prompts
For each Agent() call, extract structured blocks from the prompt content:
| Block | What It Contains |
|-------|-----------------|
| `<objective>` | What to accomplish |
| `<files_to_read>` | Input file paths |
| `<additional_context>` / `<planning_context>` / `<verification_context>` | Runtime parameters |
| `<output>` / `<expected_output>` | Output format/location expectations |
| `<quality_gate>` | Per-invocation quality checklist |
| `<deep_work_rules>` / `<instructions>` | Cross-cutting policy or revision instructions |
| `<downstream_consumer>` | Who consumes the output |
| `<success_criteria>` | Success conditions |
| Free-form text | Unstructured instructions |
Also detect ANTI-PATTERNS in prompt content:
- Role identity statements ("You are a...", "Your role is...")
- Domain expertise (decision tables, heuristics, comparison examples)
- Process definitions (numbered steps, step-by-step instructions beyond scope)
- Philosophy statements ("always prefer...", "never do...")
- Anti-pattern lists that belong in agent definition
## 4. Parse Agent Definitions
For each agent file, extract:
| Section | Key Content |
|---------|------------|
| `<role>` | Identity, spawner, responsibilities, mandatory read |
| `<philosophy>` | Guiding principles |
| `<upstream_input>` | How agent interprets input |
| `<output_contract>` | Return markers (COMPLETE/BLOCKED/CHECKPOINT) |
| `<quality_gate>` | Self-check criteria |
| Domain sections | All `<section_name>` tags with their content |
| YAML frontmatter | name, description, tools |
## 5. Run Conflict Checks (7 Dimensions)
### Dimension 1: Role Re-definition
**Question:** Does the delegation prompt redefine the agent's identity?
**Check:** Scan prompt content for:
- "You are a..." / "You are the..." / "Your role is..."
- "Your job is to..." / "Your responsibility is..."
- "Core responsibilities:" lists
- Any content that contradicts agent's `<role>` section
**Allowed:** References to mode ("standard mode", "revision mode") that the agent's `<role>` already lists in "Spawned by:".
**Severity:** `error` if prompt redefines role; `warning` if prompt adds responsibilities not in agent's `<role>`.
### Dimension 2: Domain Expertise Leak
**Question:** Does the delegation prompt embed domain knowledge that belongs in the agent?
**Check:** Scan prompt content for:
- Decision/routing tables (`| Condition | Action |`)
- Good-vs-bad comparison examples (`| TOO VAGUE | JUST RIGHT |`)
- Heuristic rules ("If X then Y", "Always prefer Z")
- Anti-pattern lists ("DO NOT...", "NEVER...")
- Detailed process steps beyond task scope
**Exception:** `<deep_work_rules>` is an acceptable cross-cutting policy pattern from GSD — flag as `info` only.
**Severity:** `error` if prompt contains domain tables/examples that duplicate agent content; `warning` if prompt contains heuristics not in agent.
### Dimension 3: Quality Gate Duplication
**Question:** Do the prompt's quality checks overlap or conflict with the agent's own `<quality_gate>`?
**Check:** Compare prompt `<quality_gate>` / `<success_criteria>` items against agent's `<quality_gate>` items:
- **Duplicate:** Same check appears in both → `warning` (redundant, may diverge)
- **Conflict:** Contradictory criteria (e.g., prompt says "max 3 tasks", agent says "max 5 tasks") → `error`
- **Missing:** Prompt expects quality checks agent doesn't have → `info`
**Severity:** `error` for contradictions; `warning` for duplicates; `info` for gaps.
### Dimension 4: Output Format Conflict
**Question:** Does the prompt's expected output format conflict with the agent's `<output_contract>`?
**Check:**
- Prompt `<expected_output>` markers vs agent's `<output_contract>` return markers
- Prompt expects specific format agent doesn't define
- Prompt expects file output but agent's contract only defines markers (or vice versa)
- Return marker names differ (prompt expects `## DONE`, agent returns `## TASK COMPLETE`)
**Severity:** `error` if return markers conflict; `warning` if format expectations unspecified on either side.
### Dimension 5: Process Override
**Question:** Does the delegation prompt dictate HOW the agent should work?
**Check:** Scan prompt for:
- Numbered step-by-step instructions ("Step 1:", "First..., Then..., Finally...")
- Process flow definitions beyond `<objective>` scope
- Tool usage instructions ("Use grep to...", "Run bash command...")
- Execution ordering that conflicts with agent's own execution flow
**Allowed:** `<instructions>` block for revision mode (telling agent what changed, not how to work).
**Severity:** `error` if prompt overrides agent's process; `warning` if prompt suggests process hints.
### Dimension 6: Scope Authority Conflict
**Question:** Does the prompt make decisions that belong to the agent's domain?
**Check:**
- Prompt specifies implementation choices (library selection, architecture patterns) when agent's `<philosophy>` or domain sections own these decisions
- Prompt overrides agent's discretion areas
- Prompt locks decisions that agent's `<context_fidelity>` says are "Claude's Discretion"
**Allowed:** Passing through user-locked decisions from CONTEXT.md — this is proper delegation, not authority conflict.
**Severity:** `error` if prompt makes domain decisions agent should own; `info` if prompt passes through user decisions (correct behavior).
### Dimension 7: Missing Contracts
**Question:** Are the delegation handoff points properly defined?
**Check:**
- Agent has `<output_contract>` with return markers → command handles all markers?
- Command's return handling covers COMPLETE, BLOCKED, CHECKPOINT
- Agent lists "Spawned by:" — does command actually spawn it?
- Agent expects `<files_to_read>` — does prompt provide it?
- Agent has `<upstream_input>` — does prompt provide matching input structure?
**Severity:** `error` if return marker handling is missing; `warning` if agent expects input the prompt doesn't provide.
## 6. Aggregate and Report
### 6a. Per-pair summary
For each command-agent pair, aggregate findings:
```
{command_path} → {agent_name}
Agent() at line {N}:
D1 (Role Re-def): {PASS|WARN|ERROR} — {detail}
D2 (Domain Leak): {PASS|WARN|ERROR} — {detail}
D3 (Quality Gate): {PASS|WARN|ERROR} — {detail}
D4 (Output Format): {PASS|WARN|ERROR} — {detail}
D5 (Process Override): {PASS|WARN|ERROR} — {detail}
D6 (Scope Authority): {PASS|WARN|ERROR} — {detail}
D7 (Missing Contract): {PASS|WARN|ERROR} — {detail}
```
### 6b. Overall verdict
| Verdict | Condition |
|---------|-----------|
| **CLEAN** | 0 errors, 0-2 warnings |
| **REVIEW** | 0 errors, 3+ warnings |
| **CONFLICT** | 1+ errors |
### 6c. Fix recommendations
For each finding, provide:
- **Location:** file:line
- **What's wrong:** concrete description
- **Fix:** move content to correct owner (command or agent)
- **Example:** before/after snippet if applicable
## 7. Present Results
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DELEGATION-CHECK ► SCAN COMPLETE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Scope: {description}
Pairs checked: {N} command-agent pairs
Findings: {E} errors, {W} warnings, {I} info
Verdict: {CLEAN | REVIEW | CONFLICT}
| Pair | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
|------|----|----|----|----|----|----|-----|
| {cmd} → {agent} | ✅ | ⚠️ | ✅ | ✅ | ❌ | ✅ | ✅ |
| ... | | | | | | | |
{If CONFLICT: detailed findings with fix recommendations}
───────────────────────────────────────────────────────
## Fix Priority
1. {Highest severity fix}
2. {Next fix}
...
───────────────────────────────────────────────────────
```
</process>
<success_criteria>
- [ ] Scan scope determined and all files discovered
- [ ] All Agent() calls extracted from commands with full prompt content
- [ ] All corresponding agent definitions located and parsed
- [ ] 7 conflict dimensions checked for each command-agent pair
- [ ] No false positives on legitimate patterns (mode references, user decision passthrough, `<deep_work_rules>`)
- [ ] Fix recommendations provided for every error/warning
- [ ] Summary table with per-pair dimension results displayed
- [ ] Overall verdict determined (CLEAN/REVIEW/CONFLICT)
</success_criteria>

View File

@@ -0,0 +1,269 @@
# GSD Content Separation Rules
Rules for validating the boundary between **command delegation prompts** (Agent() calls) and **agent role definitions** (agent `.md` files). Derived from analysis of GSD's `plan-phase.md`, `execute-phase.md`, `research-phase.md` and their corresponding agents (`gsd-planner`, `gsd-plan-checker`, `gsd-executor`, `gsd-phase-researcher`, `gsd-verifier`).
## Core Principle
**Commands own WHEN and WHERE. Agents own WHO and HOW.**
A delegation prompt tells the agent what to do *this time*. The agent definition tells the agent who it *always* is.
## Ownership Matrix
### Command Delegation Prompt Owns
| Concern | XML Block | Example |
|---------|-----------|---------|
| What to accomplish | `<objective>` | "Execute plan 3 of phase 2" |
| Input file paths | `<files_to_read>` | "- {state_path} (Project State)" |
| Runtime parameters | `<additional_context>` | "Phase: 5, Mode: revision" |
| Output location | `<output>` | "Write to: {phase_dir}/RESEARCH.md" |
| Expected return format | `<expected_output>` | "## VERIFICATION PASSED or ## ISSUES FOUND" |
| Who consumes output | `<downstream_consumer>` | "Output consumed by /gsd:execute-phase" |
| Revision context | `<instructions>` | "Make targeted updates to address checker issues" |
| Cross-cutting policy | `<deep_work_rules>` | Anti-shallow execution rules (applies to all agents) |
| Per-invocation quality | `<quality_gate>` (in prompt) | Invocation-specific checks (e.g., "every task has `<read_first>`") |
| Flow control | Revision loops, return routing | "If TASK COMPLETE → step 13. If BLOCKED → offer options" |
| User interaction | `AskUserQuestion` | "Provide context / Skip / Abort" |
| Banners | Status display | "━━━ GSD ► PLANNING PHASE {X} ━━━" |
### Agent Role Definition Owns
| Concern | XML Section | Example |
|---------|-------------|---------|
| Identity | `<role>` | "You are a GSD planner" |
| Spawner list | `<role>` → Spawned by | "/gsd:plan-phase orchestrator" |
| Responsibilities | `<role>` → Core responsibilities | "Decompose phases into parallel-optimized plans" |
| Mandatory read protocol | `<role>` → Mandatory Initial Read | "MUST use Read tool to load every file in `<files_to_read>`" |
| Project discovery | `<project_context>` | "Read CLAUDE.md, check .claude/skills/" |
| Guiding principles | `<philosophy>` | Quality degradation curve by context usage |
| Input interpretation | `<upstream_input>` | "Decisions → LOCKED, Discretion → freedom" |
| Decision honoring | `<context_fidelity>` | "Locked decisions are NON-NEGOTIABLE" |
| Core insight | `<core_principle>` | "Plan completeness ≠ Goal achievement" |
| Domain expertise | Named domain sections | `<verification_dimensions>`, `<task_breakdown>`, `<dependency_graph>` |
| Return protocol | `<output_contract>` | TASK COMPLETE / TASK BLOCKED / CHECKPOINT REACHED |
| Self-check | `<quality_gate>` (in agent) | Permanent checks for every invocation |
| Anti-patterns | `<anti_patterns>` | "DO NOT check code existence" |
| Examples | `<examples>` | Scope exceeded analysis example |
## Conflict Patterns
### Pattern 1: Role Re-definition
**Symptom:** Delegation prompt contains identity language.
```
# BAD — prompt redefines role
Agent({
subagent_type: "gsd-plan-checker",
prompt: "You are a code quality expert. Your job is to review plans...
<objective>Verify phase 5 plans</objective>"
})
# GOOD — prompt states objective only
Agent({
subagent_type: "gsd-plan-checker",
prompt: "<verification_context>
<files_to_read>...</files_to_read>
</verification_context>
<expected_output>## VERIFICATION PASSED or ## ISSUES FOUND</expected_output>"
})
```
**Why it's wrong:** The agent's `<role>` section already defines identity. Re-definition in prompt can contradict, confuse, or override the agent's self-understanding.
**Detection:** Regex for `You are a|Your role is|Your job is to|Your responsibility is|Core responsibilities:` in prompt content.
### Pattern 2: Domain Expertise Leak
**Symptom:** Delegation prompt contains decision tables, heuristics, or examples.
```
# BAD — prompt embeds domain knowledge
Agent({
subagent_type: "gsd-planner",
prompt: "<objective>Create plans for phase 3</objective>
Remember: tasks should have 2-3 items max.
| TOO VAGUE | JUST RIGHT |
| 'Add auth' | 'Add JWT auth with refresh rotation' |"
})
# GOOD — agent's own <task_breakdown> section owns this knowledge
Agent({
subagent_type: "gsd-planner",
prompt: "<planning_context>
<files_to_read>...</files_to_read>
</planning_context>"
})
```
**Why it's wrong:** Domain knowledge in prompts duplicates agent content. When agent evolves, prompt doesn't update — they diverge. Agent's domain sections are the single source of truth.
**Exception — `<deep_work_rules>`:** GSD uses this as a cross-cutting policy block (not domain expertise per se) that applies anti-shallow-execution rules across all agents. This is acceptable because:
1. It's structural policy, not domain knowledge
2. It applies uniformly to all planning agents
3. It supplements (not duplicates) agent's own quality gate
**Detection:**
- Tables with `|` in prompt content (excluding `<files_to_read>` path tables)
- "Good:" / "Bad:" / "Example:" comparison pairs
- "Always..." / "Never..." / "Prefer..." heuristic statements
- Numbered rules lists (>3 items) that aren't revision instructions
### Pattern 3: Quality Gate Duplication
**Symptom:** Same quality check appears in both prompt and agent definition.
```
# PROMPT quality_gate
- [ ] Every task has `<read_first>`
- [ ] Every task has `<acceptance_criteria>`
- [ ] Dependencies correctly identified
# AGENT quality_gate
- [ ] Every task has `<read_first>` with at least the file being modified
- [ ] Every task has `<acceptance_criteria>` with grep-verifiable conditions
- [ ] Dependencies correctly identified
```
**Analysis:**
- "Dependencies correctly identified" → **duplicate** (exact match)
- "`<read_first>`" in both → **overlap** (prompt is less specific than agent)
- "`<acceptance_criteria>`" → **overlap** (same check, different specificity)
**When duplication is OK:** Prompt's `<quality_gate>` adds *invocation-specific* checks not in agent's permanent gate (e.g., "Phase requirement IDs all covered" is specific to this phase, not general).
**Detection:** Fuzzy match quality gate items between prompt and agent (>60% token overlap).
### Pattern 4: Output Format Conflict
**Symptom:** Command expects return markers the agent doesn't define.
```
# COMMAND handles:
- "## VERIFICATION PASSED" → continue
- "## ISSUES FOUND" → revision loop
# AGENT <output_contract> defines:
- "## TASK COMPLETE"
- "## TASK BLOCKED"
```
**Why it's wrong:** Command routes on markers. If markers don't match, routing breaks silently — command may hang or misinterpret results.
**Detection:** Extract return marker strings from both sides, compare sets.
### Pattern 5: Process Override
**Symptom:** Prompt dictates step-by-step process.
```
# BAD — prompt overrides agent's process
Agent({
subagent_type: "gsd-planner",
prompt: "Step 1: Read the roadmap. Step 2: Extract requirements.
Step 3: Create task breakdown. Step 4: Assign waves..."
})
# GOOD — prompt states objective, agent decides process
Agent({
subagent_type: "gsd-planner",
prompt: "<objective>Create plans for phase 5</objective>
<files_to_read>...</files_to_read>"
})
```
**Exception — Revision instructions:** `<instructions>` block in revision prompts is acceptable because it tells the agent *what changed* (checker issues), not *how to work*.
```
# OK — revision context, not process override
<instructions>
Make targeted updates to address checker issues.
Do NOT replan from scratch unless issues are fundamental.
Return what changed.
</instructions>
```
**Detection:** "Step N:" / "First..." / "Then..." / "Finally..." patterns in prompt content outside `<instructions>` blocks.
### Pattern 6: Scope Authority Conflict
**Symptom:** Prompt makes domain decisions the agent should own.
```
# BAD — prompt decides implementation details
Agent({
subagent_type: "gsd-planner",
prompt: "Use React Query for data fetching. Use Zustand for state management.
<objective>Plan the frontend architecture</objective>"
})
# GOOD — user decisions passed through from CONTEXT.md
Agent({
subagent_type: "gsd-planner",
prompt: "<planning_context>
<files_to_read>
- {context_path} (USER DECISIONS - locked: React Query, Zustand)
</files_to_read>
</planning_context>"
})
```
**Key distinction:**
- **Prompt making decisions** = conflict (command shouldn't have domain opinion)
- **Prompt passing through user decisions** = correct (user decisions flow through command to agent)
- **Agent interpreting user decisions** = correct (agent's `<context_fidelity>` handles locked/deferred/discretion)
**Detection:** Technical nouns (library names, architecture patterns) in prompt free text (not inside `<files_to_read>` path descriptions).
### Pattern 7: Missing Contracts
**Symptom:** Handoff points between command and agent are incomplete.
| Missing Element | Impact |
|-----------------|--------|
| Agent has no `<output_contract>` | Command can't route on return markers |
| Command doesn't handle all agent return markers | BLOCKED/CHECKPOINT silently ignored |
| Agent expects `<files_to_read>` but prompt doesn't provide it | Agent starts without context |
| Agent's "Spawned by:" doesn't list this command | Agent may not expect this invocation pattern |
| Agent has `<upstream_input>` but prompt doesn't match structure | Agent misinterprets input |
**Detection:** Cross-reference both sides for completeness.
## The `<deep_work_rules>` Exception
GSD's plan-phase uses `<deep_work_rules>` in delegation prompts. This is a deliberate design choice, not a violation:
1. **It's cross-cutting policy**: applies to ALL planning agents equally
2. **It's structural**: defines required fields (`<read_first>`, `<acceptance_criteria>`, `<action>` concreteness) — not domain expertise
3. **It supplements agent quality**: agent's own `<quality_gate>` is self-check; deep_work_rules is command-imposed minimum standard
4. **It's invocation-specific context**: different commands might impose different work rules
**Rule:** `<deep_work_rules>` in a delegation prompt is `info` level, not error. Flag only if its content duplicates agent's domain sections verbatim.
## Severity Classification
| Severity | When | Action Required |
|----------|------|-----------------|
| `error` | Actual conflict: contradictory content between prompt and agent | Must fix — move content to correct owner |
| `warning` | Duplication or boundary blur without contradiction | Should fix — consolidate to single source of truth |
| `info` | Acceptable pattern that looks like violation but isn't | No action — document why it's OK |
## Quick Reference: Is This Content in the Right Place?
| Content | In Prompt? | In Agent? |
|---------|-----------|-----------|
| "You are a..." | ❌ Never | ✅ Always |
| File paths for this invocation | ✅ Yes | ❌ No |
| Phase number, mode | ✅ Yes | ❌ No |
| Decision tables | ❌ Never | ✅ Always |
| Good/bad examples | ❌ Never | ✅ Always |
| "Write to: {path}" | ✅ Yes | ❌ No |
| Return markers handling | ✅ Yes (routing) | ✅ Yes (definition) |
| Quality gate | ✅ Per-invocation | ✅ Permanent self-check |
| "MUST read files first" | ❌ Agent's `<role>` owns this | ✅ Always |
| Anti-shallow rules | ⚠️ OK as cross-cutting policy | ✅ Preferred |
| Revision instructions | ✅ Yes (what changed) | ❌ No |
| Heuristics / philosophy | ❌ Never | ✅ Always |
| Banner display | ✅ Yes | ❌ Never |
| AskUserQuestion | ✅ Yes | ❌ Never |

View File

@@ -165,14 +165,14 @@ Generate a complete command file with:
3. **`<process>`** — numbered steps (GSD workflow style):
- Step 1: Initialize / parse arguments
- Steps 2-N: Domain-specific orchestration logic
- Each step: banner display, validation, agent spawning via `Task()`, error handling
- Each step: banner display, validation, agent spawning via `Agent()`, error handling
- Final step: status display + `<offer_next>` with next actions
4. **`<success_criteria>`** — checkbox list of verifiable conditions
**Command writing rules:**
- Steps are **numbered** (`## 1.`, `## 2.`) — follow `plan-phase.md` and `new-project.md` style
- Use banners for phase transitions: `━━━ SKILL ► ACTION ━━━`
- Agent spawning uses `Task(prompt, subagent_type, description)` pattern
- Agent spawning uses `Agent({ subagent_type, prompt, description, run_in_background })` pattern
- Prompt to agents uses `<objective>`, `<files_to_read>`, `<output>` blocks
- Include `<offer_next>` block with formatted completion status
- Handle agent return markers: `## TASK COMPLETE`, `## TASK BLOCKED`, `## CHECKPOINT REACHED`
@@ -286,7 +286,7 @@ Set `$TARGET_PATH = $SOURCE_PATH` (in-place conversion) unless user specifies ou
| `<process>` with numbered steps | At least 3 `## N.` headers |
| Step 1 is initialization | Parses args or loads context |
| Last step is status/report | Displays results or routes to `<offer_next>` |
| Agent spawning (if complex) | `Task(` call with `subagent_type` |
| Agent spawning (if complex) | `Agent({` call with `subagent_type` |
| Agent prompt structure | `<files_to_read>` + `<objective>` or `<output>` blocks |
| Return handling | Routes on `## TASK COMPLETE` / `## TASK BLOCKED` markers |
| `<offer_next>` | Banner + summary + next command suggestion |

View File

@@ -4,7 +4,7 @@ Guidelines for Claude Code **agent definition files** (role + domain expertise).
## Content Separation Principle
Agents are spawned by commands via `Task()`. The agent file defines WHO the agent is and WHAT it knows. It does NOT define WHEN or HOW it gets invoked.
Agents are spawned by commands via `Agent()`. The agent file defines WHO the agent is and WHAT it knows. It does NOT define WHEN or HOW it gets invoked.
| Concern | Belongs in Agent | Belongs in Command |
|---------|-----------------|-------------------|

View File

@@ -153,15 +153,15 @@ Display banners before major phase transitions (agent spawning, user decisions,
## Agent Spawning Pattern
Commands spawn agents via `Task()` with structured prompts:
Commands spawn agents via `Agent()` with structured prompts:
```markdown
Task(
prompt=filled_prompt,
subagent_type="agent-name",
model="{model}",
description="Verb Phase {X}"
)
```javascript
Agent({
subagent_type: "agent-name",
prompt: filled_prompt,
description: "Verb Phase {X}",
run_in_background: false
})
```
### Prompt Structure for Agents

View File

@@ -49,7 +49,7 @@ Conversion Summary:
| `## Auto Mode` / `## Auto Mode Defaults` | `<auto_mode>` section |
| `## Quick Reference` | Preserve as-is within appropriate section |
| Inline `AskUserQuestion` calls | Preserve verbatim — these belong in commands |
| `Task()` / agent spawning calls | Preserve verbatim within process steps |
| `Agent()` / agent spawning calls | Preserve verbatim within process steps |
| Banner displays (`━━━`) | Preserve verbatim |
| Code blocks (```bash, ```javascript, etc.) | **Preserve exactly** — never modify code content |
| Tables | **Preserve exactly** — never reformat table content |

View File

@@ -49,12 +49,13 @@ allowed-tools: {tools} # omit if unrestricted
{Construct prompt with <files_to_read>, <objective>, <output> blocks.}
```
Task(
prompt=filled_prompt,
subagent_type="{agent-name}",
description="{Verb} {target}"
)
```javascript
Agent({
subagent_type: "{agent-name}",
prompt: filled_prompt,
description: "{Verb} {target}",
run_in_background: false
})
```
## 4. Handle Result