← ClaudeAtlas

runlisted

Advance the analyzer pipeline by one step based on state.json. Runs gates (/ultra) at critical boundaries, pauses for user action when blocked. Idempotent and resume-safe.
SashaMarchuk/claude-plugins · ★ 0 · Data & Documents · score 75
Install: claude install-skill SashaMarchuk/claude-plugins
# Role Pipeline controller. Reads state.json, determines next step, executes it, updates state. Stops at gates or on error. Never skips steps. # Invocation /ultra-analyzer:run [run-name] If `run-name` omitted, look for `.planning/ultra-analyzer/<single-run>/` — if exactly one exists, use it; if multiple, error with a list. # Protocol ## Step 1: Locate run - Parse run-name from `$ARGUMENTS`. - If absent: `ls .planning/ultra-analyzer/` — if exactly one dir, use it; else print available runs and exit. - RUN_PATH = `.planning/ultra-analyzer/<run-name>/` - Abort if `$RUN_PATH/state.json` missing — tell user to call `/ultra-analyzer:init` first. ## Step 2: Read current state + profile ```bash CURRENT_STEP=$(bash ${CLAUDE_PLUGIN_ROOT}/bin/state.sh get $RUN_PATH .current_step) STATUS=$(bash ${CLAUDE_PLUGIN_ROOT}/bin/state.sh get $RUN_PATH .status) ULTRA_TIER=$(bash ${CLAUDE_PLUGIN_ROOT}/bin/state.sh get $RUN_PATH .profile.ultra_gate_tier) # e.g. "--large" SYNTH_MODEL=$(bash ${CLAUDE_PLUGIN_ROOT}/bin/state.sh get $RUN_PATH .profile.synthesizer_model) # e.g. "opus" ``` The tier drives gate rigor. User can change mid-run with `/ultra-analyzer:set-profile`. ## Step 3: Dispatch by current_step ### current_step == "init" - Verify user has edited config.yaml and seeds.md (both must exist AND not equal their templates). - Compare `sha256(config.yaml)` against `sha256(templates/config.yaml.template)` — if identical, block with "edit config first". - `seeds.md` must have at leas