Skip to content
Development
Skill

/ralph-specum-cancel

This skill should be used only when the user explicitly asks to use `$ralph-specum-cancel`, or explicitly asks Ralph Specum in Codex to stop execution or remove a spec.

From plugin
smart-ralph
56624 skills13 agents24 commands

Claude Code

$ npx -y skills add tzachbon/smart-ralph --skill ralph-specum-cancel --agent claude-code

SKILL.md

ralph-specum-cancel.SKILL.md
name: ralph-specum-cancel
description: This skill should be used only when the user explicitly asks to use `$ralph-specum-cancel`, or explicitly asks Ralph Specum in Codex to stop execution or remove a spec.
metadata:
  surface: helper
  action: cancel

Ralph Specum Cancel

Use this to stop execution safely and optionally remove a spec. Safe cancel preserves the spec and every prototype source path.

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

  • Resolve the target by explicit path, exact name, or `.current-spec`
  • Treat a missing `activePrototypes` field as an empty map
  • Publish reviewed immutable cancellation evidence before removing active state
  • Confirm the exact local target before any deletion
  • Never delete a remote branch or perform another remote action
  • Do not guess on ambiguous names

Action

1. Resolve the target spec. If none exists, report that there is nothing to cancel. 2. Read `.ralph-state.json` when present and summarize the current phase and progress. 3. If `activePrototypes` is non-empty, use the resolved `basePath` and run `"$RALPH_CODEX_PLUGIN_ROOT/scripts/prototype_records.py" reconcile` before cancellation. Process active IDs by `created`, then ID, at the next safe tool boundary. 4. For each active prototype:

  • Inspect its `owner`, `leaseToken`, and `harnessRun.id`. When `owner` and `leaseToken` are both null or absent, verify that `harnessRun.id` is also null or absent and no builder is associated, then skip interrupt and release and continue cancellation. If those fields disagree, treat the entry as inconsistent builder ownership: retain the lease and active entry and stop for that ID. Otherwise, interrupt only its recorded child builder through the bounded harness contract. Release through `locked_state.py release-lease --id <id> --lease-token <leaseToken>` only after the harness verifies that the recorded builder and descendants stopped. If interruption is unavailable or unverified, or reports any failed termination attempt, retain the lease and active entry and stop cancellation for that ID.
  • Preserve its question, blocker, return phase and task, timestamps, local branch, isolation pointers, partial implementation, run evidence, stale metadata, and downstream artifacts.
  • Render an exclusive terminal candidate with `verdict: cancelled`, `gateApproved: false`, and `sourceDisposition: retained`. Never overwrite existing candidate or final bytes; allocate a new publication ID with `supersedes: ["<original-id>"]` on collision.
  • Before review, store the exact returned `candidateHash`. Update the existing original entry through compare-and-set `transition`, or reserve a separate superseding ID through create-only `locked_state.py upsert-prototype` with the copied recovery fields and exact `candidateHash`. Retain the original active entry unchanged while the superseding record is reviewed. A reservation collision preserves both entries and candidates and allocates another ID.
  • Send the exact candidate bytes and source pointers to the reviewer. Continue only after `REVIEW_PASS`, then call `review-candidate` and `publish` with the publication ID and exact candidate hash.
  • Re-read and parse the immutable final and verify its hash. Publication removes its own active publication entry. When a superseding ID was used, remove the original active entry only after final verification succeeds; any earlier failure retains it. Reconcile, then restore the recorded main phase and task index through `locked_state.py` without changing unrelated state.

5. Safe cancel is the default. After every active prototype has a verified immutable `cancelled` record, delete only `.ralph-state.json` through `locked_state.py delete-state`. Keep the spec directory, `.current-spec`, terminal records, prototype source, partial work, scratch paths, worktrees, and local branches. 6. If full removal was explicitly requested, show the resolved spec directory and every prototype isolation path and branch. Require confirmation naming the exact spec directory before removing it. Prototype paths and local branches require separate exact confirmations and are never included in recursive spec cleanup. Never delete a remote branch. 7. If no state exists, report that no active loop exists and remove nothing unless the exact full-removal confirmation is complete. 8. Keep active epic files unless the user separately requests their removal. Report exactly what was removed and what was preserved.

Read more
@tzachbon
Ships withsmart-ralph

Spec-driven development with smart compaction. Claude Code plugin combining Ralph Wiggum loop with structured specification workflow.

56624 skills13 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
566
Star history of tzachbon/smart-ralph on GitHub, a chart by star-history.com

Other skills on smart-ralph.

smart-ralph

smart-ralph

Core Smart Ralph skill defining common arguments, execution modes, and shared behaviors across all Ralph plugins.

speckit-workflow

speckit-workflow

Comprehensive understanding of the spec-kit methodology. Constitution-driven feature development with specify, plan, tasks, and…

ralph-specum-design

ralph-specum-design

This skill should be used only when the user explicitly asks to use `$ralph-specum-design`, or explicitly asks Ralph Specum in…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about ralph-specum-cancel.

Which coding agents can use ralph-specum-cancel?
ralph-specum-cancel installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.