Skip to content

Releases: jnuyens/gsd-plugin

v2.39.0

Choose a tag to compare

@jnuyens jnuyens released this 01 May 19:28

Full Changelog: v2.38.8...v2.39.0

v2.38.8 — /gsd:resume-at + README Added Features section

Choose a tag to compare

@jnuyens jnuyens released this 27 Apr 09:24

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. Accepts HH:MM (today/tomorrow), ISO 8601, or +<duration> (+30m, +2h, +1d). Thin wrapper over Claude Code's built-in /schedule / CronCreate primitive — durability is owned by the host CLI; the skill translates GSD-flavored input. Default scheduled command is /gsd:resume-work so 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

Choose a tag to compare

@jnuyens jnuyens released this 25 Apr 08:48

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

Choose a tag to compare

@jnuyens jnuyens released this 24 Apr 23:55

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:

  1. Plugin-local workflows/ dir — 78 workflow markdown files copied from upstream get-shit-done/workflows/ into the plugin tree, namespace-rewritten to colon-form commands.
  2. Path rewrite to ${CLAUDE_PLUGIN_ROOT} form — 270 @-include rewrites across 99 files: @~/.claude/get-shit-done/<sub>@${CLAUDE_PLUGIN_ROOT}/<sub> for workflows/, 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

Choose a tag to compare

@jnuyens jnuyens released this 24 Apr 23:42

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 boundariesreferences/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.cjs accepts auto-postool source value
  • schema/handoff-v1.json source enum extended (now ["auto-compact", "manual-pause", "auto-postool"])
  • hooks/hooks.json PostToolUse matcher: BashBash|Edit|Write|MultiEdit|NotebookEdit
  • references/continuation-format.md gets a safety footer documenting that /clear is safe since v1.1

Fixed

  • .planning/AUDIT-v1.2.md self-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

Choose a tag to compare

@jnuyens jnuyens released this 24 Apr 09:20

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 + validatorschema/handoff-v1.json (JSON Schema draft-07) describes the 19-field contract. check-handoff-schema.cjs validates writeCheckpoint() output in CI against the schema.
  • Upstream schema drift detector — post-sync check compares upstream's /gsd:pause-work declared field list against our schema. Confirmed PASS against upstream 1.38.3 at ship time.
  • Unified check-drift.cjs umbrella — 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.yml with two parallel jobs.
  • CHANGELOG.md scaffold in Keep-a-Changelog format with plugin-vs-upstream version distinction.
  • README feature tour — new ## Session continuity + drift resilience section describing the /compact round-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's commands/gsd/<name>.md structure.
  • 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

v2.38.3

Choose a tag to compare

@jnuyens jnuyens released this 21 Apr 17:44

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.cjs skip-pattern generalized from v1.0- to v\d+\. so versioned milestone archives (including the new v1.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

Choose a tag to compare

@jnuyens jnuyens released this 20 Apr 03:35

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-phase workflow.

Hotfixes rolled in from v1.38.1

  • /gsd:set-profile now pre-flights command -v gsd-sdk and prints an actionable install hint if the SDK isn't on PATH (#2439).
  • /gsd:import now references the new doc-conflict-engine.md for conflict detection.
  • Upstream template polish in DEBUG.md, research.md, state.md, config.json, and codebase/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.js transactional @gsd-build/sdk install path (#2439)
  • .github/workflows/install-smoke.yml and release-gate workflows
  • scripts/build-hooks.js HOOKS_TO_COPY allowlist fix (#2406) — plugin uses hooks/hooks.json
  • sdk/src/ TypeScript source and registry drift guard (#2442)

Plugin-specific

Version bumped 2.37.12.38.1 under the plugin_major = upstream_major + 1 scheme. Local patches preserved:

  • bin/lib/core.cjs: resolveGsdRoot/resolveGsdDataDir/resolveGsdAsset, opus → claude-opus-4-7
  • bin/lib/checkpoint.cjs, bin/lib/memory.cjs (plugin-only)
  • bin/gsd-tools.cjs: write-phase-memory, checkpoint, hook, migration command 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

Choose a tag to compare

@jnuyens jnuyens released this 18 Apr 11:40

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. Prior 1.35.0 / 1.36.0 / 1.37.1 syncs shipped under the old scheme and are not being backfilled as tags.
  • No functional changes — version metadata + README only.