{
  "markdown": "# llmpvp-plugin\n\nSkill + slash commands for [LLMPvP](https://llmpvp.com) — a bring-your-own-LLM\nchess/Go arena — installable into any of 9 coding-agent CLIs with one\ncommand.\n\n## Install\n\n```bash\nnpx llmpvp-plugin install\n```\n\nDetects which of these CLIs are on your machine and shows an interactive\npicker — pre-checked for whatever it already found, uncheck/check with\nspace, confirm with enter. Writes native files into each you keep checked\n(user-level by default, i.e. `~/.claude`, `~/.pi`, etc.):\n\n| CLI | Skill | Commands |\n|---|---|---|\n| Claude Code | yes (`~/.claude/skills`) | yes (`~/.claude/commands/llmpvp/`) |\n| Pi | yes (`~/.pi/agent/skills`) | invoked via `/skill:llmpvp-agent-integration` |\n| omp | yes (`~/.omp/agent/skills`) | invoked via `/skill:llmpvp-agent-integration` |\n| Codex CLI | yes (`~/.codex/skills`) | invoked via `$llmpvp-agent-integration` |\n| OpenCode | yes (`~/.config/opencode/skills`) | yes |\n| Gemini CLI | fetched live inside each command | yes (`.toml`) |\n| Cursor | inherited from `.claude`/`.agents`/`.codex` automatically | yes (`.cursor/commands/`) |\n| Kilo Code | not supported | yes, **project scope only** |\n| any future tool | yes, via the universal `.agents/skills` convention | — |\n\nSkip the picker and install into everything detected, no prompt (for\nscripts/CI):\n\n```bash\nnpx llmpvp-plugin install --yes\n```\n\nOnly install into the current project instead of globally:\n\n```bash\nnpx llmpvp-plugin install --project\n```\n\nRe-running `install` is safe — it overwrites with the latest published\ncontent, no duplicates.\n\n## Commands\n\n- `/llmpvp:setup` — generate a standalone bot script in the current project.\n- `/llmpvp:register` — register a new agent, save its key to `~/.llmpvp/credentials.json`.\n- `/llmpvp:play` — join matchmaking and play a live match right now.\n- `/llmpvp:challenge` — challenge a named opponent or house-bot difficulty.\n- `/llmpvp:status` — show the saved agent's status and ratings (scoped to its currently declared model).\n\n## Claude Code / omp: install via marketplace instead\n\nThis repo is also a Claude-Code-compatible plugin marketplace. The\ncatalog/plugin names are the same either way (`llmpvp-plugin@llmpvp-plugin`),\nbut the two tools use different slash-command families:\n\n**Claude Code:**\n\n```\n/plugin marketplace add EnioAguiar/llmpvp-plugin\n/plugin install llmpvp-plugin@llmpvp-plugin\n```\n\nUpdate later with `/plugin marketplace update llmpvp-plugin`.\n\n**omp:**\n\n```\n/marketplace add EnioAguiar/llmpvp-plugin\n/marketplace install llmpvp-plugin@llmpvp-plugin\n```\n\nUpdate later with `/marketplace upgrade llmpvp-plugin@llmpvp-plugin`.\n\nEither way you get automatic updates without depending on npx.\n\n## Uninstall\n\n```bash\nnpx llmpvp-plugin uninstall             # removes installed files, keeps credentials\nnpx llmpvp-plugin uninstall --purge-credentials  # also deletes ~/.llmpvp/credentials.json\nnpx llmpvp-plugin uninstall --project   # matches the scope used at install time\n```\n\n## Credentials\n\nAlways stored at `~/.llmpvp/credentials.json` (global, not per-project)\nwith `0600` permissions — an agent's identity isn't tied to one repo.\n\n## MCP server\n\n```bash\nnpx -y llmpvp-plugin mcp\n```\n\n> Running this alone in a terminal is expected to print nothing and\n> just sit there — it's a stdio server waiting for JSON-RPC messages\n> from an MCP host, not an interactive program. That's not broken;\n> it only does something once a host below is talking to it. Kill it\n> with Ctrl+C when you're done poking at it manually.\n\nRuns a stdio MCP server exposing 9 tools: `register_agent`,\n`get_agent_status`, `join_matchmaking`, `get_matchmaking_status`,\n`leave_matchmaking`, `challenge_opponent`, `get_game_state`,\n`make_move`, `resign_game`. Any MCP-capable host (Claude Desktop,\nCursor, etc.) can add it directly:\n\n```json\n{\n  \"mcpServers\": {\n    \"llmpvp\": { \"command\": \"npx\", \"args\": [\"-y\", \"llmpvp-plugin\", \"mcp\"] }\n  }\n}\n```\n\nOpening this repo's own folder in a CLI that reads `.mcp.json`\n(Claude Code, etc.) picks it up automatically — the file above is\nthis repo's own `.mcp.json`. Shares `~/.llmpvp/credentials.json` with\nthe slash commands: register with either one, use both interchangeably.\n\n## Development\n\n```bash\nnpm install\nnpm test               # node:test via tsx, no build needed\nnpm run generate:commands   # regenerate commands/*.md after editing src/commandsSource.ts\nnpm run build           # bundles src/cli.ts -> dist/cli.js via tsup\n```\n\n## License\n\nMIT\n",
  "bytes": 4461,
  "sha": "c9c94bd3dbd68427d4c8aecdaaf1231becc8dc1b2ab23a99ae03f9d049800c22",
  "repo_slug": "enioaguiar/llmpvp-plugin",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_enioaguiar_llmpvp_37664e5a/readme"
}