Ralph Specum Switch
Use this to switch the active spec.
Derive RALPH_CODEX_PLUGIN_ROOT from this loaded skill by resolving two parent directories from the SKILL.md directory. Never derive it from the project working directory.
Contract
- Read
.claude/ralph-specum.local.mdwhen present - Parse
specs_dirsfrom frontmatter to discover all spec roots - Treat the first
specs_dirsentry as the default root - Default specs root is
./specs .current-speclives in the default specs root- Do not guess on ambiguous names
Action
- Resolve the requested target by full path or exact name.
- If no target was provided, list available specs grouped by root.
- If the name is ambiguous across roots, stop and require a full path.
- Update
.current-spec:- bare name for the default root
- full path for non-default roots
- Read the target spec state and summarize phase, progress, approval state, and present files.
- Report prototype dependencies without mutating them:
- Treat a missing
activePrototypesfield as an empty map. - When state exists, run
"$RALPH_CODEX_PLUGIN_ROOT/scripts/prototype_records.py" select-downstream --base-path "$BASE_PATH" --state "$BASE_PATH/.ralph-state.json"using the selected spec's resolvedbasePath. - Show each blocker from
activeBlockerswith prototype ID, status, blocked artifact or transition,returnPhase, andreturnTaskIndex. - Show
staleArtifactsandstaleTaskIndexesfrom the selection result. - Do not reconcile, remove active entries, edit records, or change blocker data. If no overlay or stale dependency exists, preserve the existing switch output.
- Treat a missing