From wrangler
Invoke an agent from a designed harness. Reads .wrangler/harness.json to find the agent config, loads its system prompt, and spawns it via the Agent tool. Manages sprint directories and inter-agent communication files automatically. Usage: /wrangler:run <agent-name> Trigger: "run agent", "run harness", "에이전트 실행", "하네스 실행"
How this skill is triggered — by the user, by Claude, or both
Slash command
/wrangler:runThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Dispatches a specific agent from the user's harness configuration.
Dispatches a specific agent from the user's harness configuration. Manages sprint directories and inter-agent handoff files.
Main Session (Orchestrator = you)
│
│ 1. Read harness.json → identify agent + handoff config
│ 2. Read input files from .wrangler/sprint-N/
│ 3. Spawn sub-agent via Agent tool (separate context)
│ 4. Verify output files were created
│ 5. Suggest next agent
│
├─ Agent(planner) ← cannot see main session or other agents
├─ Agent(generator) ← cannot see main session or other agents
└─ Agent(evaluator) ← cannot see main session or other agents
Key rules:
.wrangler/sprint-N/ filesRead .wrangler/harness.json in the current project root.
/wrangler:design first to create one."
Stop here.Read harness.json.currentSprint to get the sprint number (default: 1).
Ensure the sprint directory exists:
.wrangler/sprint-{currentSprint}/
If it doesn't exist, create it.
Check the skill argument for an agent name (e.g., /wrangler:run planner).
If no argument given → List available agents and ask: "Which agent do you want to run? Available agents:" Then list each agent with its role. Stop and wait.
If argument given → Look up the agent in harness.json.agents.
If not found, show available agents and ask.
Using harness.json.workflow.handoffs, find all handoffs where to matches
the target agent. These are the input files the agent needs.
For each matching handoff:
.wrangler/sprint-{currentSprint}/{handoff.filename}iterable: true, find the highest-numbered file
(e.g., evaluator-to-generator--feedback-03.md)Also read:
.wrangler/progress.md (if exists).wrangler/sprint-{currentSprint}/planner-to-generator--contract.md (if exists and agent is not planner)If a required input file does not exist yet:
Using harness.json.workflow.handoffs, find all handoffs where from matches
the target agent. These are the output files the agent must write.
For each matching handoff:
.wrangler/sprint-{currentSprint}/{handoff.filename}iterable: true, determine the next number:
{n} in filename with the numberRead the agent's system prompt from .wrangler/{agent.promptFile}.
Construct and execute an Agent tool call:
Agent({
description: "Wrangler: {agent-name} (sprint {currentSprint})",
subagent_type: "{agent.subagentType}",
model: "{agent.model}",
prompt: `
{contents of the agent's promptFile}
---
## Sprint Info
- Sprint: {currentSprint}
- Sprint directory: .wrangler/sprint-{currentSprint}/
## Input Files
{for each input handoff file that exists:}
### {filename}
{file contents}
{for each input that is missing:}
### {filename} — NOT YET CREATED
(The previous agent has not run yet for this sprint.)
## Current Progress
{contents of progress.md, if exists}
## Output Requirements
You MUST write the following files when done:
{for each output handoff:}
- .wrangler/sprint-{currentSprint}/{resolved filename}
Content: {artifact description}
## Additional Instructions
1. Write all output files to .wrangler/sprint-{currentSprint}/
2. Update .wrangler/progress.md with:
- What you accomplished
- Current sprint phase
- Last agent: {agent-name}
3. Working directory: {current project root path}
`
})
After the agent completes:
Check that each expected output file exists in .wrangler/sprint-{currentSprint}/.
If any are missing, warn the user.
Read .wrangler/progress.md and verify it was updated by the agent.
If not, update it with:
- Last agent: {agent-name}
- Sprint: {currentSprint}
- Phase: {agent-name} completed
- Iteration: {current iteration count for feedback loops}
If the agent that just ran is the from side of a workflow.loops entry:
loop.passThreshold:
harness.json.currentSprint to currentSprint + 1.
Create new sprint directory: .wrangler/sprint-{newSprint}/loop.maxIterations:
"Max iterations ({maxIterations}) reached. Consider adjusting criteria or moving on."
Else:
"Score {score}/{threshold}. Iteration {count}/{maxIterations}.
Run /wrangler:run {loop.to} to iterate."Look at workflow.sequence to find the next agent after the one that just ran.
Display:
Sprint {currentSprint} status:
- {agent-name}: done
- {next-agent}: ready → /wrangler:run {next-agent}
Created files:
- .wrangler/sprint-{N}/{output-file-1}
- .wrangler/sprint-{N}/{output-file-2}
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub panicgit/wrangler --plugin wrangler