Compare commits

..

1 Commits

Author SHA1 Message Date
Anthony Morris
822396ba6a fix(ralph-wiggum): move multi-line bash from command to setup script
Fixes anthropics/claude-code#12170

The ralph-wiggum slash commands had multi-line bash scripts in their
\`\`\`! blocks. Claude Code's security check blocks commands with
newlines to prevent command injection, causing the error:

  "Command contains newlines that could separate multiple commands"

Changes:

ralph-loop.md:
- Remove multi-line bash from code block
- Keep single-line call to setup script
- Keep scoped allowed-tools for security

cancel-ralph.md:
- Replace multi-line bash with step-by-step instructions
- Add Read tool to allowed-tools (needed to read iteration count)

setup-ralph-loop.sh:
- Add completion promise display logic (moved from ralph-loop.md)
- Uses COMPLETION_PROMISE variable directly instead of reading from file
2026-01-04 22:41:17 -08:00
17 changed files with 35 additions and 162 deletions

View File

@@ -328,15 +328,15 @@
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/frontend-design"
},
{
"name": "ralph-loop",
"description": "Interactive self-referential AI loops for iterative development, implementing the Ralph Wiggum technique. Claude works on the same task repeatedly, seeing its previous work, until completion.",
"name": "ralph-wiggum",
"description": "Interactive self-referential AI loops for iterative development. Claude works on the same task repeatedly, seeing its previous work, until completion.",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
},
"source": "./plugins/ralph-loop",
"source": "./plugins/ralph-wiggum",
"category": "development",
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/ralph-loop"
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/ralph-wiggum"
},
{
"name": "hookify",
@@ -502,26 +502,6 @@
"source": "./external_plugins/context7",
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/context7",
"tags": ["community-managed"]
},
{
"name": "pinecone",
"description": "Pinecone vector database integration. Streamline your Pinecone development with powerful tools for managing vector indexes, querying data, and rapid prototyping. Use slash commands like /quickstart to generate AGENTS.md files and initialize Python projects and /query to quickly explore indexes. Access the Pinecone MCP server for creating, describing, upserting and querying indexes with Claude. Perfect for developers building semantic search, RAG applications, recommendation systems, and other vector-based applications with Pinecone.",
"category": "database",
"source": {
"source": "url",
"url": "https://github.com/pinecone-io/pinecone-claude-code-plugin.git"
},
"homepage": "https://github.com/pinecone-io/pinecone-claude-code-plugin"
},
{
"name": "superpowers",
"description": "Superpowers teaches Claude brainstorming, subagent driven development with built in code review, systematic debugging, and red/green TDD. Additionally, it teaches Claude how to author and test new skills.",
"category": "development",
"source": {
"source": "url",
"url": "https://github.com/obra/superpowers.git"
},
"homepage": "https://github.com/obra/superpowers"
}
]
}

View File

@@ -1,47 +0,0 @@
name: Close External PRs
on:
pull_request_target:
types: [opened]
permissions:
pull-requests: write
issues: write
jobs:
check-membership:
if: vars.DISABLE_EXTERNAL_PR_CHECK != 'true'
runs-on: ubuntu-latest
steps:
- name: Check if author is org member
uses: actions/github-script@v7
with:
script: |
const org = 'anthropics';
const author = context.payload.pull_request.user.login;
try {
await github.rest.orgs.checkMembershipForUser({
org: org,
username: author
});
console.log(`${author} is an org member, allowing PR`);
} catch (e) {
if (e.status === 404) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body: `Thanks for your interest! This repo only accepts contributions from Anthropic team members. If you'd like to submit a plugin to the marketplace, please submit your plugin [here](https://docs.google.com/forms/d/e/1FAIpQLSdeFthxvjOXUjxg1i3KrOOkEPDJtn71XC-KjmQlxNP63xYydg/viewform).`
});
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
state: 'closed'
});
console.log(`Closed PR from external contributor: ${author}`);
}
}

View File

