Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/okisdev/claude-code-fusion/doctornpx skills add okisdev/claude-code-fusion --skill doctorgit clone --depth 1 https://github.com/okisdev/claude-code-fusionWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/okisdev/claude-code-fusion/doctor)<a href="https://agentmods.dev/skills/okisdev/claude-code-fusion/doctor"><img src="https://agentmods.dev/badge/skills/okisdev/claude-code-fusion/doctor.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00039 | $0.03962 |
| Opus 5 | $0.00019 | $0.01981 |
| Sonnet 5 | $0.00008 | $0.00792 |
| Haiku 4.5 | $0.00004 | $0.00396 |
Grade B, and why
doctor scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
2. Read ~/.claude/settings.json and report the `model` key. It should be an alias, preferably `best[1m]` (Fable when available, latest Opus otherwise, floats to future releases). Flag any dated full model ID as a rot ris How it starts
The opening of the file, as written. The whole thing — 37 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Audit the orchestration setup and report findings as a short checklist with a clear verdict per item.
Environment overrides captured at invocation:
- CLAUDE_CODE_SUBAGENT_MODEL: !
sh -c 'printenv CLAUDE_CODE_SUBAGENT_MODEL || echo "(unset)"' - ANTHROPIC_MODEL: !
sh -c 'printenv ANTHROPIC_MODEL || echo "(unset)"' - ANTHROPIC_DEFAULT_HAIKU_MODEL: !
sh -c 'printenv ANTHROPIC_DEFAULT_HAIKU_MODEL || echo "(unset)"' - ANTHROPIC_DEFAULT_FABLE_MODEL: !
sh -c 'printenv ANTHROPIC_DEFAULT_FABLE_MODEL || echo "(unset)"'
Checks to perform:
- A set CLAUDE_CODE_SUBAGENT_MODEL can silently override every agent model pin (Claude Code behavior as observed on 2.1.x); flag it as a problem unless the user says it is deliberate.
- Read ~/.claude/settings.json and report the
modelkey. It should be an alias, preferablybest[1m](Fable when available, latest Opus otherwise, floats to future releases). Flag any dated full model ID as a rot risk. Also confirm codex@claude-code-fusion, grok@claude-code-fusion, and fusion@claude-code-fusion appear in enabledPlugins. Treat codex@openai-codex and codex@claude-code-fusion being enabled together as an error because both register thecodexnamespace. When Codex is missing, report that ordinary implementation has lost its primary lane. Bounded isolated work may use Grok underburst; work whose load bearing capability is Claude tools or privacy, or that is structurally stranded with a statedclaude-fallback: <reason>header, uses fusion:claude-worker. Recommend installing codex@claude-code-fusion. - Read the frontmatter of every file in ${CLAUDE_PLUGIN_ROOT}/agents/ and report each
model,effort, andmaxTurnsvalue. Alias pins (opus, sonnet, haiku) float to new releases automatically and are healthy. Full model ID pins are rot risks; fusion:trivial-worker's claude-haiku-4-5 pin is deliberate because the haiku alias can be remapped by ANTHROPIC_DEFAULT_HAIKU_MODEL, so a full ID pins the tier to the intended model regardless of that override, but it must be bumped by hand when a newer cheap tier ships. - List ~/.claude/agents/ if it exists. A file whose name matches a plugin agent (deep-reasoner, claude-worker, trivial-worker) registers as a duplicate agent alongside the fusion: namespaced one and confuses auto delegation; flag it as a stale leftover to delete unless the user says it is a deliberate local override.
- Compare the template hash of ~/.claude/rules/orchestration.md against the template hash of ${CLAUDE_PLUGIN_ROOT}/rules/orchestration.md, using the same normalization as rules-sync: replace everything between the
<!-- fusion:model-table:start -->and<!-- fusion:model-table:end -->sentinel lines with the fixed normalized marker before computing SHA-256. Prefernode --input-type=modulewithhashRulesTemplateexported by${CLAUDE_PLUGIN_ROOT}/scripts/lib/rules-template.mjs; a sed or similar comparison that strips only the sentinel region is also acceptable. Missing live rules or a mismatched template hash means the static routing policy is stale; point at /fusion:setup to install or update it. A user selected live model table may differ from the scored canonical table and is healthy when the template hashes match. - Remind the user of the role model: the main Claude session is the only control plane and final judge. Claude workers are native specialists rather than an independent model family, Codex owns ordinary implementation and default deep external review, and Grok keeps the protected
burst,independence,live-web, andlarge-contextroles. The orchestrator, deep reasoning, mechanical, and trivial Claude tiers are roles bound to alias tiers, not to specific models, so same tier releases (for example Sonnet 5 under the sonnet alias) adopt their role with no configuration change. Only a genuinely new tier above or between the existing rungs requires a decision. - Note the recovery moves: Fable is the intended orchestrator, and a main session found on Opus 5 or any lower tier is a fallback state to report (availability, safety classifier, or quota), not a peer configuration; /model best restores the strongest available orchestrator, and the session meanwhile keeps orchestrating under the full rules and narrows nothing. Peer engine models are owned by their own CLIs (~/.grok/config.toml, ~/.codex/config.toml); this setup never pins them.
- Point at /codex:setup and /grok:setup for peer runtime health checks beyond config defaults; peer config defaults themselves are covered in the next step.
- Peer engine defaults: extract the model related keys from ~/.grok/config.toml and the model and model_reasoning_effort keys from ~/.codex/config.toml (never read or print the full files; they sit next to credentials; use a scoped rg query rather than Read on those two files). Report each peer's configured default and flag grok drift when the grok CLI default is absent from the capability table or when that table's recorded lane or scores disagree with the default shown by the CLI. Run
node "${CLAUDE_PLUGIN_ROOT}/scripts/fusion-config.mjs" auditand report its Codex listing section as one checklist item. It reads only ~/.codex/models_cache.json (or FUSION_CODEX_MODELS_CACHE) and never refreshes it or invokes the Codex binary. Flag the configured-but-absent IDs and unconfigured gpt-* newcomers it reports, including the listing mtime. Treatlisting unavailableas a warning without aborting the doctor run. /fusion:config is the write path for changing these scores; this audit never changes model-routing.json. When the capability table has no scored models at all, recommend /fusion:config propose so routing stops relying on the qualitative lane descriptions alone. - Audit the installed Codex slash-command surface against the foreground invariant. Glob
~/.claude/plugins/cache/claude-code-fusion/codex/*/skills/*/SKILL.mdand~/.claude/plugins/cache/claude-code-fusion/codex/*/agents/, then inspect the task, rescue, review, adversarial-review, and codex-rescue instructions. Task and review calls must stay foreground regardless of complexity, expected duration, review size, or model unless the incoming user request explicitly supplied--background; the rescue agent's companion Bash call must use the 10 minute tool timeout. A package that cannot fit the cap must be split or routed elsewhere. Fusion orchestration gives every detached job it creates one same turn collection attempt capped at 540000ms; a timeout must remain explicitly uncollected with the job id and result command. Direct Codex slash command instructions inspect through status and collect through result; Fusion's monitor is notification only. Confirm that task and rescue expose opt in--web, require--write --networkfor sandbox network access, and leave both settings disabled when absent. Flag any instruction that can detach implicitly or accepts a foreground receipt as a result. - Check ~/.claude/plugins/data/codex-claude-code-fusion/state, the canonical root for new Codex jobs. If it does not exist, report no recorded Codex job history yet or an uninitialized Codex state path, not necessarily an error.
- In the live ~/.claude/rules/orchestration.md, collect every concrete model ID named in routing prose outside the
<!-- fusion:model-table:start -->and<!-- fusion:model-table:end -->sentinel region, then compare them with the model IDs in the live capability table. Flag every prose ID without a table row as an orphan. - Probe the installed Codex plugin cache's slash-command surface by globbing
~/.claude/plugins/cache/claude-code-fusion/codex/*/skills/*/SKILL.mdfor the/codex:task,/codex:rescue,/codex:review,/codex:adversarial-review,/codex:status,/codex:result,/codex:cancel, and/codex:setupcommand files and~/.claude/plugins/cache/claude-code-fusion/codex/*/agents/for the codex-rescue agent. Report any absent surface as a degraded-capability warning, not an error. - Audit the installed Grok runtime and instructions against the actual headless surface, not version assumptions. Consult, write, and review must all use
--sandbox strict; a workspace downgrade is an error. Every managed run requires--prompt-file,--output-format,--sandbox,--tools,--disallowed-tools,--deny,--max-turns, and--no-auto-update; consult also requires--permission-modeand--allow, no-web requires--disable-web-search, write requires--always-approve, review requires--json-schema, ordinary calls require--no-wait-for-background. Missing installation, version, or applicable capability readiness is failure kindsetup; recommend upgrading or repairing the CLI and rerunning/grok:setup, never retrying the unchanged task. Consult tools are read, grep, and list plus optional direct web tools. Write tools areread_file,grep,list_dir,search_replace, andrun_terminal_cmd, with Agent always denied; upstream 1.0.0's OpenCode-compatiblewritetool id stays outside the fixed allowlist, andsearch_replacecreates files. Every mode deniessearch_tool,use_tool,ask_user_question, and MCP tools, while ordinary calls also deny Agent. Treat command-pattern denies for common direct grok, claude, and codex invocations as best effort because absolute paths, aliases or functions, and indirect scripts can bypass them. A hard nested-execution boundary requires removingrun_terminal_cmdor an OS-level executable or network policy. Builder tracing starts only after stdin is consumed, so it cannot prove policy before prompt delivery or every side effect; fallback or unmatched warnings must terminate early, and a successful close without positivetools allowlist appliedevidence is an error. Confirm the following behavior. The child sets all eighteenGROK_CLAUDE_*_ENABLED,GROK_CURSOR_*_ENABLED, andGROK_CODEX_*_ENABLEDbridge variables to false; upstream currently consumes the six Claude and six Cursor cells plus the Codex sessions cell and reserves the other five Codex cells, and the child also pinsGROK_MANAGED_MCPS_ENABLED=falsebecause that variable has highest precedence over[managed_mcps]in~/.grok/config.tomland remote settings. Audit the companion's deterministic child environment for 1.0.0:GROK_WEB_FETCHis pinned by web mode,GROK_AUTO_WAKEandGROK_MANAGED_MCP_GATEWAY_TOOLS_ENABLEDare pinned false, andGROK_TEST_VERSION,GROK_SANDBOX,GROK_LEADER_SOCKET,GROK_SUBAGENTS_MAX_DEPTH,GROK_WEB_FETCH_PROXY, andGROK_WEB_FETCH_ALLOW_LOCALare removed. Confirm that it removes inheritedCLAUDE_CODE_*,CLAUDE_PLUGIN_*,GROK_COMPANION_*, and_GROK_CLAUDE_MARKER_OVERRIDE, broadly scrubs unrelated secrets while preserving xAI authentication, and passes--no-auto-update. ConfirmGROK_MEMORY=0is forced by default, only a direct ordinary task with explicit--memoryreceivesGROK_MEMORY=1, and Fusion routed briefs, review, and stop gate cannot enable it. Report Grok hard version startup requirements (introduced in 0.2.112, verified through 1.0.3; exit 1 regardless of--no-auto-update, classifiedsetup) as the residual execution and network boundary. - Audit native Grok configuration as a user-controlled trust boundary. The
search_tool,use_tool, and MCP denies block model invocation but do not prove that native MCP servers, plugins, or hooks under~/.grokwere not started during agent construction or had no side effects; those bridge variables disable Codex compatibility imports, not native Grok configuration. Rungrok inspect --jsonand review the reportedpermissions,hooks,plugins,agents,mcpServers, andexternalCompatsurfaces as the native configuration exposure check that the SECURITY threat model otherwise cannot verify. Use scopedrgqueries that report configured surface names without printing credentials or full configuration, and label any native startup surface as an explicit trust-boundary notice rather than claiming MCP side effects are disabled. The entire Grok home is read-write under strict, and the sandbox permits consultread_fileto reach~/.grok/auth.json, config, and sessions while write terminal commands may receive preserved xAI authentication variables. Confirm the companion's best-effort Read denies coverauth.json,mcp_credentials.json,config.toml,sessions,memory,logs, anddebugwith both absolute paths and standard**/.grokpatterns. Report that raw path variants, symbolic links, and shell or indirect scripts can bypass those tool-level rules, so environment scrubbing and pattern denies do not isolate filesystem credentials. When memory is explicitly enabled, upstream's internal first-turn memory injection is not a modelread_filecall and can place selected memory in the model context sent to xAI despite those Read denies. Narrower exposure requires a dedicated sandbox profile, an isolated Grok home, an authentication broker, or upstream path-level authorization. - Audit Grok sandbox, transport, output, metrics, session, worktree, collection, continuity, history, and ACP evidence. Strict's upstream
system_readroots include/varand/tmpon Linux, and/privateplus the entire~/Libraryon macOS, so shared temporary content and substantial user application configuration and caches may be readable. Its write roots include the workspace and entire Grok home, always include/tmpand/var/tmp, and on macOS also include/private/tmp,/private/var/tmp, and all of/private/var/folders; the unique privateTMPDIRis preferred and handshake-verified, not the only writable temporary surface. Before prompt delivery, the adapter must validate a newProfileAppliedevent from the incremental sharedsandbox-events.jsonldelta that contains this run's private path and matches the canonical workspace, strict profile, enforced state, and requestedrestrict_network: trueconfiguration. Upstream events have no run id or pid, so unrelatedProfileAppliedandApplyFailedrecords are not attributable to this run; failure events are auxiliary only. A matching owned-stderr warning, handshake timeout, missing or malformed matching evidence, shared-log rotation or disappearance, or matching field mismatch fails closed. The matching event proves configuration application, not actual network isolation: Linux uses seccomp, while macOS network blocking is a no-op and write shells may reach the network. Every prompt uses--prompt-file /dev/stdin. Stdout uses a 0600 file unlinked immediately after open and parsed through its descriptor under the total limit. An upstreammodel_usagerow contains only input, output, cache-read, and model-call counts plus optional cost, never synthetic reasoning or total tokens.usage_is_incompletemakes reported values observed lower bounds and both job-total token and cost coverage incomplete. Exact cost otherwise requires a positive complete USD and tick pair, with ticks authoritative at 10000000000 per USD. Short-cwd metadata uses only the exact encoded path; long-cwd lookup requires an exact decoded or.cwdmatch and never selects a sole cross-cwd candidate. Review requires one--json-schemacall; an error or explicit null structured result fails, and only a completely absent field permits local text parsing. Continuity must default tomanual; optionalclaude-sessionaffinity may select only a completed ordinary task from the same Claude session, exact resolved cwd, mode, strict profile, and memory boundary. Fusion routed briefs must not receive automatic affinity, while explicit resume remains limited to compatible terminal task records./grok:historymust expose only the safe companion metadata projection, default to the current workspace, and never read native session contents, briefs, results, or logs. Treat native sessions, companion history, and cross-session memory as three separate stores. Native session cleanup defaults to 30 days and accepts only a positive[storage] cleanup_ttl_days, with0falling back to 30; the companion ledger has no promised automatic garbage collection. Fusion creates real worktrees. Upstream ships ACP today, but the companion has not adopted it and continues per-call invocation; any future companion adoption must pool by canonical cwd plus sandbox profile withgrok --cwd <canonical> --sandbox <profile> agent --no-leader stdio. A collector timeout, dead job, or status error reports the Fusion task id, peer job id,uncollected, and exact result command. Successful Grok collection remains unverified until/fusion:stats --record <fusion-task-id>=<accepted|rejected>records the main-loop judgment. - Run
codex --versionandgrok --versionand compare them against the verified contract versions in${CLAUDE_PLUGIN_ROOT}/verified-versions.json. An installed version older than the verified one is a compatibility warning. A newer one is an informational drift notice that the companion contracts were verified against the older release and behavior may have moved. Neither is an error by itself because a companion call failing with failure kindsetupis the enforcement signal. Multiple Codex generations sharing oneCODEX_HOME(for example an IDE or desktop app bundling a newer Codex) are worth flagging when the versions straddle the verified release.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 37 lines · 39 tokens per session scan B c523e7aed304
doctor is a skill published in the GitHub repository okisdev/claude-code-fusion (3 stars, last pushed 16d ago), licensed MIT. It adds 39 tokens to every session and 3,962 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
diagram-builder
Use when the user wants to build or extend a diagram deck of nested sections and components authored in plain YAML — an architecture map, a timeline diagram, a planner board, a process-flow diagram, a slide-style presentation, a side-by-side comparison, or a mind-map. Not for charts, plots, or numeric/data…
gaia-release
Use when testing, validating, or publishing Gaia releases -- "install local", "pre-release", "dry-run", "release", RC, stable, plugin dry-run.
gaia-planner
Use when planning features or decomposing work into tasks from a brief.
gmail-policy
Use when managing Gmail messages, labels, or email workflows via gws CLI or Gmail MCP tools.
brief-spec
Use when the user wants to create a brief or spec for a feature before planning.
skill-creation
Use when creating a new skill, improving an existing skill, or deciding what a skill should contain and how it should be structured.