π¦ Install
Published to npm as get-shit-done-cc@1.39.0 β dist-tags latest + next.
npx get-shit-done-cc@1.39.0
# or pin to the latest stable:
npx get-shit-done-cc@latestAlready installed? Run /gsd-update from your project.
- npm package: https://www.npmjs.com/package/get-shit-done-cc/v/1.39.0
- Tarball: https://registry.npmjs.org/get-shit-done-cc/-/get-shit-done-cc-1.39.0.tgz
Highlights
- πͺΆ
--minimalinstall profile β ~94% cold-start token reduction for local LLMs (32Kβ128K context). Re-rungsd updatewithout the flag to expand. (#2762) - βοΈ
/gsd-edit-phaseβ modify any roadmap phase field in place without renumbering.--forceskips the diff. (#2617) - π Post-merge build & test gate β execute-phase auto-detects build/test commands across Xcode, Make, Just, Cargo, Go, Python, npm. iOS projects run
xcodebuild build/testautomatically. (#2720) - π€ Per-runtime review models β
review.models.<cli>config key + extendedRUNTIME_PROFILE_MAPcoveringgemini,qwen,opencode,copilot. (#2612, #2748) - πΏ Workstream config inheritance β root
.planning/config.jsonis deep-merged into each workstream config; explicitnulloverrides parent values. (#2714) - π¦ Manual canary release workflow β
workflow_dispatchpublishes{base}-canary.{N}builds fromdevunder thecanarydist-tag, with the same publish-verification gate as stable releases. (#2828, #2868)
What's new
Added
--minimalinstall flag (alias--core-only) writes only the main-loop core skills (new-project,discuss-phase,plan-phase,execute-phase,help,update) and zerogsd-*subagents. Cuts cold-start system-prompt overhead from ~12k tokens to ~700, useful for local LLMs with 32Kβ128K context. The install manifest now recordsmode: "minimal" | "full". (#2762)/gsd-edit-phasecommand β modify any field of an existing phase in ROADMAP.md without changing its number or position. Supports--forceto skip the confirmation diff, validatesdepends_onreferences, and updates STATE.md on write. (#2617)- Post-merge build & test gate β execute-phase step 5.6 now runs in both parallel and serial mode. Auto-detects the build command from
workflow.build_command, then falls back to Xcode (.xcodeproj), Makefile, Justfile, Cargo, Go, Python, or npm. (#2720) - Extended runtime model profiles β
RUNTIME_PROFILE_MAPnow coversgemini,qwen,opencode, andcopilotruntimes with full three-tier (fast/balanced/opus) model mappings. (#2612) - Workstream config inheritance β when
GSD_WORKSTREAMis set, the root.planning/config.jsonis loaded first and deep-merged with the workstream config (workstream wins on conflict). Explicitnullin a workstream config now correctly overrides a root value. (#2714) - Manual canary release workflow β
.github/workflows/canary.ymlpublishes{base}-canary.{N}builds ofget-shit-done-ccand@gsd-build/sdkunder thecanarydist-tag on demand viaworkflow_dispatch. Includesdry_runand the same publish-verification gate asrelease.yml. (#2828)
Changed
- Canary release workflow now publishes from
devbranch only β aligns with the new branchβdist-tag policy (devβ@canary,mainβ@next/@latest).workflow_dispatchruns onmaincomplete validation but skip publish + tag. (#2868) - Skill descriptions trimmed to β€ 100 chars across all
commands/gsd/*.mdβ three anti-patterns eliminated: flag documentation already present inargument-hint:,Triggers:keyword-stuffing lists, and numbered enumeration patterns. Range was 45β380 chars; now 45β99. (#2789) scripts/lint-descriptions.cjsadded β CI lint gate that fails if anycommands/gsd/*.mddescription exceeds 100 chars. Run vianpm run lint:descriptions. (#2789)- Skill surface consolidated 86 β 59 entries β four new grouped skills replace clusters of micro-skills:
capture(todo/note/backlog/seed),phase(add/insert/remove/edit),config(settings-advanced/integrations/profile),workspace(new/list/remove). Six parents absorb sub-operations as flags:update --sync/--reapply,sketch --wrap-up,spike --wrap-up,map-codebase --fast/--query,code-review --fix,progress --do/--next. Zero functional loss. (#2790) autonomous.mdcorrected β was invoking deletedgsd:code-review-fix; now callsgsd:code-review --fix. (#2790)
Removed
- 31 micro-skills deleted β absorbed into consolidated parents or removed outright: add-todo, note, add-backlog, plant-seed, check-todos, add-phase, insert-phase, remove-phase, edit-phase, settings-advanced, settings-integrations, set-profile, new-workspace, list-workspaces, remove-workspace, sync-skills, reapply-patches, sketch-wrap-up, spike-wrap-up, scan, intel, code-review-fix, next, do, join-discord, research-phase, session-report, from-gsd2, analyze-dependencies, list-phase-assumptions, plan-milestone-gaps. All functionality preserved via flags on consolidated skills. (#2790)
Fixed
- GSD slash command namespace drift cleaned up across docs, workflows, and autocomplete; remaining active
/gsd:<cmd>references now use canonical/gsd-<cmd>;extract-learningsautocomplete fixed. (#2855) extractCurrentMilestoneno longer truncates ROADMAP.md at heading-like lines inside fenced code blocks β previously, any phase defined after a fenced block was invisible toroadmap analyze,roadmap get-phase,/gsd-autonomous, and all phase-number commands. (#2787)- Codex install no longer corrupts existing
~/.codex/config.tomlβ defensively strips legacy[agents]/[[agents]]blocks, emits hooks in user's preferred shape, migrates legacy[hooks.<Event>]to namespaced AoT, and atomically writes via temp-file +renameSync. Strict TOML validation rejects duplicate keys, repeated table headers, trailing bytes, and unsupported value types. (#2760) - Codex hooks migrator correctness hardening β four edge-cases in the
[[hooks.<Event>]]β[[hooks.<Event>.hooks]]migration path fixed: hyphenated/quoted keys parsed correctly; matcher-only sections no longer synthesise broken[[hooks.TYPE.hooks]]sub-tables;legacyMapSectionsfilter uses parsed segment count; quoted-key dot regression test added. (#2809) - Codex
[[agents]]reverted to[agents.<name>]struct format β sequence format from #2645 is rejected by codex-cli 0.124.0+. (#2727) - Codex legacy
[hooks]map format auto-migrated β Codex 0.124.0 requires[[hooks]]array-of-tables; old GSD installs that wrote[hooks.shell]map-style now self-heal on the nextgsd install --codex. (#2637) - Codex installer preserves trailing newline when stripping legacy hooks β files with no terminating newline at EOF no longer break downstream parsers. (#2866)
gsd-sdkPATH verification tightened β installer probes for an executablegsd-sdkshim on PATH, attempts to materialize one via symlink at~/.local/bin/gsd-sdkwhen absent. Only printsβ GSD SDK readywhen the probe succeeds. (#2775, #2777)gsd-sdkresolvable in local-mode installs β the previousisLocalshort-circuit returned before the PATH probe + self-link path could run. Local installs now run the same probe-and-link flow as global installs. (#2829)gsd-toolsinvocations use the absolute installed path β baregsd-tools β¦calls in skill bodies no longer rely on PATH resolution that is not guaranteed in every runtime. (#2851)- USER-PROFILE.md no longer triggers false "locally modified" warning β
USER_OWNED_ARTIFACTSis now a single source of truth used by both the preserve and manifest write paths. (#2771) - All
gsd-sdk queryhandlers now respect--wsβ 18+ handlers accepted_workstreambut never forwarded it toplanningPaths/loadConfig. Workstream now scopes path resolution correctly. (#2731) resolveModelthreads workstream β different workstreams with differentmodel_profilesettings now get their own profile instead of the root's. (#2742)parseMustHavesBlockquoted strings β fully-quoted truths containing:no longer crashannotate-dependencieswithTypeError: t.trim is not a function. (#2757, #2734)gsd state complete-phasesubcommand β was missing; unknown subcommands fell through tocmdStateLoad. Now updatesStatus,Last Activity, andCurrent PositiontoCOMPLETE. (#2735)- Non-string
depends_onvalues preserved β numeric YAML scalars and kv-shaped truths were silently dropped. NewcoerceTruthToStringhelper handles numbers, booleans, and object-shaped items. (#2770) - Worktree isolation scoped to submodule-touching plans β only plans that touch a submodule path skip worktree isolation now. (#2772)
- Worktree cleanup uses inclusion filter β exclusion-based cleanup destroyed
.gitpointer in multi-workspace and cross-drive Windows setups; now targets only.claude/worktrees/agent-*. (#2774) Requirements:header variants all parse correctly β both**Requirements:**and**Requirements**:now match. (#2769)gsd-sdk query commitpaths passed via--filesβ 81 invocations across 50 files updated. (#2767)- Phase detection in bullet/bold ROADMAP formats β
phaseAddnow matches heading, bullet checklist, and bold entries. (#2726) - Plan-line overwrite when
**Plans:**is empty β replaced\s*(newline-eating) with[ \t]*plus section-boundary lookahead. (#2728) - Phase-lifecycle
<details>-wrapped active milestone β falls back to locating the last complete<details>β¦</details>span. (#2641) - Phase-lifecycle project-code-prefixed directory names β filesystem fallback regex now matches
CK-45-foundation-style dirs. roadmap.update-plan-progressregex β same\s*corruption vector asplanCountPattern; replaced.replaceInCurrentMilestonefast-path guard fixed β no longer falsely triggers on footer-onlyaftercontent.graphifyCLI updated to subcommand form βgraphify update .replaces removedgraphify . --update. (#2732)- LM Studio model identity validated in review workflow β top-level
.modelfield compared againstLM_STUDIO_MODEL; same fix applied to llama.cpp. (#2721) - SDK
globalDefaultspreserved for nested config keys βworkflow,git,hooks,agent_skills,featuressections were silently dropping user values from~/.gsd/defaults.json. (#2673) MODEL_ALIAS_MAPupdated toclaude-opus-4-7βMODEL_ALIAS_MAPandRUNTIME_PROFILE_MAP.claude.opuswere pinned toclaude-opus-4-6. (#2733)- Orchestrators wait for subagents before continuing β 26 GSD workflow files now include an explicit
ORCHESTRATOR RULEblockquote immediately after everyTask()spawn. (#2729) audit-uatparser readshuman_verification:from frontmatter array β false-positive open gaps at every/gsd-complete-milestoneaudit fixed. (#2788)gsd-sdkbinary collision with@gsd-build/sdkresolved β workstream-aware query registry;gsd-toolsbin alias added. (#2791)- OpenCode generated agents embed
model_profile_overrides.opencode.<tier>β per-tier model overrides set via/gsd-settings-advancedare now propagated. (#2794) roadmap update-plan-progressaccepts--phaseflag form β SDK arg-parsing regression silently dropped flags, corrupting STATE.md. (#2796)context_windowadded toVALID_CONFIG_KEYSallowlist β/gsd-settings-advancedcould not set the key. (#2798)gsd-tools initdispatchesingest-docshandler β/gsd-ingest-docswas broken in v1.38.5. (#2801)config-gethonors--default <value>flag β fallback for missing keys ported from CJS implementation. (#2803)find-phasereturnsnullfor archived phases β preventsinit.plan-phase/init.execute-phasefrom returning the archived prior-milestone directory. (#2805)- SKILL.md frontmatter
name:migrated to hyphen form βgsd:cmdcolon form no longer appears in autocomplete. (#2808) - OpenCode
@filereferences use absolute paths on all platforms β fix #2376's Windows-only guard now applies unconditionally. (#2831) gsd-sdk autodetects Codex runtime correctly β newruntime-gateraises a clear error for non-Claude runtimes;resolveModel()is now runtime-aware. (#2832)- CR-INTEGRATION tests aligned with hyphen-form skill names β tests parse
Skill(skill="...")invocations structurally and reject the legacy colon form. (#2835) audit-openquick-task scanner accepts${quick_id}-SUMMARY.mdβ false-positivestatus: missingfor every documented quick task fixed; UAT terminal-status enum gainsresolved. (#2836)quick.md/execute-phase.mdSUMMARY rescue handles gitignored.planning/β replacedgit ls-files --exclude-standardwith filesystem-levelfind+ idempotentcp. (#2838)/gsd-code-review-fixcleanup tail is transactional β JSON recovery sentinel; orphan worktree force-removed on next run. (#2839)
Performance
discuss-phaselazy file loading β entry-point@filedirectives replaced with on-demandRead()calls gated behind mode routing. Tokens loaded at skill entry drop from ~13k to near zero. (#2606)