skills/continue-epic/SKILL.md
--- name: continue-epic allowed-tools: Bash(node .claude/skills/continue-epic/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs), Bash(node .claude/skills/workflow-legacy-research-split/scripts/detect.cjs), Bash(node .claude/skills/workflow-discovery-process/scripts/discovery.cjs) --- Continue an in-progress epic. Shows full phase-by-phase state and routes to the appropriate phase skill. >
npx skillsauth add leeovery/claude-technical-workflows continue-epicInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Continue an in-progress epic. Shows full phase-by-phase state and routes to the appropriate phase skill.
⚠️ ZERO OUTPUT RULE: Do not narrate your processing. Produce no output until a step or reference file explicitly specifies display content. No "proceeding with...", no discovery summaries, no routing decisions, no transition text. Your first output must be content explicitly called for by the instructions.
Follow these steps EXACTLY as written. Do not skip steps or combine them.
CRITICAL: This guidance is mandatory.
*_gate_mode: auto value in the manifest, set by the user's explicit a/auto choice at a prior gate.**STOP.** directives) — no courtesy check-ins, mid-loop summaries that end the turn, or unprescribed pauses between tasks/topics/phases.Output the next fenced block as a code block:
●───────────────────────────────────────────────●
Continue Epic
●───────────────────────────────────────────────●
Output the next fenced block as a code block:
── Initialisation ───────────────────────────────
Load casing-conventions.md and follow its instructions as written.
→ Proceed to Step 0.2.
/workflow-migrate skill has already been invoked in this conversation→ Proceed to Step 0.3.
Output the next fenced block as markdown (not a code block):
> Running migrations to keep workflow files in sync.
Run migrations — this is mandatory. You must complete it before proceeding.
Invoke the /workflow-migrate skill and follow its instructions exactly — if it issues a STOP gate, you must stop.
CRITICAL: When the migrate skill returns (either after committing changes or reporting no changes needed), you MUST continue to Step 0.3. Do not stop after migration completes.
→ Proceed to Step 0.3.
Load knowledge-check.md and follow its instructions as written.
→ Proceed to Step 1.
Output the next fenced block as a code block:
── Run Discovery ────────────────────────────────
Output the next fenced block as markdown (not a code block):
> Scanning for active epics and their current progress.
!node .claude/skills/continue-epic/scripts/discovery.cjs
If the above shows a script invocation rather than discovery output, the dynamic content preprocessor did not run. Execute the script before continuing:
node .claude/skills/continue-epic/scripts/discovery.cjs
If discovery output is already displayed, it has been run on your behalf.
Parse the discovery output to understand:
From epics array: Each epic has:
name - the work unit nameactive_phases - list of phase names that have artifactsdetail - full phase-by-phase breakdown containing:
phases - per-phase items with statuses and spec sourcesin_progress - items currently in-progress (name + phase)completed - items that are completed (name + phase)next_phase_ready - items ready for the next phase (name + action + label)unaccounted_discussions - completed discussions not sourced in any specreopened_discussions - in-progress discussions that are sourced in a specdiscovery_map - per-topic lifecycle for the discovery/research/discussion span (tier-sorted; empty when no discovery items exist)convergence_state - 'in-progress' | 'settled' | null (when no map)map_summary - count totals for the map (total, decided, in_flight, ready, fresh, cancelled)gating - boolean flags for phase-forward gatingFrom top-level fields:
count - number of active epicssummary - human-readable state summarycompleted / cancelled - arrays of non-active epics with name, status, last_phase (list mode only)completed_count / cancelled_count - counts for eachIMPORTANT: Use ONLY this script for discovery. Do NOT run additional bash commands (ls, head, cat, etc.) to gather state.
→ Proceed to Step 2.
Output the next fenced block as a code block:
── Check State ──────────────────────────────────
Output the next fenced block as markdown (not a code block):
> Checking if there are any epics in progress.
count is 0Output the next fenced block as a code block:
No epics in progress.
Run /start-epic to begin a new one.
STOP. Do not proceed — terminal condition.
work_unit argument $0 providedStore the work_unit.
→ Proceed to Step 4.
work_unit not provided→ Proceed to Step 3.
Output the next fenced block as a code block:
── Select Epic ──────────────────────────────────
Output the next fenced block as markdown (not a code block):
> Showing your active epics for selection.
Load select-epic.md and follow its instructions as written.
→ Proceed to Step 4.
Output the next fenced block as a code block:
── Validate Selection ───────────────────────────
Output the next fenced block as markdown (not a code block):
> Confirming the selected epic exists and is active.
Load validate-selection.md and follow its instructions as written.
→ Proceed to Step 5.
Silent gate. Detects whether any one-time-per-project recovery work is needed; loads the dispatching reference only when work fires.
node .claude/skills/workflow-legacy-research-split/scripts/detect.cjs {work_unit}
Parse qualifying_sources from the JSON output.
Then read discovery_map from the most recent discovery detail and filter for items where summary_present is false or description_present is false — regardless of source. Store the filtered list as items_to_recover.
qualifying_sources is empty and items_to_recover is empty→ Proceed to Step 6.
Load backfill-checks.md with work_unit = {work_unit}, qualifying_sources = {qualifying_sources}, items_to_recover = {items_to_recover}.
backfill-checks is terminal when it fires — it commits the recovery work and stops, advising the user to /clear and re-run /workflow-start. Do not proceed to Step 6 on this branch.
Output the next fenced block as a code block:
── Topic Discovery ──────────────────────────────
Output the next fenced block as markdown (not a code block):
> Checking whether completed research or discussion has new themes
> to surface onto the discovery map.
Read analysis_caches from the most recent discovery detail. Load topic-discovery-dispatch.md with work_unit = {work_unit}, analysis_caches = {analysis_caches}.
On return, new_arrivals is populated for Step 7 to render the callout.
→ Proceed to Step 7.
Output the next fenced block as a code block:
── Display State and Menu ───────────────────────
Output the next fenced block as markdown (not a code block):
> Showing the full phase-by-phase breakdown and available actions.
Load epic-display-and-menu.md with new_arrivals = {new_arrivals}.
→ Proceed to Step 8.
Output the next fenced block as a code block:
── Route Selection ──────────────────────────────
Output the next fenced block as markdown (not a code block):
> Handing off to the selected phase for this epic.
Invoke the appropriate skill based on the user's menu selection. Match by prefix — labels may carry a trailing context segment (e.g., — research completed, — spec completed, (Phase 2, Task 3)) which doesn't change the routing target.
| Menu option | Invoke |
|-------------|--------|
| Start research for {topic} | /workflow-research-entry epic {work_unit} {topic} |
| Start discussion for {topic} | /workflow-discussion-entry epic {work_unit} {topic} |
| Continue {topic} — discussion | /workflow-discussion-entry epic {work_unit} {topic} |
| Continue {topic} — research | /workflow-research-entry epic {work_unit} {topic} |
| Continue {topic} — specification | /workflow-specification-entry epic {work_unit} {topic} |
| Continue {topic} — planning | /workflow-planning-entry epic {work_unit} {topic} |
| Continue {topic} — implementation | /workflow-implementation-entry epic {work_unit} {topic} |
| Continue {topic} — review | /workflow-review-entry epic {work_unit} {topic} |
| Start planning for {topic} | /workflow-planning-entry epic {work_unit} {topic} |
| Start implementation of {topic} | /workflow-implementation-entry epic {work_unit} {topic} |
| Start review for {topic} | /workflow-review-entry epic {work_unit} {topic} |
| Start specification | /workflow-specification-entry epic {work_unit} |
| Start new discussion topic | /workflow-discussion-entry epic {work_unit} |
| Start new research | /workflow-research-entry epic {work_unit} |
| Continue discovery | /workflow-discovery-entry epic {work_unit} |
Skills receive positional arguments: $0 = work_type (epic), $1 = work_unit, $2 = topic (when provided).
This skill ends. The invoked skill will load into context and provide additional instructions. Terminal.
tools
--- name: workflow-discovery user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-discovery/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs), Bash(git status), Bash(git add), Bash(git commit), Bash(cp), Bash(mkdir -p .workflows/), Bash(mv .workflows/.inbox/) --- # Discovery The universal first phase. Shape the work the user is bringing — confirm what kind of work it is,
tools
--- name: workflow-continue-quickfix user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-continue-quickfix/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs) --- Continue an in-progress quick-fix. Determines current phase and routes to the appropriate phase skill. > **⚠️ ZERO OUTPUT RULE**: Do not narrate your processing. Produce no output until a step or reference file
tools
--- name: workflow-continue-feature user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-continue-feature/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs) --- Continue an in-progress feature. Determines current phase and routes to the appropriate phase skill. > **⚠️ ZERO OUTPUT RULE**: Do not narrate your processing. Produce no output until a step or reference file expl
tools
--- name: workflow-continue-epic user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-continue-epic/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs), Bash(node .claude/skills/workflow-legacy-research-split/scripts/detect.cjs), Bash(node .claude/skills/workflow-discovery/scripts/discovery.cjs) --- Continue an in-progress epic. Shows full phase-by-phase state and routes to