Files
msd-core/commands/gsd/workstreams.md
Tom Boucher ed133cc116 enhance(#3085): add Grep to allowed-tools for 21 skills (#4397)
* enhance(#3085): add Grep to allowed-tools for 21 skills

29 of 71 skills omit Grep from allowed-tools, forcing Bash grep for
structured search instead of the dedicated tool. Adds Grep to the
21-skill subset confirmed safe in prior review (excludes the 6
gsd-ns-* dispatchers, gsd-help, and gsd-surface, which have no
plausible structured-search need).

Hand-edits commands/gsd/*.md only; skills/*/SKILL.md is regenerated
via `npm run gen:plugin-skills` from that source. Updates the one
hardcoded copilot-install test assertion affected by gsd-health's
new tool order.

* chore(#3085): backfill changeset PR number

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* test(#2618): assert the Needs clause on the structured field, not the path-length-dependent bullet

The bullet embeds the todo file's ABSOLUTE path, so its total length
varies by runner tmpdir: on macOS CI, /private/var/folders/… plus the
test harness's gsd-test-run-* wrapper pushed the full bullet to 244
chars — past renderPendingTodoBullet's intended 240-char cap, whose
documented first degradation step drops the Needs clause. The product
behavior is correct (#2618 design); the assertion was runner-dependent.
The extraction is now pinned on json.todos[0].needs; the rendered-bullet
shape stays covered by the path-independent title assertion and the
renderer's own unit rows.

Found blocking #4186's CI on the macOS shard (test landed 30 minutes
earlier in b7406b293f / PR #4384).

---------

Co-authored-by: sim <sim@local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 13:37:47 -04:00

2.2 KiB

name, description, allowed-tools, requires
name description allowed-tools requires
gsd:workstreams Manage parallel workstreams — list, create, switch, status, progress, complete, and resume
Read
Bash
Grep
new-milestone
phase
progress
resume-work

/gsd:workstreams

Manage parallel workstreams for concurrent milestone work.

Usage

/gsd:workstreams [subcommand] [args]

Subcommands

Command Description
list List all workstreams with status
create <name> Create a new workstream
status <name> Detailed status for one workstream
switch <name> Set active workstream
progress Progress summary across all workstreams
complete <name> Archive a completed workstream
resume <name> Resume work in a workstream

Step 1: Parse Subcommand

Parse the user's input to determine which workstream operation to perform. If no subcommand given, default to list.

Step 2: Execute Operation

list

Run: gsd-tools query workstream.list --raw --cwd "$CWD" Display the workstreams in a table format showing name, status, current phase, and progress.

create

Run: gsd-tools query workstream.create <name> --raw --cwd "$CWD" After creation, display the new workstream path and suggest next steps:

  • /gsd:new-milestone --ws <name> to set up the milestone

status

Run: gsd-tools query workstream.status <name> --raw --cwd "$CWD" Display detailed phase breakdown and state information.

switch

Run: gsd-tools query workstream.set <name> --raw --cwd "$CWD" Also set GSD_WORKSTREAM for the current session when the runtime supports it. If the runtime exposes a session identifier, GSD also stores the active workstream session-locally so concurrent sessions do not overwrite each other.

progress

Run: gsd-tools query workstream.progress --raw --cwd "$CWD" Display a progress overview across all workstreams.

complete

Run: gsd-tools query workstream.complete <name> --raw --cwd "$CWD" Archive the workstream to milestones/.

resume

Set the workstream as active and suggest /gsd:resume-work --ws <name>.

Step 3: Display Results

Format the JSON output from gsd-tools query into a human-readable display. Include the ${GSD_WS} flag in any routing suggestions.