Releases: jnuyens/gsd-plugin
Release list
v2.39.0
v2.38.8 — /gsd:resume-at + README Added Features section
Plugin-only feature release.
Added
/gsd:resume-at <time>skill — schedule a future Claude Code session to auto-run/gsd:resume-work(or any GSD command via--cmd) at a specific time. AcceptsHH:MM(today/tomorrow), ISO 8601, or+<duration>(+30m,+2h,+1d). Thin wrapper over Claude Code's built-in/schedule/CronCreateprimitive — durability is owned by the host CLI; the skill translates GSD-flavored input. Default scheduled command is/gsd:resume-workso HANDOFF.json restores context automatically when the future session opens. Use case: hitting a usage cap, pausing for the day, or queuing a phase to run during off-peak quota windows.- README "Added features beyond upstream" section — surfaces plugin-only features above the fold in a single scannable table: scheduled resume, auto-resume across
/compact, mid-session checkpoints, plugin-version churn fallback, drift detection, 92% token reduction, plugin-local workflow bodies, standardized continuation prompts, and cross-session memory. Replaces buried context in the deep-dive comparison tables for fresh visitors.
Changed
- README slash-command count: 81 → 82.
Verified
- Drift detector clean: file-layout 122/122/0 · HANDOFF schema 19/19 · namespace 82 entries · 0 dash-style refs.
Based on upstream GSD 1.38.3.
v2.38.7 — read-heavy session checkpoint coverage
gsd-plugin v2.38.7
Plugin-only patch. Closes a real checkpoint gap during read-heavy research sessions.
What was broken
v2.38.5's PostToolUse periodic checkpoint used matcher `Bash|Edit|Write|MultiEdit|NotebookEdit` — file-mutating tools only. A research-phase session this morning hit a usage cap with the last checkpoint written 18 minutes earlier; those 18 minutes were almost entirely `Read`, `Grep`, `Glob`, `WebFetch` calls (no file mutations). PostToolUse never fired → no checkpoint → 18 minutes of work state vulnerable to loss.
What's in v2.38.7
Fixed:
- PostToolUse matcher broadened to also include `Read|Grep|Glob|WebFetch|WebSearch`. Combined with the existing 60s mtime throttle, write rate stays bounded ≤1/min regardless of how often the hook fires. Smoke-tested under burst load: 5 rapid reads → 1 write.
- Net guarantee: `HANDOFF.json` is at most ~60s stale during an active session, regardless of whether the work is read-heavy or write-heavy.
Changed:
- README "What changed from upstream GSD" expanded from a single 6-row table into four grouped tables (Install + runtime architecture, Session continuity, Drift resilience, Plugin-environment robustness). Surfaces the v1.1, v1.2, and v2.38.x improvements that previously weren't documented as user-facing differences vs upstream.
Token cost: zero
Verified in CC source (`utils/messages.ts:4099-4115`): PostToolUse hook output is never injected into the model's context — only `SessionStart` and `UserPromptSubmit` produce systemReminder messages. The hook fires more often now, but it costs only wall-clock (~5-10ms per throttled fire) and disk I/O (~1KB per actual write, ≤1/min). No conversation tokens consumed.
Based on
Upstream GSD 1.38.3.
v2.38.6 — workflow-include fix
gsd-plugin v2.38.6 — workflow-include fix
Plugin-only patch. Closes the largest deferred drift category from v1.2 Phase 7.
What was broken
Skills delegate to operational logic via @-include of workflow body files. Previously these used the legacy non-plugin install path (@~/.claude/get-shit-done/workflows/<name>.md) — a path that exists in legacy npx get-shit-done-cc installs but never in the plugin layout. Visible symptom: "Falling back to legacy workflow file" graceful-degradation messages, silently lost workflow content for plugin users. v1.2's file-layout detector quantified 71 dangling refs as Category B (genuinely missing) and explicitly deferred the fix as structural.
What's in v2.38.6
Two moves close the category:
- Plugin-local
workflows/dir — 78 workflow markdown files copied from upstreamget-shit-done/workflows/into the plugin tree, namespace-rewritten to colon-form commands. - Path rewrite to
${CLAUDE_PLUGIN_ROOT}form — 270@-include rewrites across 99 files:@~/.claude/get-shit-done/<sub>→@${CLAUDE_PLUGIN_ROOT}/<sub>forworkflows/,references/,templates/,contexts/. Claude Code's plugin loader substitutes${CLAUDE_PLUGIN_ROOT}in skill/agent content; at runtime the variable expands to the version-stamped install path, so the@-include resolves to the actual plugin file.
Net: genuinely-missing dangling refs go from 71 → 0. Skills now load their workflow bodies as intended.
Detector extended
bin/maintenance/check-file-layout.cjs gained a third reference pattern for @${CLAUDE_PLUGIN_ROOT}/<sub> so the new plugin-local form is validated and future drift in it gets caught.
Baseline
tests/drift-baseline.json regenerated:
- Was:
109 / 38 / 71(total / repairable / missing) - Now:
122 / 122 / 0
Total goes UP because the detector now catches the new resolvable refs; missing goes to ZERO.
Process update
.planning/PROJECT.md "After each upstream GSD sync" checklist step 1 now includes copying get-shit-done/workflows/ into workflows/ so future syncs keep workflow bodies in lockstep with upstream.
Plugin install size
Grew by ~78 files / ~30k lines of workflow markdown. That's the operational logic the skills were always supposed to load — just now actually loaded instead of silently absent.
Based on
Upstream GSD 1.38.3.
v2.38.5
gsd-plugin v2.38.5
Plugin-only patch over v1.2. Two follow-ups to the session-continuity work plus an audit-doc fix. Upstream still at GSD 1.38.3.
Added
PostToolUse periodic checkpoint — bridges Claude Code's microcompact gap. CC has two compaction paths: compactConversation (fires PreCompact → plugin checkpoints) and microcompactMessages (per-turn lossy GC of stale tool outputs — does NOT fire PreCompact, no event hookable). New post-tool-use handler writes a fresh HANDOFF.json after any file-mutating tool call (matcher: Bash|Edit|Write|MultiEdit|NotebookEdit), throttled to at most once per 60s via HANDOFF.json mtime. New source: "auto-postool" in the schema enum. Net: handoff is at most ~60s stale during an active session, regardless of which compaction path ran.
/clear continuation hints surfaced at end-of-flow boundaries — references/continuation-format.md (rich template with /clear-then-X patterns) was dormant; no skill referenced it. Six terminal skills (execute-phase, complete-milestone, verify-work, quick, plan-phase, ship) now emit Next Up continuation blocks on completion. Each block follows the standard format with a safety parenthetical: (/clear is safe — /gsd:resume-work restores position from HANDOFF.json if you change your mind). The safety note is anchored to v1.1's session-continuity work + this release's PostToolUse checkpoint, which together make /clear near-zero-cost.
Changed
bin/lib/checkpoint.cjsacceptsauto-postoolsource valueschema/handoff-v1.jsonsource enum extended (now["auto-compact", "manual-pause", "auto-postool"])hooks/hooks.jsonPostToolUse matcher:Bash→Bash|Edit|Write|MultiEdit|NotebookEditreferences/continuation-format.mdgets a safety footer documenting that/clearis safe since v1.1
Fixed
.planning/AUDIT-v1.2.mdself-collision on its own dash-form example trip the namespace drift detector
Based on
Upstream GSD 1.38.3.
v2.38.4 — v1.2 Upstream Resilience
gsd-plugin v2.38.4 — v1.2 Upstream Resilience
Drift detection is now a first-class plugin concern. Three detectors run in CI on every push — file-layout, HANDOFF schema, and namespace drift — each with a committed ratchet baseline. Regressions hard-fail.
What's new
Drift detection (Phases 7 + 8 + 9)
- File-layout drift detector — catches dangling
@~/.claude/get-shit-done/*references before they ship. 109/38/71 baseline at ship (total / repairable / genuinely missing). - HANDOFF schema baseline + validator —
schema/handoff-v1.json(JSON Schema draft-07) describes the 19-field contract.check-handoff-schema.cjsvalidateswriteCheckpoint()output in CI against the schema. - Upstream schema drift detector — post-sync check compares upstream's
/gsd:pause-workdeclared field list against our schema. Confirmed PASS against upstream 1.38.3 at ship time. - Unified
check-drift.cjsumbrella — one entry-point for local dev + post-sync verification. CI stays per-category for fast-feedback granularity. - First CI on the repo —
.github/workflows/check-drift.ymlwith two parallel jobs. CHANGELOG.mdscaffold in Keep-a-Changelog format with plugin-vs-upstream version distinction.- README feature tour — new
## Session continuity + drift resiliencesection describing the/compactround-trip and the three-detector gate.
Plumbing polish (quick tasks)
- Skill directories renamed
skills/gsd-<name>/→skills/<name>/— 81 renames fix a duplicated-prefix UX bug where tab completion inserted/gsd:gsd-<skill>instead of/gsd:<skill>. Also aligns plugin layout with upstream'scommands/gsd/<name>.mdstructure. - README reorganized for new-user-first flow. Install → quick start → updating → maintenance now run contiguously at the top; upstream-user migration content consolidated in a trailing umbrella section.
Post-sync workflow — PROJECT.md checklist formalized to 9 steps with mandatory check-drift.cjs pass gate + separate check-upstream-schema.cjs step.
Based on
Upstream GSD 1.38.3.
Deferred to v1.3+
LIFE-02 (staleness detection), LIFE-03 (dedicated manual-checkpoint skill), BEHAVIOR-01 (behavior drift — needs integration-test infra), UPST-03/04 (upstream PR packaging — needs upstream-direction review).
Full context
- Milestone roadmap: .planning/milestones/v1.2-ROADMAP.md
- Requirements archive: .planning/milestones/v1.2-REQUIREMENTS.md
- Post-completion audit: .planning/AUDIT-v1.2.md
- Full changelog: CHANGELOG.md
v2.38.3
gsd-plugin v2.38.3 — upstream GSD 1.38.3 sync
Ports upstream 1.38.3's sketch + spike updates into the plugin.
New: Frontier mode for /gsd:sketch and /gsd:spike
Running either command with no argument (or the literal word frontier) analyzes the existing sketch/spike landscape and proposes consistency / frontier targets instead of requiring an explicit idea. Useful for "what should I spike next?" / "what's missing in our sketch coverage?" sessions.
New: Extended tool access for sketches and spikes
Both skills now include WebSearch, WebFetch, and context7 (resolve-library-id, query-docs) in their allowed-tools. Lets mockups and spikes ground their experiments in real API surfaces instead of approximations.
Plugin-only fixes
bin/maintenance/rewrite-command-namespace.cjsskip-pattern generalized fromv1.0-tov\d+\.so versioned milestone archives (including the newv1.1-phases/) are preserved as-is on re-runs.
Not ported from upstream
Upstream 1.38.3 also modified get-shit-done/workflows/sketch.md, spike.md, sketch-wrap-up.md, spike-wrap-up.md (184–414 diff lines). Plugin has no workflows/ directory; every @~/.claude/get-shit-done/workflows/* reference in plugin SKILL.md files currently dangles by design. Closing that structural drift is the target of v1.2 Phase 7 (File-Layout Drift Detector).
Based on: GSD 1.38.3.
Commits: b4e8796 (sync) + 1c75799 (version bump).
v2.38.1 — upstream GSD 1.38.1 sync
Syncs plugin to upstream GSD 1.38.1 (hotfix on 1.38.0).
What's new from upstream
New commands
/gsd:ingest-docs— bootstrap or merge.planning/from existing repo docs. Handy for brownfield projects where GSD is being introduced after some planning docs already exist (#2389)./gsd:ultraplan-phase[BETA] — offloads the plan phase to Claude Code's ultraplan mode for heavier architectural reasoning on complex phases (#2378).
New agents and references
agents/gsd-doc-classifier.md,agents/gsd-doc-synthesizer.md— power the ingest-docs pipeline.references/doc-conflict-engine.md— conflict-detection rules used when merging external docs into.planning/.templates/spec.md— SPEC.md template for the existing/gsd:spec-phaseworkflow.
Hotfixes rolled in from v1.38.1
/gsd:set-profilenow pre-flightscommand -v gsd-sdkand prints an actionable install hint if the SDK isn't on PATH (#2439)./gsd:importnow references the newdoc-conflict-engine.mdfor conflict detection.- Upstream template polish in
DEBUG.md,research.md,state.md,config.json, andcodebase/structure.md.
What's not included (upstream-only)
The plugin bundles its own CJS tooling and hooks wiring, so these upstream changes were intentionally skipped:
- Upstream's
bin/install.jstransactional@gsd-build/sdkinstall path (#2439) .github/workflows/install-smoke.ymland release-gate workflowsscripts/build-hooks.jsHOOKS_TO_COPYallowlist fix (#2406) — plugin useshooks/hooks.jsonsdk/src/TypeScript source and registry drift guard (#2442)
Plugin-specific
Version bumped 2.37.1 → 2.38.1 under the plugin_major = upstream_major + 1 scheme. Local patches preserved:
bin/lib/core.cjs:resolveGsdRoot/resolveGsdDataDir/resolveGsdAsset,opus → claude-opus-4-7bin/lib/checkpoint.cjs,bin/lib/memory.cjs(plugin-only)bin/gsd-tools.cjs:write-phase-memory,checkpoint,hook,migrationcommand branches
Install / upgrade
/plugin marketplace update gsd-plugin
/plugin install gsd@gsd-plugin
Full changelog: v2.37.1...v2.38.1 · Upstream: 1.37.1...1.38.1
v2.37.1 — new versioning scheme
New versioning scheme
The plugin now uses plugin_major = upstream_major + 1 to signal that this is a derivative of upstream GSD with extra features layered on top.
| Component | Mapping |
|---|---|
plugin_major |
upstream_major + 1 |
plugin_minor |
upstream_minor |
plugin_patch |
upstream_patch (or higher for plugin-only patches) |
This release tracks upstream GSD 1.37.1 → plugin 2.37.1.
When upstream advances to 2.x, this plugin will move to 3.x.
Notes
- This is the first GitHub tag/release since
v1.0. Prior1.35.0/1.36.0/1.37.1syncs shipped under the old scheme and are not being backfilled as tags. - No functional changes — version metadata + README only.