Pick up where you left off. Restores context and suggests next action.
Restores interrupted development sessions by finding pause points and suggesting the next action to continue seamlessly.
npx claudepluginhub sienklogic/towlineThis skill is limited to using the following tools:
You are running the resume skill. Your job is to find the last pause point, restore context for the user, and suggest the next action so they can continue seamlessly.
This skill runs inline (no Task delegation).
Get the user back to work in under 30 seconds. Read the handoff, show what matters, and suggest the next command. Don't make them re-discover their own project state.
When resuming, scan for conditions in this priority order. Handle the HIGHEST priority item first:
1. 🔴 UAT-BLOCKER (diagnosed) → Fix must come first
2. 🟡 Interrupted agent → Resume agent from checkpoint
3. 🟡 .continue-here checkpoint → Resume from checkpoint
4. 🟡 Incomplete plan → Complete plan execution
5. 🟢 Phase complete → Transition to next phase
6. 🟢 Ready to plan/execute → Normal workflow
Before presenting the standard resume view, check:
UAT Blockers: Search for VERIFICATION.md files with status: gaps_found in any phase. If found and gaps are marked as blocking, surface them first: "Phase {N} has {count} blocking verification gaps. These should be fixed before continuing."
Interrupted Agents: Check for .checkpoint-manifest.json files in phase directories with checkpoints_pending entries. These indicate a build was interrupted mid-checkpoint.
Stale .continue-here.md: If the file references commits that don't exist in git log, warn about state corruption.
On every resume, reconcile STATE.md claims against filesystem reality. This catches both corruption and drift from interrupted operations.
Step 1: Detect discrepancies — Compare STATE.md values against the filesystem:
| STATE.md Claim | Filesystem Check |
|---|---|
| Phase number | Does .planning/phases/{NN}-*/ exist? |
| Plan count | Count *-PLAN.md files in the phase directory |
| Completed plans | Count SUMMARY.md files in the phase directory |
| Status "verified" | Does VERIFICATION.md with status: passed exist? |
| Status "building" | Are there PLAN.md files without SUMMARY.md? |
| Progress percentage | Recalculate from completed phases / total phases |
Step 2: Classify — If any discrepancy found:
Step 3: Repair —
.planning/logs/events.jsonl with category state-reconcileRead .planning/STATE.md for the last known position.
Extract:
If STATE.md doesn't exist:
Search for .continue-here.md files across all phase directories:
.planning/phases/**/.continue-here.md
If exactly one found:
If multiple found:
Use the pause-point-select pattern (see skills/shared/gate-prompts.md):
Use AskUserQuestion: question: "Found multiple pause points. Which would you like to resume?" header: "Resume" options: - label: "Phase {A}" description: "Paused {date}, {brief context}" - label: "Phase {B}" description: "Paused {date}, {brief context}" - label: "Phase {C}" description: "Paused {date}, {brief context}" - label: "Phase {D}" description: "Paused {date}, {brief context}" multiSelect: false
Build options dynamically from discovered .continue-here.md files. Include phase name and pause date in each option. If more than 4 pause points exist, show the 4 most recent and replace the last option with:
When "Show earlier" is selected, re-prompt with the next batch of 4.
Use the selected pause point for the rest of the resume flow.
If none found:
Read the .continue-here.md file completely
Parse all sections:
Display the resume context using the branded banner:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TOWLINE ► SESSION RESTORED ✓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Resuming session from {pause date}
Position: Phase {N} -- {name}
Plan: {M} of {total}
Status: {status}
Completed last session:
{bulleted list of completed work}
Remaining in this phase:
{bulleted list of remaining plans}
{If decisions were made:}
Key decisions:
{bulleted list of decisions}
{If blockers exist:}
Blockers:
{bulleted list of blockers}
Validate the resume point:
Present the next action from the continue-here file.
If only one clear next action exists, present it with branded routing:
───────────────────────────────────────────────────────────────
## ▶ Next Up
**{explanation from continue-here}**
`{suggested command}`
<sub>`/clear` first → fresh context window</sub>
───────────────────────────────────────────────────────────────
If multiple reasonable actions exist (e.g., the continue-here suggests one thing but the filesystem state suggests another), use the action-routing pattern (see skills/shared/gate-prompts.md):
Use AskUserQuestion: question: "How would you like to proceed?" header: "Next Step" options: - label: "{continue-here suggestion}" description: "Resume from pause point" - label: "{filesystem-inferred action}" description: "Based on current state" - label: "Show status" description: "Run /dev:status for full overview" - label: "Something else" description: "Enter a different command" multiSelect: false
After user selects an option:
/dev:{action} {args}" so the user can execute itWhen there's no .continue-here.md but STATE.md has position info:
Resuming from STATE.md (no pause file found)
Position: Phase {N} -- {name}
Progress: {completed}/{total} plans complete
{Plans with summaries listed as complete}
{Plans without summaries listed as remaining}
Note: No detailed pause context available. Run `/dev:status` for a full overview.
Use AskUserQuestion: question: "What would you like to do next?" header: "Next Step" options: (build dynamically from phase state) - label: "/dev:build {N}" description: "Continue building (plans remaining)" - label: "/dev:review {N}" description: "Review completed phase" - label: "/dev:plan {N} --gaps" description: "Fix verification gaps" - label: "/dev:plan {N+1}" description: "Plan the next phase" multiSelect: false
Show only the options that apply to the current state (1-3 real options + "Something else").
When neither .continue-here.md nor STATE.md position data exists:
Check if .planning/ directory exists at all
╔══════════════════════════════════════════════════════════════╗
║ ERROR ║
╚══════════════════════════════════════════════════════════════╝
No Towline project found.
**To fix:** Run `/dev:begin` to start a new project, or `/dev:scan` to analyze an existing codebase.
If .planning/ exists, scan for any project state:
If some state exists:
Found a Towline project but no pause point.
Project has:
- {count} phases in ROADMAP.md
- {count} phase directories
- {count} completed plans (SUMMARY.md files)
Attempting to determine position...
Infer position:
Present recovery status:
Best guess for current position:
Phase {N}: {name}
- {X} of {Y} plans completed
- Last activity: {date from most recent SUMMARY.md or git log}
Suggested: Run `/dev:status` for a full overview, then choose your next action.
After displaying context, route to the appropriate action:
| Situation | Suggested Action |
|---|---|
| Mid-phase, plans remaining | /dev:build {N} (executor will skip completed plans) |
| Phase complete, not reviewed | /dev:review {N} |
| Phase reviewed, has gaps | /dev:plan {N} --gaps |
| Phase complete and verified | /dev:plan {N+1} |
| Between milestones | /dev:milestone new |
| Active debug session | /dev:debug (will offer to resume) |
| Pending todos exist | Mention: "Also {count} pending todos. /dev:todo list" |
When resuming, validate that the project state is consistent:
git status --short
If there are uncommitted changes:
For each plan file in the current phase:
partial or failed, warnIf .continue-here.md is more than 7 days old:
/dev:status to verify the current state before continuing."/dev:status for recovery{current} but the pause was on {paused-branch}.".planning/ exists but only has config.json, display:
╔══════════════════════════════════════════════════════════════╗
║ ERROR ║
╚══════════════════════════════════════════════════════════════╝
Project was initialized but no work has been done.
**To fix:** Run `/dev:plan 1` to start planning, or `/dev:discuss 1` to talk through the first phase.
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.