Skip to content

Commit eff4313

Browse files
committed
feat(quick-260427-rat): add /gsd:resume-at skill + README "Added features" section; bump 2.38.7 → 2.38.8
New skill `/gsd:resume-at <time>` schedules a future Claude Code session that auto-runs `/gsd:resume-work` (or any GSD command via `--cmd`) at a specific time. Thin wrapper over Claude Code's built-in `/schedule` / `CronCreate` — durability is owned by the host CLI; the skill translates GSD-flavored time input (`HH:MM`, ISO 8601, `+<duration>`) into the form `/schedule` accepts. Use case: hitting a usage cap, pausing for the day, or queuing a phase to run during off-peak quota windows. Default scheduled command is `/gsd:resume-work` so HANDOFF.json restores context automatically when the future session opens. Also adds a new top-level README "Added features beyond upstream" section between "Session continuity + drift resilience" and "Installation". Single scannable table catalogs 9 plugin-only headliners (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, cross-session memory). Drift check green: 122/122/0 (file-layout) · 19/19 (HANDOFF schema) · 82 skills · 0 dash-style refs. Version 2.38.7 → 2.38.8 in package.json, .claude-plugin/plugin.json, .claude-plugin/marketplace.json, README. README slash-command count 81 → 82.
1 parent b7e29e4 commit eff4313

9 files changed

Lines changed: 289 additions & 5 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.7",
14+
"version": "2.38.8",
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.7",
3+
"version": "2.38.8",
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"

.planning/STATE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ None.
107107
| 260425-wfd | Ship plugin-local `workflows/` dir (78 files) + rewrite all `@~/.claude/get-shit-done/*` refs to `@${CLAUDE_PLUGIN_ROOT}/*` form — closes Category B drift (genuinely-missing now 0; baseline 122/122/0) | 2026-04-25 | 8d3fbf9 | [260425-wfd-ship-workflows-dir](./quick/260425-wfd-ship-workflows-dir/) |
108108
| 260425-rgw | Broaden PostToolUse matcher to also include Read/Grep/Glob/WebFetch/WebSearch (closes 18-min research-read checkpoint gap from sftp-manager incident) | 2026-04-25 | 7497cc6 | [260425-rgw-postool-read-tools](./quick/260425-rgw-postool-read-tools/) |
109109
| 260421-rnu | Reorganize README — new-user flow (install/use/update) first; upstream-user migration content consolidated at end | 2026-04-21 | 5b5efd5 | [260421-rnu-readme-new-user-reorg](./quick/260421-rnu-readme-new-user-reorg/) |
110+
| 260427-rat | Add `/gsd:resume-at` skill (wraps `/schedule` for future-resume) + new README "Added features beyond upstream" section; bump 2.38.7→2.38.8 | 2026-04-27 || [260427-rat-resume-at-skill](./quick/260427-rat-resume-at-skill/) |
110111

