Agent Skill
2/7/2026

wg

Use this skill for task coordination with workgraph (wg). Triggers include "workgraph", "wg", task graphs, multi-step projects, tracking dependencies, coordinating agents, or when you see a .workgraph directory.

G
graphwork
20GitHub Stars
1Views
npx skills add graphwork/workgraph

SKILL.md

Namewg
DescriptionUse this skill for task coordination with workgraph (wg). Triggers include "workgraph", "wg", task graphs, multi-step projects, tracking dependencies, coordinating agents, or when you see a .workgraph directory.

name: wg description: Use this skill for task coordination with workgraph (wg). Triggers include "workgraph", "wg", task graphs, multi-step projects, tracking dependencies, coordinating agents, or when you see a .workgraph directory.

workgraph

First: orient and start the service

At the start of every session, run these two commands:

wg quickstart              # Orient yourself — prints cheat sheet and service status
wg service start           # Start the coordinator (no-op if already running)

If the service is already running, wg service start will tell you. Always ensure the service is up before defining work — it's what dispatches tasks to agents.

Your role as a top-level agent

You are a coordinator. Your job is to define work and let the service dispatch it.

Start the service if it's not running

wg service start --max-agents 5

Define tasks with dependencies

wg add "Design the API" --description "Description of what to do"
wg add "Implement backend" --after design-the-api
wg add "Write tests" --after implement-backend

Monitor progress

wg list                  # All tasks with status
wg list --status open    # Filter by status (open, in-progress, done, failed)
wg agents                # Who's working on what
wg agents --alive        # Only alive agents
wg agents --working      # Only working agents
wg service status        # Service health
wg status                # Quick one-screen overview
wg watch                 # Stream events as JSON lines (live tail)
wg viz                   # ASCII dependency graph
wg tui                   # Interactive TUI dashboard

What you do NOT do as coordinator

  • Don't wg claim — the service claims tasks automatically
  • Don't wg spawn — the service spawns agents automatically
  • Don't work on tasks yourself — spawned agents do the work

Always use wg done to complete tasks. Do NOT use wg submit (deprecated).

If you ARE a spawned agent working on a task

You were spawned by the service to work on a specific task. Your workflow:

wg show <task-id>        # Understand what to do
wg context <task-id>     # See inputs from dependencies
wg log <task-id> "msg"   # Log progress as you work
wg done <task-id>        # Mark complete when finished

If you discover new work while working:

wg add "New task" --after <current-task>

Task decomposition

When working on a task, you may discover that it's larger than expected or has independent parts. Rather than doing everything in one shot, decompose into subtasks and let the coordinator dispatch them.

When to decompose

  • 3+ independent parts that touch disjoint files — parallelize with a diamond
  • Discovered bugs or issues unrelated to the current task — spin off a fix task
  • Missing prerequisites — create a blocking task for the prerequisite

When NOT to decompose

  • Small tasks — if the total work is under ~200 lines of changes, just do it
  • Shared files — if the subtasks would all edit the same files, keep them sequential or do them yourself. Parallel agents editing the same file will overwrite each other
  • High coordination overhead — if explaining the decomposition is harder than doing the work, just do the work

Diamond pattern for parallel decomposition

Fan out independent work, then join with an integrator:

# Fan out: each subtask depends on the current task
wg add "Implement module A" --after <current-task> -d "File scope: src/a.rs"
wg add "Implement module B" --after <current-task> -d "File scope: src/b.rs"
wg add "Implement module C" --after <current-task> -d "File scope: src/c.rs"

# Always add an integrator at the join point
wg add "Integrate modules A, B, C" --after implement-module-a,implement-module-b,implement-module-c

Always include an integrator task at join points. Without one, parallel outputs never get merged and downstream tasks see inconsistent state.

Guardrails

Two guardrails prevent runaway decomposition:

  • max_child_tasks_per_agent (default: 10) — max tasks a single agent can create via wg add. If you hit this limit, the system tells you. Use wg fail or wg log to explain why more decomposition is needed.
  • max_task_depth (default: 8) — max depth of --after chains from root tasks. Prevents infinite decomposition chains. If you hit this, create tasks at the current level instead of nesting deeper.

Configure with:

wg config --max-child-tasks 15
wg config --max-task-depth 10

Record output files so downstream tasks can find them:

wg artifact <task-id> path/to/output

Manual mode (no service running)

Only use this if you're working alone without the service:

wg ready                 # See available tasks
wg claim <task-id>       # Claim a task
wg log <task-id> "msg"   # Log progress
wg done <task-id>        # Mark complete

Task lifecycle

