Tagout

Platforms

The kit is written for Claude Code. Every other host reaches the same skills through an adapter — a file in this repository that points the host at them, never a second copy of a skill (ADR 0014). How to install on each: Install.

Plugin hosts

The host’s own plugin command installs the kit from this repository.

Host Skills Commands MCP servers Gates Sub-agents
Claude Code Yes Yes Yes Yes Yes
Codex Yes No Yes Partial Partial
GitHub Copilot CLI Yes No Yes No Partial
Gemini CLI Yes Yes Yes No Partial
Antigravity CLI Yes Partial Yes No Partial
pi Yes No No No No

Rule-file hosts

A clone at ~/.tagout plus a rule file the host reads, which routes each request to a skill in the clone.

Host Skills Commands MCP servers Gates Sub-agents
Cursor Partial No Partial No No
Windsurf Partial No Partial No No
Cline Partial No Partial No No
Kiro Partial No Partial No No
GitHub Copilot in the editor Partial No Partial No No
Zed, Amp, Jules, Junie, OpenCode Partial No Partial No No

Skills are the kit’s skills/*/SKILL.md; commands are /migrate and its siblings; MCP servers are RoselineMCP and AdrMcp, started for you; gates are the hooks that refuse a raw Read of a C# file, an unguarded git write and an early stop of an auto-dev fleet; sub-agents are the fresh-context workers auto-dev and deliver-issue dispatch. Partial is explained below, host by host.

What differs on each host

Claude Code — The host the kit is written for — every gate, command and sub-agent dispatch is native here. Adapter: plugins/tagout/.claude-plugin/plugin.json.

Codex — Codex has no Read tool, so the roseline gate never fires; the git write-gate and the auto-dev Stop gate do. Skills are invoked by name, not as slash commands. Adapter: .codex-plugin/plugin.json.

GitHub Copilot CLI — Copilot’s hook payloads differ from Claude Code’s, so no gate is wired; the /migrate… commands reach migrate-legacy by name. Adapter: .github/plugin/plugin.json.

Gemini CLI — Gemini’s hook events are its own, so no gate is wired; everything else installs as an extension. Adapter: gemini-extension.json.

Antigravity CLI — Antigravity turns extension commands into skills you invoke from the chat. Adapter: gemini-extension.json.

pi — pi loads no MCP servers from a package, so the migration pipeline, which needs RoselineMCP, is out of reach there. Adapter: package.json.

Cursor — The always-applied rule routes each request to a skill in the clone, which the agent reads and follows. Adapter: .cursor/rules/tagout.mdc.

Windsurf — An always-on rule, routing to the skills in the clone. Adapter: .windsurf/rules/tagout.md.

Cline — A project rule, routing to the skills in the clone. Adapter: .clinerules/tagout.md.

Kiro — A steering file included in every conversation, routing to the skills in the clone. Adapter: .kiro/steering/tagout.md.

GitHub Copilot in the editor — Repository instructions for Copilot Chat in VS Code, JetBrains and Visual Studio; the Copilot CLI installs as a plugin instead. Adapter: .github/copilot-instructions.md.

Zed, Amp, Jules, Junie, OpenCode — The same routing text, read from your project’s own AGENTS.md. Adapter: AGENTS.md.

What does not travel

Two things are Claude Code’s own, and the kit uses them without an abstraction over them:

  • The gates. They are Claude Code hooks reading Claude Code’s hook payload. Codex runs the same hook map, so its Bash and Stop gates fire; other hosts run without them. Every gate fails open by design (ADR 0002), so a host without them loses a guard, never a working command.
  • Sub-agents. auto-dev keeps a fleet of workers in fresh contexts and deliver-issue runs each phase in one. On a host without sub-agents, run create-issue, implement-issue and merge-pr yourself, one after the other.

A new host is one row in docs/_data/hosts.yml and one adapter file, checked on every CI run by scripts/host-adapters.py — never a change to a skill.