| name | init |
| description | Scaffold a mission-control workspace (filing system, agent playbook, starter voice) into the current directory. Use when the user wants to set up mission-control or turn this project into a texting-agent control room. |
mission-control: init
Scaffold a mission-control workspace into the current working directory from the
canonical template files bundled with this plugin at
${CLAUDE_PLUGIN_ROOT}/skills/init/templates/.
Step 1: Check for conflicts. Never overwrite.
Check the current directory for each target path below. If a target file already
exists, do NOT write it. Collect every conflict, report the list to the user,
and skip those files. Only create what is missing. An existing threads/,
inbox/, or archive/ directory is fine; only same-path files count as
conflicts.
Targets:
CLAUDE.md
HOTLINE.md
INDEX.md
README.md
threads/example-thread/README.md
inbox/.gitkeep
archive/.gitkeep
Step 2: Create the workspace
Copy each non-conflicting file from
${CLAUDE_PLUGIN_ROOT}/skills/init/templates/ to the same relative path in the
current directory, creating directories as needed. Copy the files as-is; do not
edit or reformat them.
For example:
cp "${CLAUDE_PLUGIN_ROOT}/skills/init/templates/CLAUDE.md" ./CLAUDE.md
If ${CLAUDE_PLUGIN_ROOT}/skills/init/templates/ does not exist, stop and tell
the user the plugin install looks broken; do not improvise file contents.
Step 3: Tell the user the next steps
After scaffolding, report what was created (and any conflicts skipped), then
give the next steps from the template README:
hotline setup --telegram-token <token>
hotline init
hotline start
Then: DM the bot, approve the pairing code with hotline pair <code>, and
they're in. Point them at README.md in the new workspace for the full guide,
and mention that HOTLINE.md sets the texting voice and is meant to be edited.
Also mention that hotline init pre-approves routine read-only tools (Read,
Grep, Glob, LS, …) in .claude/settings.json so a remote texting user isn't
buzzed for every navigation step — edits and commands still ask. They can widen
or narrow that allowlist in .claude/settings.json to taste.
If they drive OpenCode instead of Claude Code, they run
hotline init --harness opencode. That scaffolds a dedicated primary agent at
.opencode/agents/hotline.md whose system prompt is hotline's texting mechanics
and voice (OpenCode ignores the MCP instructions field, so the agent is how
those rules — including the anti-prompt-injection pairing rule — reach it), and
merges opencode.json with the hotline MCP server pinned to that agent
(HOTLINE_OPENCODE_AGENT=hotline) plus a default permission block. Re-running
regenerates the managed agent file but never clobbers a hotline.md they wrote
themselves. The voice still comes from HOTLINE.md.
Do not run hotline commands yourself; the user runs them.