{"id":49083615,"url":"https://github.com/cukas/claudes-ai-buddies","last_synced_at":"2026-04-20T14:08:56.288Z","repository":{"id":343431366,"uuid":"1177666550","full_name":"cukas/claudes-ai-buddies","owner":"cukas","description":"Three AIs, one terminal — call Codex and Gemini as peer reviewers, brainstorm partners, or second opinions. Direct CLI, no MCP","archived":false,"fork":false,"pushed_at":"2026-03-26T08:41:21.000Z","size":442,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T02:57:47.316Z","etag":null,"topics":["brainstorming","claude-code","claude-code-plugin","code-review","codex","codex-cli","gemini","gemini-cli","openai","peer-ai","review-tools"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cukas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-10T08:50:27.000Z","updated_at":"2026-03-26T08:41:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cukas/claudes-ai-buddies","commit_stats":null,"previous_names":["cukas/claudes-ai-buddies"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/cukas/claudes-ai-buddies","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cukas%2Fclaudes-ai-buddies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cukas%2Fclaudes-ai-buddies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cukas%2Fclaudes-ai-buddies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cukas%2Fclaudes-ai-buddies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cukas","download_url":"https://codeload.github.com/cukas/claudes-ai-buddies/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cukas%2Fclaudes-ai-buddies/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32050463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brainstorming","claude-code","claude-code-plugin","code-review","codex","codex-cli","gemini","gemini-cli","openai","peer-ai","review-tools"],"created_at":"2026-04-20T14:08:50.852Z","updated_at":"2026-04-20T14:08:56.282Z","avatar_url":"https://github.com/cukas.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/banner.svg\" alt=\"Claude's AI Buddies\" width=\"100%\"/\u003e\n\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Tests](https://img.shields.io/badge/tests-270%2B-brightgreen.svg)](#-testing)\n[![Claude Code Plugin](https://img.shields.io/badge/Claude_Code-plugin-blueviolet.svg)](https://github.com/cukas/claude-plugins)\n\n*Any AI can join. They compete. They collaborate. They can just talk.*\n\n\u003c/div\u003e\n\n---\n\n## Quick Start\n\n```bash\n# 1. Install the engines you want (one or more)\nnpm install -g @openai/codex        # OpenAI Codex\nnpm install -g @google/gemini-cli   # Google Gemini\nbrew install opencode               # OpenCode (MiniMax, Anthropic, Google, etc.)\n\n# 2. Authenticate\ncodex auth login                    # uses your OpenAI account\ngemini auth login                   # uses your Google account\nopencode providers login            # optional — pick a provider (works without for free model)\n\n# 3. Add the marketplace \u0026 install\nclaude plugin marketplace add cukas/claudes-ai-buddies\nclaude plugin install claudes-ai-buddies@cukas\n\n# Done — start a new Claude Code session\n```\n\n\u003e Works with any combination of Codex, Gemini, OpenCode, or any custom AI CLI you register.\n\n---\n\n## All Skills\n\n| Command | What it does |\n|---------|-------------|\n| `/campfire \"topic\"` | Open conversation — all buddies think together, no competition |\n| `/brainstorm \"task\"` | Confidence bid — buddies assess the task, you pick who builds it |\n| `/forge \"task\" --fitness \"cmd\"` | Competitive build with automated scoring |\n| `/tribunal \"question\"` | Evidence-based debate — 6 modes |\n| `/leaderboard` | Show ELO ratings from forge competitions |\n| `/codex \"prompt\"` | Talk to Codex — raw voice, conversational |\n| `/gemini \"prompt\"` | Talk to Gemini — raw voice, conversational |\n| `/opencode \"prompt\"` | Talk to OpenCode — raw voice, conversational |\n| `/codex-review` | Code review via Codex |\n| `/gemini-review` | Code review via Gemini |\n| `/opencode-review` | Code review via OpenCode |\n| `/add-buddy` | Register any CLI as a new buddy |\n\n---\n\n## Campfire — Open Multi-AI Conversation\n\n```\n/campfire \"What's the best way to handle auth in microservices?\"\n```\n\nAll buddies respond to a topic together. No competition, no ranking — just thinking together. Each buddy speaks in their own voice:\n\n```\n🔵 Codex:\n\u003e The service mesh approach with mTLS is cleanest...\n\n🟣 Gemini:\n\u003e I'd push back on that — JWT with short-lived tokens scales better...\n\n🟢 OpenCode:\n\u003e What if you combine both? mTLS between services, JWT for user-facing...\n\n🟠 Claude:\n\u003e Three different angles, and OpenCode's hybrid is interesting...\n```\n\nAliases: `/think`, `/talk`\n\n---\n\n## Brainstorm — Confidence Bid\n\n\u003cimg src=\"assets/demo.gif\" alt=\"Brainstorm demo — confidence bid in action\" width=\"100%\"/\u003e\n\n```\n/brainstorm \"Fix the race condition in the WebSocket reconnection handler\"\n```\n\nEach buddy assesses the task, rates their confidence, and proposes an approach. Claude calibrates the scores and recommends who should take it.\n\n- **Disagreements are the signal** — if AIs disagree, that's where the insight is\n- **Claude calibrates** — adjusts inflated/deflated scores based on approach quality\n- **Context-aware** — Claude passes relevant conversation context when it helps\n\n---\n\n## Forge — Competitive Build\n\n```\n/forge \"Add input validation to math utils\" --fitness \"npm test\"\n```\n\nBuddies independently implement the same task in isolated git worktrees. A staged pipeline scores them objectively — the best code wins.\n\n- **Staged pipeline** — starter runs first; challengers only if needed; synthesis on close calls\n- **Composite scoring** — diff size, lint, style, test pass, duration = 0-100 score\n- **ELO tracking** — persistent ratings per task class\n- **Speculative tests** — omit `--fitness` and engines propose test suites\n- **`--async`** — run in background, continue your conversation\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow Forge works under the hood\u003c/strong\u003e\u003c/summary\u003e\n\n1. **Context** — detects languages, conventions, and candidate files\n2. **Stage 1: Starter** — one engine runs first. Auto-accepted if score \u003e= 88 with clean lint\n3. **Stage 2: Challengers** — remaining engines run in parallel if the starter didn't clear the bar\n4. **Stage 3: Synthesis** — on close calls (spread \u003c 8 pts), losers critique, winner refines\n5. **Scoreboard** — composite scores (diff 30%, lint 15%, style 15%, files 10%, duration 5%, tests 25%)\n6. **ELO** — winner gains rating vs each loser, per auto-detected task class\n7. **Converge** — you approve the winning diff before it touches your working tree\n\n\u003c/details\u003e\n\n---\n\n## Tribunal — Evidence-Based Debate\n\n```\n/tribunal \"Should we refactor the auth middleware to use async/await?\"\n```\n\nTwo buddies debate with **evidence citations** (file:line). Claude judges on evidence quality, not consensus.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e6 debate modes\u003c/strong\u003e\u003c/summary\u003e\n\n| Mode | AIs do | Best for |\n|------|--------|----------|\n| **adversarial** | FOR vs AGAINST | Binary decisions |\n| **socratic** | Probe assumptions | Early exploration |\n| **steelman** | Argue other side's best case | Avoiding bias |\n| **red-team** | Attack, no defense | Poking holes |\n| **synthesis** | Propose, then hybridize | Finding a third option |\n| **postmortem** | Investigate from angles | Bug investigation |\n\n\u003c/details\u003e\n\n---\n\n## Direct Chat \u0026 Code Reviews\n\nTalk directly to any buddy. With **conversational mode** enabled, they remember across calls:\n\n```\n/codex \"What's the best way to implement a rate limiter in Go?\"\n/gemini \"Debug this: TypeError: Cannot read property 'map' of undefined\"\n/opencode \"Review this architecture for scaling issues\"\n```\n\nCode reviews with native review protocols:\n```\n/codex-review                                  # review uncommitted changes\n/gemini-review branch:main \"focus on security\" # review branch diff with focus\n/opencode-review commit:abc1234                # review specific commit\n```\n\n---\n\n## Companion Scripts (v4)\n\nEach buddy has a companion script that connects via the engine's native protocol for richer integration:\n\n| Buddy | Protocol | What it enables |\n|-------|----------|-----------------|\n| 🔵 Codex | `codex app-server` JSONRPC over stdio | Thread resume, native review, structured output (fileChanges, commands) |\n| 🟣 Gemini | `--output-format json` | Session resume, token stats |\n| 🟢 OpenCode | `--format json` + `--session` | Session resume, token/cost tracking |\n\nAll companions fall back gracefully to the legacy CLI if the protocol isn't available.\n\n---\n\n## Configuration\n\nOptional — works out of the box. Config at `~/.claudes-ai-buddies/config.json`:\n\n| Key | Default | Description |\n|-----|---------|-------------|\n| `conversational` | `false` | Buddies remember conversations across calls |\n| `codex_conversational` | (global) | Per-buddy override |\n| `timeout` | `0` (none) | Max seconds per call (0 = no timeout) |\n| `codex_model` | *CLI default* | Codex model override |\n| `gemini_model` | *CLI default* | Gemini model override |\n| `opencode_model` | *CLI default* | OpenCode model (format: `provider/model`) |\n| `sandbox` | `full-auto` | `full-auto` or `suggest` |\n| `debug` | `false` | Enable debug logging |\n| `elo_enabled` | `true` | Track ELO ratings |\n| `tribunal_rounds` | `2` | Tribunal debate rounds |\n\n---\n\n## Dynamic Buddy Registry\n\nAny CLI-based AI tool can become a buddy:\n\n```\n/add-buddy --id aider --binary aider --display \"Aider\" --modes exec\n```\n\nRegistered buddies automatically participate in `/forge`, `/brainstorm`, `/tribunal`, and `/campfire`.\n\n---\n\n## How It Works\n\n```\n┌──────────┐     ┌──────────────┐     ┌─────────────┐     ┌──────────────┐\n│   User   │────\u003e│  Claude Code  │────\u003e│  Registry    │────\u003e│  Any AI CLI   │\n│          │     │  (orchestrator│     │  (buddy JSON │     │  (codex, gem  │\n│          │\u003c────│   + judge)    │\u003c────│   + companion│\u003c────│   aider, ...) │\n└──────────┘     └──────────────┘     └─────────────┘     └──────────────┘\n```\n\n- **Companion scripts** — native protocol integration (JSONRPC, JSON output, session resume)\n- **No MCP servers** — direct CLI subprocess calls with graceful fallback\n- **No API keys in transit** — each engine uses its own auth\n- **No timeouts by default** — buddies respond when ready, user can interrupt\n- **Context injection** — Claude passes conversation context when it helps\n- **Conversational mode** — buddies remember across calls via session/thread resume\n\n---\n\n## Testing\n\n```bash\nbash tests/run-tests.sh\n```\n\n```\n=== Results: 270/270 passed, 0 failed ===\n```\n\n---\n\n## Part of the cukas Plugin Ecosystem\n\n| Plugin | Description |\n|--------|-------------|\n| [**Remembrall**](https://github.com/cukas/remembrall) | Never lose work to context limits |\n| [**Patrol**](https://github.com/cukas/patrol) | ESLint for Claude Code |\n| [**Evil Twin**](https://github.com/cukas/evil-twin) | Adversarial self-challenge + blind verification |\n| [**Hello Claude**](https://github.com/cukas/hello-claude) | Plugin starter template |\n| **AI Buddies** | You are here |\n\nAll available via the [claude-plugins](https://github.com/cukas/claude-plugins) monorepo.\n\n---\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcukas%2Fclaudes-ai-buddies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcukas%2Fclaudes-ai-buddies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcukas%2Fclaudes-ai-buddies/lists"}