- 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.
11 KiB
name, description, allowed-tools
| name | description | allowed-tools |
|---|---|---|
| delegation-check | 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". | Read, Glob, Grep, Bash, AskUserQuestion |
Invoked when user requests "check delegation", "delegation conflict", "prompt vs role check", or when reviewing workflow skill quality.
<required_reading>
- @.claude/skills/delegation-check/specs/separation-rules.md </required_reading>
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:
# 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:
# 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}
...
───────────────────────────────────────────────────────
<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>