By seankao31
Autonomous overnight execution of Approved Linear issues, with safety, structure, traceability, composability, and deliberation.
Linear-side close ritual for a sensible-ralph feature branch. Use when the user has finished reviewing an In-Review Linear issue and is ready to ship — runs the Linear preflight (state, blockers), untracked-file preservation, delegates VCS integration to the project-local `close-branch` skill, then handles stale-parent labeling, the Linear Done transition, codex broker reap, and worktree removal. Invoke from the main-checkout CWD with the Linear issue ID as an argument (e.g. `/close-issue ENG-197`). Requires the project to provide a `close-branch` skill at `.claude/skills/close-branch/` — that skill owns every project-specific git decision (base branch, merge strategy, push model, branch-delete policy).
Use when implementation is complete and tests pass, before handing off for human review. Runs doc/decision updates, codex review (all in one pass), posts a Linear comment with a review summary and QA plan, and moves the issue to In Review. Useful at the tail of autonomous sensible-ralph sessions AND interactive "I just finished this feature" handoffs.
Dispatched by the ralph orchestrator to implement a single Linear issue autonomously inside a pre-created worktree. Do NOT auto-invoke.
Use when turning an idea into an Approved Linear issue that the ralph autonomous pipeline can pick up. Runs the brainstorming dialogue, creates a per-issue branch+worktree (lazily, after design approval), writes the spec to docs/specs/<topic>.md on that branch, runs an adversarial codex review of the spec, overwrites the Linear issue description with the approved spec, sets blocked-by relations, and transitions the issue to the configured approved state. Accepts an optional issue-id argument.
Entry point for the user to dispatch the autonomous ralph-loop spec-queue. Do NOT auto-invoke. Run explicitly via /sr-start before stepping away from the desk.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
modelModel to use for dispatched sessions (default: opus)
${user_config.model}done_stateLinear workflow state after merge (default: Done)
${user_config.done_state}design_stateLinear workflow state while an interactive /sr-spec session is open (default: In Design)
${user_config.design_state}failed_labelLabel applied when a session fails or exits clean (default: ralph-failed)
${user_config.failed_label}review_stateLinear workflow state after /prepare-for-review (default: In Review)
${user_config.review_state}worktree_baseDirectory under repo root for session worktrees (default: .worktrees)
${user_config.worktree_base}approved_stateLinear workflow state for issues ready to dispatch (default: Approved)
${user_config.approved_state}coord_dep_labelLabel applied by /sr-spec when its coord-dep scan adds blocked-by edges; cleared by /close-issue (default: ralph-coord-dep)
${user_config.coord_dep_label}in_progress_stateLinear workflow state while a session is running (default: In Progress)
${user_config.in_progress_state}stale_parent_labelLabel applied to In-Review children whose parent was amended (default: stale-parent)
${user_config.stale_parent_label}stdout_log_filenamePer-session stdout log file inside the worktree (default: ralph-output.log)
${user_config.stdout_log_filename}Autonomous overnight execution of Approved Linear issues — with review gates, worktree isolation, a DAG scope model, and Linear as the state machine.
A Claude Code plugin that extends the ralph technique (Geoff Huntley's original) with five properties the name is a nod to.
Safety — every session hands off to a review gate before anything merges. Worktree isolation keeps parallel sessions from stepping on each other. The DAG model won't dispatch two children of the same In-Review parent concurrently. Vanilla ralph ships straight to main.
Structure — three phases (spec → plan → impl) with three skills
(/sr-spec, /sr-start, /sr-implement). A DAG scope model
instead of a flat checklist. Linear's workflow states are the state
machine — not a progress.txt blob. Vanilla ralph hands the loop a
markdown file and walks away.
Traceability — every iteration ties to a Linear issue. Decisions,
specs, progress logs, and dispatch records are durable artifacts in
the filesystem and in Linear. Vanilla ralph remembers via a single
mutable progress.txt.
Composability — skills are swappable. The orchestrator dispatches whichever implementation skill you point it at; the spec skill and orchestrator don't care what lives at the end of the pipe. Vanilla ralph is a fixed bash script.
Deliberation — idea → PRD → plan → code are separate phases. Thinking happens before the loop starts, so the autonomous implementer is executing a decided design, not figuring one out. Vanilla ralph hands the LLM a blob and lets it discover the scope as it goes.
This plugin ships as a self-marketplace (the repo is both marketplace and plugin). Inside Claude Code:
/plugin marketplace add seankao31/sensible-ralph
/plugin install sensible-ralph@sensible-ralph
At install time Claude Code will prompt for the plugin's userConfig values (workflow state names, label names, worktree base directory, model, log filename). All have sensible defaults; accepting them gets you a working setup.
Linear CLI (schpet/linear-cli)
authenticated against your workspace (linear --version succeeds).
jq on PATH.
Three workspace-scoped Linear labels, one-time setup per workspace.
Names are plugin-configurable; the defaults are ralph-failed,
stale-parent, and ralph-coord-dep:
linear label create --name ralph-failed --color '#EB5757' \
--description 'Orchestrator dispatched this issue but it did not reach the review state.'
linear label create --name stale-parent --color '#F2994A' \
--description 'In-Review issue whose blocked-by parent was amended after dispatch.'
linear label create --name ralph-coord-dep --color '#9B51E0' \
--description 'Has at least one coord-dep blocked-by edge auto-added by the /sr-spec scan; cleared on /close-issue.'
Per-repo .sensible-ralph.json at the repo root declaring which Linear
projects this repo's sessions drain. Two shapes:
// Explicit — one or more projects
{ "projects": ["Project A", "Project B"] }
// Shorthand — Linear initiative, expanded to its member projects on every run
{ "initiative": "My Initiative Name" }
.gitignore entries for the runtime artifacts the orchestrator
writes to your repo root and worktrees:
/.sensible-ralph/
/.worktrees/
ralph-output.log
If you're upgrading from a version that wrote these artifacts at the
repo root, run mkdir -p .sensible-ralph && mv progress.json ordered_queue.txt .sensible-ralph/ 2>/dev/null once at your consumer repo's root.
(The paths match the plugin defaults. If you changed the worktree_base
or stdout_log_filename userConfig values, substitute accordingly.)
End-to-end operator flow is in docs/usage.md.
Subsystem design docs live in docs/design/; per-ticket
implementation specs in docs/specs/; captured decisions
in docs/decisions/.
Brief summary:
npx claudepluginhub seankao31/sensible-ralph --plugin sensible-ralphRemembers trust decisions for cd+git commands. Approve once, auto-approve forever.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Frontend design skill for UI/UX implementation
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Memory compression system for Claude Code - persist context across sessions
Marketing skills for AI agents — conversion optimization, copywriting, SEO, paid ads, ad creative, and growth
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.