freshcrate
Home > AI Agents > pickle-rick-claude

pickle-rick-claude

πŸ₯’ Pickle Rick for Claude Code β€” autonomous PRD-driven coding loops + relentless code review. Ralph Loop toolkit.

Description

πŸ₯’ Pickle Rick for Claude Code β€” autonomous PRD-driven coding loops + relentless code review. Ralph Loop toolkit.

README

Pickle Rick for Claude Code

πŸ₯’ Pickle Rick for Claude Code

"Wubba Lubba Dub Dub! πŸ₯’ I'm not just an AI assistant, Morty β€” I'm an autonomous engineering machine trapped in a pickle jar!"

Pickle Rick is a complete agentic engineering toolbelt built on the Ralph Wiggum loop and ideas from Andrej Karpathy's AutoResearch project. Hand it a PRD β€” or let it draft one β€” and it decomposes work into tickets, spawns isolated worker subprocesses, and drives each through a full research β†’ plan β†’ implement β†’ verify β†’ review β†’ simplify lifecycle without human intervention.

New to PRDs? See the PRD Writing Guide for developers or the Product Manager's Guide for PMs defining and refining requirements. For internals, see Architecture. For what's coming next, see the Feature Roadmap.


How to Build Things with Pickle Rick

This is the actual workflow. You don't need to memorize commands β€” just follow the flow.

Step 1: Write a PRD

Every feature starts with a PRD. Open a Claude Code session in your project and describe what you want to build:

"Help me create a PRD for caching the loan status API responses in Redis"

Rick interrogates you β€” why are you building this, who is it for, and critically: how will we verify each requirement automatically? This is a back-and-forth conversation, not a form to fill out. Rick also explores your codebase during the interview, grounding the PRD in what actually exists.

Or write your own prd.md and skip the interview β€” whatever gets requirements on paper with machine-checkable acceptance criteria.

/pickle-prd                      # Interactive PRD drafting interview
# or just start talking β€” "Help me write a PRD for X"

Step 2: Refine the PRD

Three AI analysts run in parallel and tear your PRD apart from different angles β€” requirements gaps, codebase integration points, and risk/scope. They cross-reference each other across 3 cycles.

/pickle-refine-prd my-prd.md    # Refine with 3 parallel analysts

What you get back:

  • prd_refined.md β€” your PRD with concrete file paths, interface contracts, and gap fills
  • Atomic tickets β€” each < 30 min of work, < 5 files, < 4 acceptance criteria, self-contained
  • Wiring ticket (3+ tickets) β€” integrates isolated modules into a working whole
  • Hardening tickets β€” auto-appended code quality review + data flow audit scoped to modified files

The hardening tickets (skipped for trivial/small single-ticket PRDs) run as normal Morty workers after all implementation work:

  1. Code Quality Hardening β€” szechuan-sauce principles review (KISS, DRY, dead code, edge cases) on all modified files
  2. Data Flow Audit β€” anatomy-park-style trace through affected subsystems (ID mismatches, stale schemas, cross-ticket interface alignment)

Review the tickets before proceeding. Check ordering, scope, and acceptance criteria. You can edit them directly β€” they're markdown files.

Step 3: Implement with tmux (the Ralph Loop)

This is where Rick takes over. Each ticket goes through 8 phases autonomously: Research β†’ Review β†’ Plan β†’ Review β†’ Implement β†’ Spec Conformance β†’ Code Review β†’ Simplify. Context clears between every iteration β€” no drift, even on 500+ iteration epics.

/pickle-tmux --resume            # Launch tmux mode, picks up refined tickets
# or combine refine + implement in one shot:
/pickle-refine-prd --run my-prd.md

Rick prints a tmux attach command β€” open a second terminal to watch the live 3-pane dashboard:

  • Top-left: ticket status, phase, elapsed time, circuit breaker state
  • Top-right: iteration log stream
  • Bottom: live worker output (research, implementation, test runs, commits)

Sit back. Rick handles the rest.

Step 4 (Optional): Metric-Driven Refinement

If you can define a measurable goal β€” test coverage, response time, bundle size, extraction accuracy β€” the Microverse grinds toward it. Each cycle: make one change, measure, keep or revert. Failed approaches are tracked so it never repeats a dead end.

/pickle-microverse --metric "npm run coverage:score" --task "hit 90% test coverage"
/pickle-microverse --metric "node perf-test.js" --task "reduce p99 latency" --direction lower
/pickle-microverse --goal "error messages are user-friendly and actionable" --task "improve UX"

