.claude/skills/resume-pipeline/SKILL.md
# Skill: Resume Pipeline ## Purpose Resume an interrupted analysis pipeline by reading `working/pipeline_state.json`, determining which agents completed, and continuing from the next READY agents using the DAG walker. ## When to Use Invoke as `/resume-pipeline` when: - A previous analysis session was interrupted (context limit, user break, connection issue) - The user wants to continue an analysis started in a prior conversation - Pipeline state file exists from a partially completed run - A p
npx skillsauth add ai-analyst-lab/ai-analyst .claude/skills/resume-pipelineInstall 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.
Resume an interrupted analysis pipeline by reading working/pipeline_state.json, determining which agents completed, and continuing from the next READY agents using the DAG walker.
Invoke as /resume-pipeline when:
Search for the most recent pipeline state in this order:
working/latest/pipeline_state.json (symlink to latest run).
If found, set RUN_DIR from the symlink target and proceed to Step 2./resume-pipeline 2026-02-23_acme-analytics_why-revenue-dropped),
look in working/runs/{id}/pipeline_state.json. Set RUN_DIR accordingly.working/pipeline_state.json (pre-run-directory pipelines).
If found, read it and proceed to Step 2 without a RUN_DIR.Pipeline state fields to extract (V2):
run_id -- identifies this runrun_dir -- per-run directory path (may be absent for legacy runs)dataset -- active datasetquestion -- the business questionstatus -- running, paused, or failedagents -- map of agent-name to agent state (status, output_file, timestamps)After loading the state file and before any processing, check whether the state uses the V1 (step-number keyed) format and migrate it to V2 if needed.
from helpers.pipeline_state import detect_schema_version, migrate_v1_to_v2
if detect_schema_version(state) < 2:
# Resolve dataset from active.yaml or fall back to "unknown"
dataset = state.get("dataset") or resolve_active_dataset() or "unknown"
state = migrate_v1_to_v2(state, dataset=dataset)
# Write migrated state back to disk (same location it was read from)
write_pipeline_state(state_path, state)
print("Migrated pipeline state from V1 -> V2 format")
Migration details (handled by helpers/pipeline_state.py):
pipeline_id (ISO timestamp) -> started_at; generate run_id from date + dataset + question slugsteps.{n}.agent keys -> agents.{agent_name} keyssteps.{n}.output_files[0] -> agents.{name}.output_file (take first)schema_version: 2 and updated_at set to current timestatus: running, it becomes paused at the pipeline level (was interrupted)After migration, continue with the V2 fields listed above.
If no state file exists, scan working/ and outputs/ for artifacts:
| Agent | Expected Artifact | Directory |
|-------|-------------------|-----------|
| question-framing | question_brief_*.md | outputs/ |
| hypothesis | hypothesis_doc_*.md | outputs/ |
| data-explorer | data_inventory_*.md | outputs/ |
| source-tieout | tieout_*.md | working/ |
| descriptive-analytics | analysis_report_*.md | outputs/ |
| root-cause-investigator | investigation_*.md | working/ |
| validation | validation_*.md | outputs/ |
| opportunity-sizer | sizing_*.md | working/ |
| story-architect | storyboard_*.md | working/ |
| narrative-coherence-reviewer | coherence_review_*.md | working/ |
| chart-maker | charts/*.png | outputs/ |
| visual-design-critic | design_review_*.md | working/ |
| storytelling | narrative_*.md | outputs/ |
| deck-creator | deck_*.md | outputs/ |
Walk the list top to bottom. If an artifact exists and looks complete (not empty, no "NEEDS REVISION" markers), mark that agent as completed. Reconstruct a pipeline_state.json from this scan.
agents/registry.yaml to build the dependency graphstate["agents"][agent_name]["status"]:
complete, skipped, or degraded → leave itfailed → reset to pending (will be retried)in_progress or running → reset to pending (was interrupted)status: pending whose every dependency is completeRead each completed agent's output files and extract a brief summary:
Compile into a context block for the resumed session.
Display:
Resuming pipeline {run_id}
Completed agents: {count}
- {agent_name}: {one-line summary from outputs}
- ...
Failed/interrupted agents (will retry): {count}
- {agent_name}: {error or "interrupted"}
Next READY agents: {list}
Resume execution?
On confirmation:
status: running, reset failed/running to pendingpending, not completedpendingfailed. User must investigate before resumingtesting
# Skill: {{BLANK_1_SKILL_NAME}} ## Purpose {{BLANK_2_WHEN_TO_FIRE}} ## When to Use Fires automatically when the user asks Claude to do something that matches the trigger condition above. ## Instructions 1. Detect the trigger condition 2. Execute your guardrail check 3. If the check matters, print a clear, visible warning with "{{BLANK_3_SIGNATURE_PHRASE}}" as the first line 4. Continue with the analysis, incorporating the warning into the output ## Anti-Patterns - Do not fire when the condit
development
# Skill: Visualization Patterns ## Purpose Ensure every chart Claude Code produces follows high-quality design standards with named themes, consistent styling, and clear data communication. ## When to Use Apply this skill whenever generating a chart, graph, or data visualization. Always apply the active theme unless the user specifies otherwise. Default theme: `minimal`. ## Instructions ### Pre-flight: Load Learnings Before executing, check `.knowledge/learnings/index.md` for relevant entrie
development
# Skill: Triangulation / Sanity Check ## Purpose Cross-reference analytical findings against multiple data sources, external benchmarks, and common sense to catch errors before they become bad decisions. ## When to Use Apply this skill after every analysis, before presenting findings to stakeholders, and whenever a result seems surprising. If a finding would change a decision, it MUST be triangulated first. ## Instructions ### Triangulation Framework Every finding gets checked through four
data-ai
# Skill: Tracking Gap Identification ## Purpose Assess whether the data needed for an analysis actually exists, identify what's missing, and produce prioritized instrumentation requests for engineering when gaps are found. ## When to Use Apply this skill after the Data Explorer agent inventories available data, when an analysis requires data that might not exist, or when initial query results suggest incomplete tracking. Run before committing to an analysis approach. ## Instructions ### Gap