@@ -1,10 +1,7 @@
{
"name": "greptile",
"description": "AI code review agent for GitHub and GitLab. View and resolve Greptile's PR review comments directly from Claude Code.",
"description": "AI-powered codebase search and understanding. Query your repositories using natural language to find relevant code, understand dependencies, and get contextual answers about your codebase architecture.",
"author": {
"name": "Greptile",
"url": "https://greptile.com"
},
"homepage": "https://greptile.com/docs",
"keywords": ["code-review", "pull-requests", "github", "gitlab", "ai"]
"name": "Greptile"
}
}

View File

@@ -1,57 +0,0 @@
# Greptile
[Greptile](https://greptile.com) is an AI code review agent for GitHub and GitLab that automatically reviews pull requests. This plugin connects Claude Code to your Greptile account, letting you view and resolve Greptile's review comments directly from your terminal.
## Setup
### 1. Create a Greptile Account
Sign up at [greptile.com](https://greptile.com) and connect your GitHub or GitLab repositories.
### 2. Get Your API Key
1. Go to [API Settings](https://app.greptile.com/settings/api)
2. Generate a new API key
3. Copy the key
### 3. Set Environment Variable
Add to your shell profile (`.bashrc`, `.zshrc`, etc.):
```bash
export GREPTILE_API_KEY="your-api-key-here"
```
Then reload your shell or run `source ~/.zshrc`.
## Available Tools
### Pull Request Tools
- `list_pull_requests` - List PRs with optional filtering by repo, branch, author, or state
- `get_merge_request` - Get detailed PR info including review analysis
- `list_merge_request_comments` - Get all comments on a PR with filtering options
### Code Review Tools
- `list_code_reviews` - List code reviews with optional filtering
- `get_code_review` - Get detailed code review information
- `trigger_code_review` - Start a new Greptile review on a PR
### Comment Search
- `search_greptile_comments` - Search across all Greptile review comments
### Custom Context Tools
- `list_custom_context` - List your organization's coding patterns and rules
- `get_custom_context` - Get details for a specific pattern
- `search_custom_context` - Search patterns by content
- `create_custom_context` - Create a new coding pattern
## Example Usage
Ask Claude Code to:
- "Show me Greptile's comments on my current PR and help me resolve them"
- "What issues did Greptile find on PR #123?"
- "Trigger a Greptile review on this branch"
## Documentation
For more information, visit [greptile.com/docs](https://greptile.com/docs).

View File

@@ -120,7 +120,7 @@ Use this workflow for structured, high-quality plugin development from concept t
- YAML frontmatter + markdown body structure
- Parsing techniques for bash scripts (sed, awk, grep patterns)
- Temporarily active hooks (flag files and quick-exit)
- Real-world examples from multi-agent-swarm and ralph-loop plugins
- Real-world examples from multi-agent-swarm and ralph-wiggum plugins
- Atomic file updates and validation
- Gitignore and lifecycle management

View File

@@ -449,7 +449,7 @@ Coordinate with auth-agent on shared types.
- Sends notifications to coordinator if enabled
- Allows quick activation/deactivation via `enabled: true/false`
### ralph-loop Plugin
### ralph-wiggum Plugin
**.claude/ralph-loop.local.md:**
```markdown
@@ -512,7 +512,7 @@ fi
For detailed implementation patterns:
- **`references/parsing-techniques.md`** - Complete guide to parsing YAML frontmatter and markdown bodies
- **`references/real-world-examples.md`** - Deep dive into multi-agent-swarm and ralph-loop implementations
- **`references/real-world-examples.md`** - Deep dive into multi-agent-swarm and ralph-wiggum implementations
### Example Files

View File

@@ -126,7 +126,7 @@ sed "s/^pr_number: .*/pr_number: $PR_NUM/" \
mv temp.md ".claude/multi-agent-swarm.local.md"
```
## ralph-loop Plugin
## ralph-wiggum Plugin
### Settings File Structure
@@ -253,7 +253,7 @@ echo "Ralph loop initialized: .claude/ralph-loop.local.md"
## Pattern Comparison
| Feature | multi-agent-swarm | ralph-loop |
| Feature | multi-agent-swarm | ralph-wiggum |
|---------|-------------------|--------------|
| **File** | `.claude/multi-agent-swarm.local.md` | `.claude/ralph-loop.local.md` |
| **Purpose** | Agent coordination state | Loop iteration state |

View File

@@ -310,7 +310,7 @@ Study the skills in this plugin as examples of best practices:
**plugin-settings skill:**
- Specific triggers: "plugin settings", ".local.md files", "YAML frontmatter"
- References show real implementations (multi-agent-swarm, ralph-loop)
- References show real implementations (multi-agent-swarm, ralph-wiggum)
- Working parsing scripts
Each demonstrates progressive disclosure and strong triggering.

View File

@@ -1,8 +0,0 @@
{
"name": "ralph-loop",
"description": "Continuous self-referential AI loops for interactive iterative development, implementing the Ralph Wiggum technique. Run Claude in a while-true loop with the same prompt until task completion.",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
}
}

View File

@@ -0,0 +1,8 @@
{
"name": "ralph-wiggum",
"description": "Implementation of the Ralph Wiggum technique - continuous self-referential AI loops for interactive iterative development. Run Claude in a while-true loop with the same prompt until task completion.",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
}
}

View File

@@ -1,12 +1,12 @@
# Ralph Loop Plugin
# Ralph Wiggum Plugin
Implementation of the Ralph Wiggum technique for iterative, self-referential AI development loops in Claude Code.
## What is Ralph Loop?
## What is Ralph?
Ralph Loop is a development methodology based on continuous AI agent loops. As Geoffrey Huntley describes it: **"Ralph is a Bash loop"** - a simple `while true` that repeatedly feeds an AI agent a prompt file, allowing it to iteratively improve its work until completion.
Ralph is a development methodology based on continuous AI agent loops. As Geoffrey Huntley describes it: **"Ralph is a Bash loop"** - a simple `while true` that repeatedly feeds an AI agent a prompt file, allowing it to iteratively improve its work until completion.
This technique is inspired by the Ralph Wiggum coding technique (named after the character from The Simpsons), embodying the philosophy of persistent iteration despite setbacks.
The technique is named after Ralph Wiggum from The Simpsons, embodying the philosophy of persistent iteration despite setbacks.
### Core Concept

View File

@@ -1,5 +1,5 @@
---
description: "Cancel active Ralph Loop"
description: "Cancel active Ralph Wiggum loop"
allowed-tools: ["Bash(test -f .claude/ralph-loop.local.md:*)", "Bash(rm .claude/ralph-loop.local.md)", "Read(.claude/ralph-loop.local.md)"]
hide-from-slash-command-tool: "true"
---

View File

@@ -1,14 +1,14 @@
---
description: "Explain Ralph Loop plugin and available commands"
description: "Explain Ralph Wiggum technique and available commands"
---
# Ralph Loop Plugin Help
# Ralph Wiggum Plugin Help
Please explain the following to the user:
## What is Ralph Loop?
## What is the Ralph Wiggum Technique?
Ralph Loop implements the Ralph Wiggum technique - an iterative development methodology based on continuous AI loops, pioneered by Geoffrey Huntley.
The Ralph Wiggum technique is an iterative development methodology based on continuous AI loops, pioneered by Geoffrey Huntley.
**Core concept:**
```bash

View File

@@ -1,7 +1,7 @@
---
description: "Start Ralph Loop in current session"
description: "Start Ralph Wiggum loop in current session"
argument-hint: "PROMPT [--max-iterations N] [--completion-promise TEXT]"
allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/setup-ralph-loop.sh:*)"]
allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/setup-ralph-loop.sh)"]
hide-from-slash-command-tool: "true"
---

View File

@@ -1,5 +1,5 @@
{
"description": "Ralph Loop plugin stop hook for self-referential loops",
"description": "Ralph Wiggum plugin stop hook for self-referential loops",
"hooks": {
"Stop": [
{

View File

@@ -1,6 +1,6 @@
#!/bin/bash
# Ralph Loop Stop Hook
# Ralph Wiggum Stop Hook
# Prevents session exit when a ralph-loop is active
# Feeds Claude's output back as input to continue the loop

View File

@@ -29,7 +29,7 @@ OPTIONS:
-h, --help Show this help message
DESCRIPTION:
Starts a Ralph Loop in your CURRENT session. The stop hook prevents
Starts a Ralph Wiggum loop in your CURRENT session. The stop hook prevents
exit and feeds your output back as input until completion or iteration limit.
To signal completion, you must output: <promise>YOUR_PHRASE</promise>