Step 5 (Optional): Cleanup

Two cleanup tools for polishing the result:

Szechuan Sauce β€” hunts coding principle violations (KISS, DRY, SOLID, security, style) and fixes them one at a time until zero remain. Great for post-feature polish before merging.

/szechuan-sauce src/services/              # Deslop a directory
/szechuan-sauce --dry-run src/             # Catalog violations without fixing
/szechuan-sauce --focus "error handling" src/  # Narrow the review

Anatomy Park β€” traces data flows through subsystems looking for runtime bugs: data corruption, timezone issues, rounding errors, schema drift. Catalogs "trap doors" (files that keep breaking) in CLAUDE.md files for future engineers.

/anatomy-park src/                         # Deep subsystem review
/anatomy-park --dry-run                    # Review only, no fixes

When to use which: Szechuan Sauce asks "is this code well-designed?" β€” Anatomy Park asks "is this code correct?" Use both when you want clean AND correct.

The Full Flow at a Glance

You describe a feature
       β”‚
       β–Ό
  /pickle-prd              ← Interactive PRD drafting (or write your own)
       β”‚
       β–Ό
  /pickle-refine-prd       ← 3 parallel analysts refine + decompose into tickets
       β”‚                      Includes auto-generated hardening tickets:
       β”‚                      β€’ Code quality review (szechuan-sauce principles)
       β”‚                      β€’ Data flow audit (anatomy-park trace)
       β–Ό
  /pickle-tmux --resume    ← Autonomous implementation (Ralph loop)
       β”‚                      Research β†’ Plan β†’ Implement β†’ Verify β†’ Review β†’ Simplify
       β”‚                      Context clears every iteration. Circuit breaker auto-stops runaways.
       β”‚                      Hardening tickets run automatically after implementation.
       β–Ό
  /pickle-microverse       ← (Optional) Metric-driven optimization loop
       β”‚
       β–Ό
  /szechuan-sauce          ← (Optional) Additional code quality cleanup
  /anatomy-park            ← (Optional) Additional data flow correctness review
       β”‚
       β–Ό
  Ship it πŸ₯’

⚑ Quick Start

1. Install

git clone https://github.com/gregorydickson/pickle-rick-claude.git
cd pickle-rick-claude
bash install.sh

2. Add the Pickle Rick persona to your project

The installer deploys persona.md to ~/.claude/pickle-rick/. Add it to your project's CLAUDE.md:

# Already have a CLAUDE.md? Append (safe β€” won't overwrite your content):
cat ~/.claude/pickle-rick/persona.md >> /path/to/your/project/.claude/CLAUDE.md

# Starting fresh:
mkdir -p /path/to/your/project/.claude
cp ~/.claude/pickle-rick/persona.md /path/to/your/project/.claude/CLAUDE.md

After upgrading: bash install.sh deploys a fresh persona.md. If you appended it to your project's CLAUDE.md, re-sync by replacing the old persona block with the updated one.

3. Run

Permissions: Launch Claude with claude --dangerously-skip-permissions. Pickle Rick's loops spawn worker subprocesses that already run permissionless, but the root instance needs it too β€” otherwise you'll drown in permission prompts for every file write, bash command, and hook invocation.

cd /path/to/your/project
claude --dangerously-skip-permissions
# then follow the workflow above β€” start with a PRD

Advanced Workflows

Pipeline Mode: Self-Correcting DAGs

For complex epics with parallel workstreams, conditional logic, and multiple quality gates. Instead of a linear ticket queue, define work as a convergence graph where failures automatically route back for correction.

/pickle-dot my-prd.md              # Convert PRD β†’ validated DOT digraph (builder path, default)
/attract pipeline.dot              # Submit to attractor server for execution

The builder enforces 28 active patterns and 15 structural validation rules β€” test-fix loops, goal gates, conditional routing, parallel fan-out/in, human gates, security scanning, coverage qualification, scope creep detection, drift detection, and more. See DotBuilder details below.

Council of Ricks: Graphite Stack Review

Reviews your Graphite PR stack iteratively β€” but never touches your code. Generates agent-executable directives you feed to your coding agent. Escalates through focus areas: stack structure β†’ CLAUDE.md compliance β†’ correctness β†’ cross-branch contracts β†’ test coverage β†’ security β†’ polish.

/council-of-ricks                  # Review the current Graphite stack

Portal Gun: Gene Transfusion

