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
| Target | Stable identifier | Agent file(s) | Dispatch mechanism |
|---|---|---|---|
| VSCode (default) | vscode | .vscode/orchestrator.prompt.md (and three siblings) | GitHub Copilot runSubagent tool |
| opencode | opencode | .opencode/agents/orchestrator.md (and three siblings) + ORCHESTRATOR.md | opencode task tool with subagent_type: "general" and inline subagent body |
| Claude | claude | CLAUDE.md (project memory) + .claude/settings.json (hooks) | Claude Code reads both files on every session; PreCompact hook blocks compaction mid-task |
| agent-rules | agent-rules | .cursorrules + .windsurfrules + .github/copilot-instructions.md | The 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
vscodetarget: it targets GitHub Copilot Chat specifically (the#tool:agent/runSubagenttool). 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 theagent-rulestarget 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
- The
--targetCLI flag (if provided) overrides everything. - Otherwise, the plan’s
[targets]section. - Otherwise, the default (
vscodeonly) 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].modelfield 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_modelis passed as themodel:argument on eachrunSubagentcall. - 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-ingeneralsubagent via thetasktool withsubagent_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 thepromptargument when invokingtask(subagent_type="general", prompt=<SUBAGENT_PROMPT>). There is no separatewiggum-implementeragent 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-ingeneralsubagent, which inherits the dispatcher’s permissions. - Evaluator agent is generated only when
[evaluator]is configured. - Plan TOML path: the orchestrator prompt and
ORCHESTRATOR.mdreference 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:
PreCompactblocks context compression while any[~]task exists inPROGRESS.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
runSubagentor opencodetaskprotocols — 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
vscodeandopencode, 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.mdas repository-level instructions — this works in VSCode + Copilot even when thevscodetarget 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 trackerIMPLEMENTATION_PLAN.md— the high-level planAGENTS.md— tool-agnostic agent instructionsfeatures.json— structured task/criteria registrytasks/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.mdoverrides the opencode variant. - Subdir (new):
.wiggum/templates/opencode/orchestrator.mdis 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 layout | Flat 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.