> ## Documentation Index
> Fetch the complete documentation index at: https://smithers-feat-claude-workflow-mirror.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude Code

> Run Smithers from Anthropic's Claude Code. Install the skill, register the MCP server, or drop in the Claude Code plugin that bundles both.

[Claude Code](https://code.claude.com/docs) extends through **skills**, **MCP
servers**, and **plugins**. Smithers ships into all three. The fastest path is:

```bash theme={null}
bunx smithers-orchestrator skills add --agent claude-code
bunx smithers-orchestrator mcp add --agent claude-code
```

That installs the Smithers skill set under `~/.claude/skills/` and registers the
MCP server in `~/.claude.json`. Restart Claude Code (or run `/mcp`) and it can
list, run, watch, and approve workflows.

## Install the skill

The onboarding skill teaches Claude the Smithers mental model and ships the full
docs bundle next to it:

```bash theme={null}
bunx smithers-orchestrator skills add --agent claude-code
```

`init` runs this automatically; you only need it explicitly to re-install or
update the skill. For project-scoped skills, pass `--no-global` to write to
`.claude/skills/` in the repo instead.

Claude loads a skill when its `description` matches the request, so once it's
installed you just ask for the outcome, *"orchestrate an agent to add rate
limiting and keep iterating until the tests pass"*, and Claude reaches for
Smithers itself.

## Register the MCP server

`mcp add` writes the registration for you. To do it by hand, add a server with
the Claude CLI:

```bash theme={null}
claude mcp add --transport stdio --scope user smithers \
  -- bunx smithers-orchestrator --mcp
```

Or commit a project-scoped `.mcp.json` so the whole team gets it:

```json theme={null}
{
  "mcpServers": {
    "smithers": {
      "command": "bunx",
      "args": ["smithers-orchestrator", "--mcp"]
    }
  }
}
```

The server exposes the semantic tool surface: `list_workflows`, `run_workflow`,
`watch_run`, `list_pending_approvals`, `resolve_approval`, `explain_run`, and
more. See the [MCP Server reference](/integrations/mcp-server) for every tool.

## Claude Code plugin

A plugin bundles the skill and MCP server behind a single install, namespaced as
`smithers:`. The manifest lives at `.claude-plugin/plugin.json`:

```json theme={null}
{
  "name": "smithers",
  "version": "0.1.0",
  "description": "Durable control plane for long-running coding agents",
  "skills": ["skills/smithers"],
  "mcpServers": {
    "smithers": { "command": "bunx", "args": ["smithers-orchestrator", "--mcp"] }
  }
}
```

Install from a marketplace and reload without restarting:

```
/plugin marketplace add smithersai/smithers
/plugin install smithers@smithers
/reload-plugins
```

See the worked examples: [plugin (skill)](/examples/claude-plugin-skill) and
[plugin (orchestrator)](/examples/claude-plugin-orchestrator).

## Standing instructions

Add a line to `CLAUDE.md` so Claude remembers Smithers is the tool for durable,
multi-step work:

```md theme={null}
## Orchestration
For multi-step, long-running, or human-in-the-loop agent work, use Smithers:
`bunx smithers-orchestrator starters` lists ready-made workflows.
```

## Smithers runs Claude Code too

In the other direction, Smithers spawns Claude Code as a worker inside a
workflow via `ClaudeCodeAgent`, with native session hijack:

```tsx theme={null}
import { ClaudeCodeAgent } from "smithers-orchestrator";

const claude = new ClaudeCodeAgent({ model: "claude-fable-5" });
```

By default this bills your Claude Pro/Max subscription: `ClaudeCodeAgent` clears
`ANTHROPIC_API_KEY` from the spawned process so the CLI uses subscription auth,
no API key required. To run multiple subscriptions side by side, set one up with
`CLAUDE_CONFIG_DIR=<dir> claude` plus `/login`, then pass `configDir: "<dir>"`.
Passing `apiKey` switches that invocation to Anthropic API billing.

You can also call it once for a typed completion with no graph:

```ts theme={null}
const { output } = await claude.generate({
  prompt: 'Reply with JSON: {"ok": true}',
  outputSchema: z.object({ ok: z.boolean() }),
  timeout: { totalMs: 60_000, idleMs: 30_000 },
});
```

See [CLI Agents → Claude Code](/integrations/cli-agents#claude-code-cli-agent)
and [Subscription-mode structured completion](/integrations/cli-agents#subscription-mode-structured-completion).