open → [claim] → in-progress → [done] → done
                              → [fail] → failed → [retry] → open
                              → [abandon] → abandoned

Note: wg submit, wg approve, and wg reject are deprecated. Always use wg done.

Cycles (repeating workflows)

Some workflows repeat. Workgraph models these as structural cyclesafter back-edges with a CycleConfig that controls iteration limits. When a cycle iteration completes, the cycle header task is reset to open with its loop_iteration incremented, and intermediate tasks are re-opened automatically.

# Create a write/review cycle, max 3 iterations
wg add "Write" --id write --after review --max-iterations 3
wg add "Review" --after write --id review

# Inspect cycles
wg cycles

As a spawned agent on a task inside a cycle, check wg show <task-id> for loop_iteration to know which pass you're on. Review previous logs and artifacts to build on prior work. If the work has converged and no more iterations are needed, use wg done <task-id> --converged to signal early termination — the cycle will not iterate again.

wg cycles                   # List detected cycles and status
wg show <task-id>           # See loop_iteration and cycle membership

Pausing and resuming cycles

To temporarily stop a cycling task without losing its iteration count:

wg pause <task-id>          # Coordinator skips this task until resumed
wg resume <task-id>         # Task becomes dispatchable again

Paused tasks keep their status and iteration count intact. wg show displays "(PAUSED)" and wg list shows "[PAUSED]".

To pause/resume the entire coordinator (all dispatching stops, running agents continue):

wg service pause            # No new agents spawned
wg service resume           # Resume dispatching

Full command reference

Task creation & editing

CommandPurpose
wg add "Title" --description "Desc"Create a task (-d alias for --description)
wg add "X" --after YCreate task with dependency
wg add "X" --after a,b,cMultiple dependencies (comma-separated)
wg add "X" --skill rust --input src/foo.rs --deliverable docs/out.mdTask with skills, inputs, deliverables
wg add "X" --model haikuTask with preferred model
wg add "X" --context-scope cleanSet prompt context scope (clean/task/graph/full)
wg add "X" --verify "Tests pass"Task requiring review before completion
wg add "X" --tag important --hours 2Tags and estimates
wg add "X" --after Y --max-iterations 3Create cycle header with max 3 iterations
wg edit <id> --title "New" --description "New"Edit task fields
wg edit <id> --add-after X --remove-after YModify dependencies
wg edit <id> --add-after X --max-iterations 3Add cycle back-edge
wg edit <id> --add-tag T --remove-tag TModify tags
wg edit <id> --add-skill S --remove-skill SModify skills
wg edit <id> --model sonnetChange preferred model
wg edit <id> --context-scope graphChange context scope

Task state transitions

CommandPurpose
wg claim <id>Claim task (in-progress)
wg unclaim <id>Release claimed task (back to open)
wg done <id>Complete task
wg pause <id>Pause task (coordinator skips it)
wg resume <id>Resume a paused task
wg fail <id> --reason "why"Mark task failed
wg retry <id>Retry failed task
wg abandon <id> --reason "why"Abandon permanently
wg reclaim <id> --from old --to newReassign from dead agent

Querying & viewing

CommandPurpose
wg listAll tasks with status
wg list --status openFilter: open, in-progress, done, failed, abandoned
wg readyTasks available to work on
wg show <id>Full task details
wg blocked <id>What's blocking a task
wg why-blocked <id>Full transitive blocking chain
wg context <id>Inputs from dependencies
wg context <id> --dependentsTasks depending on this one's outputs
wg log <id> --listView task log entries
wg impact <id>What depends on this task
wg statusQuick one-screen overview

Visualization

CommandPurpose
wg vizASCII dependency graph of open tasks
wg viz [TASK_ID]...Show only subgraphs containing specified tasks
wg viz --allInclude done tasks
wg viz --status doneFilter by status
wg viz --dotGraphviz DOT output
wg viz --mermaidMermaid diagram
wg viz --critical-pathHighlight critical path
wg viz --dot -o graph.pngRender to file
wg viz --show-internalShow internal tasks (assign-, evaluate-) normally hidden
wg viz --no-tuiForce static output even when stdout is interactive
wg tuiInteractive TUI dashboard

Monitoring & event streaming

CommandPurpose
wg watchStream workgraph events as JSON lines
wg watch --event task_stateFilter by event type (task_state, evaluation, agent, all)
wg watch --task <id>Filter events to a specific task (prefix match)
wg watch --replay 10Include N recent historical events before streaming

Analysis & metrics

