Enable multiple Claude Code instances to work on the same codebase
simultaneously by scoping .planning/ state into workstreams.
Core changes:
- planningDir(cwd, ws?) and planningPaths(cwd, ws?) are now workstream-aware
via GSD_WORKSTREAM env var (auto-detected from --ws flag or active-workstream file)
- All bin/lib modules use planningDir(cwd) for scoped paths (STATE.md, ROADMAP.md,
phases/, REQUIREMENTS.md) and planningRoot(cwd) for shared paths (milestones/,
PROJECT.md, config.json, codebase/)
- New workstream.cjs module: create, list, status, complete, set, get, progress
- gsd-tools.cjs: --ws flag parsing with priority chain
(--ws > GSD_WORKSTREAM env > active-workstream file > flat mode)
- Collision detection: transition.md checks for other active workstreams before
suggesting next-milestone continuation (prevents WS A from trampling WS B)
- ${GSD_WS} routing propagation across all 9 workflow files ensures workstream
scope chains automatically through the workflow lifecycle
New files:
- get-shit-done/bin/lib/workstream.cjs (CRUD + collision detection)
- get-shit-done/commands/gsd/workstreams.md (slash command)
- get-shit-done/references/workstream-flag.md (documentation)
- tests/workstream.test.cjs (20 tests covering CRUD, env var routing, --ws flag)
All 1062 tests passing (1042 existing + 20 new workstream tests).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.9 KiB
description
| description |
|---|
| Manage parallel workstreams — list, create, switch, status, progress, complete, and resume |
/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: node "$GSD_TOOLS" workstream list --raw --cwd "$CWD"
Display the workstreams in a table format showing name, status, current phase, and progress.
create
Run: node "$GSD_TOOLS" 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: node "$GSD_TOOLS" workstream status <name> --raw --cwd "$CWD"
Display detailed phase breakdown and state information.
switch
Run: node "$GSD_TOOLS" workstream set <name> --raw --cwd "$CWD"
Also set GSD_WORKSTREAM env var for the current session.
progress
Run: node "$GSD_TOOLS" workstream progress --raw --cwd "$CWD"
Display a progress overview across all workstreams.
complete
Run: node "$GSD_TOOLS" 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 into a human-readable display.
Include the ${GSD_WS} flag in any routing suggestions.