111112
## Session Continuity
112113

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
---
2+
slug: 260427-rat-resume-at-skill
3+
type: quick
4+
created: 2026-04-27
5+
status: in-progress
6+
---
7+
8+
# Quick: Add `/gsd:resume-at` skill + README "Added features beyond upstream" section
9+
10+
## Problem / Goal
11+
12+
Two related asks from the user:
13+
14+
1. **A scheduled-resume command.** When Claude hits a token / usage cap, the user wants
15+
to ask Claude to **come back at a specific time** and resume the project. Claude
16+
Code already ships a `/schedule` skill (cron-style scheduling via `CronCreate`)
17+
and a `/loop` skill (interval re-firing). We just need a **GSD-flavored thin
18+
wrapper** that says "schedule `/gsd:resume-work` at time T" so the workflow
19+
feels native to the plugin's command surface.
20+
21+
2. **Visibility for plugin-only commands.** The README has tables comparing the
22+
plugin to upstream GSD, but plugin-only headline features get buried inside
23+
them. The user wants an **"Added features beyond upstream"** section near the
24+
top so a fresh visitor immediately sees what the plugin adds.
25+
26+
## Approach
27+
28+
### A. New skill: `skills/resume-at/SKILL.md`
29+
30+
Frontmatter:
31+
- `name: gsd:resume-at`
32+
- `description: Schedule a future resume of work — wraps Claude Code's /schedule for GSD continuity.`
33+
- `argument-hint: "<HH:MM | ISO 8601 | +<duration>> [--cmd <command>]"`
34+
- `allowed-tools: [Skill, AskUserQuestion]`
35+
36+
Process body (what Claude does when invoked):
37+
38+
1. **Parse the time argument.** Accept three forms:
39+
- `HH:MM` — today at that local time (or tomorrow if already past)
40+
- ISO 8601 (`2026-04-28T08:00`) — absolute timestamp
41+
- `+<duration>` (`+2h`, `+45m`, `+90m`) — relative offset
42+
2. **Resolve the command to schedule.** Default is `/gsd:resume-work`. If the user
43+
passed `--cmd "<command>"`, use that instead — lets you schedule any GSD
44+
command (e.g. `/gsd:next`, `/gsd:execute-phase 9`).
45+
3. **Hand off to Claude Code's `/schedule` skill** via the `Skill` tool with args
46+
that translate the GSD-friendly time form into the cron expression `/schedule`
47+
expects.
48+
4. **Confirm what was scheduled.** Print the absolute UTC + local time and the
49+
command that will fire.
50+
51+
The skill is intentionally thin — it does NOT reimplement scheduling. All the
52+
durability (cron persistence, replay-after-restart, etc.) is owned by Claude
53+
Code's built-in `/schedule`. Resume-at just translates `+2h` and `/gsd:resume-work`
54+
into the form `/schedule` accepts.
55+
56+
### B. README "Added features beyond upstream" section
57+
58+
Insert a new top-level section directly after `## Session continuity + drift resilience` (existing line 21–27 area) and before `## Installation`. Catalog the
59+
plugin-only commands and behaviors a fresh user benefits from immediately:
60+
61+
- `/gsd:resume-at <time>` — scheduled resume (NEW in this task)
62+
- Auto-resume across `/compact` (PreCompact + SessionStart hooks)
63+
- Periodic mid-session checkpoints (PostToolUse, ≤1/min)
64+
- Plugin-version churn fallback (newest-cached resolver)
65+
- File-layout / HANDOFF / namespace drift detectors
66+
- 92% per-turn token reduction vs upstream's CLAUDE.md form
67+
68+
Keep it scannable — bullet list with one-liner each, link to the deeper "For
69+
users of upstream GSD" tables for details.
70+
71+
### C. Bookkeeping
72+
73+
- README "What GSD Plugin provides" — bump `81 slash commands``82 slash commands`
74+
- CHANGELOG.md — `## [2.38.8] - 2026-04-27` entry: `Added: /gsd:resume-at skill (wraps /schedule for GSD-flavored future-resume).`
75+
- Version bump 2.38.7 → 2.38.8 in:
76+
- `package.json`
77+
- `.claude-plugin/plugin.json`
78+
- `.claude-plugin/marketplace.json`
79+
- `README.md` "Plugin version" line
80+
- Run `node bin/maintenance/check-drift.cjs` — must stay green
81+
- Verify skill discovery: `ls skills/resume-at/SKILL.md` exists, frontmatter
82+
parses (no `\n` issues), and the plugin's command count machinery picks it up
83+
84+
## Files affected
85+
86+
- `skills/resume-at/SKILL.md` (new)
87+
- `README.md` (new section + version bump + slash-command count)
88+
- `CHANGELOG.md` (new entry)
89+
- `package.json`, `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json` (version)
90+
91+
## Out of scope
92+
93+
- **Reimplementing `/schedule`.** The user's own scheduler suggestion ("queue a
94+
message with a delay") is already what `/schedule` does. We wrap, we don't
95+
rebuild.
96+
- **Persisting GSD-specific state on the scheduled run.** When the cron fires,
97+
the new session opens fresh and runs `/gsd:resume-work` — which already loads
98+
HANDOFF.json. No new persistence layer needed.
99+
- **A `/gsd:resume-when-quota-resets` command.** Different problem (quota-window
100+
detection, not absolute time). Note for future work, not this task.
101+
102+
## Smoke tests
103+
104+
1. `node bin/maintenance/check-drift.cjs` — all 3 detectors PASS
105+
2. Skill file parses (frontmatter loads cleanly)
106+
3. README "Added features beyond upstream" section renders before "Installation"
107+
4. Version refs aligned across package.json / plugin.json / marketplace.json / README
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
slug: 260427-rat-resume-at-skill
3+
type: quick
4+
created: 2026-04-27
5+
completed: 2026-04-27
6+
status: complete
7+
---
8+
9+
# Summary: `/gsd:resume-at` skill + README "Added features beyond upstream" section
10+
11+
## What changed
12+
13+
### New skill: `skills/resume-at/SKILL.md`
14+
15+
Added `/gsd:resume-at <time>` — schedules a future Claude Code session to auto-run `/gsd:resume-work` (or any GSD command via `--cmd`) at a specific time. Thin wrapper over Claude Code's built-in `/schedule` / `CronCreate` primitive.
16+
17+
Time formats accepted:
18+
- `HH:MM` — today (or tomorrow if past)
19+
- ISO 8601 — absolute timestamp
20+
- `+<duration>` — relative offset (`+30m`, `+2h`, `+1d`)
21+
22+
Default scheduled command is `/gsd:resume-work`. Override with `--cmd "<any GSD command>"`.
23+
24+
### README "Added features beyond upstream" section
25+
26+
New top-level section inserted between "Session continuity + drift resilience" and "Installation". Single scannable table catalogs 9 plugin-only headliners with one-liner each:
27+
28+
1. Scheduled resume (`/gsd:resume-at`)
29+
2. Auto-resume across `/compact`
30+
3. Mid-session checkpoints (PostToolUse, ≤1/min)
31+
4. Plugin-version-churn fallback
32+
5. CI-enforced drift detection
33+
6. 92% per-turn token reduction
34+
7. Plugin-local workflow bodies
35+
8. Standardized continuation prompts
36+
9. Cross-session memory
37+
38+
Replaces the previous structure where these features were buried inside the deep-dive comparison tables. Fresh visitors now see plugin value immediately.
39+
40+
### Bookkeeping
41+
42+
- README slash-command count: 81 → 82
43+
- README plugin version: 2.38.7 → 2.38.8
44+
- `package.json`, `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`: 2.38.7 → 2.38.8
45+
- `CHANGELOG.md`: new `## [2.38.8] - 2026-04-27` entry under Added (skill + README section) and Changed (slash count bump)
46+
47+
## Why
48+
49+
Two related asks:
50+
1. User wanted a way to resume work at a future time when hitting token caps. CC already has `/schedule` and `/loop` for this — we just needed a GSD-flavored on-ramp that defaults to `/gsd:resume-work`.
51+
2. User noted that plugin-only features were buried inside comparison tables; wanted them surfaced near the top for visibility. New section near `## Installation` accomplishes that.
52+
53+
## Verification
54+
55+
- `node bin/maintenance/check-drift.cjs` — all 3 detectors PASS
56+
- File-layout: clean (baseline 122/122/0)
57+
- HANDOFF schema: 19/19 fields valid
58+
- Namespace: skill registry shows **82 entries** (was 81), 0 stale dash-style refs
59+
- `ls skills/*/SKILL.md | wc -l` → 82 ✓
60+
- New skill frontmatter parses (`name: gsd:resume-at`, argument-hint with three time formats, allowed-tools includes Skill / AskUserQuestion / Bash)
61+
62+
## Out of scope (noted for future)
63+
64+
- A `/gsd:resume-when-quota-resets` command — different problem (quota-window detection vs absolute time).
65+
- Reimplementing `/schedule` — CC already does this correctly. Resume-at is a wrapper, not a rebuild.
66+
67+
## Next step
68+
69+
Commit all changes, tag `v2.38.8`, push, create GitHub release.

