Files
opc-agents/README.md
salva 72f02387eb feat: multi-target (opencode + claude) with per-target parked sources
- opencode and claude use different agent frontmatter formats (permission vs tools)
  so opc-agents keeps a SEPARATE parked source per target.
- New env vars: OPC_AGENTS_CLAUDE_PARKED, OPC_AGENTS_CLAUDE_ACTIVE,
  OPC_AGENTS_TARGETS. Existing OPC_AGENTS_PARKED still works (opencode side).
- enable/disable/disable-all accept --target {opencode|claude|both} (default both).
- Reindex scans both parked sources + both active dirs; INDEX exposes
  parked.{opencode,claude} (whether source available) and active list.
- INDEX.md table includes Parked/Active columns per agent.
- Default parked locations moved to personas/agents-{opencode,claude}-archive
  with backward-compat symlink at ~/Documents/opencode-agents-parked.
2026-04-30 23:47:05 +03:00

4.6 KiB

opc-agents

Multi-target agent manager for opencode + Claude Code. Per-target parked sources (different formats), shared CLI surface. Companion to opc-skills.

Why

opencode injects every agent's frontmatter into the calling agent's tool registry. With 100+ agents the registry alone burns ~280K tokens of context before the user types a prompt. Park the ones you don't need this week.

opencode and Claude Code use different agent frontmatter formats (opencode: permission: { … }, claude: tools: Read, Glob, …), so opc-agents keeps a separate parked source per target.

Install

ln -s ~/Documents/opc-agents/bin/opc-agents ~/.local/bin/opc-agents

Ensure ~/.local/bin is on your PATH.

Layout it expects

~/Documents/personas/agents-opencode-archive/   # parked, opencode format
  <name>.md       (frontmatter: mode, permission, …)
  INDEX.json + INDEX.md (canonical index — also tracks claude side)

~/Documents/personas/agents-claude-archive/     # parked, claude format
  <name>.md       (frontmatter: tools: Read, Glob, …)

~/.config/opencode/agents/                      # active, opencode target
~/.claude/agents/                               # active, claude target

(~/Documents/opencode-agents-parked is symlinked to personas/agents-opencode-archive for backward compat.)

Override via env:

  • OPC_AGENTS_PARKED — opencode parked source (default personas/agents-opencode-archive)
  • OPC_AGENTS_CLAUDE_PARKED — claude parked source (default personas/agents-claude-archive)
  • OPC_AGENTS_ACTIVE — opencode active dir (default ~/.config/opencode/agents)
  • OPC_AGENTS_CLAUDE_ACTIVE — claude active dir (default ~/.claude/agents)
  • OPC_AGENTS_TARGETS — comma-separated default targets (default opencode,claude)

Targets

enable, disable, and disable-all accept --target / -t (opencode, claude, both/all). Default is opencode,claude. An agent missing in a target's parked source is skipped with a clear message — there is no automatic format conversion.

Commands

Inspection

status counts of active vs parked + primary/subagent breakdown
list {active|parked|all} list agent names
categories / cats prefix-based base-persona counts (PARKED)
variants / vars suffix-based variant counts (PARKED) — eg. salva, iran

Single-agent operations

enable <name> enable single agent (copy parked → active)
disable <name> disable single agent (remove from active; keep parked)
disable-all [-y|--yes] [--keep-primary] disable every active agent (asks for confirmation)

Bulk by axis

enable-category <prefix> / disable-category <prefix> fzf multi-pick by base persona prefix (eg. frodo, marshal)
enable-variant <suffix> / disable-variant <suffix> bulk by variant suffix (eg. salva, iran, russian-doctrine)
enable-domain <domain> / disable-domain <domain> bulk by Domain: value in description (live scan)
pick / disable-pick fzf: pick category → multi-select
search [query] / disable-search fzf fuzzy search across name + mode + domain + variant + description
reindex rebuild INDEX.json / INDEX.md (extracts persona/variant/domain from frontmatter)

fzf is required for the interactive pickers; jq for the search variants; python3 for reindex.

Notes

  • Each agent is a single <name>.md file with YAML frontmatter (typically description, mode, temperature, …).
  • disable* commands never delete data — they remove the active copy and keep (or restore) the parked copy. Re-enable with opc-agents enable <name>.
  • --keep-primary on disable-all skips agents with mode: primary (those are loaded as top-level personas in opencode).
  • Common agent prefixes seen in personas: frodo-, marshal-, sentinel-, bastion-, neo-, oracle-, warden-, polyglot-, etc.

Differences from opc-skills

opc-skills opc-agents
Unit directory containing SKILL.md single <name>.md file
Frontmatter fields used name, description description, mode
Shared refs sync yes (_platform-mapping.md) n/a
disable-all flags -y -y, --keep-primary
Status breakdown active/parked + primary/subagent counts