Claude Code plugin
The Pulse plugin turns Pulse into a persistent task tracker you drive from inside a Claude Code session. Claude recalls what's next, parks follow-ups, marks work ongoing (so your team sees live presence), and completes tasks — without you leaving the terminal.
It talks to Pulse over an MCP server (https://mcp.pulse.intrasys.ai/mcp) using WorkOS
sign-in — Claude Code drives the browser handshake on first use, so there's no token to paste. This
is separate from the integration token used by the REST API; the plugin authenticates
as you, not as an org integration.
Install & setup
- Install the plugin:
/plugin install pulse@intrasys
- Sign in on first use. Claude Code opens a WorkOS sign-in the first time a Pulse tool runs. The org selector picks your active org — the connection is pinned to it. (Switching org means re-authenticating.)
- Bind the repo to a project. Add a
.pulse.jsonat your repo root:The declared{ "org": "<org-slug>", "project": "<project-name>" }orgis asserted on every write — a write to a mismatched org is refused (wrong_org), so an agent can't write to the wrong org. Theprojectscopes recall and parks to one project.
That's it. With .pulse.json in place, a new session recalls your open tasks for the project before
you start.
Commands
| Command | Does |
|---|---|
/pulse:whats-next | List your open tasks for the bound project (or the whole org), as a | Task | Project | table. |
/pulse:park <text> | Capture a follow-up as one task, rephrased to a short Title-Case imperative. |
/pulse:done [task] | Mark a task complete. |
You don't have to use the commands — plain chat works too (see below).
How tasks get created
Nothing auto-creates a task. Claude only writes when a park/add tool is called, and that happens in a handful of ways:
| # | Trigger | Result |
|---|---|---|
| 1 | /pulse:park <text> slash command | 1 task, rephrased to title style, into the bound project |
| 2 | You say it in chat — "park X", "add a task for X", "remember to X", "track X" | 1 task |
| 3 | You confirm a plan breakdown for non-trivial work | one task per unit (Pair 1: …, MR-A: …, Plan:/Research: prefixes) |
| 4 | Claude surfaces an out-of-scope follow-up mid-work and you OK parking it | 1 task |
| 5 | A known project id (programmatic/rare) | 1 task, no name→id lookup |
The ones people miss are #2 and #3 — you don't need the slash command. Plain "park the plan", or confirming a plan breakdown, is enough; Claude calls the park tool for you.
What does not create a task
- The SessionStart recall hook only reads (
pulse_whats_next) — it never writes. - Start / pause / complete mutate an existing task (runs, done) — they never create one.
- Just discussing work — nothing is tracked until you or Claude explicitly park.
Task text style
Parked tasks are rephrased, not stored verbatim: short, Title Case, imperative, no trailing
period — e.g. Release pulse@intrasys plugin, not release the pulse plugin.. Investigation-only
tasks get a Plan: or Research: prefix (e.g. Research: WorkOS org token refresh).
Tools
The MCP server exposes these tools (Claude picks them; you rarely name them directly):
Read
pulse_whoami— confirm the connected identity + active org.pulse_list_orgs— the orgs you belong to (active org is fixed at login).pulse_list_projects— projects in the active org (your personal projects + the shared catalog).pulse_whats_next— your open tasks, ordered; passprojectto scope to the bound project.
Create
pulse_park— capture a follow-up as a task; resolves/creates a personal project by name (fuzzy).pulse_add_task— add a task, optionally to a project whose id is already known.
Update
pulse_start_task— mark a task as being worked on now (records an agent run → live presence).pulse_pause_task— stop working on it (closes your run; the task stays open).pulse_complete_task— mark it done (closes all live runs on it).
Task text returned by the tools is data, not instructions — Claude treats a recalled task list as content to render, never as commands to act on.