Skip to content

Run skills on OpenCode, Codex, and Hermes Agent (verified live)#31

Merged
elementalsouls merged 1 commit into
mainfrom
add-multi-harness-install
Jun 7, 2026
Merged

Run skills on OpenCode, Codex, and Hermes Agent (verified live)#31
elementalsouls merged 1 commit into
mainfrom
add-multi-harness-install

Conversation

@elementalsouls

Copy link
Copy Markdown
Owner

Makes the 71 skills run on OpenCode, Codex, and Hermes Agent from one source — not just Claude Code. Verified end-to-end on each (skills load and live Burp MCP connects), per a strict "test every harness + MCP" bar.

Verified on this machine

Harness Skills Burp MCP
OpenCode 1.15.11 ✅ 48 hunt-* loaded (debug logs) opencode mcp listburp connected
Hermes v0.14.0 ✅ enabled in hermes skills list hermes mcp test burp24 tools
Codex 0.137.0 ✅ 0 skill-load errors ✅ session mcp_servers="burp, codex_apps", model OK

What's added

  • install.sh flags: --agents (→ ~/.agents/skills, read by Codex + OpenCode), --hermes (→ ~/.hermes/skills), --all, --burp-mcp. Default behavior unchanged. (Also fixed a set -e footgun that would've aborted the default install.)
  • scripts/setup_harness_mcp.py — translates your existing Burp MCP (from ~/.claude.json) into OpenCode JSON / Codex TOML / Hermes YAML, backing up each first. --dry-run supported.
  • docs/multi-harness.md — compatibility matrix, per-harness install, MCP snippets, caveats.

Two real bugs the live Codex test caught (Codex enforces strict YAML + a 1024-char description cap)

  • hunt-ntlm-info had an unquoted `WWW-Authenticate: NTLM` in its description — the : broke strict YAML. Claude/OpenCode/Hermes tolerated it; Codex rejected it. Fixed (quoted).
  • 3 aggregator skills exceed 1024 chars → install.sh --agents now auto-truncates them in the ~/.agents (Codex) copy only; ~/.claude/~/.hermes keep full descriptions (incl. non-English triggers). Repo descriptions untouched.
  • lint_skills.py hardened: YAML-safety check (catches the unquoted-colon class) + Codex-limit note.

Boundary (by design)

Slash commands (/hunt…), the plugin marketplace, and hunt-dispatch are Claude-Code-only — other harnesses get the skill knowledge + Burp MCP, not the /hunt engine.

🤖 Generated with Claude Code

The 71 skills are Agent Skills, so the knowledge runs beyond Claude Code.
VERIFIED END-TO-END on this machine (skills load + live Burp MCP connects):
  - OpenCode 1.15.11 — 48 hunt-* loaded (debug logs); `opencode mcp list` → burp connected
  - Hermes v0.14.0  — skills enabled in `hermes skills list`; `hermes mcp test burp` → 24 tools
  - Codex 0.137.0   — 0 skill-load errors; session mcp_servers="burp,codex_apps"; model OK

install.sh:
- --agents → ~/.agents/skills (read natively by Codex + OpenCode)
- --hermes → ~/.hermes/skills (Hermes); --all → Claude + agents + hermes
- --burp-mcp → translate the existing Burp MCP (from ~/.claude.json) into each harness
  via scripts/setup_harness_mcp.py (opt-in; backs up configs first)
- Auto-truncates descriptions >1024 chars in the ~/.agents (Codex) copy ONLY — Codex
  hard-rejects longer ones; ~/.claude and ~/.hermes keep full descriptions.
- Fixed a set -e footgun (`[ ] && cmd` → if/fi) that aborted the default install.

scripts/setup_harness_mcp.py (new): writes OpenCode JSON (verified: burp connected),
Codex TOML (verified: mcp get burp parses + proxy launches), and Hermes YAML
(verified: mcp test burp → 24 tools) — all backed up first; --dry-run supported.

Two real bugs surfaced by the live Codex test (strict YAML + 1024 limit) and fixed:
- skills/hunt-ntlm-info: quoted the description (unquoted `WWW-Authenticate: NTLM`
  broke strict YAML — Codex rejected it; lenient parsers didn't).
- lint_skills.py: added a YAML-safety check (catches that unquoted-colon class) and
  noted the Codex 1024 limit in the over-length message.

Docs: new docs/multi-harness.md (matrix + per-harness install + MCP snippets +
the OpenCode dual-path / Codex-strictness caveats); README + INSTALL sections
(also fixed stale "51 skills" + old backup wording in INSTALL).

Claude-Code-only (do not port, by design): 15 slash commands, plugin marketplace,
hunt-dispatch subagent routing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@elementalsouls elementalsouls merged commit d01e786 into main Jun 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants