From specforge
List SpecForge specs — either every spec in the store (mode "all") or just the specs attached to this session (mode "mine"). Use when the user asks to "list specs", "show all specs", "what specs do I have open", or wants to open/detach a spec. Starts or reuses the daemon, prints a table, and offers to open/detach.
How this skill is triggered — by the user, by Claude, or both
Slash command
/specforge:list-specsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
`${CLAUDE_PLUGIN_ROOT}` is the installed plugin directory.
${CLAUDE_PLUGIN_ROOT} is the installed plugin directory.
node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" listallnode "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" listEach returns session (this session's id) plus rows
({ id, title, status, attached }, where attached is a session id or free).
listall also ensures the daemon is up and returns indexUrl; list reads
straight from the store (no daemon needed). The picker's actions handle the
daemon themselves: open starts it when needed and returns a URL, while detach
is store-only — so both work whether or not the daemon was already running.
Render rows as a compact, numbered table — # · id · title · type · status · attached —
showing attached as free, this session, or held: <first 8 of the id>. For
"all", also print indexUrl (the browser index links each row to /spec/<id>).
Classify each row against session:
attached | meaning | action |
|---|---|---|
free | unattached | open (attach to this session) |
equals session | attached here | detach |
| any other id | held by another live session | none (show it greyed) |
If at least one row is actionable, call AskUserQuestion ("Open or detach a spec?"). AskUserQuestion allows 4 options max, so offer up to 3 actionable specs plus a "Just viewing" option (4 total):
Open · <title> (use <id8> if untitled)Detach · <title>The user can also pick "Other" (always available) and type any id from the table. If more than 3 rows are actionable, show the 3 most useful (free specs first) and note that "Other" accepts any id.
Act on the choice:
<id> → node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" open <id>
(attaches it to this session; fails if another live session holds it). Print the
returned url. Then, if the review watcher isn't already running this session,
arm it in the background (node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" wait-batch)
so this spec's comments are picked up automatically (see create-spec for the loop).<id> → node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" detach <id>.
Confirm it's freed.<id> → open it if free, detach it if it's attached here, else say it's
held by another session.Skip the picker when nothing is actionable. In "mine" mode with no rows, say no spec
is attached to this session and point to /specforge:listall to open one.
npx claudepluginhub nitinj/specforge --plugin specforgeProvides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.