Skip to content

Commit b7e29e4

Browse files
committed
chore: bump plugin version 2.38.6 → 2.38.7
Plugin-only patch capturing today's PostToolUse matcher fix + a richer README comparison vs upstream. What's in this patch: - 260425-rgw: PostToolUse matcher broadened to also fire on Read / Grep / Glob / WebFetch / WebSearch. Closes the 18-min checkpoint gap that surfaced in a real usage-cap incident during a read-heavy research session. 60s mtime throttle still bounds writes ≤1/min. Zero token cost (verified in CC source: PostToolUse hook output is never injected into model context). - README "What changed from upstream GSD" expanded from a 6-row table into four grouped tables — surfaces v1.1, v1.2, and v2.38.x improvements that previously weren't documented as user-facing diffs. Files bumped: package.json, .claude-plugin/plugin.json, .claude-plugin/marketplace.json, README.md. CHANGELOG.md gets a v2.38.7 section. Upstream still at 1.38.3 — no upstream sync this release.
1 parent 0fd69dd commit b7e29e4

5 files changed

Lines changed: 49 additions & 9 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"name": "gsd",
1212
"source": "./",
1313
"description": "Get Shit Done -- structured workflow plugin for Claude Code with planning, execution, verification, and MCP-backed project state",
14-
"version": "2.38.6",
14+
"version": "2.38.7",
1515
"author": {
1616
"name": "Jasper Nuyens"
1717
},

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gsd",
3-
"version": "2.38.6",
3+
"version": "2.38.7",
44
"description": "Get Shit Done -- a structured workflow plugin for Claude Code that adds planning, execution, and verification commands with MCP-backed project state",
55
"author": {
66
"name": "Jasper Nuyens"

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ History before 2.38.2 lives in git + the per-milestone archive (see `.planning/m
88

99
## [Unreleased]
1010

11+
## [2.38.7] - 2026-04-25 (based on upstream GSD 1.38.3)
12+
13+
Plugin-only patch — closes a real read-heavy-session checkpoint gap surfaced by a usage-cap incident, plus a fuller README comparison vs upstream.
14+
15+
### Fixed
16+
- **PostToolUse periodic checkpoint now covers read-heavy research sessions.** Yesterday's matcher (`Bash|Edit|Write|MultiEdit|NotebookEdit`) only fired on file-mutating tool calls. A real research-phase session in another project hit a usage cap with the last checkpoint written 18 minutes earlier — those 18 minutes were almost entirely `Read`, `Grep`, `Glob`, `WebFetch` calls. None in the matcher → PostToolUse never fired → no checkpoint. Matcher broadened to `Bash|Edit|Write|MultiEdit|NotebookEdit|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). Token cost: zero — verified in CC source that PostToolUse hook output is never injected into model context (quick task `260425-rgw`, commit `7497cc6`).
17+
18+
### Changed
19+
- **README "What changed from upstream GSD"** expanded from a single 6-row table to 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.
20+
1121
## [2.38.6] - 2026-04-25 (based on upstream GSD 1.38.3)
1222

1323
Plugin-only patch — closes the largest deferred drift category from v1.2 Phase 7.

README.md

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**Based on:** [GSD 1.38.3](https://github.com/gsd-build/get-shit-done/releases/tag/v1.38.3) base tree by **TACHES** (Lex Christopherson)
44

5-
**Plugin version:** `2.38.6`
5+
**Plugin version:** `2.38.7`
66

77
A performance-optimized plugin packaging of [GSD](https://github.com/gsd-build/get-shit-done) for Claude Code. Reduces per-turn token overhead by ~92%, adds MCP-backed project state, auto-resumes across `/compact`, and bundles everything into a single-install plugin.
88

@@ -92,15 +92,45 @@ If you already have GSD installed via `npx get-shit-done-cc` or the legacy `~/.c
9292

9393
### What changed from upstream GSD
9494

95+
This plugin starts from upstream GSD's source tree and adds Claude-Code-native features that aren't possible in upstream's CLI-only design. Areas where the plugin diverges meaningfully:
96+
97+
#### Install + runtime architecture
98+
9599
| Aspect | Upstream GSD | This plugin |
96100
|--------|-------------|-------------|
97101
| Install | `npx get-shit-done-cc` | `/plugin marketplace add jnuyens/gsd-plugin && /plugin install gsd@gsd-plugin` (run inside Claude Code) |
98102
| Context overhead | ~3,000-5,000 tokens/turn via CLAUDE.md | ~200 tokens (92% reduction) |
99-
| Skill isolation | Inline execution | `context: fork` sub-agent isolation |
100-
| State access | BashTool roundtrips to gsd-tools | MCP resources + tools |
101-
| Memory | None | memdir auto-recall across sessions |
102-
| Agent definitions | Inline prompt role descriptions | `.claude/agents/*.md` with typed frontmatter |
103-
| Session continuity across `/compact` | None | PreCompact + SessionStart hooks |
103+
| Skill isolation | Inline execution; orchestration prompts pollute parent context | `context: fork` sub-agent isolation; orchestration runs in clean child contexts |
104+
| State access | BashTool roundtrips to `gsd-tools` CLI | MCP resources + tools; structured queries replace prompt injection |
105+
| Agent definitions | Inline prompt role descriptions in skill bodies | `.claude/agents/*.md` with typed frontmatter (model overrides, tool restrictions, effort budgets) |
106+
| Memory across sessions | None — each session starts cold | Phase outcomes persist via Claude Code's memdir; auto-recalled at session start |
107+
| Command IDs | `/gsd-<skill>` (dash; works because no namespace in upstream's flat install) | `/gsd:<skill>` (colon; matches Claude Code's plugin namespace, autocompletes correctly) |
108+
109+
#### Session continuity (none of this exists upstream)
110+
111+
| Aspect | Upstream GSD | This plugin |
112+
|--------|-------------|-------------|
113+
| Behavior at `/compact` | Conversation collapses; phase position lost; user manually re-orients next session | **PreCompact hook** writes a 19-field `HANDOFF.json` capturing phase, plan, task, decisions, uncommitted files. **SessionStart hook** detects it on next session and auto-invokes `/gsd:resume-work` with zero user input. |
114+
| Periodic checkpoint mid-session | None — state only captured if user manually `/gsd:pause-work`'s | **PostToolUse hook** writes a fresh checkpoint after most tool calls (`Bash`, `Edit`, `Write`, `MultiEdit`, `NotebookEdit`, `Read`, `Grep`, `Glob`, `WebFetch`, `WebSearch`), throttled to ≤1/min via mtime. Bridges Claude Code's silent *microcompact* path AND read-heavy research phases. After an unexpected session end (usage cap, kill, network drop), HANDOFF reflects state from at most ~60s before the cut. |
115+
| Hook-less environments | N/A | **CLAUDE.md fallback section** carries the same resume instruction so CLIs without hook support (or sessions where the hook fails to fire) still trigger resume on the next session. |
116+
| Handoff lifecycle | N/A | `/gsd:resume-work` deletes `HANDOFF.json` after a successful resume, preventing stale handoffs from triggering phantom resumes. |
117+
118+
#### Drift resilience (CI-enforced; none upstream)
119+
120+
| Aspect | Upstream GSD | This plugin |
121+
|--------|-------------|-------------|
122+
| File-layout drift | None — broken `@`-includes ship silently | **`check-file-layout.cjs`** scans plugin content for dangling `@~/.claude/...` references, classifies each as repairable vs genuinely missing, ratchets against a committed baseline. Hard-fails in CI on regression. |
123+
| HANDOFF schema integrity | None — schema lives only as prose in upstream's `pause-work.md` | **`schema/handoff-v1.json`** (JSON Schema draft-07, 19 fields). **`check-handoff-schema.cjs`** validates `writeCheckpoint()` output against the schema in CI. **`check-upstream-schema.cjs`** runs post-sync to catch upstream format drift early. |
124+
| Namespace normalization | N/A — upstream commands ship in dash form | **`rewrite-command-namespace.cjs`** rewrites `/gsd-<skill>``/gsd:<skill>` across all plugin content. Run after every upstream sync; drift is detected by the umbrella check. |
125+
| Unified drift check | None | **`check-drift.cjs`** umbrella runs all three detectors in one invocation. Used in local dev + post-upstream-sync verification. |
126+
127+
#### Plugin-environment robustness
128+
129+
| Aspect | Upstream GSD | This plugin |
130+
|--------|-------------|-------------|
131+
| Plugin-version churn mid-session | N/A | Hook commands resolve through a Node inline resolver that falls back to the newest cached plugin version when the baked `${CLAUDE_PLUGIN_ROOT}` path is pruned (e.g. after another session upgraded the plugin). Long sessions survive plugin updates. |
132+
| Workflow body location | `~/.claude/get-shit-done/workflows/<name>.md` (legacy install dir; absent for plugin users → silent "fall back to legacy file" failures) | **Plugin-local `workflows/` dir** with all 78 bodies; skills `@`-include via `${CLAUDE_PLUGIN_ROOT}/workflows/<name>.md` which Claude Code's plugin loader resolves to the version-stamped install path |
133+
| End-of-flow continuation prompts | Inconsistent — some skills emit `/clear`-then-X blocks, many don't | Standardized: 6 terminal skills (`execute-phase`, `complete-milestone`, `verify-work`, `quick`, `plan-phase`, `ship`) emit Next Up blocks per `references/continuation-format.md` with `/clear`-then-[next] + a "/clear is safe" parenthetical (resume restores from HANDOFF) |
104134

105135
### Automatic migration on install
106136

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gsd-plugin",
3-
"version": "2.38.6",
3+
"version": "2.38.7",
44
"description": "Performance-optimized plugin packaging of GSD (Get Shit Done) for Claude Code",
55
"private": true,
66
"scripts": {

0 commit comments

Comments
 (0)