|
| 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 |
0 commit comments