Portal Gun β€” gene transfusion for codebases

"You see that code over there, Morty? In that other repo? I'm gonna open a portal, reach in, and yank its DNA into OUR dimension."

/portal-gun implements gene transfusion β€” transferring proven coding patterns between codebases using AI agents. Point it at a GitHub URL, local file, npm package, or just describe a pattern, and it extracts the structural DNA, analyzes your target codebase, then generates a transplant PRD with behavioral validation tests and automatic refinement.

The --run flag goes further: after generating the transplant PRD, it launches a convergence loop that executes the migration, scans coverage against the original inventory, generates a delta PRD for any missing items, and re-executes until 100% of the donor pattern has been transplanted.

v2 added a persistent pattern library (cached patterns reused across sessions), complete file manifests with anti-truncation enforcement, multi-language import graph tracing (TypeScript/JavaScript, Python, Go, Rust), 6-category transplant classification (direct transplant, type-only, behavioral reference, replace with equivalent, environment prerequisite, not needed), a PRD validation pass that verifies every file path against the filesystem with 6 error classes, post-edit consistency checking that catches contradictions after scope changes, and deep target diffs with line-level modification specs.


/portal-gun https://github.com/org/repo/blob/main/src/auth.ts   # Transplant from GitHub
/portal-gun ../other-project/src/cache.ts                        # Transplant from local file
/portal-gun --run https://github.com/org/repo/tree/main/src/lib  # Transplant + auto-execute convergence loop
/portal-gun --save-pattern retry ../donor/retry-logic.ts         # Save pattern to library for reuse
/portal-gun --depth shallow https://github.com/org/repo           # Summary + structural pattern only

Pickle Jar: Night Shift Batch Mode

Queue tasks for unattended batch execution overnight.

/add-to-pickle-jar                 # Queue current session
/pickle-jar-open                   # Run all queued tasks sequentially

πŸš€ Command Reference

Command Description
/pickle "task" Start the full autonomous loop β€” PRD β†’ breakdown β†’ 8-phase execution
/pickle prd.md Pick up an existing PRD, skip drafting
/pickle-tmux "task" Same loop with context clearing via tmux. Best for long epics (8+ iterations)
/pickle-zellij "task" Same loop in Zellij with KDL layouts. Requires Zellij >= 0.40.0
/pickle-refine-prd [path] Refine PRD with 3 parallel analysts β†’ decompose into tickets
/pickle-refine-prd --run [path] Refine + decompose + auto-launch unlimited tmux session
/pickle-microverse Metric convergence loop. --metric for numeric, --goal for LLM judge
/szechuan-sauce [target] Principle-driven deslopping. --dry-run, --focus, --domain
/anatomy-park Three-phase deep subsystem review with trap door cataloging
/council-of-ricks Graphite PR stack review β€” generates directives, never fixes code
/portal-gun <source> Gene transfusion from another codebase
/pickle-dot [path] Convert PRD β†’ attractor-compatible DOT digraph
/attract [file.dot] Submit pipeline to attractor server
/pickle-prd Draft a PRD standalone (no execution)
/pickle-metrics Token usage, commits, LOC. --days N, --weekly, --json
/pickle-standup Formatted standup summary from activity logs
/pickle-status Current session phase, iteration, ticket status
/eat-pickle Cancel the active loop
/pickle-retry <ticket-id> Re-attempt a failed ticket
/add-to-pickle-jar Queue session for Night Shift
/pickle-jar-open Run all Jar tasks sequentially
/disable-pickle Disable the stop hook globally
/enable-pickle Re-enable the stop hook
/help-pickle Show all commands and flags

Flags