CHANGELOG.md

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

99
## [Unreleased]
1010

11+
## [2.38.8] - 2026-04-27 (based on upstream GSD 1.38.3)
12+
13+
Plugin-only feature release — adds scheduled-resume support and surfaces plugin-only features more prominently in the README.
14+
15+
### Added
16+
- **`/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 (quick task `260427-rat`).
17+
- **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.
18+
19+
### Changed
20+
- **README slash-command count**: 81 → 82 (added `resume-at`).
21+
1122
## [2.38.7] - 2026-04-25 (based on upstream GSD 1.38.3)
1223

1324
Plugin-only patch — closes a real read-heavy-session checkpoint gap surfaced by a usage-cap incident, plus a fuller README comparison vs upstream.

README.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
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.7`
5+
**Plugin version:** `2.38.8`
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

99
## What GSD Plugin provides
1010

11-
- **81 slash commands** (`/gsd:*`) for project planning, execution, debugging, and verification
11+
- **82 slash commands** (`/gsd:*`) for project planning, execution, debugging, and verification
1212
- **21 agent definitions** for specialized workflow roles (planner, executor, researcher, verifier, etc.)
1313
- **78 workflow bodies** in `workflows/` — operational logic that skills delegate to via `@${CLAUDE_PLUGIN_ROOT}/workflows/<name>.md`
1414
- **MCP server** exposing project state as queryable resources and mutation tools
@@ -26,6 +26,24 @@ A PostToolUse hook also writes a fresh checkpoint after most tool calls — `Bas
2626

2727
**Drift resilience.** The plugin sits downstream of [upstream GSD](https://github.com/gsd-build/get-shit-done), which ships frequent feature releases. To catch structural drift before it reaches users, three detectors run in CI on every push: a **file-layout drift detector** flags dangling `@~/.claude/get-shit-done/*` references (e.g. skill files delegating to workflow bodies that don't exist in the plugin); a **HANDOFF schema validator** confirms `checkpoint.cjs` output matches the committed JSON Schema; and a **namespace drift check** fires if any `/gsd-<skill>` dash-style command refs have been reintroduced. Each detector has a committed ratchet baseline; regressions hard-fail. After each upstream sync, an additional **upstream schema drift detector** (`check-upstream-schema.cjs`) compares upstream's `/gsd:pause-work` output against our schema to catch format divergence early.
2828

29+
## Added features beyond upstream
30+
31+
This plugin starts from upstream GSD's source tree but adds Claude-Code-native capabilities that aren't possible in upstream's CLI-only design. If you're scanning for "what does this give me that upstream doesn't" — these are the headliners:
32+
33+
| Feature | What it does | Command / hook |
34+
|---------|--------------|----------------|
35+
| **Scheduled resume** | Schedule a future Claude Code session to auto-run `/gsd:resume-work` (or any GSD command) at a specific time. Useful when hitting a usage cap, pausing for the day, or queuing a phase to run during off-peak quota windows. Accepts `HH:MM`, ISO 8601, or `+<duration>` (e.g. `+2h`). | `/gsd:resume-at <time>` |
36+
| **Auto-resume across `/compact`** | When Claude Code compacts a conversation, a 19-field `HANDOFF.json` is written automatically. The next session detects it via SessionStart and invokes `/gsd:resume-work` with **zero manual input**. | PreCompact + SessionStart hooks |
37+
| **Mid-session checkpoints** | A PostToolUse hook writes a fresh checkpoint after most tool calls (`Bash`, `Edit`, `Write`, `MultiEdit`, `NotebookEdit`, `Read`, `Grep`, `Glob`, `WebFetch`, `WebSearch`), throttled to ≤1/min. Closes the gap when Claude Code's silent *microcompact* path strips tool outputs without firing PreCompact, AND covers read-heavy research phases that don't write files. | PostToolUse hook |
38+
| **Plugin-version-churn fallback** | If another session upgrades the plugin mid-run and prunes the baked `${CLAUDE_PLUGIN_ROOT}` path, hooks resolve through a Node inline resolver that falls back to the newest cached plugin version. Long sessions survive plugin updates. | Hook command resolver |
39+
| **CI-enforced drift detection** | Three detectors run on every push: file-layout drift, HANDOFF schema integrity, and namespace normalization. Each has a ratchet baseline; regressions hard-fail. An upstream-schema detector runs post-sync to catch upstream format divergence early. | `bin/maintenance/check-drift.cjs` |
40+
| **92% per-turn token reduction** | Skill bodies are isolated in `context: fork` sub-agents; orchestration runs in clean child contexts instead of polluting the parent CLAUDE.md. State access uses MCP resources/tools instead of BashTool roundtrips to a CLI. | Plugin architecture |
41+
| **Plugin-local workflow bodies** | All 78 workflow bodies ship inside the plugin (`workflows/<name>.md`) and resolve via `${CLAUDE_PLUGIN_ROOT}/workflows/<name>.md`. Upstream's setup relies on a global `~/.claude/get-shit-done/` install dir that fails silently when missing. | `workflows/` dir |
42+
| **Standardized continuation prompts** | 6 terminal skills (`execute-phase`, `complete-milestone`, `verify-work`, `quick`, `plan-phase`, `ship`) emit "Next Up" blocks per `references/continuation-format.md``/clear`-then-[next] suggestions with a "/clear is safe (resume restores from HANDOFF)" footer. | All terminal skills |
43+
| **Memory across sessions** | Phase outcomes persist via Claude Code's memdir and are auto-recalled at session start. Upstream has no persistence — each session starts cold. | Built-in |
44+
45+
For implementation details, see the deep-dive tables in [For users of upstream GSD](#for-users-of-upstream-gsd) below.
46+
2947
## Installation
3048

3149
GSD Plugin installs *inside* a Claude Code session, not from your host shell. If you have never used Claude Code plugins before, follow these steps in order.

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.7",
3+
"version": "2.38.8",
44
"description": "Performance-optimized plugin packaging of GSD (Get Shit Done) for Claude Code",
55
"private": true,
66
"scripts": {

0 commit comments

Comments
 (0)