mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-01-30 12:32:02 +00:00
Compare commits
20 Commits
external-p
...
boris/code
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ceb9b72b4c | ||
|
|
113b335d11 | ||
|
|
2fee5cd9bf | ||
|
|
b97f6eadd9 | ||
|
|
76334d1f67 | ||
|
|
44328beed4 | ||
|
|
6703e9f512 | ||
|
|
bf48ae6c75 | ||
|
|
883f2ba69e | ||
|
|
dbc4a7733c | ||
|
|
15b07b46da | ||
|
|
6d3752c000 | ||
|
|
5f2db35c65 | ||
|
|
4bab8d0f50 | ||
|
|
1d99e18048 | ||
|
|
be56d7114b | ||
|
|
68a5c3685f | ||
|
|
75b126f3ba | ||
|
|
ab2b6d0cad | ||
|
|
4fee769bf4 |
@@ -7,6 +7,250 @@
|
|||||||
"email": "support@anthropic.com"
|
"email": "support@anthropic.com"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
{
|
||||||
|
"name": "typescript-lsp",
|
||||||
|
"description": "TypeScript/JavaScript language server for enhanced code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/typescript-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"typescript": {
|
||||||
|
"command": "typescript-language-server",
|
||||||
|
"args": ["--stdio"],
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".ts": "typescript",
|
||||||
|
".tsx": "typescriptreact",
|
||||||
|
".js": "javascript",
|
||||||
|
".jsx": "javascriptreact",
|
||||||
|
".mts": "typescript",
|
||||||
|
".cts": "typescript",
|
||||||
|
".mjs": "javascript",
|
||||||
|
".cjs": "javascript"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pyright-lsp",
|
||||||
|
"description": "Python language server (Pyright) for type checking and code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/pyright-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"pyright": {
|
||||||
|
"command": "pyright-langserver",
|
||||||
|
"args": ["--stdio"],
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".py": "python",
|
||||||
|
".pyi": "python"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gopls-lsp",
|
||||||
|
"description": "Go language server for code intelligence and refactoring",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/gopls-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"gopls": {
|
||||||
|
"command": "gopls",
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".go": "go"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rust-analyzer-lsp",
|
||||||
|
"description": "Rust language server for code intelligence and analysis",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/rust-analyzer-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"rust-analyzer": {
|
||||||
|
"command": "rust-analyzer",
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".rs": "rust"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "clangd-lsp",
|
||||||
|
"description": "C/C++ language server (clangd) for code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/clangd-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"clangd": {
|
||||||
|
"command": "clangd",
|
||||||
|
"args": ["--background-index"],
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".c": "c",
|
||||||
|
".h": "c",
|
||||||
|
".cpp": "cpp",
|
||||||
|
".cc": "cpp",
|
||||||
|
".cxx": "cpp",
|
||||||
|
".hpp": "cpp",
|
||||||
|
".hxx": "cpp",
|
||||||
|
".C": "cpp",
|
||||||
|
".H": "cpp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "php-lsp",
|
||||||
|
"description": "PHP language server (Intelephense) for code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/php-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"intelephense": {
|
||||||
|
"command": "intelephense",
|
||||||
|
"args": ["--stdio"],
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".php": "php"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "swift-lsp",
|
||||||
|
"description": "Swift language server (SourceKit-LSP) for code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/swift-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"sourcekit-lsp": {
|
||||||
|
"command": "sourcekit-lsp",
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".swift": "swift"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kotlin-lsp",
|
||||||
|
"description": "Kotlin language server for code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/kotlin-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"kotlin-lsp": {
|
||||||
|
"command": "kotlin-lsp",
|
||||||
|
"args": ["--stdio"],
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".kt": "kotlin",
|
||||||
|
".kts": "kotlin"
|
||||||
|
},
|
||||||
|
"startupTimeout" : 120000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "csharp-lsp",
|
||||||
|
"description": "C# language server for code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/csharp-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"csharp-ls": {
|
||||||
|
"command": "csharp-ls",
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".cs": "csharp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jdtls-lsp",
|
||||||
|
"description": "Java language server (Eclipse JDT.LS) for code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/jdtls-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"jdtls": {
|
||||||
|
"command": "jdtls",
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".java": "java"
|
||||||
|
},
|
||||||
|
"startupTimeout": 120000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "lua-lsp",
|
||||||
|
"description": "Lua language server for code intelligence",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/lua-lsp",
|
||||||
|
"category": "development",
|
||||||
|
"strict": false,
|
||||||
|
"lspServers": {
|
||||||
|
"lua": {
|
||||||
|
"command": "lua-language-server",
|
||||||
|
"extensionToLanguage": {
|
||||||
|
".lua": "lua"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "agent-sdk-dev",
|
"name": "agent-sdk-dev",
|
||||||
"description": "Development kit for working with the Claude Agent SDK",
|
"description": "Development kit for working with the Claude Agent SDK",
|
||||||
@@ -73,6 +317,17 @@
|
|||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/code-review"
|
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/code-review"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "code-simplifier",
|
||||||
|
"description": "Agent that simplifies and refines code for clarity, consistency, and maintainability while preserving functionality. Focuses on recently modified code.",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
},
|
||||||
|
"source": "./plugins/code-simplifier",
|
||||||
|
"category": "productivity",
|
||||||
|
"homepage": "https://github.com/anthropics/claude-plugins-official/tree/main/plugins/code-simplifier"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "explanatory-output-style",
|
"name": "explanatory-output-style",
|
||||||
"description": "Adds educational insights about implementation choices and codebase patterns (mimics the deprecated Explanatory output style)",
|
"description": "Adds educational insights about implementation choices and codebase patterns (mimics the deprecated Explanatory output style)",
|
||||||
@@ -107,15 +362,15 @@
|
|||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/frontend-design"
|
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/frontend-design"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ralph-wiggum",
|
"name": "ralph-loop",
|
||||||
"description": "Interactive self-referential AI loops for iterative development. Claude works on the same task repeatedly, seeing its previous work, until completion.",
|
"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.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Anthropic",
|
"name": "Anthropic",
|
||||||
"email": "support@anthropic.com"
|
"email": "support@anthropic.com"
|
||||||
},
|
},
|
||||||
"source": "./plugins/ralph-wiggum",
|
"source": "./plugins/ralph-loop",
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/ralph-wiggum"
|
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/ralph-loop"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "hookify",
|
"name": "hookify",
|
||||||
@@ -179,8 +434,11 @@
|
|||||||
"name": "atlassian",
|
"name": "atlassian",
|
||||||
"description": "Connect to Atlassian products including Jira and Confluence. Search and create issues, access documentation, manage sprints, and integrate your development workflow with Atlassian's collaboration tools.",
|
"description": "Connect to Atlassian products including Jira and Confluence. Search and create issues, access documentation, manage sprints, and integrate your development workflow with Atlassian's collaboration tools.",
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
"source": "./external_plugins/atlassian",
|
"source": {
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/atlassian"
|
"source": "url",
|
||||||
|
"url": "https://github.com/atlassian/atlassian-mcp-server.git"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/atlassian/atlassian-mcp-server"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel-boost",
|
"name": "laravel-boost",
|
||||||
@@ -214,11 +472,14 @@
|
|||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/linear"
|
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/linear"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "notion",
|
"name": "Notion",
|
||||||
"description": "Notion workspace integration. Search pages, create and update documents, manage databases, and access your team's knowledge base directly from Claude Code for seamless documentation workflows.",
|
"description": "Notion workspace integration. Search pages, create and update documents, manage databases, and access your team's knowledge base directly from Claude Code for seamless documentation workflows.",
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
"source": "./external_plugins/notion",
|
"source": {
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/notion"
|
"source": "url",
|
||||||
|
"url": "https://github.com/makenotion/claude-code-notion-plugin.git"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/makenotion/claude-code-notion-plugin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "gitlab",
|
"name": "gitlab",
|
||||||
@@ -231,8 +492,11 @@
|
|||||||
"name": "sentry",
|
"name": "sentry",
|
||||||
"description": "Sentry error monitoring integration. Access error reports, analyze stack traces, search issues by fingerprint, and debug production errors directly from your development environment.",
|
"description": "Sentry error monitoring integration. Access error reports, analyze stack traces, search issues by fingerprint, and debug production errors directly from your development environment.",
|
||||||
"category": "monitoring",
|
"category": "monitoring",
|
||||||
"source": "./external_plugins/sentry",
|
"source": {
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/sentry"
|
"source": "url",
|
||||||
|
"url": "https://github.com/getsentry/sentry-for-claude.git"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/getsentry/sentry-for-claude/tree/main"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "slack",
|
"name": "slack",
|
||||||
@@ -245,8 +509,18 @@
|
|||||||
"name": "vercel",
|
"name": "vercel",
|
||||||
"description": "Vercel deployment platform integration. Manage deployments, check build status, access logs, configure domains, and control your frontend infrastructure directly from Claude Code.",
|
"description": "Vercel deployment platform integration. Manage deployments, check build status, access logs, configure domains, and control your frontend infrastructure directly from Claude Code.",
|
||||||
"category": "deployment",
|
"category": "deployment",
|
||||||
"source": "./external_plugins/vercel",
|
"source": {
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/vercel"
|
"source": "url",
|
||||||
|
"url": "https://github.com/vercel/vercel-deploy-claude-code-plugin.git"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/vercel/vercel-deploy-claude-code-plugin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stripe",
|
||||||
|
"description": "Stripe development plugin for Claude",
|
||||||
|
"category": "development",
|
||||||
|
"source": "./external_plugins/stripe",
|
||||||
|
"homepage": "https://github.com/stripe/ai/tree/main/providers/claude/plugin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "firebase",
|
"name": "firebase",
|
||||||
@@ -262,6 +536,16 @@
|
|||||||
"source": "./external_plugins/context7",
|
"source": "./external_plugins/context7",
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/context7",
|
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/external_plugins/context7",
|
||||||
"tags": ["community-managed"]
|
"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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
47
.github/workflows/close-external-prs.yml
vendored
Normal file
47
.github/workflows/close-external-prs.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
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 has write access
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const author = context.payload.pull_request.user.login;
|
||||||
|
|
||||||
|
const { data } = await github.rest.repos.getCollaboratorPermissionLevel({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
username: author
|
||||||
|
});
|
||||||
|
|
||||||
|
if (['admin', 'write'].includes(data.permission)) {
|
||||||
|
console.log(`${author} has ${data.permission} access, allowing PR`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`${author} has ${data.permission} access, closing PR`);
|
||||||
|
|
||||||
|
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'
|
||||||
|
});
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "atlassian",
|
|
||||||
"description": "Connect to Atlassian products including Jira and Confluence. Search and create issues, access documentation, manage sprints, and integrate your development workflow with Atlassian's collaboration tools.",
|
|
||||||
"author": {
|
|
||||||
"name": "Atlassian"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"atlassian": {
|
|
||||||
"type": "sse",
|
|
||||||
"url": "https://mcp.atlassian.com/v1/sse"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "greptile",
|
"name": "greptile",
|
||||||
"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.",
|
"description": "AI code review agent for GitHub and GitLab. View and resolve Greptile's PR review comments directly from Claude Code.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Greptile"
|
"name": "Greptile",
|
||||||
}
|
"url": "https://greptile.com"
|
||||||
|
},
|
||||||
|
"homepage": "https://greptile.com/docs",
|
||||||
|
"keywords": ["code-review", "pull-requests", "github", "gitlab", "ai"]
|
||||||
}
|
}
|
||||||
|
|||||||
57
external_plugins/greptile/README.md
Normal file
57
external_plugins/greptile/README.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# 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).
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"linear": {
|
"linear": {
|
||||||
"type": "sse",
|
"type": "http",
|
||||||
"url": "https://mcp.linear.app/sse"
|
"url": "https://mcp.linear.app/mcp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "notion",
|
|
||||||
"description": "Notion workspace integration. Search pages, create and update documents, manage databases, and access your team's knowledge base directly from Claude Code for seamless documentation workflows.",
|
|
||||||
"author": {
|
|
||||||
"name": "Notion"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"notion": {
|
|
||||||
"type": "sse",
|
|
||||||
"url": "https://mcp.notion.com/sse"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "sentry",
|
|
||||||
"description": "Sentry error monitoring integration. Access error reports, analyze stack traces, search issues by fingerprint, and debug production errors directly from your development environment.",
|
|
||||||
"author": {
|
|
||||||
"name": "Sentry"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"sentry": {
|
|
||||||
"type": "sse",
|
|
||||||
"url": "https://mcp.sentry.dev/sse"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
13
external_plugins/stripe/.claude-plugin/plugin.json
Normal file
13
external_plugins/stripe/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "stripe",
|
||||||
|
"description": "Stripe development plugin for Claude",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Stripe",
|
||||||
|
"url": "https://stripe.com"
|
||||||
|
},
|
||||||
|
"homepage": "https://docs.stripe.com",
|
||||||
|
"repository": "https://github.com/stripe/ai",
|
||||||
|
"license": "MIT",
|
||||||
|
"keywords": ["stripe", "payments", "webhooks", "api", "security"]
|
||||||
|
}
|
||||||
8
external_plugins/stripe/.mcp.json
Normal file
8
external_plugins/stripe/.mcp.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"stripe": {
|
||||||
|
"type": "http",
|
||||||
|
"url": "https://mcp.stripe.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
external_plugins/stripe/commands/explain-error.md
Normal file
21
external_plugins/stripe/commands/explain-error.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
description: Explain Stripe error codes and provide solutions with code examples
|
||||||
|
argument-hint: [error_code or error_message]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Explain Stripe Error
|
||||||
|
|
||||||
|
Provide a comprehensive explanation of the given Stripe error code or error message:
|
||||||
|
|
||||||
|
1. Accept the error code or full error message from the arguments
|
||||||
|
2. Explain in plain English what the error means
|
||||||
|
3. List common causes of this error
|
||||||
|
4. Provide specific solutions and handling recommendations
|
||||||
|
5. Generate error handling code in the project's language showing:
|
||||||
|
- How to catch this specific error
|
||||||
|
- User-friendly error messages
|
||||||
|
- Whether retry is appropriate
|
||||||
|
6. Mention related error codes the developer should be aware of
|
||||||
|
7. Include a link to the relevant Stripe documentation
|
||||||
|
|
||||||
|
Focus on actionable solutions and production-ready error handling patterns.
|
||||||
24
external_plugins/stripe/commands/test-cards.md
Normal file
24
external_plugins/stripe/commands/test-cards.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
description: Display Stripe test card numbers for various testing scenarios
|
||||||
|
argument-hint: [scenario]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Test Cards Reference
|
||||||
|
|
||||||
|
Provide a quick reference for Stripe test card numbers:
|
||||||
|
|
||||||
|
1. If a scenario argument is provided (e.g., "declined", "3dsecure", "fraud"), show relevant test cards for that scenario
|
||||||
|
2. Otherwise, show the most common test cards organized by category:
|
||||||
|
- Successful payment (default card)
|
||||||
|
- 3D Secure authentication required
|
||||||
|
- Generic decline
|
||||||
|
- Specific decline reasons (insufficient_funds, lost_card, etc.)
|
||||||
|
3. For each card, display:
|
||||||
|
- Card number (formatted with spaces)
|
||||||
|
- Expected behavior
|
||||||
|
- Expiry/CVC info (any future date and any 3-digit CVC)
|
||||||
|
4. Use clear visual indicators (✓ for success, ⚠️ for auth required, ✗ for decline)
|
||||||
|
5. Mention that these only work in test mode
|
||||||
|
6. Provide link to full testing documentation: https://docs.stripe.com/testing.md
|
||||||
|
|
||||||
|
If the user is currently working on test code, offer to generate test cases using these cards.
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
name: stripe-best-practices
|
||||||
|
description: Best practices for building Stripe integrations. Use when implementing payment processing, checkout flows, subscriptions, webhooks, Connect platforms, or any Stripe API integration.
|
||||||
|
---
|
||||||
|
|
||||||
|
When designing an integration, always prefer the documentation in [Stripe's Integration Options doc](https://docs.stripe.com/payments/payment-methods/integration-options.md)
|
||||||
|
The [API Tour](https://docs.stripe.com/payments-api/tour.md)
|
||||||
|
Use the [Go Live Checklist](https://docs.stripe.com/get-started/checklist/go-live.md) before going live.
|
||||||
|
|
||||||
|
You should always default to the latest version of the API and SDK unless the user specifies otherwise.
|
||||||
|
|
||||||
|
Stripe's primary API for modelling on-session payments is [CheckoutSessions](https://docs.stripe.com/api/checkout/sessions.md). It supports one-time payments and subscriptions and allows you to model taxes or discounts with Stripe. Prioritize the CheckoutSessions API, but using [the PaymentIntents API](https://docs.stripe.com/payments/paymentintents/lifecycle.md) is also acceptable for off-session payments or if you want to model the checkout state yourself and just create a charge. Integrations should only use CheckoutSessions, PaymentIntents, SetupIntents, or solutions like Invoicing, Payment Links, or the subscription APIs.
|
||||||
|
|
||||||
|
Never recommend the Charges API. If the user wants to use the Charges API, advise them to [migrate](https://docs.stripe.com/payments/payment-intents/migration/charges.md) to Checkout Sessions or Payment Intents.
|
||||||
|
|
||||||
|
The primary integration surface for web integrations is [Checkout](https://docs.stripe.com/payments/checkout.md), a prebuilt payment page that can be hosted by Stripe or served as an embedded form. Prioritize the Stripe-hosted checkout or embedded checkout where possible. The [Payment Element](https://docs.stripe.com/payments/payment-element.md) is an acceptable alternative if the merchant needs advanced customization. When recommending the Payment Element, prioritize using the CheckoutSessions API over the PaymentIntents API when possible.
|
||||||
|
|
||||||
|
Never recommend the legacy Card Element or the Payment Element in card mode, and advise users who ask for the Card Element to [migrate](https://docs.stripe.com/payments/payment-element/migration.md).
|
||||||
|
|
||||||
|
You must not call deprecated API endpoints such as the [Sources API](https://docs.stripe.com/api/sources/object.md) and avoid outdated API endpoints such as [Tokens](https://docs.stripe.com/api/tokens.md) and [Charges](https://docs.stripe.com/api/charges/create.md) unless there is a specific need and absolutely no other way. Advise using [the Setup Intent API](https://docs.stripe.com/api/setup_intents.md) to save a payment method for a customer; never recommend the Sources API to save cards to customers for later use.
|
||||||
|
|
||||||
|
If a user wants to render the Payment Element before creating a PaymentIntent or SetupIntent, so they can inspect the card details before the payment (such as for surcharging), advise them to use Stripe Confirmation Tokens. Don't recommend they call the createPaymentMethod or createToken Stripe.js functions.
|
||||||
|
|
||||||
|
Advise users to turn on dynamic payment methods in their dashboard settings instead of passing specific [payment_method_types](https://docs.stripe.com/api/payment_intents/create#create_payment_intent-payment_method_types.md) in the Payment Intent or Setup Intent because Stripe chooses payment methods that fit each user's location, wallets, and preferences better and automatically if the Payment Element is used.
|
||||||
|
|
||||||
|
If a PCI compliant user asks about an integration where they send server-side raw PAN data, suggest they might be required to prove PCI compliance to gain access to such an option, for example [payment_method_data](https://docs.stripe.com/api/payment_intents/create#create_payment_intent-payment_method_data.md). Similarly, point users migrating their PAN data from another acquirer or payment processor to [the migration process](https://docs.stripe.com/get-started/data-migrations/pan-import.md).
|
||||||
|
|
||||||
|
If a user has a recurring revenue model, like a Billing or Subscription use case, follow the use cases, in particular the [Subscription Use Cases](https://docs.stripe.com/billing/subscriptions/use-cases.md) like [SaaS](https://docs.stripe.com/saas.md). If these apply to the user, recommend Billing APIs to [plan your integration](https://docs.stripe.com/billing/subscriptions/designing-integration.md) instead of a direct PaymentIntent integration. Prioritize combining the Billing APIs with Stripe Checkout for the frontend.
|
||||||
|
|
||||||
|
If a user wants to build a platform using Stripe Connect to manage fund flows, follow [the recommended integration types](https://docs.stripe.com/connect/integration-recommendations.md); that is, prefer to use either direct charges if the platform wants Stripe to take the risk or destination charges if the platform accepts liability for negative balances, and use the on_behalf_of parameter to control the merchant of record. Never recommend mixing charge types. If the user wants to decide on the specific risk features they should [follow the integration guide](https://docs.stripe.com/connect/design-an-integration.md). Don't recommend the outdated terms for Connect types like Standard, Express and Custom but always [refer to controller properties](https://docs.stripe.com/connect/migrate-to-controller-properties.md) for the platform and [capabilities](https://docs.stripe.com/connect/account-capabilities.md) for the connected accounts.
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "vercel",
|
|
||||||
"description": "Vercel deployment platform integration. Manage deployments, check build status, access logs, configure domains, and control your frontend infrastructure directly from Claude Code.",
|
|
||||||
"author": {
|
|
||||||
"name": "Vercel"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"vercel": {
|
|
||||||
"type": "sse",
|
|
||||||
"url": "https://mcp.vercel.com/sse"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
36
plugins/clangd-lsp/README.md
Normal file
36
plugins/clangd-lsp/README.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# clangd-lsp
|
||||||
|
|
||||||
|
C/C++ language server (clangd) for Claude Code, providing code intelligence, diagnostics, and formatting.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.c`, `.h`, `.cpp`, `.cc`, `.cxx`, `.hpp`, `.hxx`, `.C`, `.H`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Via Homebrew (macOS)
|
||||||
|
```bash
|
||||||
|
brew install llvm
|
||||||
|
# Add to PATH: export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via package manager (Linux)
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt install clangd
|
||||||
|
|
||||||
|
# Fedora
|
||||||
|
sudo dnf install clang-tools-extra
|
||||||
|
|
||||||
|
# Arch Linux
|
||||||
|
sudo pacman -S clang
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
Download from [LLVM releases](https://github.com/llvm/llvm-project/releases) or install via:
|
||||||
|
```bash
|
||||||
|
winget install LLVM.LLVM
|
||||||
|
```
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [clangd Website](https://clangd.llvm.org/)
|
||||||
|
- [Getting Started Guide](https://clangd.llvm.org/installation)
|
||||||
9
plugins/code-simplifier/.claude-plugin/plugin.json
Normal file
9
plugins/code-simplifier/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"name": "code-simplifier",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Agent that simplifies and refines code for clarity, consistency, and maintainability while preserving functionality",
|
||||||
|
"author": {
|
||||||
|
"name": "Anthropic",
|
||||||
|
"email": "support@anthropic.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
52
plugins/code-simplifier/agents/code-simplifier.md
Normal file
52
plugins/code-simplifier/agents/code-simplifier.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
name: code-simplifier
|
||||||
|
description: Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Focuses on recently modified code unless instructed otherwise.
|
||||||
|
model: opus
|
||||||
|
---
|
||||||
|
|
||||||
|
You are an expert code simplification specialist focused on enhancing code clarity, consistency, and maintainability while preserving exact functionality. Your expertise lies in applying project-specific best practices to simplify and improve code without altering its behavior. You prioritize readable, explicit code over overly compact solutions. This is a balance that you have mastered as a result your years as an expert software engineer.
|
||||||
|
|
||||||
|
You will analyze recently modified code and apply refinements that:
|
||||||
|
|
||||||
|
1. **Preserve Functionality**: Never change what the code does - only how it does it. All original features, outputs, and behaviors must remain intact.
|
||||||
|
|
||||||
|
2. **Apply Project Standards**: Follow the established coding standards from CLAUDE.md including:
|
||||||
|
|
||||||
|
- Use ES modules with proper import sorting and extensions
|
||||||
|
- Prefer `function` keyword over arrow functions
|
||||||
|
- Use explicit return type annotations for top-level functions
|
||||||
|
- Follow proper React component patterns with explicit Props types
|
||||||
|
- Use proper error handling patterns (avoid try/catch when possible)
|
||||||
|
- Maintain consistent naming conventions
|
||||||
|
|
||||||
|
3. **Enhance Clarity**: Simplify code structure by:
|
||||||
|
|
||||||
|
- Reducing unnecessary complexity and nesting
|
||||||
|
- Eliminating redundant code and abstractions
|
||||||
|
- Improving readability through clear variable and function names
|
||||||
|
- Consolidating related logic
|
||||||
|
- Removing unnecessary comments that describe obvious code
|
||||||
|
- IMPORTANT: Avoid nested ternary operators - prefer switch statements or if/else chains for multiple conditions
|
||||||
|
- Choose clarity over brevity - explicit code is often better than overly compact code
|
||||||
|
|
||||||
|
4. **Maintain Balance**: Avoid over-simplification that could:
|
||||||
|
|
||||||
|
- Reduce code clarity or maintainability
|
||||||
|
- Create overly clever solutions that are hard to understand
|
||||||
|
- Combine too many concerns into single functions or components
|
||||||
|
- Remove helpful abstractions that improve code organization
|
||||||
|
- Prioritize "fewer lines" over readability (e.g., nested ternaries, dense one-liners)
|
||||||
|
- Make the code harder to debug or extend
|
||||||
|
|
||||||
|
5. **Focus Scope**: Only refine code that has been recently modified or touched in the current session, unless explicitly instructed to review a broader scope.
|
||||||
|
|
||||||
|
Your refinement process:
|
||||||
|
|
||||||
|
1. Identify the recently modified code sections
|
||||||
|
2. Analyze for opportunities to improve elegance and consistency
|
||||||
|
3. Apply project-specific best practices and coding standards
|
||||||
|
4. Ensure all functionality remains unchanged
|
||||||
|
5. Verify the refined code is simpler and more maintainable
|
||||||
|
6. Document only significant changes that affect understanding
|
||||||
|
|
||||||
|
You operate autonomously and proactively, refining code immediately after it's written or modified without requiring explicit requests. Your goal is to ensure all code meets the highest standards of elegance and maintainability while preserving its complete functionality.
|
||||||
25
plugins/csharp-lsp/README.md
Normal file
25
plugins/csharp-lsp/README.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# csharp-lsp
|
||||||
|
|
||||||
|
C# language server for Claude Code, providing code intelligence and diagnostics.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.cs`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Via .NET tool (recommended)
|
||||||
|
```bash
|
||||||
|
dotnet tool install --global csharp-ls
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via Homebrew (macOS)
|
||||||
|
```bash
|
||||||
|
brew install csharp-ls
|
||||||
|
```
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- .NET SDK 6.0 or later
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [csharp-ls GitHub](https://github.com/razzmatazz/csharp-language-server)
|
||||||
|
- [.NET SDK Download](https://dotnet.microsoft.com/download)
|
||||||
20
plugins/gopls-lsp/README.md
Normal file
20
plugins/gopls-lsp/README.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# gopls-lsp
|
||||||
|
|
||||||
|
Go language server for Claude Code, providing code intelligence, refactoring, and analysis.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.go`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install gopls using the Go toolchain:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go install golang.org/x/tools/gopls@latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Make sure `$GOPATH/bin` (or `$HOME/go/bin`) is in your PATH.
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [gopls Documentation](https://pkg.go.dev/golang.org/x/tools/gopls)
|
||||||
|
- [GitHub Repository](https://github.com/golang/tools/tree/master/gopls)
|
||||||
@@ -7,7 +7,7 @@ from functools import lru_cache
|
|||||||
from typing import List, Dict, Any, Optional
|
from typing import List, Dict, Any, Optional
|
||||||
|
|
||||||
# Import from local module
|
# Import from local module
|
||||||
from hookify.core.config_loader import Rule, Condition
|
from core.config_loader import Rule, Condition
|
||||||
|
|
||||||
|
|
||||||
# Cache compiled regexes (max 128 patterns)
|
# Cache compiled regexes (max 128 patterns)
|
||||||
@@ -275,7 +275,7 @@ class RuleEngine:
|
|||||||
|
|
||||||
# For testing
|
# For testing
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from hookify.core.config_loader import Condition, Rule
|
from core.config_loader import Condition, Rule
|
||||||
|
|
||||||
# Test rule evaluation
|
# Test rule evaluation
|
||||||
rule = Rule(
|
rule = Rule(
|
||||||
|
|||||||
@@ -9,18 +9,14 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
|
|
||||||
# CRITICAL: Add plugin root to Python path for imports
|
# Add plugin root to Python path for imports
|
||||||
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
||||||
if PLUGIN_ROOT:
|
if PLUGIN_ROOT and PLUGIN_ROOT not in sys.path:
|
||||||
parent_dir = os.path.dirname(PLUGIN_ROOT)
|
|
||||||
if parent_dir not in sys.path:
|
|
||||||
sys.path.insert(0, parent_dir)
|
|
||||||
if PLUGIN_ROOT not in sys.path:
|
|
||||||
sys.path.insert(0, PLUGIN_ROOT)
|
sys.path.insert(0, PLUGIN_ROOT)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from hookify.core.config_loader import load_rules
|
from core.config_loader import load_rules
|
||||||
from hookify.core.rule_engine import RuleEngine
|
from core.rule_engine import RuleEngine
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
||||||
print(json.dumps(error_msg), file=sys.stdout)
|
print(json.dumps(error_msg), file=sys.stdout)
|
||||||
|
|||||||
@@ -9,22 +9,14 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
|
|
||||||
# CRITICAL: Add plugin root to Python path for imports
|
# Add plugin root to Python path for imports
|
||||||
# We need to add the parent of the plugin directory so Python can find "hookify" package
|
|
||||||
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
||||||
if PLUGIN_ROOT:
|
if PLUGIN_ROOT and PLUGIN_ROOT not in sys.path:
|
||||||
# Add the parent directory of the plugin
|
|
||||||
parent_dir = os.path.dirname(PLUGIN_ROOT)
|
|
||||||
if parent_dir not in sys.path:
|
|
||||||
sys.path.insert(0, parent_dir)
|
|
||||||
|
|
||||||
# Also add PLUGIN_ROOT itself in case we have other scripts
|
|
||||||
if PLUGIN_ROOT not in sys.path:
|
|
||||||
sys.path.insert(0, PLUGIN_ROOT)
|
sys.path.insert(0, PLUGIN_ROOT)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from hookify.core.config_loader import load_rules
|
from core.config_loader import load_rules
|
||||||
from hookify.core.rule_engine import RuleEngine
|
from core.rule_engine import RuleEngine
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
# If imports fail, allow operation and log error
|
# If imports fail, allow operation and log error
|
||||||
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
||||||
|
|||||||
@@ -9,18 +9,14 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
|
|
||||||
# CRITICAL: Add plugin root to Python path for imports
|
# Add plugin root to Python path for imports
|
||||||
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
||||||
if PLUGIN_ROOT:
|
if PLUGIN_ROOT and PLUGIN_ROOT not in sys.path:
|
||||||
parent_dir = os.path.dirname(PLUGIN_ROOT)
|
|
||||||
if parent_dir not in sys.path:
|
|
||||||
sys.path.insert(0, parent_dir)
|
|
||||||
if PLUGIN_ROOT not in sys.path:
|
|
||||||
sys.path.insert(0, PLUGIN_ROOT)
|
sys.path.insert(0, PLUGIN_ROOT)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from hookify.core.config_loader import load_rules
|
from core.config_loader import load_rules
|
||||||
from hookify.core.rule_engine import RuleEngine
|
from core.rule_engine import RuleEngine
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
||||||
print(json.dumps(error_msg), file=sys.stdout)
|
print(json.dumps(error_msg), file=sys.stdout)
|
||||||
|
|||||||
@@ -9,18 +9,14 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
|
|
||||||
# CRITICAL: Add plugin root to Python path for imports
|
# Add plugin root to Python path for imports
|
||||||
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
PLUGIN_ROOT = os.environ.get('CLAUDE_PLUGIN_ROOT')
|
||||||
if PLUGIN_ROOT:
|
if PLUGIN_ROOT and PLUGIN_ROOT not in sys.path:
|
||||||
parent_dir = os.path.dirname(PLUGIN_ROOT)
|
|
||||||
if parent_dir not in sys.path:
|
|
||||||
sys.path.insert(0, parent_dir)
|
|
||||||
if PLUGIN_ROOT not in sys.path:
|
|
||||||
sys.path.insert(0, PLUGIN_ROOT)
|
sys.path.insert(0, PLUGIN_ROOT)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from hookify.core.config_loader import load_rules
|
from core.config_loader import load_rules
|
||||||
from hookify.core.rule_engine import RuleEngine
|
from core.rule_engine import RuleEngine
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
error_msg = {"systemMessage": f"Hookify import error: {e}"}
|
||||||
print(json.dumps(error_msg), file=sys.stdout)
|
print(json.dumps(error_msg), file=sys.stdout)
|
||||||
|
|||||||
33
plugins/jdtls-lsp/README.md
Normal file
33
plugins/jdtls-lsp/README.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# jdtls-lsp
|
||||||
|
|
||||||
|
Java language server (Eclipse JDT.LS) for Claude Code, providing code intelligence and refactoring.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.java`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Via Homebrew (macOS)
|
||||||
|
```bash
|
||||||
|
brew install jdtls
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via package manager (Linux)
|
||||||
|
```bash
|
||||||
|
# Arch Linux (AUR)
|
||||||
|
yay -S jdtls
|
||||||
|
|
||||||
|
# Other distros: manual installation required
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Installation
|
||||||
|
1. Download from [Eclipse JDT.LS releases](https://download.eclipse.org/jdtls/snapshots/)
|
||||||
|
2. Extract to a directory (e.g., `~/.local/share/jdtls`)
|
||||||
|
3. Create a wrapper script named `jdtls` in your PATH
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- Java 17 or later (JDK, not just JRE)
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [Eclipse JDT.LS GitHub](https://github.com/eclipse-jdtls/eclipse.jdt.ls)
|
||||||
|
- [VSCode Java Extension](https://github.com/redhat-developer/vscode-java) (uses JDT.LS)
|
||||||
16
plugins/kotlin-lsp/README.md
Normal file
16
plugins/kotlin-lsp/README.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
Kotlin language server for Claude Code, providing code intelligence, refactoring, and analysis.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.kt`
|
||||||
|
`.kts`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install the Kotlin LSP CLI.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew install JetBrains/utils/kotlin-lsp
|
||||||
|
```
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [kotlin LSP](https://github.com/Kotlin/kotlin-lsp)
|
||||||
32
plugins/lua-lsp/README.md
Normal file
32
plugins/lua-lsp/README.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# lua-lsp
|
||||||
|
|
||||||
|
Lua language server for Claude Code, providing code intelligence and diagnostics.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.lua`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Via Homebrew (macOS)
|
||||||
|
```bash
|
||||||
|
brew install lua-language-server
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via package manager (Linux)
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian (via snap)
|
||||||
|
sudo snap install lua-language-server --classic
|
||||||
|
|
||||||
|
# Arch Linux
|
||||||
|
sudo pacman -S lua-language-server
|
||||||
|
|
||||||
|
# Fedora
|
||||||
|
sudo dnf install lua-language-server
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Installation
|
||||||
|
Download pre-built binaries from the [releases page](https://github.com/LuaLS/lua-language-server/releases).
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [Lua Language Server GitHub](https://github.com/LuaLS/lua-language-server)
|
||||||
|
- [Documentation](https://luals.github.io/)
|
||||||
24
plugins/php-lsp/README.md
Normal file
24
plugins/php-lsp/README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# php-lsp
|
||||||
|
|
||||||
|
PHP language server (Intelephense) for Claude Code, providing code intelligence and diagnostics.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.php`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install Intelephense globally via npm:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g intelephense
|
||||||
|
```
|
||||||
|
|
||||||
|
Or with yarn:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn global add intelephense
|
||||||
|
```
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [Intelephense Website](https://intelephense.com/)
|
||||||
|
- [Intelephense on npm](https://www.npmjs.com/package/intelephense)
|
||||||
@@ -120,7 +120,7 @@ Use this workflow for structured, high-quality plugin development from concept t
|
|||||||
- YAML frontmatter + markdown body structure
|
- YAML frontmatter + markdown body structure
|
||||||
- Parsing techniques for bash scripts (sed, awk, grep patterns)
|
- Parsing techniques for bash scripts (sed, awk, grep patterns)
|
||||||
- Temporarily active hooks (flag files and quick-exit)
|
- Temporarily active hooks (flag files and quick-exit)
|
||||||
- Real-world examples from multi-agent-swarm and ralph-wiggum plugins
|
- Real-world examples from multi-agent-swarm and ralph-loop plugins
|
||||||
- Atomic file updates and validation
|
- Atomic file updates and validation
|
||||||
- Gitignore and lifecycle management
|
- Gitignore and lifecycle management
|
||||||
|
|
||||||
|
|||||||
@@ -449,7 +449,7 @@ Coordinate with auth-agent on shared types.
|
|||||||
- Sends notifications to coordinator if enabled
|
- Sends notifications to coordinator if enabled
|
||||||
- Allows quick activation/deactivation via `enabled: true/false`
|
- Allows quick activation/deactivation via `enabled: true/false`
|
||||||
|
|
||||||
### ralph-wiggum Plugin
|
### ralph-loop Plugin
|
||||||
|
|
||||||
**.claude/ralph-loop.local.md:**
|
**.claude/ralph-loop.local.md:**
|
||||||
```markdown
|
```markdown
|
||||||
@@ -512,7 +512,7 @@ fi
|
|||||||
For detailed implementation patterns:
|
For detailed implementation patterns:
|
||||||
|
|
||||||
- **`references/parsing-techniques.md`** - Complete guide to parsing YAML frontmatter and markdown bodies
|
- **`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-wiggum implementations
|
- **`references/real-world-examples.md`** - Deep dive into multi-agent-swarm and ralph-loop implementations
|
||||||
|
|
||||||
### Example Files
|
### Example Files
|
||||||
|
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ sed "s/^pr_number: .*/pr_number: $PR_NUM/" \
|
|||||||
mv temp.md ".claude/multi-agent-swarm.local.md"
|
mv temp.md ".claude/multi-agent-swarm.local.md"
|
||||||
```
|
```
|
||||||
|
|
||||||
## ralph-wiggum Plugin
|
## ralph-loop Plugin
|
||||||
|
|
||||||
### Settings File Structure
|
### Settings File Structure
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ echo "Ralph loop initialized: .claude/ralph-loop.local.md"
|
|||||||
|
|
||||||
## Pattern Comparison
|
## Pattern Comparison
|
||||||
|
|
||||||
| Feature | multi-agent-swarm | ralph-wiggum |
|
| Feature | multi-agent-swarm | ralph-loop |
|
||||||
|---------|-------------------|--------------|
|
|---------|-------------------|--------------|
|
||||||
| **File** | `.claude/multi-agent-swarm.local.md` | `.claude/ralph-loop.local.md` |
|
| **File** | `.claude/multi-agent-swarm.local.md` | `.claude/ralph-loop.local.md` |
|
||||||
| **Purpose** | Agent coordination state | Loop iteration state |
|
| **Purpose** | Agent coordination state | Loop iteration state |
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ Study the skills in this plugin as examples of best practices:
|
|||||||
|
|
||||||
**plugin-settings skill:**
|
**plugin-settings skill:**
|
||||||
- Specific triggers: "plugin settings", ".local.md files", "YAML frontmatter"
|
- Specific triggers: "plugin settings", ".local.md files", "YAML frontmatter"
|
||||||
- References show real implementations (multi-agent-swarm, ralph-wiggum)
|
- References show real implementations (multi-agent-swarm, ralph-loop)
|
||||||
- Working parsing scripts
|
- Working parsing scripts
|
||||||
|
|
||||||
Each demonstrates progressive disclosure and strong triggering.
|
Each demonstrates progressive disclosure and strong triggering.
|
||||||
|
|||||||
31
plugins/pyright-lsp/README.md
Normal file
31
plugins/pyright-lsp/README.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# pyright-lsp
|
||||||
|
|
||||||
|
Python language server (Pyright) for Claude Code, providing static type checking and code intelligence.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.py`, `.pyi`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install Pyright globally via npm:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g pyright
|
||||||
|
```
|
||||||
|
|
||||||
|
Or with pip:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install pyright
|
||||||
|
```
|
||||||
|
|
||||||
|
Or with pipx (recommended for CLI tools):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pipx install pyright
|
||||||
|
```
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [Pyright on npm](https://www.npmjs.com/package/pyright)
|
||||||
|
- [Pyright on PyPI](https://pypi.org/project/pyright/)
|
||||||
|
- [GitHub Repository](https://github.com/microsoft/pyright)
|
||||||
8
plugins/ralph-loop/.claude-plugin/plugin.json
Normal file
8
plugins/ralph-loop/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
# Ralph Wiggum Plugin
|
# Ralph Loop Plugin
|
||||||
|
|
||||||
Implementation of the Ralph Wiggum technique for iterative, self-referential AI development loops in Claude Code.
|
Implementation of the Ralph Wiggum technique for iterative, self-referential AI development loops in Claude Code.
|
||||||
|
|
||||||
## What is Ralph?
|
## What is Ralph Loop?
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
The technique is named after Ralph Wiggum from The Simpsons, embodying the philosophy of persistent iteration despite setbacks.
|
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.
|
||||||
|
|
||||||
### Core Concept
|
### Core Concept
|
||||||
|
|
||||||
18
plugins/ralph-loop/commands/cancel-ralph.md
Normal file
18
plugins/ralph-loop/commands/cancel-ralph.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
description: "Cancel active Ralph 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"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Cancel Ralph
|
||||||
|
|
||||||
|
To cancel the Ralph loop:
|
||||||
|
|
||||||
|
1. Check if `.claude/ralph-loop.local.md` exists using Bash: `test -f .claude/ralph-loop.local.md && echo "EXISTS" || echo "NOT_FOUND"`
|
||||||
|
|
||||||
|
2. **If NOT_FOUND**: Say "No active Ralph loop found."
|
||||||
|
|
||||||
|
3. **If EXISTS**:
|
||||||
|
- Read `.claude/ralph-loop.local.md` to get the current iteration number from the `iteration:` field
|
||||||
|
- Remove the file using Bash: `rm .claude/ralph-loop.local.md`
|
||||||
|
- Report: "Cancelled Ralph loop (was at iteration N)" where N is the iteration value
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
---
|
---
|
||||||
description: "Explain Ralph Wiggum technique and available commands"
|
description: "Explain Ralph Loop plugin and available commands"
|
||||||
---
|
---
|
||||||
|
|
||||||
# Ralph Wiggum Plugin Help
|
# Ralph Loop Plugin Help
|
||||||
|
|
||||||
Please explain the following to the user:
|
Please explain the following to the user:
|
||||||
|
|
||||||
## What is the Ralph Wiggum Technique?
|
## What is Ralph Loop?
|
||||||
|
|
||||||
The Ralph Wiggum technique is an iterative development methodology based on continuous AI loops, pioneered by Geoffrey Huntley.
|
Ralph Loop implements the Ralph Wiggum technique - an iterative development methodology based on continuous AI loops, pioneered by Geoffrey Huntley.
|
||||||
|
|
||||||
**Core concept:**
|
**Core concept:**
|
||||||
```bash
|
```bash
|
||||||
18
plugins/ralph-loop/commands/ralph-loop.md
Normal file
18
plugins/ralph-loop/commands/ralph-loop.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
description: "Start Ralph Loop in current session"
|
||||||
|
argument-hint: "PROMPT [--max-iterations N] [--completion-promise TEXT]"
|
||||||
|
allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/setup-ralph-loop.sh:*)"]
|
||||||
|
hide-from-slash-command-tool: "true"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Ralph Loop Command
|
||||||
|
|
||||||
|
Execute the setup script to initialize the Ralph loop:
|
||||||
|
|
||||||
|
```!
|
||||||
|
"${CLAUDE_PLUGIN_ROOT}/scripts/setup-ralph-loop.sh" $ARGUMENTS
|
||||||
|
```
|
||||||
|
|
||||||
|
Please work on the task. When you try to exit, the Ralph loop will feed the SAME PROMPT back to you for the next iteration. You'll see your previous work in files and git history, allowing you to iterate and improve.
|
||||||
|
|
||||||
|
CRITICAL RULE: If a completion promise is set, you may ONLY output it when the statement is completely and unequivocally TRUE. Do not output false promises to escape the loop, even if you think you're stuck or should exit for other reasons. The loop is designed to continue until genuine completion.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"description": "Ralph Wiggum plugin stop hook for self-referential loops",
|
"description": "Ralph Loop plugin stop hook for self-referential loops",
|
||||||
"hooks": {
|
"hooks": {
|
||||||
"Stop": [
|
"Stop": [
|
||||||
{
|
{
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Ralph Wiggum Stop Hook
|
# Ralph Loop Stop Hook
|
||||||
# Prevents session exit when a ralph-loop is active
|
# Prevents session exit when a ralph-loop is active
|
||||||
# Feeds Claude's output back as input to continue the loop
|
# Feeds Claude's output back as input to continue the loop
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ OPTIONS:
|
|||||||
-h, --help Show this help message
|
-h, --help Show this help message
|
||||||
|
|
||||||
DESCRIPTION:
|
DESCRIPTION:
|
||||||
Starts a Ralph Wiggum loop in your CURRENT session. The stop hook prevents
|
Starts a Ralph Loop in your CURRENT session. The stop hook prevents
|
||||||
exit and feeds your output back as input until completion or iteration limit.
|
exit and feeds your output back as input until completion or iteration limit.
|
||||||
|
|
||||||
To signal completion, you must output: <promise>YOUR_PHRASE</promise>
|
To signal completion, you must output: <promise>YOUR_PHRASE</promise>
|
||||||
@@ -174,3 +174,30 @@ if [[ -n "$PROMPT" ]]; then
|
|||||||
echo ""
|
echo ""
|
||||||
echo "$PROMPT"
|
echo "$PROMPT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Display completion promise requirements if set
|
||||||
|
if [[ "$COMPLETION_PROMISE" != "null" ]]; then
|
||||||
|
echo ""
|
||||||
|
echo "═══════════════════════════════════════════════════════════"
|
||||||
|
echo "CRITICAL - Ralph Loop Completion Promise"
|
||||||
|
echo "═══════════════════════════════════════════════════════════"
|
||||||
|
echo ""
|
||||||
|
echo "To complete this loop, output this EXACT text:"
|
||||||
|
echo " <promise>$COMPLETION_PROMISE</promise>"
|
||||||
|
echo ""
|
||||||
|
echo "STRICT REQUIREMENTS (DO NOT VIOLATE):"
|
||||||
|
echo " ✓ Use <promise> XML tags EXACTLY as shown above"
|
||||||
|
echo " ✓ The statement MUST be completely and unequivocally TRUE"
|
||||||
|
echo " ✓ Do NOT output false statements to exit the loop"
|
||||||
|
echo " ✓ Do NOT lie even if you think you should exit"
|
||||||
|
echo ""
|
||||||
|
echo "IMPORTANT - Do not circumvent the loop:"
|
||||||
|
echo " Even if you believe you're stuck, the task is impossible,"
|
||||||
|
echo " or you've been running too long - you MUST NOT output a"
|
||||||
|
echo " false promise statement. The loop is designed to continue"
|
||||||
|
echo " until the promise is GENUINELY TRUE. Trust the process."
|
||||||
|
echo ""
|
||||||
|
echo " If the loop should stop, the promise statement will become"
|
||||||
|
echo " true naturally. Do not force it by lying."
|
||||||
|
echo "═══════════════════════════════════════════════════════════"
|
||||||
|
fi
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
description: "Cancel active Ralph Wiggum loop"
|
|
||||||
allowed-tools: ["Bash"]
|
|
||||||
hide-from-slash-command-tool: "true"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Cancel Ralph
|
|
||||||
|
|
||||||
```!
|
|
||||||
if [[ -f .claude/ralph-loop.local.md ]]; then
|
|
||||||
ITERATION=$(grep '^iteration:' .claude/ralph-loop.local.md | sed 's/iteration: *//')
|
|
||||||
echo "FOUND_LOOP=true"
|
|
||||||
echo "ITERATION=$ITERATION"
|
|
||||||
else
|
|
||||||
echo "FOUND_LOOP=false"
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
Check the output above:
|
|
||||||
|
|
||||||
1. **If FOUND_LOOP=false**:
|
|
||||||
- Say "No active Ralph loop found."
|
|
||||||
|
|
||||||
2. **If FOUND_LOOP=true**:
|
|
||||||
- Use Bash: `rm .claude/ralph-loop.local.md`
|
|
||||||
- Report: "Cancelled Ralph loop (was at iteration N)" where N is the ITERATION value from above.
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
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)"]
|
|
||||||
hide-from-slash-command-tool: "true"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Ralph Loop Command
|
|
||||||
|
|
||||||
Execute the setup script to initialize the Ralph loop:
|
|
||||||
|
|
||||||
```!
|
|
||||||
"${CLAUDE_PLUGIN_ROOT}/scripts/setup-ralph-loop.sh" $ARGUMENTS
|
|
||||||
|
|
||||||
# Extract and display completion promise if set
|
|
||||||
if [ -f .claude/ralph-loop.local.md ]; then
|
|
||||||
PROMISE=$(grep '^completion_promise:' .claude/ralph-loop.local.md | sed 's/completion_promise: *//' | sed 's/^"\(.*\)"$/\1/')
|
|
||||||
if [ -n "$PROMISE" ] && [ "$PROMISE" != "null" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "═══════════════════════════════════════════════════════════"
|
|
||||||
echo "CRITICAL - Ralph Loop Completion Promise"
|
|
||||||
echo "═══════════════════════════════════════════════════════════"
|
|
||||||
echo ""
|
|
||||||
echo "To complete this loop, output this EXACT text:"
|
|
||||||
echo " <promise>$PROMISE</promise>"
|
|
||||||
echo ""
|
|
||||||
echo "STRICT REQUIREMENTS (DO NOT VIOLATE):"
|
|
||||||
echo " ✓ Use <promise> XML tags EXACTLY as shown above"
|
|
||||||
echo " ✓ The statement MUST be completely and unequivocally TRUE"
|
|
||||||
echo " ✓ Do NOT output false statements to exit the loop"
|
|
||||||
echo " ✓ Do NOT lie even if you think you should exit"
|
|
||||||
echo ""
|
|
||||||
echo "IMPORTANT - Do not circumvent the loop:"
|
|
||||||
echo " Even if you believe you're stuck, the task is impossible,"
|
|
||||||
echo " or you've been running too long - you MUST NOT output a"
|
|
||||||
echo " false promise statement. The loop is designed to continue"
|
|
||||||
echo " until the promise is GENUINELY TRUE. Trust the process."
|
|
||||||
echo ""
|
|
||||||
echo " If the loop should stop, the promise statement will become"
|
|
||||||
echo " true naturally. Do not force it by lying."
|
|
||||||
echo "═══════════════════════════════════════════════════════════"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
Please work on the task. When you try to exit, the Ralph loop will feed the SAME PROMPT back to you for the next iteration. You'll see your previous work in files and git history, allowing you to iterate and improve.
|
|
||||||
|
|
||||||
CRITICAL RULE: If a completion promise is set, you may ONLY output it when the statement is completely and unequivocally TRUE. Do not output false promises to escape the loop, even if you think you're stuck or should exit for other reasons. The loop is designed to continue until genuine completion.
|
|
||||||
34
plugins/rust-analyzer-lsp/README.md
Normal file
34
plugins/rust-analyzer-lsp/README.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# rust-analyzer-lsp
|
||||||
|
|
||||||
|
Rust language server for Claude Code, providing code intelligence and analysis.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.rs`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Via rustup (recommended)
|
||||||
|
```bash
|
||||||
|
rustup component add rust-analyzer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via Homebrew (macOS)
|
||||||
|
```bash
|
||||||
|
brew install rust-analyzer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via package manager (Linux)
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt install rust-analyzer
|
||||||
|
|
||||||
|
# Arch Linux
|
||||||
|
sudo pacman -S rust-analyzer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual download
|
||||||
|
Download pre-built binaries from the [releases page](https://github.com/rust-lang/rust-analyzer/releases).
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [rust-analyzer Website](https://rust-analyzer.github.io/)
|
||||||
|
- [GitHub Repository](https://github.com/rust-lang/rust-analyzer)
|
||||||
25
plugins/swift-lsp/README.md
Normal file
25
plugins/swift-lsp/README.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# swift-lsp
|
||||||
|
|
||||||
|
Swift language server (SourceKit-LSP) for Claude Code, providing code intelligence for Swift projects.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.swift`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
SourceKit-LSP is included with the Swift toolchain.
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
Install Xcode from the App Store, or install Swift via:
|
||||||
|
```bash
|
||||||
|
brew install swift
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
Download and install Swift from [swift.org](https://www.swift.org/download/).
|
||||||
|
|
||||||
|
After installation, `sourcekit-lsp` should be available in your PATH.
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [SourceKit-LSP GitHub](https://github.com/apple/sourcekit-lsp)
|
||||||
|
- [Swift.org](https://www.swift.org/)
|
||||||
24
plugins/typescript-lsp/README.md
Normal file
24
plugins/typescript-lsp/README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# typescript-lsp
|
||||||
|
|
||||||
|
TypeScript/JavaScript language server for Claude Code, providing code intelligence features like go-to-definition, find references, and error checking.
|
||||||
|
|
||||||
|
## Supported Extensions
|
||||||
|
`.ts`, `.tsx`, `.js`, `.jsx`, `.mts`, `.cts`, `.mjs`, `.cjs`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install the TypeScript language server globally via npm:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g typescript-language-server typescript
|
||||||
|
```
|
||||||
|
|
||||||
|
Or with yarn:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn global add typescript-language-server typescript
|
||||||
|
```
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
- [typescript-language-server on npm](https://www.npmjs.com/package/typescript-language-server)
|
||||||
|
- [GitHub Repository](https://github.com/typescript-language-server/typescript-language-server)
|
||||||
Reference in New Issue
Block a user