--max-iterations <N>       Stop after N iterations (default: 500; 0 = unlimited)
--max-time <M>             Stop after M minutes (default: 720 / 12 hours; 0 = unlimited)
--worker-timeout <S>       Timeout for individual workers in seconds (default: 1200)
--completion-promise "TXT" Only stop when the agent outputs <promise>TXT</promise>
--resume [PATH]            Resume from an existing session
--reset                    Reset iteration counter and start time (use with --resume)
--paused                   Start in paused mode (PRD only)
--run                      (/pickle-refine-prd, /portal-gun) Auto-launch tmux
--interactive              (/pickle-microverse) Run inline instead of tmux
--legacy                   (/pickle-dot) Prompt-only fallback β€” skips builder codegen for this run
--provider <name>          (/pickle-dot) LLM provider: anthropic, openai, qwen, gemini, deepseek, ollama, vllm
--review-provider <name>   (/pickle-dot) Separate provider for review/critical nodes
--isolated                 (/pickle-dot) Isolated workspace mode
--metric "<CMD>"           (/pickle-microverse) Shell command outputting a numeric score
--goal "<TEXT>"            (/pickle-microverse) Natural language goal for LLM judge
--direction <higher|lower> (/pickle-microverse) Optimization direction (default: higher)
--judge-model <MODEL>      (/pickle-microverse) Judge model for LLM scoring
--tolerance <N>            (/pickle-microverse) Score delta for "held" status (default: 0)
--stall-limit <N>          (/pickle-microverse) Non-improving iterations before convergence (default: 5)
--target <PATH>            (/portal-gun) Target repo (default: cwd)
--depth <shallow|deep>     (/portal-gun) Extraction depth (default: deep)
--no-refine                (/portal-gun) Skip automatic refinement
--max-passes <N>           (/portal-gun) Max convergence passes (default: 3)
--save-pattern <NAME>      (/portal-gun) Persist pattern to library
--dry-run                  (/szechuan-sauce) Catalog violations without fixing
--domain <name>            (/szechuan-sauce) Domain-specific principles (e.g., financial)
--focus "<text>"           (/szechuan-sauce) Direct review toward specific concern
--repo <PATH>              (/council-of-ricks) Target repo (default: cwd)

Tips

/pickle vs /pickle-tmux β€” Use /pickle for short epics (1–7 iterations) with full keyboard access. Use /pickle-tmux for long epics (8+) where context drift matters β€” each iteration spawns a fresh Claude subprocess with a clean context window.

Phase-resume β€” When resuming after /pickle-refine-prd, the resume flow auto-detects the session's current phase and skips completed phases.

Notifications (macOS) β€” /pickle-tmux and /pickle-jar-open send macOS notifications on completion or failure.

Recovering from a failed Morty β€” Use /pickle-retry <ticket-id> instead of restarting the whole epic.

"Stop hook error" is normal β€” Claude Code labels every decision: block from the stop hook as "Stop hook error" in the UI. This is not an error β€” it means the loop is working.

Settings (pickle_settings.json)

All defaults are configurable via ~/.claude/pickle-rick/pickle_settings.json:

Setting Default Description
default_max_iterations 500 Max loop iterations before auto-stop
default_max_time_minutes 720 Session wall-clock limit (12 hours)
default_worker_timeout_seconds 1200 Per-worker subprocess timeout
default_manager_max_turns 50 Max Claude turns per iteration (interactive/jar)
default_tmux_max_turns 200 Max Claude turns per iteration (tmux)
default_refinement_cycles 3 Number of refinement analysis passes
default_refinement_max_turns 100 Max Claude turns per refinement worker
default_council_min_passes 5 Minimum Council of Ricks review passes
default_council_max_passes 20 Maximum Council of Ricks review passes
default_circuit_breaker_enabled true Enable circuit breaker
default_cb_no_progress_threshold 5 No-progress iterations before OPEN
default_cb_same_error_threshold 5 Identical errors before OPEN
default_cb_half_open_after 2 No-progress iterations before HALF_OPEN
default_rate_limit_wait_minutes 60 Fallback wait when no API reset time
default_max_rate_limit_retries 3 Consecutive rate limits before stopping

Tool Deep Dives

πŸ”¬ Microverse β€” Metric Convergence Loop

The Microverse β€” powering your Pickle Rick app

"I put a universe inside a box, Morty, and it powers my car battery. This is the same thing, except the universe is your codebase and the battery is a metric."

Two modes: Command Metric (--metric) for objective numeric scores, and LLM Judge (--goal) for subjective quality assessment.

Gap Analysis (iteration 0)
    β”‚ measure baseline, analyze codebase, identify bottlenecks
    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Iteration Loop                                   β”‚
β”‚  1. Plan one targeted change (avoid failed list) β”‚
β”‚  2. Implement + commit                            β”‚
β”‚  3. Measure metric                                β”‚
β”‚     β€’ Improved β†’ accept, reset stall counter     β”‚
β”‚     β€’ Held β†’ accept, increment stall counter     β”‚
β”‚     β€’ Regressed β†’ git reset, log failed approach β”‚
β”‚  4. Converged? (stall_counter β‰₯ stall_limit)     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β–Ό
              Final Report
