A detailed reference for Workspine workflows, troubleshooting, and configuration. Workspine is the public product name; the package, CLI, workflow names, and workspace remain gsdd-cli, gsdd, gsdd-*, and .planning/ as retained technical contracts. Runtime floor: Node 20+. For quick-start setup and the public proof pack, start with the README. Human install/update commands use npx -y gsdd-cli ...; bare gsdd ... is shorthand only when the package is globally installed.
For a new project or a broad brownfield effort:
- Run
npx -y gsdd-cli initfrom the repo root. - Start with
gsdd-new-projectunless the change is already small and concrete. - Review the plan from
gsdd-planbefore startinggsdd-execute. - Run
gsdd-verifybefore calling the phase done.
For a bounded existing-code change, use gsdd-quick. For an unfamiliar or risky repo, use gsdd-map-codebase before choosing between gsdd-quick and gsdd-new-project.
- Fast Path
- Workflow Diagrams
- Command Reference
- Configuration Reference
- Usage Examples
- Troubleshooting
- Recovery Quick Reference
┌──────────────────────────────────────────────────┐
│ NEW PROJECT │
│ gsdd-new-project │
│ Questions -> Research -> Spec -> Roadmap │
└─────────────────────────┬────────────────────────┘
│
┌──────────────▼─────────────┐
│ FOR EACH PHASE: │
│ │
│ ┌────────────────────┐ │
│ │ gsdd-plan │ │ <- Research + Plan + Check
│ └──────────┬─────────┘ │
│ │ │
│ ┌──────────▼─────────┐ │
│ │ gsdd-execute │ │ <- Wave-based execution
│ └──────────┬─────────┘ │
│ │ │
│ ┌──────────▼─────────┐ │
│ │ gsdd-verify │ │ <- 3-level gate
│ └──────────┬─────────┘ │
│ │ │
│ Next Phase?────────────┘
│ │ No
└─────────────┼──────────────┘
│
┌──────────────▼──────────────┐
│ gsdd-audit-milestone │
└─────────────────────────────┘
Optional closure and milestone-continuation workflows in the shipped surface:
gsdd-verify-workadds conversational UAT when user-facing behavior needs explicit validation.gsdd-plan-milestone-gapsturns audit findings into gap-closure phases when a milestone is not ready to ship.gsdd-complete-milestonearchives a shipped milestone, evolvesSPEC.md, and collapsesROADMAP.md.gsdd-new-milestonestarts the next milestone after closure.
gsdd-plan (phase N)
│
├── Phase Researcher (x4 parallel)
│ ├── Stack researcher
│ ├── Features researcher
│ ├── Architecture researcher
│ └── Pitfalls researcher
│ │
│ ┌─────▼───────┐
│ │ RESEARCH.md │
│ └─────┬───────┘
│ │
│ ┌─────▼──────┐
│ │ Planner │ <- Reads SPEC.md, ROADMAP.md, RESEARCH.md
│ └─────┬──────┘
│ │
│ ┌─────▼──────────────┐ ┌────────┐
│ │ Plan Checker │────>│ PASS? │
│ │ (fresh context, │ └───┬────┘
│ │ 7 dimensions, │ │
│ │ typed JSON) │ Yes │ No
│ └────────────────────┘ │ │ │
│ │ └───┘ (max 3 cycles)
│ │
│ ┌─────▼──────┐
│ │ PLAN files │
│ └────────────┘
└── Done
The plan checker runs in a separate context window from the planner. This prevents the checker from inheriting the planner's blind spots — the same reasoning error that produced the plan cannot suppress the review of that plan. This is the ICLR-validated pattern for LLM self-refinement.
The 7 check dimensions: requirement coverage, task completeness, dependency correctness, key-link completeness, scope sanity, must-have quality, context compliance.
gsdd-execute (phase N)
│
├── Analyze plan dependencies
│
├── Wave 1 (independent plans):
│ ├── Executor A (fresh 200K context) -> commit
│ └── Executor B (fresh 200K context) -> commit
│
├── Wave 2 (depends on Wave 1):
│ └── Executor C (fresh 200K context) -> commit
│
└── Phase summary written to disk
Brownfield repo
│
├── bounded change already concrete
│ │
│ ▼
│ gsdd-quick
│ bounded feature work
│ with inline baseline
│
├── repo unfamiliar / risky / deeper orientation needed
│ │
│ ▼
│ gsdd-map-codebase
│ │
│ └── continue with gsdd-quick or gsdd-new-project
│
└── fuzzy scope / full lifecycle setup
│
▼
gsdd-new-project
canonical initializer
gsdd-verify (phase N)
│
├── Level 1: EXISTS
│ └── Do the expected files exist?
│
├── Level 2: SUBSTANTIVE
│ └── Is the code real, not stubs?
│
├── Level 3: WIRED
│ └── Is it connected and functional?
│
└── Anti-pattern scan
└── TODO/FIXME/HACK markers, empty catches
| Workflow | Purpose | When to Use |
|---|---|---|
gsdd-new-project |
Full project init: questioning, brownfield audit when needed, research, spec, roadmap | Greenfield, fuzzy brownfield scope, or full lifecycle setup |
gsdd-map-codebase |
Map existing codebase for reusable brownfield context | When the repo is unfamiliar, risky, or you want a deeper baseline before choosing quick vs new-project |
gsdd-plan |
Research + plan + adversarial check for current phase; writes planning artifacts only | Before executing a phase |
gsdd-execute |
Execute phase plans in parallel waves | After planning is complete |
gsdd-verify |
3-level verification gate + anti-pattern scan | After execution completes |
gsdd-verify-work |
Conversational UAT validation with structured gap tracking | When user-facing behavior needs explicit validation beyond repo artifacts |
gsdd-audit-milestone |
Cross-phase integration, requirements coverage, E2E flows | When all phases are done |
gsdd-complete-milestone |
Archive a shipped milestone, evolve SPEC.md, collapse ROADMAP.md |
When the audited milestone is ready to ship |
gsdd-new-milestone |
Start the next milestone with goals, requirements, and roadmap phases | After closing a milestone and starting the next one |
gsdd-plan-milestone-gaps |
Turn milestone audit findings into gap-closure phases | When audit findings need planned follow-up before shipment |
gsdd-quick |
Plan and execute sub-hour work outside the phase cycle | Bug fixes, small features, config changes when the bounded change is already concrete |
gsdd-pause |
Save session context to checkpoint | Stopping mid-phase |
gsdd-resume |
Restore context from checkpoint and route to next action | Starting a new session |
gsdd-progress |
Show project status and route to next action | "Where am I?" |
| Command | Purpose |
|---|---|
npx -y gsdd-cli init [--tools <platform>] |
Set up .planning/, generate skills/adapters |
npx -y gsdd-cli update [--tools <platform>] |
Regenerate skills/adapters from latest sources |
npx -y gsdd-cli update --templates |
Refresh role contracts and delegates (warns about user modifications) |
npx -y gsdd-cli control-map [--json] [--with-ignored] |
Show computed repo/worktree/planning state, dirty buckets, optional ignored-path scan, local annotations, and safe next interventions |
npx -y gsdd-cli closeout-report [--json] [--phase <N>] |
Read-only closeout replay: blockers, warnings, fixes, and next safe action (composed from control-map, health/preflight, verify, and UI-proof signals) |
npx -y gsdd-cli find-phase [N] |
Show phase info as JSON (for agent consumption) |
npx -y gsdd-cli verify <N> |
Run artifact checks for phase N |
npx -y gsdd-cli scaffold phase <N> [name] |
Create a new phase plan file |
npx -y gsdd-cli models show |
Display effective model state across all runtimes |
npx -y gsdd-cli models profile <tier> |
Set global model profile (quality/balanced/budget) |
npx -y gsdd-cli models agent-profile --agent <id> --profile <tier> |
Per-agent semantic override |
npx -y gsdd-cli models set --runtime <rt> --agent <id> --model <id> |
Exact runtime model override |
npx -y gsdd-cli models clear --runtime <rt> --agent <id> |
Remove runtime override |
npx -y gsdd-cli help |
Show all commands |
If gsdd-cli is globally installed, you can use the shorter gsdd ... form for the same commands. Generated workflow helper calls do not use the global binary; they run through node .planning/bin/gsdd.mjs ... from the repo root.
Normal user flow:
- Run
npx gsdd-cli init. - Enter workflows through your runtime surface:
/gsdd-*or$gsdd-*. - Use
gsdd healthto check installed generated surfaces. - Use
npx gsdd-cli updatewhen generated surfaces drift or you want the latest shipped output.
Surface split:
.agents/skills/gsdd-*is the workflow entry surface..planning/bin/gsdd*is an internal local helper surface used by workflow-embedded lifecycle mechanics. It is kept available, but it is not the normal first-run user entrypoint.
Advanced/internal helper commands remain available:
| Command | Purpose |
|---|---|
gsdd file-op <copy|delete|regex-sub> |
Deterministic workspace-confined file copy, delete, and text mutation |
gsdd phase-status <N> <status> |
Update a single ROADMAP phase status through the local helper surface |
gsdd lifecycle-preflight <surface> [phase] |
Inspect deterministic lifecycle gate results for a workflow surface |
Other CLI commands that remain available outside the first-run path:
| Command | Purpose |
|---|---|
gsdd find-phase [N] |
Show phase info as JSON (for agent consumption) |
gsdd verify <N> |
Run phase artifact and UI-proof closure checks for phase N; exits nonzero when verification is blocked |
gsdd scaffold phase <N> [name] |
Create a new phase plan file |
| Flag | What's generated |
|---|---|
claude |
.claude/skills/, .claude/commands/, .claude/agents/ |
opencode |
.opencode/commands/, .opencode/agents/ |
codex |
.codex/agents/gsdd-plan-checker.toml (.agents/skills/gsdd-* and .planning/bin/gsdd.mjs are always generated; $gsdd-plan stays plan-only until explicit $gsdd-execute) |
agents |
Bounded fallback block in root AGENTS.md |
all |
All of the above |
| (none) | Auto-detect installed tools |
npx -y gsdd-cli init creates .planning/config.json interactively (or with defaults via --auto).
{
"researchDepth": "balanced",
"parallelization": true,
"commitDocs": true,
"modelProfile": "balanced",
"workflow": {
"research": true,
"planCheck": true,
"verifier": true
},
"gitProtocol": {
"branch": "Follow existing repo conventions",
"commit": "Logical grouping, no phase/task IDs",
"pr": "Follow existing review workflow"
}
}| Setting | Options | Default | What it Controls |
|---|---|---|---|
researchDepth |
fast, balanced, deep |
balanced |
Research thoroughness per phase |
parallelization |
true, false |
true |
Run independent agents simultaneously |
commitDocs |
true, false |
true |
Track .planning/ in git |
modelProfile |
balanced, quality, budget |
balanced |
Portable semantic model tier |
Each adds quality but costs tokens and time:
| Setting | Default | What it Controls |
|---|---|---|
workflow.research |
true |
Research domain before planning each phase |
workflow.planCheck |
true |
Fresh-context adversarial plan checking (max-3 cycle loop) |
workflow.verifier |
true |
3-level verification gate after execution |
Disable these to speed up phases in familiar domains or when conserving tokens. Disabling planCheck engages reduced-assurance mode — the planner self-checks but without the independent reviewer.
Optional keys for fine-grained model selection:
| Setting | What it Controls |
|---|---|
agentModelProfiles.<agent> |
Per-agent semantic override (currently: plan-checker) |
runtimeModelOverrides.<runtime>.<agent> |
Exact runtime-native model override |
Supported runtimes: claude, opencode, codex.
Runtime behavior:
- Claude translates semantic tiers to native aliases (
opus/sonnet/haiku) for the checker agent - OpenCode inherits its runtime model by default; Workspine only injects a model when you set an explicit runtime override
- Codex inherits its session model by default; Workspine only injects a model in the TOML when you set an explicit runtime override
Advisory defaults — repository and team conventions take precedence:
| Setting | Default |
|---|---|
gitProtocol.branch |
Follow existing repo conventions |
gitProtocol.commit |
Logical grouping, no framework-imposed format |
gitProtocol.pr |
Follow existing review workflow |
Workspine does not impose commit formats, branch naming, or one-commit-per-task rules.
npx -y gsdd-cli init
Cursor, Copilot, and Gemini can use the installed .agents/skills/ surfaces when their slash/skill discovery sees that directory. The difference is runtime proof and ergonomics, not workflow shape. If discovery is unavailable, open or paste the relevant .agents/skills/gsdd-*/SKILL.md file.
Claude/OpenCode:/gsdd-new-project -> /gsdd-plan -> /gsdd-execute -> /gsdd-verify -> /gsdd-audit-milestoneCodex:$gsdd-new-project -> $gsdd-plan -> $gsdd-execute -> $gsdd-verify -> $gsdd-audit-milestone($gsdd-planends at plan creation;$gsdd-executeis a separate explicit unlock)Codex VS Code / app: use built-in discovery if available; otherwise open or paste.agents/skills/gsdd-new-project/SKILL.mdand continue with the matching skill filesCursor / Copilot / Gemini: use the same sequence from the slash command menu when skill discovery is available; otherwise open or paste the matching.agents/skills/gsdd-*/SKILL.mdfiles
Claude/OpenCode:/gsdd-plan-milestone-gapswhen audit findings need closure work, or/gsdd-complete-milestone -> /gsdd-new-milestonewhen the milestone is ready to shipCodex:$gsdd-plan-milestone-gapswhen audit findings need closure work, or$gsdd-complete-milestone -> $gsdd-new-milestonewhen the milestone is ready to shipCursor / Copilot / Gemini: use the matching slash commands when skill discovery is available, with the same routing as above
npx -y gsdd-cli init
- Choose one starting lane after init:
Claude/OpenCode:/gsdd-quickfor a concrete bounded change,/gsdd-new-projectfor fuzzy or milestone-shaped work, or/gsdd-map-codebasefirst when the repo needs a deeper brownfield baselineCodex:$gsdd-quickfor a concrete bounded change,$gsdd-new-projectfor fuzzy or milestone-shaped work, or$gsdd-map-codebasefirst when the repo needs a deeper brownfield baselineCursor / Copilot / Gemini:/gsdd-quick,/gsdd-new-project, or/gsdd-map-codebasefrom the slash command menu when skill discovery is available, using the same routing rules above
Claude/OpenCode:/gsdd-quickCodex:$gsdd-quickCursor / Copilot / Gemini:/gsdd-quickfrom the slash command menu when skill discovery is available
Claude/OpenCode:/gsdd-progressor/gsdd-resumeCodex:$gsdd-progressor$gsdd-resumeCursor / Copilot / Gemini: use the matching skill from the slash command menu when discovery is available
Claude/OpenCode:/gsdd-pauseCodex:$gsdd-pauseCursor / Copilot / Gemini:/gsdd-pausefrom the slash command menu when skill discovery is available
| Scenario | Research Depth | Model Profile | Research | Plan Check | Verifier |
|---|---|---|---|---|---|
| Prototyping | fast |
budget |
off | off | off |
| Normal dev | balanced |
balanced |
on | on | on |
| Production | deep |
quality |
on | on | on |
npx -y gsdd-cli init --auto --tools claude # Non-interactive, default config
npx -y gsdd-cli init --auto --tools claude --brief path/to/PRD.md # Seed from existing documentClear your context window between major workflows. Workspine is designed around fresh contexts — every delegate gets a clean context window. If quality drops in the main session, clear and use gsdd-resume or gsdd-progress to restore state.
Check that research ran before planning (workflow.research: true). Most plan quality issues come from the planner making assumptions that domain research would have prevented. If plan-checking is enabled, the checker should catch alignment issues — but it cannot fix missing domain context.
Plans should have 2-5 tasks maximum. If tasks are too large, they exceed what a single context window can produce reliably. Re-plan with smaller scope.
Run gsdd-progress. It reads all artifacts and tells you where you are and what to do next.
Do not re-run gsdd-execute. Use gsdd-quick for targeted fixes, or gsdd-verify to systematically identify issues.
npx -y gsdd-cli update --templates # Refreshes role contracts and delegatesIf you've modified any templates, the generation manifest detects this and warns you before overwriting. The SHA-256 hash of each generated file is tracked in .planning/generation-manifest.json.
Start with gsdd health. If it reports drift or missing installed generated surfaces, run npx gsdd-cli update for the whole workspace or npx gsdd-cli update --tools <runtime> for a specific runtime.
That repair path is deterministic for generated files. It does not imply that every runtime has equal native ergonomics or equal validation depth.
Switch to budget profile: npx -y gsdd-cli models profile budget (or gsdd models profile budget when globally installed). Disable research and plan-check via config if the domain is familiar.
| Problem | Solution |
|---|---|
| Lost context / new session | gsdd-resume or gsdd-progress |
| Phase went wrong | git revert the phase commits, then re-plan |
| Quick targeted fix | gsdd-quick |
| Something broke | Use the debugger role for systematic debugging |
| Costs running high | npx -y gsdd-cli models profile budget, disable workflow toggles |
| Templates out of date | npx -y gsdd-cli update --templates or gsdd update --templates if globally installed |
| Adapters out of date | npx -y gsdd-cli update or gsdd update if globally installed |
.planning/
SPEC.md # Living specification (goals, constraints, decisions)
ROADMAP.md # Phased delivery plan with inline status
config.json # Project configuration
bin/
gsdd # POSIX shim for the local helper surface
gsdd.cmd # Windows shim for the local helper surface
gsdd.mjs # Canonical self-contained local helper runtime
gsdd.ps1 # PowerShell shim for the local helper surface
lib/ # Copied helper-runtime support modules
generation-manifest.json # SHA-256 hashes for template versioning
.local/ # Local-only operational annotations; not product truth
.continue-here.md # Session checkpoint (created by pause, consumed by resume)
research/ # Domain research outputs
codebase/ # Codebase maps (4 files: STACK, ARCHITECTURE, CONVENTIONS, CONCERNS)
phases/
XX-phase-name/
PLAN.md # Atomic execution plans with XML task structure
SUMMARY.md # Execution outcomes
VERIFICATION.md # Post-execution verification results
quick/
NNN-slug/
PLAN.md # Quick task plan
SUMMARY.md # Quick task outcome
templates/
delegates/ # 11 delegate instruction files
LOG.md # Quick task log
agents/ # 10 canonical role contracts
.agents/skills/gsdd-*/ # Portable workflow entrypoints (open standard)
.planning/bin/gsdd.mjs # Internal repo-local helper runtime for deterministic workflow commands (run from repo root)
Platform-specific adapters (generated by npx -y gsdd-cli init, or gsdd init when globally installed):
.claude/skills/ # Claude Code skill files
.claude/commands/ # Claude Code command aliases
.claude/agents/ # Claude Code native agents
.opencode/commands/ # OpenCode command files
.opencode/agents/ # OpenCode native agents
.codex/agents/ # Codex CLI agent TOML files
AGENTS.md # Optional governance block (useful for agents that consume AGENTS.md)
.agents/skills/ is the workflow entry surface. .planning/bin/ is the internal helper runtime used by those workflows. Native adapters and governance files are optional ergonomics, not required prompt bulk.