Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Targets

Wiggum can generate scaffold artifacts for one or more AI coding tools at the same time. Each “target” is a different way of running the orchestrator loop — the underlying plan, tasks, progress tracker, and features registry are shared, but the agent prompts and configuration differ.

Supported targets

TargetStable identifierAgent file(s)Dispatch mechanism
VSCode (default)vscode.vscode/orchestrator.prompt.md (and three siblings)GitHub Copilot runSubagent tool
opencodeopencode.opencode/agents/orchestrator.md (and three siblings) + ORCHESTRATOR.mdopencode task tool with subagent_type: "general" and inline subagent body
ClaudeclaudeCLAUDE.md (project memory) + .claude/settings.json (hooks)Claude Code reads both files on every session; PreCompact hook blocks compaction mid-task
agent-rulesagent-rules.cursorrules + .windsurfrules + .github/copilot-instructions.mdThe receiving IDE drives its own agent loop; wiggum supplies only rules + project context

You can enable any combination of targets for a single generate run.

Note on the vscode target: it targets GitHub Copilot Chat specifically (the #tool:agent/runSubagent tool). Other VSCode forks — Cursor, Windsurf, Antigravity, Trae, Cody, Cline, Roo Code, Continue — do not implement that tool. If you use one of those forks, enable the agent-rules target instead so its corresponding rules file (.cursorrules, .windsurfrules, etc.) gets written.

Selection

Targets are selected via the plan TOML or a CLI flag. The CLI flag always wins.

Plan-level: [targets]

[targets]
vscode   = true   # default if [targets] is absent
opencode = true
claude   = false

Each field is optional. When [targets] is absent entirely, the default is vscode = true and the others are false — this preserves the pre-[targets] behavior exactly.

When the [targets] section is present, only the fields you set take effect; absent fields are treated as false.

CLI: --target

wiggum generate plan.toml --target opencode          # just opencode
wiggum generate plan.toml --target all               # all four
wiggum generate plan.toml --target agent-rules       # Cursor / Windsurf / Copilot rules
wiggum generate plan.toml --target vscode,opencode   # not supported — single value

--target accepts a single value: vscode, opencode, claude, agent-rules, or all.

Precedence

  1. The --target CLI flag (if provided) overrides everything.
  2. Otherwise, the plan’s [targets] section.
  3. Otherwise, the default (vscode only) for back-compat.

If the resolved TargetSet is empty (every field explicitly false), wiggum generate errors out — at least one target must be enabled.

How the targets differ

VSCode target

  • Files: .vscode/orchestrator.prompt.md, .vscode/evaluator.prompt.md, .vscode/planner.prompt.md, .vscode/background-auditor.prompt.md.
  • Format: Each file is a Copilot prompt file with a YAML frontmatter (agent: agent, description:) and a body that includes a <SUBAGENT_PROMPT> block the orchestrator dispatches via #tool:agent/runSubagent.
  • Model selection: the [orchestrator].model field is rendered as a recommendation note in the prompt. The actual model is selected by the user in the Copilot chat picker.
  • Per-dispatch model: [orchestrator].subagent_model is passed as the model: argument on each runSubagent call.
  • Evaluator prompt is generated only when [evaluator] is configured.

opencode target

  • Files:
    • .opencode/agents/orchestrator.md — single-file orchestrator. Contains both <ORCHESTRATOR_INSTRUCTIONS> and <SUBAGENT_PROMPT> blocks; the orchestrator dispatches the built-in general subagent via the task tool with subagent_type: "general".
    • .opencode/agents/evaluator.md — QA evaluator. Only generated when [evaluator] is configured.
    • .opencode/agents/planner.md — task-decomposition planner.
    • .opencode/agents/background-auditor.md — continuous cross-task auditor.
    • ORCHESTRATOR.md (project root) — long-form workflow reference document with the task state machine, agents table, per-agent tooling matrix, evaluator rubric, completion standard, gates, session handoff protocol, and failure-mode recovery. Useful for any human or fresh LLM joining mid-stream.
  • Format: Each agent file is an opencode agent with full YAML frontmatter (description:, mode: primary|subagent, model: provider/model-id, permission:) followed by <PLAN>, <TASKS>, <PROGRESS>, <FEATURES>, <COMPLETION_STANDARD> reference blocks.
  • Single-file orchestrator: unlike the VSCode target (which has separate orchestrator + subagent files), the opencode orchestrator embeds the subagent body inline as a <SUBAGENT_PROMPT> block. The orchestrator passes that block as the prompt argument when invoking task(subagent_type="general", prompt=<SUBAGENT_PROMPT>). There is no separate wiggum-implementer agent file to maintain.
  • Permissions: the orchestrator runs with permissive defaults (edit: allow, bash: allow, task: allow, todowrite: allow, webfetch: ask) so it can independently run preflight and dispatch subagents. Subagents run as the built-in general subagent, which inherits the dispatcher’s permissions.
  • Evaluator agent is generated only when [evaluator] is configured.
  • Plan TOML path: the orchestrator prompt and ORCHESTRATOR.md reference the plan file as <your-plan>.toml — a placeholder the reader substitutes with their actual filename. wiggum doesn’t guess the filename from the project name.

Claude target

  • Files: CLAUDE.md (project memory at repo root) and .claude/settings.json (hooks).
  • CLAUDE.md — Claude Code reads this file on every session. It contains the project persona, preflight commands, architecture rules, user-defined rules, security rules, AI-avoidance guidance (if enabled), and a workflow loop. Claude Code IS its own orchestrator; wiggum just supplies the context + rules it needs.
  • Hook: PreCompact blocks context compression while any [~] task exists in PROGRESS.md.
  • Combined, the two files constitute “full Claude Code support” — wiggum drives neither the loop nor the dispatch; Claude Code does.

agent-rules target

  • Files: .cursorrules, .windsurfrules, and .github/copilot-instructions.md. All three are emitted from a single shared template, so the rules stay in lockstep across forks.
  • Use case: VSCode forks that don’t speak the GitHub Copilot runSubagent or opencode task protocols — Cursor, Windsurf, Antigravity, Trae, Cody, Cline, Roo Code, Continue. Each of those IDEs reads its own format’s file as project-level instructions.
  • No orchestrator loop. Unlike vscode and opencode, these files contain rules + project context only. The receiving IDE drives its own agent loop; wiggum never dispatches subagents on its behalf.
  • GitHub Copilot reads .github/copilot-instructions.md as repository-level instructions — this works in VSCode + Copilot even when the vscode target is also enabled (the two are complementary).

Universal artifacts

The following files are always emitted, regardless of the active target set:

  • PROGRESS.md — the task tracker
  • IMPLEMENTATION_PLAN.md — the high-level plan
  • AGENTS.md — tool-agnostic agent instructions
  • features.json — structured task/criteria registry
  • tasks/T{NN}-{slug}.md — per-task files

Examples

Default (back-compat)

A plan with no [targets] section generates only the VSCode artifacts — exactly the pre-[targets] behavior.

wiggum generate plan.toml
# → .vscode/orchestrator.prompt.md
# → .vscode/evaluator.prompt.md   (if [evaluator] configured)
# → .vscode/planner.prompt.md
# → .vscode/background-auditor.prompt.md
# → .claude/settings.json          (when claude = true)

opencode-only

[targets]
vscode   = false
opencode = true
wiggum generate plan.toml
# → .opencode/agents/orchestrator.md          (single-file, embedded SUBAGENT_PROMPT)
# → .opencode/agents/evaluator.md             (if [evaluator] configured)
# → .opencode/agents/planner.md
# → .opencode/agents/background-auditor.md
# → ORCHESTRATOR.md

agent-rules-only (Cursor / Windsurf / Copilot)

[targets]
vscode      = false
opencode    = false
claude      = false
agent-rules = true
wiggum generate plan.toml
# → .cursorrules                    (Cursor)
# → .windsurfrules                  (Windsurf)
# → .github/copilot-instructions.md (GitHub Copilot)

Multi-target

wiggum generate plan.toml --target all
# → VSCode files AND opencode files AND CLAUDE.md + .claude/settings.json
#   AND .cursorrules + .windsurfrules + .github/copilot-instructions.md

Cleaning up

wiggum clean removes generated files for all targets, including the deprecated wiggum-*.md filenames from older wiggum versions. To clean only one target’s files, delete the relevant directory by hand (e.g. rm -rf .opencode).

Custom templates

.wiggum/templates/ overrides still work, with two layouts:

  • Flat (legacy): .wiggum/templates/orchestrator.opencode.md overrides the opencode variant.
  • Subdir (new): .wiggum/templates/opencode/orchestrator.md is also discovered and takes priority over the flat layout. Subdirs map to target names: vscode, opencode.

Custom template names that match the opencode variants:

Subdir layoutFlat layout
.wiggum/templates/vscode/orchestrator.md.wiggum/templates/orchestrator.md
.wiggum/templates/vscode/evaluator.md.wiggum/templates/evaluator.md
.wiggum/templates/vscode/planner.md.wiggum/templates/planner.md
.wiggum/templates/vscode/background_auditor.md.wiggum/templates/background_auditor.md
.wiggum/templates/opencode/orchestrator.md.wiggum/templates/orchestrator_opencode.md
.wiggum/templates/opencode/evaluator.md.wiggum/templates/evaluator_opencode.md
.wiggum/templates/opencode/planner.md.wiggum/templates/planner_opencode.md
.wiggum/templates/opencode/background_auditor.md.wiggum/templates/background_auditor_opencode.md

Note: there is no opencode/implementer.md template override — the opencode target uses a single-file orchestrator with the subagent body embedded inline. The legacy flat name implementer.md is no longer recognized.