Microverse Pickle
Goal Optimize toward a measurable target Build features from a PRD
Iteration unit One atomic change per cycle Full ticket lifecycle
Progress signal Metric score Ticket completion
Defines "done" Convergence (score stops improving) All tickets complete

πŸ— Szechuan Sauce β€” Iterative Code Deslopping

Command: Szechwan Sauce β€” The Quest for Clean Code

"I'm not driven by avenging my dead family, Morty. That was fake. I-I-I'm driven by finding that McNugget sauce."

Reads 30+ coding principles (KISS, YAGNI, DRY, SOLID, Guard Clauses, Fail-Fast, Encapsulation, Cognitive Load, etc.) and scores against a priority matrix (P0 security/data-loss through P4 style). Each iteration: find highest-priority violation, fix atomically, run tests, commit, measure. Regressions auto-revert.

Phase 0: Contract Discovery β€” greps the codebase for importers of every export in target files, builds a contract map, flags cross-module mismatches. Re-checked after every fix.

Supports --domain <name> for domain-specific principles (e.g., financial adds monetary precision, rounding, regulatory compliance) and --focus "<text>" to elevate specific concerns.

πŸ₯ Anatomy Park β€” Deep Subsystem Review

Anatomy Park β€” Deep Subsystem Review

"Welcome to Anatomy Park! It's like Jurassic Park but inside a human body. Way more dangerous."

Auto-discovers subsystems, rotates through them round-robin, three-phase protocol per iteration:

  1. Review (read-only): trace data flows, check git history, rate CRITICAL/HIGH, propose fixes
  2. Fix: apply minimal edits, write regression tests, run full suite
  3. Verify (read-only): verify callers/consumers, combinatorial branch verification, revert on regression

Trap doors β€” files with repeated fixes or structural invariants get documented in subsystem CLAUDE.md files:

## Trap Doors
- `bank-statement.service.ts` β€” borrowerFileId MUST equal S3 batch UUID; tenant isolation depends on effectiveLenderId threading

πŸ—οΈ DotBuilder β€” Programmatic DOT Codegen

/pickle-dot builds DOT pipelines by default via the DotBuilder TypeScript class β€” a schema-validated codegen path that enforces 28 active patterns and 15 structural validation rules and produces deterministic output. Use --builder to explicitly opt into the builder (e.g., when a global config overrides it), or --legacy to fall back to prompt-only generation for a specific run.

/pickle-dot my-prd.md              # Builder codegen path (default)
/pickle-dot --builder my-prd.md    # Explicit opt-in to builder (same as default)
/pickle-dot --legacy my-prd.md     # Prompt-only fallback β€” rollback for a single run

Builder API

import { DotBuilder } from '~/.claude/pickle-rick/extension/services/dot-builder.js';

// Static factory β€” validates and parses the spec, then returns a builder instance
const builder = DotBuilder.fromSpec(spec);  // throws BuildError on invalid spec

// Fluent chain β€” call build() once; calling it again throws ALREADY_BUILT
const result = builder.build();
// result: BuildResult {
//   dot: string,              β€” the complete DOT digraph string
//   slug: string,             β€” URL-safe pipeline identifier
//   patternsApplied: string[] β€” Tier 1/2 patterns auto-applied (e.g. ["test_fix_loop","fan_out"])
//   defenseMatrix: {          β€” Layer coverage summary
//     competitive: boolean,   β€” Pattern 18 (competing impls) applied
//     specDriven: string,     β€” "ALL" | "PARTIAL" | "NONE" (conformance nodes present)
//     adversarial: boolean,   β€” Pattern 17 (red team) applied
//   },
//   diagnostics: Diagnostic[] β€” warnings/infos from validation (non-blocking)
// }

BuilderSpec JSON

