Agent emission was only writing general.json for each persona (29 files),
skipping 82 variants. Non-general variants now install as:
<codename>-<variant>.md with mode: subagent + hidden: true
Key changes to install_opencode agent-emission half:
- Loop every *.json in each persona dir, not just general.json
- Enforce opencode identifier regex ^[a-z0-9]+(-[a-z0-9]+)*$ with sanitizer
- Non-general variants are always subagent (hidden:true is undefined on
mode:primary per opencode docs); permission tier still follows domain
- Add permission.task block gating subagent dispatch
- Wrap description in double quotes with backslash/quote escaping so any
special chars (&, :, quotes) can't corrupt the YAML frontmatter
- Variant identity surfaced in both description ("Variant: x") and body
header "[x]" so prompts self-identify
Stale-agent cleanup via sidecar manifest (.personas-manifest.json):
prior emission list is tracked so re-runs prune removed variants without
touching any hand-authored agents in agents/.
Result: 29 -> 111 agents installed, 9 primary + 102 subagent, all
picker-clean (Tab cycles 9 canonical offensive personas; variants reach
via @codename-variant or task dispatch).
Skills-install half intentionally untouched — direct-to-active remains
the correct default for users who don't layer opc-skills on top.
- install_opencode: deploys 29 personas as agents + 1011 skills to
~/.config/opencode/{agents,skills}/. Uses OpenCode's markdown+YAML
agent format (mode/color/permission) and SKILL.md format.
- Topic filter with sensible defaults (drops marketing/biz ~514 skills).
CLI: --opencode-topics security-offensive,coding-backend,...
- Clone of swisskyrepo/InternalAllTheThings (168 MD, 1.7MB) added to
_shared/ as a reference trove for AD attack paths, ADCS ESC1-15,
Kerberos delegation, NTLM relay/coerce, lateral movement, persistence.
- NEO redteam + VORTEX cloud-ad personas reference the new KB with
MITRE ATT&CK TTP mapping pointers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously wrote .yml files to ~/.claude/agents/ which Claude Code ignores —
only native .md with YAML frontmatter (name/description/tools/color) appears
in the subagent picker. Now 29 personas are spawnable via
Agent(subagent_type=<codename>) alongside native agents.
Also:
- Tool scoping per domain: offensive/dev get Bash+Write, intel/analysis
stay read-only (Read, Glob, Grep, WebFetch, WebSearch)
- Slash command naming normalized: /persona-neo-general.prompt
→ /persona-neo (general) + /persona-neo-redteam (variants)
- Legacy .yml agents purged on each install
- Domain-based color palette for /agents picker grouping
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
install_claude() now creates both:
- 111 slash commands in ~/.claude/commands/ (persona-neo-general etc.)
- 29 agent .yml files in ~/.claude/agents/ (visible in /agents menu)
Each agent includes Soul, Methodology, Behavior sections + mapped skills.
Agents appear alongside GSD agents in the /agents picker.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hidden dot-prefix removed for ergonomic shell navigation.
Still gitignored — build output is user-specific.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>