* 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>
72 lines
2.2 KiB
Markdown
72 lines
2.2 KiB
Markdown
---
|
|
name: gsd:workstreams
|
|
description: Manage parallel workstreams — list, create, switch, status, progress, complete, and resume
|
|
allowed-tools:
|
|
- Read
|
|
- Bash
|
|
- Grep
|
|
requires: [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.
|