Composer pill that opens a task link when a branch, title, or workspace name matches a configurable pattern.
From the plugin's README
CT-1234 style IDs and opens Notion. Change the pattern and URL
in settings before relying on the pill.addSettingsScreen, openSettings, and
@getpaseo/plugin/client/ui support.Exact install target unavailable. Refresh after the next successful scan.
Git security status and fallback installation are pinned to commit 004c6a80c6aa.
From the plugin's README
paseo plugin add panrafal/paseo-plugins:task-link
From a checkout:
npm install # from the monorepo root
npm run typecheck
paseo plugin install /absolute/path/to/paseo-plugins/task-link
paseo plugin ls # expect "running"
When replacing an installed capitally-tasks, remove that old installation and install task-link
from its renamed directory to avoid duplicate pills. The old plugin had no saved settings.
After editing:
npm run typecheck
npm test --workspace=task-link
paseo plugin reload task-link
paseo plugin logs task-link
README
Adds a composer pill when an agent's branch, title, or workspace name contains a task ID.
Press the pill to open the configured link. Previously named capitally-tasks.
Open Settings → Plugins → task-link → Task link, or choose Configure task link in the
Command Center. Requires a Paseo client with addSettingsScreen, openSettings, and
@getpaseo/plugin/client/ui support. Paseo owns settings navigation, scrolling, mobile layout, and theme.
/ delimiters or flags. Matching is
case-sensitive; use character classes such as [Cc][Tt] to accept either case. For each match,
the first non-empty capture group, in group order, is the task ID. If there are no capture groups,
the whole match is used. Matches with only empty/unmatched groups are skipped.{ID}. Every {ID} is replaced with the URL-encoded
captured text. Case and punctuation in the ID are preserved.| Pattern | Input | Task ID |
|---|---|---|
\b(CT-\d+)\b |
feature/CT-1234-fix |
CT-1234 |
| `([CT-\d+]) | -(ct-\d+)` | Fix [CT-1234] |
| `([CT-\d+]) | -(ct-\d+)` | feature-ct-42 |
CT-(\d+) |
CT-1234 |
1234 |
For example, https://tracker.example/tasks/{ID} opens task CT-1234 at
https://tracker.example/tasks/CT-1234. A bracketed ID becomes %5BCT-1234%5D.
Defaults match \b([Cc][Tt]-\d+)\b and open https://www.notion.so/{ID}. Unlike the old plugin,
IDs are no longer forced to uppercase.
Settings use validated plugin RPCs and are saved atomically under
$PASEO_HOME/plugin-data/task-link/settings.json (default Paseo home: ~/.paseo). They are shared
by clients of that daemon and survive plugin reloads. Saving updates this client's pills immediately;
other clients refresh within 15 seconds and also read the latest settings before opening a link.
Sources are checked in this order: branch, agent title, workspace title, workspace name. Within each source, matches are checked from left to right.
shared/link.ts extracts task IDs and builds links; shared/settings.ts validates settings.server/branch.ts reads the checked-out branch with git rev-parse --abbrev-ref HEAD.client/pill.tsx follows agent/workspace updates and refreshes branches after agent turns.CT-1234 style IDs and opens Notion. Change the pattern and URL
in settings before relying on the pill.addSettingsScreen, openSettings, and
@getpaseo/plugin/client/ui support.paseo plugin add panrafal/paseo-plugins:task-link
From a checkout:
npm install # from the monorepo root
npm run typecheck
paseo plugin install /absolute/path/to/paseo-plugins/task-link
paseo plugin ls # expect "running"
When replacing an installed capitally-tasks, remove that old installation and install task-link
from its renamed directory to avoid duplicate pills. The old plugin had no saved settings.
After editing:
npm run typecheck
npm test --workspace=task-link
paseo plugin reload task-link
paseo plugin logs task-link
Scanned 15 Oct 2026, 12:34 UTC from panrafal/paseo-plugins/task-link.