claude-plan-statusline
Show the current Claude Code session's plan as a clickable link in the
status line. Click it in the terminal and the plan opens straight in your
editor.
Supported platforms
| Platform | Supported | Notes |
|---|
| macOS | yes | Tested. jq via Homebrew if not present. |
| Linux | yes | Needs jq (apt/dnf/pacman) and a terminal with OSC 8 support — most modern ones (Kitty, WezTerm, GNOME Terminal, Konsole, Alacritty + config) qualify. |
| Windows (WSL) | yes | Run Claude Code inside WSL; the script lives on the Linux side. |
| Windows (cmd/pwsh) | no | The status line script is POSIX sh; there's no PowerShell port yet. |
OSC 8 hyperlink support is what makes the plan link clickable. If your
terminal doesn't render OSC 8, you'll still see the slug — it just won't
be clickable. Click-to-open also needs the editor URI scheme (vscode://,
cursor://, …) registered on your system; most editors register it on
install.
Install
From within Claude Code:
/plugin marketplace add odysseasmas/claude-plan-statusline
/plugin install claude-plan-statusline@claude-plan-statusline
/reload-plugins
/claude-plan-statusline:setup # Don't use auto-mode until after the setup wizard; otherwise claude might skip it
https://github.com/user-attachments/assets/ca0dddf3-00fa-4305-9876-da94ce607dea
Optional — remove the setup skill once you're done
Optional. After :setup runs successfully, the skill's only
remaining job is letting you change which editor opens the plan link
(re-run /claude-plan-statusline:setup and pick a different one). If
you'd rather not have it sitting in your skills list, delete it:
rm -rf ~/.claude/plugins/cache/claude-plan-statusline/claude-plan-statusline/*/skills/setup \
~/.claude/plugins/marketplaces/claude-plan-statusline/skills/setup
Then /reload-plugins. The hook and status line keep working — you
just lose the convenience skill. /plugin install will bring it back
if you ever want it.
What :setup does
Plugins can ship hooks but cannot register a status line (Claude
Code restriction; only the agent and subagentStatusLine keys are
allowed in a plugin's bundled settings.json). One line needs to land
in ~/.claude/settings.json; the setup skill handles it for you:
- backs up your current
settings.json,
- asks which editor the plan link should open in (VS Code, Cursor, Zed, JetBrains),
- if no
statusLine exists, adds one pointing at the plugin's script,
- if a
statusLine is already there, wraps it — your existing
command stays, and the plan link is appended on the end via
CLAUDE_PLAN_LINK_BASE. Your dir / git / model / context rendering
keeps working; the plan link sits at the end.
What's inside
The plugin bundles three pieces:
- A
PostToolUse hook (hooks/plan-tracker.py) that watches Write/Edit
calls landing .md files in ~/.claude/plans/ and records
session_id → plan_path in ~/.claude/plans/.session-map.json.
- A status line script (
scripts/statusline-command.sh) that reads the map
and renders an OSC 8 hyperlink to your editor of choice (vscode://,
cursor://, zed://, JetBrains idea:// — configurable). It can also
wrap an existing status line so you don't lose your current one.
- A setup skill (
/claude-plan-statusline:setup) that wires
~/.claude/settings.json for you, non-destructively.
Requires jq on PATH (for the status line script) and Python 3 (for the
hook — ships with macOS, present by default on most Linux distros).
Configure
Set these env vars in your shell or in ~/.claude/settings.json under
"env":
| Var | Default | Description |
|---|
CLAUDE_PLAN_LINK_EDITOR | vscode://file | URI prefix prepended to the absolute plan path. |
CLAUDE_PLAN_LINK_BASE | unset | Shell command to run as the base status line; its output is wrapped with | plan: <link> appended. |
CLAUDE_PLAN_LINK_ONLY | unset | If 1, emit only the plan: <link> fragment — useful for composing into your own status line. |
Editor URIs