integrations/claude-plugin/README.md

Clankie Claude Code plugin

Clankie's operator seat as a Claude Code plugin (ADR 0152). Sit in Claude Code on your own plan and you are talking to Clankie: his identity, the owner persona, his tools over MCP, the newest memory card on every turn, and his skills. The service keeps running his body, Discord, voice, and play.

Like the herdr plugin, this carries only what a plugin can uniquely declare. Everything else lives in the service and the clankie launcher.

What the plugin carries

PieceFileWhat it does
Output style Clankieoutput-styles/clankie.mdHis identity in place of the coding assistant's; forced on while the plugin is enabled. Generated from instructions.md.
SessionStart hookhooks/hooks.jsonclankie prompt --lane operator --sections persona,reach,address,model: the owner persona, reach, address, model card
UserPromptSubmit hookhooks/hooks.jsonclankie memory-card --lane operator: the newest memory card, every turn
MCP server clankie.mcp.jsonclankie mcp --lane operator: his tool bank over stdio, bearer read from the broker, never from a config file
Skills /clankie:this-machine, /clankie:trace-clankieskills/Symlinks into .agents/skills, so they load from any working directory and stay repo-owned

The output style is generated: edit apps/clankie/src/captain/instructions.md and run node integrations/claude-plugin/build.mjs. node integrations/claude-plugin/build.mjs --check fails when the file is stale, and the launcher's tests run that check.

This source also carries durable operating lessons, including delivery before harness work, bounded fleet review, and acceptance-driven Linear updates. The service prompt and this generated seat share them; episode memories are ambient recollections, not a substitute. New checkout sessions consume the updated files. Copied release or marketplace installs need their normal update before new sessions receive the change.

Launch

clankie seat              # sit down; a checkout loads this directory with --plugin-dir
clankie seat --resume     # reopen the last seat's conversation
clankie seat --dry-run    # print the launch plan as JSON without starting Claude Code

clankie seat needs Claude Code on PATH and a TTY. It passes --settings with the permission allowlist for clankie commands and, when the plugin is installed, enabledPlugins for this session only; names the herdr pane clankie when it is one; and starts Claude Code with --name Clankie. With the plugin installed from the repo's marketplace it also passes the channel development flag, so wakes and escalations reach the session; a --plugin-dir seat gets his tools and skills but not his wakes, because the channel preview accepts only marketplace-installed plugins.

Install from a checkout or an installed release (clankie doctor names repoRoot), then disable it at user scope: the forced output style applies to every Claude Code session while the plugin is enabled there, and the seat is the only session that should be him.

claude plugin marketplace add "$PWD/integrations/claude-plugin"
claude plugin install clankie@clankie
claude plugin disable clankie@clankie

Then confirm it took:

claude plugin details clankie          # output style, two hooks, one MCP server, two skills
clankie seat --dry-run                 # "plugin": { "source": "installed" }, "channel": true

In the session, /mcp lists the clankie server, /clankie:this-machine loads his install skill, and clankie model status runs without a prompt.

Codex

Codex is not a Claude plugin. It takes the same clankie mcp --lane operator entry in its MCP config and the same skills directory; the seat is the tool bank, not the harness.

Troubleshooting

SymptomFix
He answers as Claude CodeThe seat was not launched by clankie seat, which enables the plugin for its session
Every Claude Code session answers as himThe plugin is enabled at user scope; claude plugin disable clankie@clankie
/mcp shows clankie failedThe service is down or the operator credential is missing: clankie status
No persona or memory card at session startclankie is not on the hook's PATH; pnpm cli:install symlinks it into ~/.local/bin
Wakes never arriveThe seat was loaded with --plugin-dir; install from the marketplace for the channel flag
claude plugin validate --strict warnsThe two skills are symlinks by design; sessions follow them, validation does not