gsd:resume-at — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited gsd:resume-at (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<objective> Schedule a future Claude Code session that automatically resumes the current GSD project at the requested time. Useful when:
/gsd:execute-phase 9 at 04:00) for off-peak quota useNo-token fallback. If you've hit your usage cap and the skill itself won't run (it needs tokens to parse args and call CronCreate — the very moment you don't have any), /exit the rate-limited session and invoke the shell wrapper from a plain terminal:>
``bash /exit # leave the rate-limited Claude session first gsd-resume-at 17:41 # then schedule from your shell — no tokens consumed # or with explicit duration / project: gsd-resume-at +3h --project ~/code/myproject # ifgsd-resume-atisn't on PATH: $CLAUDE_PLUGIN_ROOT/bin/gsd-resume-at +3h # or fully absolute: ~/.claude/plugins/cache/gsd-plugin/gsd/<version>/bin/gsd-resume-at +3h``
>
Pure shell — usesnohup sleepto schedule an OS-level timer, no Claude tokens consumed. macOS only for v1; the script will tell you if you're on another platform. Does NOT survive a reboot — for durable cross-reboot scheduling, use this skill (/gsd:resume-at) when tokens are available.
>
The plugin's Stop hook will surface this same hint automatically when it detects a rate-limit message in the session transcript.This skill is a thin wrapper. The plugin already covers the resume itself (HANDOFF.json + /gsd:resume-work). What was missing was a way to ask Claude to come back at time T. This skill provides the scheduling on-ramp; Claude Code's built-in /schedule (or CronCreate primitive) does the durable cron storage. </objective>
<process>
HH:MM — today at that local clock time. If the time has already passed today, schedule for tomorrow at the same time.2026-04-28T08:00, 2026-04-28T08:00:00-04:00) — absolute timestamp. Use as-is.+<duration> — relative offset from now. Accept +30m, +2h, +90m, +1d. Compute absolute target as now + duration.If no argument is provided, ask the user via AskUserQuestion: "When should I resume? (e.g. 09:00, +2h, or 2026-04-28T08:00)". If parsing fails, surface the input and the supported forms; do not guess.
/gsd:resume-work (the plugin's standard resumption entry point — restores HANDOFF.json + STATE.md and routes to next action). If the user passed --cmd "<command>", use that command instead. Useful overrides:--cmd "/gsd:next" — resume by jumping to the next workflow step (skips the status-print phase of resume-work)--cmd "/gsd:execute-phase 9" — resume directly into a specific phase--cmd "/gsd:quick <task description>" — schedule a quick task for laterSkill tool to invoke /schedule if the host CLI exposes it; otherwise fall back to CronCreate directly. Pass:prompt: the resolved command (default /gsd:resume-work)time: the absolute timestamp computed in step 1 (ISO 8601, with the local timezone)When /schedule/CronCreate isn't available in the current Claude Code build, surface that explicitly — don't silently no-op. Tell the user the plugin's resume-at skill needs the host's scheduling support, and link them to /schedule documentation.
HANDOFF.json is checkpointed every ≤60s during active work, so the resume reflects state from at most ~60s before this scheduling call (or from the most recent /compact if the session is currently idle)--cmd and the current session has uncommitted dirty state (a non-empty git status -s), warn that a future /gsd:resume-work will pick up whatever HANDOFF reflects at scheduling time — they may want to /gsd:pause-work explicitly first to capture intent before scheduling.</process>
<output_format> After scheduling, emit a confirmation block:
✓ Resume scheduled
When: 2026-04-27 22:00 PDT (2026-04-28 05:00 UTC)
Command: /gsd:resume-work
Project: /Users/you/your-project
HANDOFF: written 47s ago (auto-postool)If a /clear boundary makes sense (long session, scheduling at the end of an active day), suggest /clear per references/continuation-format.md. Otherwise, just confirm and stop — the user is presumably about to step away. </output_format>
<rules>
/gsd:resume-work.--cmd with a non-/gsd: command (e.g. /help), pass it through anyway. Resume-at schedules; it does not gatekeep what runs./loop covers that).</rules>
<notes>
/schedule and CronCreate already handle persistence-across-restarts, timezone math, and authorization correctly. Building our own would duplicate complex code and drift over time. Resume-at exists purely to translate GSD-flavored input (+2h, default /gsd:resume-work) into the form /schedule expects./gsd:resume-work and not /gsd:next: resume-work prints status and routes — useful when you might forget where you were. next jumps straight to action. Default is the safer first-impression choice; users with a clear destination override via --cmd./gsd:resume-work (deletes HANDOFF after restoring) and /gsd:pause-work (writes HANDOFF on demand). resume-at schedules; resume-work restores; pause-work captures.</notes>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.