CommandPurpose
wg analyzeComprehensive health report
wg checkGraph validation (cycles, orphans)
wg structureEntry points, dead ends, high-impact roots
wg bottlenecksTasks blocking the most work
wg critical-pathLongest dependency chain
wg cyclesCycle detection and classification
wg velocity --weeks 8Completion velocity over time
wg agingTask age distribution
wg forecastCompletion forecast from velocity
wg workloadAgent workload balance
wg resourcesResource utilization
wg cost <id>Cost including dependencies
wg coordinateReady tasks for parallel execution
wg trajectory <id>Optimal claim order for context
wg next --actor <id>Best next task for an agent

Service & agents

CommandPurpose
wg service startStart coordinator daemon
wg service start --max-agents 5Start with parallelism limit
wg service stopStop daemon
wg service pausePause coordinator (running agents continue, no new spawns)
wg service resumeResume coordinator dispatching
wg service statusCheck daemon health
wg agentsList all agents
wg agents --aliveOnly alive agents
wg agents --workingOnly working agents
wg agents --deadOnly dead agents
wg spawn <id> --executor claudeManually spawn agent
wg spawn <id> --executor claude --model haikuSpawn with model override
wg kill <agent-id>Kill an agent
wg kill --allKill all agents
wg kill <id> --forceForce kill (SIGKILL)
wg dead-agents --cleanupUnclaim dead agents' tasks
wg dead-agents --removeRemove from registry
wg dead-agents --purgePurge dead/done/failed agents from registry
wg dead-agents --purge --delete-dirsAlso delete agent work directories when purging
wg dead-agents --threshold 30Override heartbeat timeout threshold (minutes)

Agency (roles, motivations, agents)

CommandPurpose
wg agency initBootstrap agency with starter roles, motivations, and agents
wg agency statsPerformance analytics
wg agency stats --by-modelPer-model score breakdown
wg role add <id>Create a role
wg role listList roles
wg role show <id>Show role details
wg role edit <id>Edit a role
wg role rm <id>Remove a role
wg motivation add <id>Create a motivation
wg motivation listList motivations
wg motivation show <id>Show motivation details
wg motivation edit <id>Edit a motivation
wg motivation rm <id>Remove a motivation
wg agent createCreate agent (role+motivation pairing)
wg agent listList agents
wg agent show <hash>Show agent details
wg agent rm <hash>Remove an agent
wg agent lineage <hash>Show agent ancestry
wg agent performance <hash>Show agent performance
wg assign <task> <agent-hash>Assign agent to task
wg assign <task> --clearClear assignment
wg evaluate run <task>Trigger LLM-based evaluation of a completed task
wg evaluate record --task <id> --score <n> --source <tag>Record evaluation from external source
wg evaluate showShow evaluation history (filter by --task, --agent, --source)
wg evolveTrigger evolution cycle
wg evolve --strategy mutation --budget 3Targeted evolution

Federation (cross-repo agency sharing)

CommandPurpose
wg agency remote add <name> <path>Add a named remote agency store
wg agency remote remove <name>Remove a named remote
wg agency remote listList configured remotes
wg agency remote show <name>Show remote details and entity counts
wg agency scan <root>Scan filesystem for agency stores
wg agency pull <source>Pull entities from another agency store
wg agency push <target>Push local entities to another agency store
wg agency merge <sources...>Merge entities from multiple stores

Peer workgraphs (cross-repo communication)

CommandPurpose
wg peer add <name> <path>Register a peer workgraph instance
wg peer remove <name>Remove a registered peer
wg peer listList all configured peers with service status
wg peer show <name>Show detailed info about a peer
wg peer statusQuick health check of all peers

Run snapshots

CommandPurpose
wg runs listList all run snapshots
wg runs show <id>Show details of a specific run
wg runs restore <id>Restore graph from a run snapshot
wg runs diff <id>Diff current graph against a run snapshot

Functions (reusable workflow patterns)

CommandPurpose
wg func listList available functions
wg func show <id>Show function details and required inputs
wg func extract <task-id>...Extract a function from completed task(s)
wg func apply <id> --input key=valueCreate tasks from a function with provided inputs
wg func bootstrapBootstrap the extract-function meta-function
wg func make-adaptive <id>Upgrade a generative function to adaptive (adds run memory)

Traces (execution history & sharing)

CommandPurpose
wg trace show <id>Show the execution history of a task
wg trace export --visibility <zone>Export trace data filtered by visibility zone
wg trace import <file>Import a trace export file as read-only context

Artifacts & resources

CommandPurpose
wg artifact <task> <path>Record output file
wg artifact <task>List task artifacts
wg artifact <task> <path> --removeRemove artifact
wg resource add <id> --type money --available 1000 --unit usdAdd resource
wg resource listList resources
wg match <task>Find capable agents

