Agent Plugins Marketplace
All plugins

subroutine

v0.8.19

Agent-native task management for complex projects, where the decisions live beside the work. Wires this session to a Subroutine instance and carries the working practice for using it well. Nothing to install first: it starts Subroutine through 'uvx', which fetches and caches it on first use — so you need uv on your machine (astral.sh/uv) and nothing else. If you have already run 'uv tool install subroutine', that copy is used instead. It starts a program on your own machine, so it works in Claude Code and the desktop apps and not on the web.

Claude Code1 Skill1 MCP serverstdio

By Simon Holliday5 GitHub starsUpdated last week

Directory evidence

Runtimes
Claude Code
Parsed components
2 skill or MCP entries
Source updated
Sep 16, 2026
Manifest status
Canonical path parsed

The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology

Install subroutine for Claude Code

Installs for the current user
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install subroutine@agent-plugin-marketplace

Paste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.

The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.

Get the source manually
git clone https://github.com/simonholliday/subroutine

Clone the source repository, then follow its setup instructions to add the plugin to a compatible client. The plugin root is plugins/subroutine/.

Plugin files

plugins/subroutine/
├── .claude-plugin/plugin.json
├── skills/subroutine/SKILL.md
└── .mcp.json

Included Skills1

subroutineskills/subroutine/SKILL.md

Track work in Subroutine — file tasks, find what can actually be started, record what happened, and write down conclusions the next session will need. **Read this before the first subroutine_* call of a session, including a read-only one.** It carries conventions the tool descriptions do not — how to open so you are not answering from a stale snapshot, how to ask for work that can actually be started, what a title has to say, and which end of a blocks link is the blocker. Also when the user asks what to work on, reports a problem, asks you to log or file something, finishes a piece of work, wonders where something was left, asks whether Subroutine is connected or what is in it, or says this project uses Subroutine — and for adopting Subroutine in a project that does not use it yet.

MCP servers1

toolsstdio
command
uvx
args
subroutine~=0.8.0 mcp --connection ${user_config.connection} --workspace ${user_config.workspace}
env.SUBROUTINE_TOKEN
${user_config.token}

Plugin manifests1

plugins/subroutine/.claude-plugin/plugin.json
{
  "name": "subroutine",
  "version": "0.8.19",
  "description": "Agent-native task management for complex projects, where the decisions live beside the work. Wires this session to a Subroutine instance and carries the working practice for using it well. Nothing to install first: it starts Subroutine through 'uvx', which fetches and caches it on first use — so you need uv on your machine (astral.sh/uv) and nothing else. If you have already run 'uv tool install subroutine', that copy is used instead. It starts a program on your own machine, so it works in Claude Code and the desktop apps and not on the web.",
  "author": {
    "name": "Simon Holliday",
    "email": "[email protected]"
  },
  "homepage": "https://github.com/simonholliday/subroutine",
  "keywords": [
    "tasks",
    "project-management",
    "todo",
    "self-hosted",
    "planning"
  ],
  "userConfig": {
    "connection": {
      "type": "string",
      "title": "Which instance (optional)",
      "description": "The name of a connection you have already configured, such as 'work'. Leave this empty for your default connection — the database on this machine, unless you have set 'default_connection' to something else. Run 'subroutine connections' to see the names and which one that is. Note that one session reaches one instance, so if you keep work and personal instances separately, name the one this project belongs to. Connections are set up with 'subroutine' itself, not here.",
      "default": ""
    },
    "workspace": {
      "type": "string",
      "title": "Which workspace (optional)",
      "description": "The workspace this session's work belongs in, by its short name — 'subroutine list' prints them beside each item when there is more than one. Leave empty if this instance has only one, which is the usual case: it is then resolved for you and naming it here would be a word you never needed. With two or more, an agent that has not been told a name has every read refused as ambiguous, and no way to learn one. This is a default rather than a limit — a call may still name another, and a token pinned to a workspace is what narrows access for real.",
      "default": ""
    },
    "token": {
      "type": "string",
      "title": "Agent token (optional)",
      "description": "A token issued for this agent, if you want it to have less access than you do — 'subroutine token create --service-account claude --project web'. IMPORTANT: this reaches the tools only. An agent that can also run shell commands uses whatever credential the command line resolves there, which is normally yours — so filling this in gives you an agent that is itself half the time and you the other half, silently. To cover both, leave this empty and set SUBROUTINE_TOKEN_<CONNECTION> in the environment you start your editor from, upper-cased: SUBROUTINE_TOKEN_WORK for a connection called 'work'. The tools and the shell both read that. Leave empty with nothing set to act as you. Your editor stores this, not Subroutine, and where it puts it depends on the editor and the machine — on Windows it is a file under your home directory. Treat it as you would any password there.",
      "sensitive": true,
      "default": ""
    }
  }
}

If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.

[subroutine on Agent Plugins Marketplace](https://pluginsmp.com/plugins/subroutine)