skills/setup/SKILL.md
This skill should be used when the user says "bopen setup", "setup ui", "harness install", "audit my setup", "install everything", "unified installer", "setup plan", "/bopen-setup", or wants a single view of which bOpen plugins, CLIs, env keys, third-party skills, agents, and hooks are installed across their agent harness. It audits live state, lets the user select what to fix, and emits a runtime-tailored instruction plan — it never installs anything itself. For hooks-only configuration (enabling/disabling a single hook without the full harness view) the hook-manager skill remains canonical; this skill's Overview and per-plugin tabs point there for that narrower job.
npx skillsauth add b-open-io/prompts setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A cross-plugin installer that shows the true state of a user's agent harness — plugins, CLIs, env keys, third-party skills, agents, hooks — and turns selections into a plan the parent agent executes. The fallback installer never installs, writes config, or mutates anything; the playground may run a pack's missing installs only after the user clicks Install missing.
setup/manifest.json
(declarative dependency list) and re-runs each check live: CLI version
commands, env-key presence, third-party skill paths, codex agent delivery,
hook enable/disable state. Plugins with no manifest still show install
state, just without a dependency breakdown.--pack, reads either a
ToC (playbooks[].skills) or the shipped pack.json, computes the full
plugin closure, and shows required vs. installed with exact commands for
Claude Code, Codex, and Grok Build.The zero-install fallback only emits prose and copyable commands. The playground's pack step can execute its validated manifest entries on explicit user action; it constructs argv from validated plugin, marketplace, and source fields rather than executing manifest text through a shell.
From the installed plugin root — two paths, identical API contracts:
Playground (preferred — richer UI, shadcn + dither-kit):
bun skills/setup/scripts/playground_server.ts --runtime <claude|codex|grok|opencode|hermes|generic> [--pack <toc.json|pack.json>]
A buildable Next.js app on port 7788; the launcher installs and builds on first run (needs network once), then starts instantly.
Agent Master + named local interfaces:
portless agent-master bun skills/setup/scripts/playground_server.ts --runtime <claude|codex|grok|opencode|hermes|generic> --agent-master
This is the desktop-shell entrypoint. Portless supplies the app port and exposes
the configurator at https://agent-master.localhost. The configurator also
serves the origin-restricted Agent Master broker API used by bopen.ai to detect
the local service and launch allowlisted skill interfaces. Install Portless
globally (npm install -g portless); do not add it to the plugin dependencies.
Zero-install fallback (single file, works offline):
bun skills/setup/scripts/server.ts --runtime <claude|codex|grok|opencode|hermes|generic> [--pack <toc.json|pack.json>] [--port 7788]
Pass the runtime you already know you're running as — the agent invoking this
skill almost always knows (Claude Code sets CLAUDECODE, Codex sets
CODEX_SANDBOX/CODEX_HOME, etc.). The detector cross-checks that claim
against its own signals and flags a mismatch rather than silently trusting or
overriding it. Default port is 7788; the server binds 127.0.0.1 only.
Open the printed URL — it serves the UI and a /api/state endpoint that
re-runs every check on load and on Refresh.
Install state is never persisted anywhere. Every page load and every Refresh click re-runs all checks from scratch (~1-2s) — there is no cache to go stale, no database row to drift from reality. The manifest itself is a versioned file shipped inside the plugin, so it updates exactly when the plugin updates; there is nothing to keep in sync by hand. The single exception is the marketplace catalog fetch (used to compare installed vs. latest plugin versions), which caches for the server process's lifetime and shows its own "fetched N minutes ago" stamp with an independent refresh.
If the marketplace is unreachable, that column shows "unavailable" — local detection still works. Never fabricate a version number to fill the gap.
| Runtime | Mechanism | Agent delivery | Detection signal |
|---|---|---|---|
| Claude Code | claude plugin install x@marketplace | bundled with plugin | CLAUDECODE env |
| Codex CLI | codex plugin add + marketplace | codex-agent-setup scripts | Codex session env/paths |
| OpenCode | reads .claude/skills/ + Claude Code agent .md natively | native parse of CC agent files | $OPENCODE / $AGENT env, opencode.json |
| Grok Build | zero-config Claude Code compat (marketplaces, plugins, skills, agents, hooks, CLAUDE.md) | native (CC compat) | ~/.grok/config.toml + grok on PATH |
| Hermes | SKILL.md supported but installs to ~/.hermes/skills/, never the repo tree | not deliverable — no CC agent-file parsing | hermes on PATH + ~/.hermes/ present |
| Pi / unknown | no skill-discovery mechanism | n/a | none — generic fallback |
For OpenCode and Grok Build the plan mostly verifies discovery rather than
installing anything new (Grok: grok inspect shows exactly what it found).
Hermes gets its own dialect since it can't consume agent .md files and
caches skill content as injected user messages — the plan calls that out
rather than assuming parity. Unrecognized runtimes get the generic tier:
portable npx skills add-style instructions only, no runtime-specific agent
or hook wiring.
The setup plan is a self-contained instruction prompt, not a script — it lists
ordered steps (plugins → agents → CLIs → env → third-party skills → hooks
config → skill setup scripts) with commands and verification in the active
runtime's dialect. Paste the full prompt into any agent without supplying a
repository checkout, machine-specific path, or prior conversation.
Hooks-config changes in the prompt are a special case: writing
hooks-config.json is ask-tier (per hook-manager's guard semantics), so the
executing agent must confirm with the user before writing it — the plan says
this explicitly rather than assuming silent consent.
Skill(bopen-tools:hook-manager) directly. It reads the same
hooks/manifest.json and writes the same hooks-config.json; this skill's
Hooks tab is a visual front end for the same state, not a replacement.codex-agent-setup's own setup.sh is the
canonical mechanism; the plan invokes it verbatim rather than reimplementing
agent copying.gemskills:setup,
sigma-auth:setup, codex:setup) → the plan references
Skill(<plugin>:setup) rather than duplicating that plugin's logic.x-tweet-search, npm-publish,
statusline-setup, persona) → listed in each plugin's manifest as
skillSetupScripts; the plan tells the agent when to run them, it doesn't
run them itself.This skill fronts existing setup mechanisms across every bOpen plugin — it never replaces one.
tools
This skill should be used when a Claude Code session needs to keep working after Anthropic usage runs out, or when the user asks to run the Claude Code harness on GPT-5.6 Sol. Trigger phrases include "my Anthropic usage ran out", "I'm out of Claude usage", "usage limit reached, what now", "keep working on another model", "run Claude Code on GPT-5.6 Sol", "use GPT-5.6 Sol as the model", "set up claudex", "claudex isn't working", "route the harness through CLIProxyAPI", or "bill against my ChatGPT/Codex subscription". It stands up a local proxy so the Claude Code CLI runs on OpenAI's Codex backend as an escape hatch, and diagnoses that setup when it drifts. macOS + Homebrew.
testing
This skill should be used when the user asks to "open Visual Wayfinder", "answer a Wayfinder ticket visually", "turn this decision into a configurator", "show Wayfinder choices as a dashboard", "prototype the Wayfinder questionnaire", or wants interactive choice cards, tradeoff controls, rankings, ranges, toggles, and consequence previews for one active Wayfinder decision. It wraps the Wayfinder skill and JSON Render; it never replaces the tracker or resolves more than the active decision.
development
This skill should be used when the user asks to "make a visual proposal", "write this up so I can share it", "present these options visually", "diagram the trade-offs", "turn this plan into something reviewable", or requests a shareable design pitch, architecture proposal, RFC, options comparison, or visual roadmap for work that has not been built. It produces one self-contained, theme-aware HTML page led by grounded diagrams. Use visual-review instead for completed code changes; do not use this skill for internal task tracking.
tools
This skill should be used when the user asks to "add plugin settings", "make a plugin configurable", "store per-project plugin configuration", "use settings.local.json", "create a plugin state file", "expose skill settings in Agent Master", or "add a skill interface". Distinguishes official Claude Code settings from project-owned configuration and documents bOpen Agent Master skill interface discovery.