Housekeeping

CommandPurpose
wg gcRemove terminal tasks (done/abandoned/failed) from the graph
wg archiveArchive completed tasks
wg archive --dry-runPreview what would be archived
wg archive --older 30dOnly archive old completions
wg archive --listList archived tasks
wg reschedule <id> --after 24Delay task 24 hours
wg reschedule <id> --at "2025-01-15T09:00:00Z"Schedule at specific time
wg plan --budget 500 --hours 20Plan within constraints
wg replaySnapshot graph, selectively reset tasks, re-execute with different model
wg replay --failed-onlyOnly reset failed/abandoned tasks
wg replay --below-score 0.7Only reset tasks with evaluation score below threshold
wg replay --tasks a,b,cReset specific tasks plus transitive dependents
wg replay --subgraph <id>Only replay tasks in subgraph rooted at given task
wg replay --keep-done 0.9Preserve done tasks scoring above threshold (default: 0.9)
wg replay --plan-onlyDry run: show what would be reset

Setup & configuration

CommandPurpose
wg setupInteractive configuration wizard for first-time setup
wg config --showShow current config
wg config --listShow merged config with source annotations (global/local/default)
wg config --initCreate default config
wg config --global --executor claudeWrite to global config (~/.workgraph/config.toml)
wg config --local --model opusWrite to local config (default for writes)
wg config --executor claudeSet executor
wg config --model opusSet default model
wg config --max-agents 5Set agent limit
wg config --auto-evaluate trueEnable auto-evaluation
wg config --auto-assign trueEnable auto-assignment
wg config --creator-agent <hash>Set creator agent (content-hash)
wg config --creator-model <model>Set model for creator agents

Skills

CommandPurpose
wg skill listList all skills used across tasks
wg skill task <id>Show skills for a specific task
wg skill find <name>Find tasks requiring a specific skill
wg skill installInstall the wg Claude Code skill to ~/.claude/skills/wg/

Output options

All commands support --json for structured output. Run wg --help for the quick list or wg --help-all for every command.

Executor and model awareness

Environment variables

Every spawned agent receives these environment variables:

VariableDescription
WG_TASK_IDThe task ID you're working on
WG_AGENT_IDYour agent ID
WG_EXECUTOR_TYPEExecutor type: claude, amplifier, or shell
WG_MODELModel you're running on (e.g. opus, sonnet, haiku) — set when a model is configured

Multi-executor awareness

You may be running under different executors:

  • claude — Claude Code CLI (claude --print). You have full access to Claude Code tools (file editing, bash, etc).
  • amplifier — Amplifier multi-agent runtime. You have access to installed amplifier bundles and can delegate to sub-agents.
  • shell — Direct shell execution for scripted tasks.

Check $WG_EXECUTOR_TYPE to know which executor you're running under if your behavior should differ.

Model awareness

The $WG_MODEL variable tells you what model you're running on. Different tasks may use different models based on complexity (model hierarchy: task.model > executor.model > coordinator.model).

Calibrate your approach to your model tier:

  • Frontier models (opus): Tackle complex multi-file refactors, architectural decisions, nuanced trade-offs.
  • Mid-tier models (sonnet): Good for standard implementation, bug fixes, well-scoped features.
  • Fast models (haiku): Best for simple, well-defined tasks — lookups, single-file edits, formatting.

If a task feels beyond your model's capability, use wg fail with a clear reason rather than producing low-quality output.

Context scopes

Tasks can specify a --context-scope that controls how much context the agent receives in its prompt:

ScopeDescriptionUse Case
cleanBare executor — no wg CLI instructionsPure computation, translation, writing
taskTask-aware with wg workflow instructions (default)Standard implementation, bug fixes
graphAdds project description, 1-hop neighborhood, status summaryIntegration, cross-component review
fullAdds full graph summary, CLAUDE.md, system preambleMeta-tasks, workflow design

Set scope when creating or editing tasks:

wg add "Translate document" --context-scope clean
wg edit <task-id> --context-scope graph

Resolution priority: task > role default > coordinator config > "task" (default).

Amplifier bundles (amplifier executor only)

When running under the amplifier executor (WG_EXECUTOR_TYPE=amplifier), you can use installed amplifier bundles for specialized capabilities. Delegate to sub-agents when:

  • The subtask is independent and well-scoped (e.g. "write tests for module X")
  • Parallel execution would speed things up
  • The subtask needs a different skill set than your current context

Do the work yourself when:

  • The task is simple and sequential
  • Context from prior steps is critical and hard to transfer
  • Coordination overhead would exceed the work itself
Skills Info
Original Name:wgAuthor:graphwork