Workspine
Workspine is a Spec Driven Development framework for AI-assisted software work: planning, checking, execution, verification, and handoff live in the repo, so any agent or runtime can pick up where the last one stopped. Decisions keep their why.
Proof status: one real consumer lifecycle with Codex checker support. Qualified support: Cursor, Copilot, Gemini.
The public product name is Workspine. The retained technical contracts remain gsdd-cli, gsdd, gsdd-*, and .work/.

npx -y gsdd-cli init
Use npx -y gsdd-cli init for repo-local setup. Use npx -y gsdd-cli install --global --auto to install reusable Workspine skills and native runtime surfaces into detected agent homes so they are available across repos.
Tracked consumer proof pack: docs/proof/consumer-node-cli/README.md
How it works
init places workflow skills in .agents/skills/ and optionally native adapters for your runtime. Then you run workflows through your agent — each one writes files to the repo:
gsdd-new-project | .work/SPEC.md, ROADMAP.md | Define the project and phases |
gsdd-plan | .work/phases/N/PLAN.md | Research and review before any code gets written |
gsdd-execute | .work/phases/N/SUMMARY.md | Implement the approved plan, nothing more |
gsdd-verify | .work/phases/N/VERIFICATION.md | Confirm the plan's claims are actually true |
The discipline: plan first, execute only what's approved, verify before closing. Each phase summary carries forward what was decided, so the next session starts with context instead of from scratch.
For agent continuity across long sessions, gsdd next reads .work/ plus repo truth and emits the next coherent action as a structured packet. Use gsdd next --init to bootstrap .work; plain gsdd next is read-only. Captured stdout defaults to JSON; use gsdd next --format human for the compact supervisor card.
gsdd next keeps the human surface tight and the agent surface structured. JSON packets include typed next_action values for CLI commands, workflow skills, manual review, and user-question gates. Blocking questions, decisions, graph rebuilds, and dogfood findings use explicit subcommands; duplicate question, decision, and dogfood IDs replay as unchanged when the content matches and fail unless --replace is passed when the content differs. The continuity graph records answer and supersession edges so future agents can reconstruct decision history without rereading raw transcripts.
Workspine ships 13 workflows. The package and CLI are gsdd-cli / gsdd-* — retained as the technical contract under the Workspine product name.
What This Is
Workspine gives coding agents a durable workflow for work that spans sessions, agents, or runtimes. There is no hosted service; it writes portable planning and proof artifacts into the repo.
Workspine began as a fork of Get Shit Done and keeps the verification-first workflow while stripping runtime lock-in.
Getting Started
Quickstart
npx -y gsdd-cli init
This creates:
.work/ — durable workspace with templates, role contracts, and config
.agents/skills/gsdd-* — compact open-standard workflow entrypoints for agents
.work/bin/gsdd.mjs — repo-local helper runtime for deterministic workflow commands inside generated skills (run helper commands from the repo root)
- Optional tool-specific adapters you choose in the install wizard (Claude skills/commands/agents, OpenCode commands/agents, Codex CLI agents, optional governance)
Then pick the first workflow lane that matches your situation:
gsdd-new-project for greenfield work, fuzzy brownfield work, or milestone-shaped work
gsdd-quick for a concrete bounded brownfield change
gsdd-map-codebase first when the repo is unfamiliar, risky, or needs a deeper baseline before choosing a lane
In a terminal, npx -y gsdd-cli init opens a guided install wizard. If you installed the package globally, gsdd init is the equivalent shorthand:
- Step 1: select the runtimes/vendors you want to support
- Step 2: decide separately whether repo-wide
AGENTS.md governance is worth installing
- Step 3: configure planning defaults in the same guided flow
Portable .agents/skills/gsdd-* skills and the repo-local .work/bin/gsdd.mjs helper runtime are always generated. The wizard controls extra native adapters and optional governance, not the portable baseline. Workflow helper commands assume the repo root as the current working directory.
When those generated surfaces exist locally, npx -y gsdd-cli health checks them against current render output instead of asking you to trust manual review. If installed globally, gsdd health is equivalent.
Launch Proof Status
- Recorded proof: the proof pack below records a full plan -> execute -> verify lifecycle on a real consumer project, including Codex checker support. Claude Code and OpenCode run the same generated workflow surface.
- Qualified support: Cursor, Copilot, and Gemini CLI can use the shared
.agents/skills/ surface when their skill or slash discovery sees it; this release does not claim the same runtime proof or ergonomics.
- Runtime-surface freshness: Installed generated skills and native adapters are renderer-checked locally; repair stays deterministic through
npx -y gsdd-cli update or, when globally installed, gsdd update.
Start with the public proof pack:
Quickstart (after init)
Invoke after init:
- Claude Code / OpenCode: slash commands such as
/gsdd-plan.
- Codex CLI: portable
gsdd-plan skill reference ($gsdd-plan), with .codex/agents/gsdd-plan-checker.toml for native checker isolation.
- Cursor / Copilot / Gemini: Use slash commands if your tool discovers
.agents/skills; if it does not, open .agents/skills/gsdd-<workflow>/SKILL.md.
Headless setup is available for CI or scripted installs:
npx -y gsdd-cli init --auto --tools all
npx -y gsdd-cli init --auto --tools codex --brief path/to/brief.md
Global Agent Install
If gsdd-cli is installed globally, install reusable Workspine surfaces into your agent homes:
npx -y gsdd-cli install --global
npx -y gsdd-cli install --global --auto
npx -y gsdd-cli install --global --tools claude,opencode,codex,copilot
Use --auto for non-interactive install into detected local agent homes. Use --tools <targets> when you want to override detection explicitly. When run in a TTY without --tools or --auto, install --global lets you select which agents to install. It does not create .work/ in the current repo. It writes Workspine-managed skills, native agent surfaces, and per-runtime manifests under the selected agent homes:
| Claude Code | ~/.claude/skills, ~/.claude/commands, ~/.claude/agents |
| OpenCode | ~/.agents/skills, ~/.config/opencode/commands, ~/.config/opencode/agents |
| Codex CLI | ~/.agents/skills, ~/.codex/agents |
| GitHub Copilot CLI | ~/.agents/skills, ~/.copilot/agents |
Install availability is not a parity claim. Repo proof currently covers Claude Code, OpenCode, and Codex CLI paths; GitHub Copilot CLI is available as a qualified global target.
OpenCode honors OPENCODE_CONFIG_DIR for commands and agents; Workspine installs portable skills once in the shared agent-compatible global root.
Which workflow to start with
| New project, or brownfield work that's broad / milestone-shaped | gsdd-new-project — full initializer, runs codebase mapping internally when needed |
| Existing repo, and the change you want to make is already concrete | gsdd-quick — bounded-change lane, lighter ceremony |
| Existing repo is unfamiliar or risky and you want a baseline first | gsdd-map-codebase — orientation pass before choosing the above |
Team Use
Commit .work/ so the team shares specs, roadmaps, phase plans, and verification reports. Use commitDocs in .work/config.json to control whether documentation changes are expected as part of workflow execution. Each developer runs init --tools <their-tool> for their own repo-local runtime adapters without changing the shared delivery artifacts.
What to Track in Git
Track .work/, .agents/skills/, and any selected runtime adapters that are part of the team workflow. Track durable .work/ contract and research files when they define shared milestone truth. Do not track .work/.local/ or mutable .work runtime files such as state.json, graph logs, open questions, evidence manifests, handoff notes, or raw dogfood drafts unless you deliberately export or sanitize them.
Configuration
Use model profiles to tune cost and rigor:
npx -y gsdd-cli models profile quality
npx -y gsdd-cli models profile balanced
npx -y gsdd-cli models profile budget
Troubleshooting
Inside a repo-local .work/ workspace, start with npx -y gsdd-cli health. It checks local generated runtime surfaces against current render output and reports whether npx -y gsdd-cli update can repair drift. To repair or refresh a personal global install, rerun npx -y gsdd-cli install --global --auto or explicitly scope it with npx -y gsdd-cli install --global --tools <targets>. For details, see the User Guide.
Where it fits
Use Workspine when a feature takes more than one session, or when you need to switch between Claude, Codex, and Cursor without losing the thread. Skip it for quick, obvious edits — direct prompting is cheaper when the risk is small.
| Workspine | Work that spans sessions, agents, or runtimes where plans and proof need to stay in the repo | — |
| GSD | Broad AI prompting suite — 81 commands, 78 workflows, 33 agents | Workspine is narrower: 13 workflows, fewer moving parts for the human in the loop |
| OpenSpec | Living spec + change proposals in a lightweight format | Workspine adds the execution, verification, and handoff layer on top of planning |
| LeanSpec | Minimal specs that fit LLM context | Workspine adds workflow gates and runtime entrypoints for when you need the full structure |
| GitHub Spec Kit | Spec-first planning workflows in .specify/ | Similar space; Workspine is one CLI with one delivery loop instead of a broader ecosystem |
| Kiro | IDE-native agent dev with specs, steering, hooks, and MCP | Kiro is IDE-only; Workspine works across terminal and IDE agents that can read repo files |
| Tessl | Hosted platform for distributing agent skills across teams | Tessl needs a hosted service; Workspine is local-first with no hosted infrastructure |
Based on each tool's public docs as of May 2026. Open an issue if anything reads inaccurately.
CLI
npx -y gsdd-cli health
npx -y gsdd-cli update
npx -y gsdd-cli update --templates
npx -y gsdd-cli next --json
npx -y gsdd-cli next --format human
npx -y gsdd-cli next --init
npx -y gsdd-cli journey
npx -y gsdd-cli remember "Use direct commits" --type rule --scope repo
npx -y gsdd-cli decisions query "current git flow" --path bin/gsdd.mjs
npx -y gsdd-cli decisions promote <id>
npx -y gsdd-cli decisions reject <id> --reason "No longer applicable"
npx -y gsdd-cli decisions invalidate <id> --reason "Superseded by the current policy"
npx -y gsdd-cli rigor
npx -y gsdd-cli file-op
npx -y gsdd-cli models profile quality
npx -y gsdd-cli models profile budget
npx -y gsdd-cli find-phase
npx -y gsdd-cli phase-status
npx -y gsdd-cli verify
npx -y gsdd-cli scaffold
npx -y gsdd-cli help
Full reference: User Guide · Runtime Support · Verification Discipline
Credits
Fork of Get Shit Done by Lex Christopherson, MIT licensed. Original git history retained.
MIT License. See LICENSE for details.