{
  "slug": "auth_refactor",              // required β€” URL-safe, lowercase underscores
  "goal": "Refactor auth module",       // required β€” single-sentence goal
  "phases": [                           // required β€” list of implementation phases (may be [] for microverse-only)
    {
      "name": "implement",              // required β€” lowercase underscores; must be unique
      "prompt": "...",                  // required β€” full impl instruction; agent has NO access to the PRD
      "allowedPaths": ["src/auth/"],    // required β€” glob patterns for permission scoping
      "dependsOn": ["research"],        // optional β€” phase names this phase depends on; omit for parallel fan-out
      "goalGate": true,                 // optional β€” Pattern 2: verify progress before continuing
      "timeout": "30m",                 // optional β€” per-phase duration string (default: "30m")
      "securityScan": true,             // optional β€” Pattern 8: npm audit node after progress gate
      "coverageTarget": 80,             // optional β€” Pattern 9: numeric coverage % gate
      "competing": true,                // optional β€” Pattern 18: fan-out to two competing impls
      "redTeam": true,                  // optional β€” Pattern 17: adversarial review after conformance
      "bddScenarios": true,             // optional β€” Pattern 16b: Given/When/Then scenario generation
      "specFirst": true,                // optional β€” Pattern 16: write tests before impl (default: true when goalGate)
      "docOnly": false,                 // optional β€” suppress verify chain for doc-only phases
      "escalateOn": ["package.json"],   // optional β€” files that trigger escalation (default: ["package.json","*.lock","*.config.*"])
      "contextOnSuccess": {             // optional β€” custom AC keys emitted by this phase's conformance node
        "auth_secure": "true"
      }
    }
  ],
  "acceptanceCriteria": {               // required β€” exit gate conditions
    "tests_pass": "true",               //   Tier 2 keys (auto-sourced): tests_pass, lint_clean, types_compile,
    "lint_clean": "true",               //     cli_contract, determinism, validation_rules
    "auth_secure": "true"               //   Tier 1 keys (custom): must appear in a phase's contextOnSuccess
  },
  "workingDir": "${WORKING_DIR}",       // optional β€” attractor resolves at runtime
  "specFile": "/repos/myapp/prd.md",    // optional β€” path to PRD; interpolated as $spec_file in node prompts
  "reviewRatchet": 2,                   // optional β€” min consecutive clean review passes (must be β‰₯ 2)
  "workspace": "isolated",             // optional β€” omit for shared (default)
  "workspaceOpts": {                    // required when workspace: "isolated"
    "repoUrl": "https://github.com/org/repo.git",  // HTTPS required (not SSH)
    "repoBranch": "main",
    "cleanup": "preserve"              // "preserve" (default) | "delete"
  },
  "microverse": {                       // optional β€” numeric optimization loop (replaces impl/verify chain)
    "name": "bundle_opt",
    "opts": {
      "prompt": "...",
      "measureCommand": "npm run build 2>/dev/null && wc -c < dist/bundle.js",
      "target": 819200,
      "direction": "reduce",            // "reduce" | "improve"
      "allowedPaths": ["src/**"]
    }
  },
  "modelStylesheet": {                  // optional β€” model tier overrides
    "defaultModel": "claude-sonnet-4-6",
    "criticalModel": "claude-opus-4-6",
    "reviewModel": "claude-opus-4-6"
  }
}

CLI Contract

The builder binary reads BuilderSpec JSON from stdin and writes to stdout/stderr:

echo '<BuilderSpec JSON>' | node ~/.claude/pickle-rick/extension/bin/dot-builder.js
Exit Stream Payload
0 stdout BuildResult JSON β€” { dot, slug, patternsApplied, defenseMatrix, diagnostics }
1 stderr BuildError JSON β€” { error: BuildErrorCode, message, diagnostics } β€” validation failure, recoverable
2 stderr { error: "UNEXPECTED_ERROR", message } β€” I/O or parse failure, not recoverable

Fix-Loop and .dot.draft Files

When the builder exits 1, /pickle-dot enters an automatic fix loop. It reads the diagnostics array from stderr, applies minimum-scope fixes to the BuilderSpec, and re-invokes the CLI. The loop tracks the best attempt (fewest errors) and reverts to it after 2 consecutive non-improvements. After 3 total failed iterations without improvement:

  1. The best BuilderSpec output is saved as ./<slug>.dot.draft
  2. All remaining diagnostics with their .fix hints are listed
  3. The loop stops β€” manual intervention required

Re-run after fixing: /pickle-dot <prd>. The .dot.draft file is not a valid pipeline β€” do not submit it to /attract until errors are resolved.

Legacy (prompt-only) path: /pickle-dot --legacy also runs a post-save validate-fix loop with the same convergence guard, invoking the attractor validator CLI (bun packages/attractor/src/cli.ts validate) on the emitted raw DOT. On exhaustion it saves the best attempt as ./<slug>.dot.draft. If the validator CLI is unavailable (attractor root not detected), the loop is skipped and the initial DOT is saved as-is with a warning.

Validation error codes: EMPTY_SLUG, EMPTY_GOAL, DUPLICATE_PHASE, INVALID_SPEC, MISSING_AC_MAPPING, MISSING_TIMEOUT, INVALID_TIMEOUT, MISSING_ALLOWED_PATHS, INVALID_ALLOWED_PATHS, PROMPT_PATH_MISMATCH, INVALID_STRUCTURE, START_HAS_INCOMING, UNREACHABLE_NODE, DIAMOND_MISSING_EDGES, FAN_OUT_SCOPE_LEAK, GOAL_GATE_NO_MAX_VISITS, REVIEW_MISSING_READONLY, WORKSPACE_NO_HTTPS, WORKSPACE_NO_PUSH, PLAN_MODE_DEADLOCK, COMPONENT_NO_MERGE, INVALID_RATCHET, NON_NUMERIC_TARGET, ALREADY_BUILT

πŸ›οΈ Council of Ricks β€” Details

Council of Ricks β€” Graphite PR Stack Reviewer

Requires a Graphite stack with at least one non-trunk branch, a CLAUDE.md with project rules, passing lint, and architectural lint rules in ESLint. Escalates through focus areas: stack structure (pass 1) β†’ CLAUDE.md compliance (2–3) β†’ per-branch correctness (4–5) β†’ cross-branch contracts (6–7) β†’ test coverage (8–9) β†’ security (10–11) β†’ polish (12+). Issues triaged: P0 (must-fix), P1 (should-fix), P2 (nice-to-fix).



🧬 The Pickle Rick Lifecycle β€” Under the Hood

Each ticket goes through 8 phases in the autonomous loop:

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚  πŸ“‹ PRD     β”‚  ← Requirements + verification strategy + interface contracts
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ πŸ“¦ Breakdownβ”‚  ← Atomize into tickets, each self-contained with spec
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
         β”‚
    β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”  per ticket (Morty workers πŸ‘Ά)
    β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚πŸ”¬ Re-β”‚  β”‚πŸ”¬ Re-β”‚  1. Research the codebase
  β”‚searchβ”‚  β”‚searchβ”‚
  β””β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜
     β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚πŸ“ Re-β”‚  β”‚πŸ“ Re-β”‚  2. Review the research
  β”‚view  β”‚  β”‚view  β”‚
  β””β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜
     β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚πŸ“Planβ”‚  β”‚πŸ“Planβ”‚  3. Architect the solution
  β””β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜
     β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚πŸ“ Re-β”‚  β”‚πŸ“ Re-β”‚  4. Review the plan
  β”‚view  β”‚  β”‚view  β”‚
  β””β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜
     β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚βš‘ Im-β”‚  β”‚βš‘ Im-β”‚  5. Implement
  β”‚plem  β”‚  β”‚plem  β”‚
  β””β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜
     β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚βœ… Ve-β”‚  β”‚βœ… Ve-β”‚  6. Spec conformance
  β”‚rify  β”‚  β”‚rify  β”‚
  β””β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜
     β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚πŸ” Re-β”‚  β”‚πŸ” Re-β”‚  7. Code review
  β”‚view  β”‚  β”‚view  β”‚
  β””β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜
     β–Ό         β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚πŸ§ΉSim-β”‚  β”‚πŸ§ΉSim-β”‚  8. Simplify
  β”‚plify β”‚  β”‚plify β”‚
  β””β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”˜

The Stop hook prevents Claude from exiting until the task is genuinely complete. Between each iteration, the hook injects a fresh session summary β€” current phase, ticket list, active task β€” so Rick always wakes up knowing exactly where he is, even after full context compression.

All modes support both tmux and Zellij monitor layouts.


πŸ“Š Metrics

/pickle-metrics                    # Last 7 days, daily breakdown
/pickle-metrics --days 30          # Last 30 days
/pickle-metrics --weekly           # Weekly buckets (defaults to 28 days)
/pickle-metrics --json             # Machine-readable JSON output

πŸ“‹ Requirements

  • Node.js 18+
  • Claude Code CLI (claude) β€” v2.1.49+
  • jq (for install.sh)
  • rsync (for install.sh)
  • tmux (optional β€” for /pickle-tmux, /szechuan-sauce, /anatomy-park)
  • Zellij >= 0.40.0 (optional β€” for /pickle-zellij)
  • Graphite CLI (gt) (optional β€” for /council-of-ricks)
  • macOS or Linux (Windows not supported)

πŸ† Credits

This port stands on the shoulders of giants. Wubba Lubba Dub Dub.

πŸ₯’ galz10 Creator of the original Pickle Rick Gemini CLI extension β€” the autonomous lifecycle, manager/worker model, hook loop, and all the skill content that makes this thing work. This project is a faithful port of their work.
🧠 Geoffrey Huntley Inventor of the "Ralph Wiggum" technique β€” the foundational insight that "Ralph is a Bash loop": feed an AI agent a prompt, block its exit, repeat until done. Everything here traces back to that idea.
πŸ”§ AsyncFuncAI/ralph-wiggum-extension Reference implementation of the Ralph Wiggum loop that inspired the Pickle Rick extension.
✍️ dexhorthy Context engineering and prompt techniques used throughout.
πŸ“Ί Rick and Morty For Pickle Riiiick! πŸ₯’

πŸ₯’ License

Apache 2.0 β€” same as the original Pickle Rick extension.


"I'm not a tool, Morty. I'm a methodology." πŸ₯’

Release History

VersionChangesUrgencyDate
v1.44.3## What Changed - kept the tmux monitor alive across `pickle` pipeline phase transitions instead of letting it terminate during the handoff gap - added explicit `pipeline-status.json` lifecycle tracking so the monitor can distinguish an inter-phase idle window from a true terminal state - added regression coverage for the pipeline lifecycle contract and the monitor exit heuristic ## Root Cause The monitor treated `state.active=false` as terminal after a short delay. That works for a single runnHigh4/19/2026
v1.44.2## Fix: pipeline refuses to start on a dirty working tree Running `/pickle-pipeline` on a dirty tree caused failures after the pickle phase β€” downstream microverse phases would auto-commit the user's pre-existing WIP under a generic message, obscuring which phase changed what and sometimes tripping phase logic. ### Behavior change - **`pipeline-runner.ts`** β€” new `assertCleanWorkingTree()` runs before the phase loop. If the working tree is dirty, the pipeline exits immediately with a message High4/18/2026
v1.42.1Docs: add /plumbus banner image to README. **Full Changelog**: https://github.com/gregorydickson/pickle-rick-claude/compare/v1.42.0...v1.42.1High4/14/2026
v1.41.0## Move session data out of ~/.claude to avoid permission prompts Claude Code gates writes under \`~/.claude\` with per-operation permission prompts. Session dirs, the jar queue, worktrees, activity logs, the metrics cache, and \`current_sessions.json\` now live under a new **data root** at \`~/.local/share/pickle-rick\`. Deployed code, \`pickle_settings.json\`, \`persona.md\`, templates, and the update-check cache still live in \`~/.claude/pickle-rick\`. ### One-time setup after upgrade Add High4/12/2026
v1.36.0## What's New **Hardening tickets in PRD refinement** β€” `/pickle-refine-prd` now auto-appends two hardening tickets after implementation and wiring tickets: 1. **Code Quality Hardening** β€” Reviews all modified files against principle checklist (KISS, YAGNI, DRY, Small Functions, Guard Clauses, etc.). Iterates per-file until zero P0-P1 violations. Atomic commits with regression tests. 2. **Data Flow Audit** β€” Three-phase protocol (read-only review β†’ fix β†’ read-only self-verify) tracing data flHigh4/9/2026
v1.33.2## Fixes - **Shell Safety Rule 6**: `grep -v` with bare keyword patterns on source code matches unintended fields (`property_type` matches `type:`, `created_at` matches `at`). Always anchor to line start: `grep -v '^\s*type:'`. - **Fixed `verify_field_alignment` example**: Old pattern (`grep -rhE '(Column|Field|Prop)' | grep -oE '[a-z_]+'`) extracted decorator garbage (`type`, `varchar`, `nullable`). New pattern matches actual TS field declarations via type annotations. **Full Changelog**: httHigh4/8/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

maestro-orchestrateMulti-agent orchestration platform for Gemini CLI and Claude Code β€” 22 specialists, parallel subagents, persistent sessions, and built-in code review, debugging, security, SEO, accessibility, and compv1.6.2
be-my-butlerOrchestrate multiple agents to execute Claude Code workflows with cross-model verification for reliable AI code automation.main@2026-04-21
career-opsAI-powered job search system built on Claude Code. 14 skill modes, Go dashboard, PDF generation, batch processing.v1.5.0
benBen β€” an autonomous digital entity that lives on Crustoceanv1.0.0
claudekitπŸ› οΈ Accelerate your Python and JavaScript development with Claude Kit's toolkit, featuring specialized agents, slash commands, and advanced context management.main@2026-04-21