{"schema":"setupbay/search-index@1","generated_at":"2026-10-19T22:50:27.270Z","site":"https://setupbay.com","agents":[{"id":"claude-code","name":"Claude Code","instructions":"CLAUDE.md (imports AGENTS.md with @AGENTS.md)","skills_dir":".claude/skills","mcp":{"native":true,"path":".mcp.json","format":null,"note":"Project-scoped MCP servers live in .mcp.json. Claude Code asks you to approve them the first time."},"docs":"https://docs.claude.com/en/docs/claude-code/overview"},{"id":"codex","name":"Codex CLI","instructions":"AGENTS.md","skills_dir":".agents/skills","mcp":{"native":false,"path":null,"format":null,"note":"Codex reads MCP servers from ~/.codex/config.toml (TOML, not JSON). Add each server with `codex mcp add` or copy the URL into an [mcp_servers.<name>] table."},"docs":"https://developers.openai.com/codex"},{"id":"cursor","name":"Cursor","instructions":"AGENTS.md + .cursor/rules/*.mdc","skills_dir":".agents/skills","mcp":{"native":true,"path":".cursor/mcp.json","format":null,"note":"Enable the server in Cursor Settings → MCP after installing."},"docs":"https://cursor.com/docs"},{"id":"gemini-cli","name":"Gemini CLI","instructions":"GEMINI.md (imports AGENTS.md with @./AGENTS.md)","skills_dir":".agents/skills","mcp":{"native":false,"path":null,"format":null,"note":"Gemini CLI reads MCP servers from the mcpServers block of .gemini/settings.json. Merge the servers in by hand, and use httpUrl instead of url for HTTP servers. Since 18 June 2026 Gemini CLI serves only Gemini Code Assist Standard/Enterprise licences and paid API keys; personal accounts use Antigravity CLI."},"docs":"https://github.com/google-gemini/gemini-cli"},{"id":"antigravity-cli","name":"Antigravity CLI","instructions":"AGENTS.md (read natively; GEMINI.md is also read)","skills_dir":".agents/skills","mcp":{"native":true,"path":".agents/mcp_config.json","format":"antigravity","note":"Antigravity CLI reads workspace MCP servers from .agents/mcp_config.json. Setupbay generates that file from mcp.json: remote servers use serverUrl (url and httpUrl are not supported). Check the servers with /mcp. Never commit real tokens: version 1.4.0 (16 October 2026) fixed ${VAR} expansion in headers for plugin MCP servers, but the MCP docs do not cover workspace files, so keep tokens in the global ~/.gemini/config/mcp_config.json."},"docs":"https://antigravity.google/docs/cli/install/"},{"id":"copilot","name":"GitHub Copilot","instructions":"AGENTS.md","skills_dir":".agents/skills","mcp":{"native":false,"path":null,"format":null,"note":"In VS Code, MCP servers go in .vscode/mcp.json under a \"servers\" key (not \"mcpServers\"). Copilot CLI uses ~/.copilot/mcp-config.json."},"docs":"https://docs.github.com/en/copilot"}],"categories":{"web-app":"Web apps","gamedev":"Game dev","security":"Security","bots":"Bots","browser-extension":"Browser extensions","data":"Data","workflow":"Workflow","ai-agents":"AI agents"},"loadouts":[{"id":"claude-code-hooks-guardrails","title":"Claude Code hooks guard rails","summary":"Fail-closed PreToolUse, post-edit and Stop hooks that block force-pushes, .env reads and wild deletes, check each edit and run tests before done.","description":"Rules in CLAUDE.md are advice; hooks are enforcement. This loadout installs three small bash + jq hooks\nthat practitioners converged on in autumn 2026: a PreToolUse guard that denies the handful of commands\nthat cause real damage (with a reason the agent can act on), a fast per-file check after every edit, and\na Stop gate that runs the tests once and refuses to let the agent finish on red. It uses the hook\nsemantics that matter: only exit 2 or a deny decision blocks, `onFailure: \"block\"` so a broken hook fails\nclosed, and `stop_hook_active` so the Stop gate can never loop. A self-test proves every block works.","highlights":["Bash guard denies force-push, reset --hard, --no-verify, .env access, deletes outside the project and DROP/TRUNCATE","Post-edit check on just the changed file (bash -n, jq, ruff, eslint) so errors surface immediately","Stop gate runs the test command once, skips clean trees and respects stop_hook_active","settings.json snippet with onFailure block, exec-form args and Read deny rules for .env*","33-case self-test, plus a reference on what permissions and hooks really enforce"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","security"],"stacks":["bash","jq"],"featured":true,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["bash","jq","git"],"env":[],"mcp":[]},"credits":[{"title":"@AlexRusin: two-tier hooks and stop_hook_active","url":"https://x.com/AlexRusin/status/2103535255357391289"},{"title":"@paulhq: only exit 2 blocks; test a hook by trying the forbidden thing","url":"https://x.com/paulhq/status/2100933039945912672"},{"title":"@coldboothq: Read deny rules are not a sandbox","url":"https://x.com/coldboothq/status/2106519666885619942"},{"title":"Claude Code hooks reference","url":"https://code.claude.com/docs/en/hooks","note":"exit codes, onFailure, Stop input"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"How to behave when a hook blocks you, and the hard limits behind the hooks.","skill":null,"agent":null,"bytes":1757,"lines":28,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":383,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":384,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/guard-rails.mdc","role":"rules","description":"Always-on Cursor rule with the same hard limits (Cursor has no shell hooks here).","skill":null,"agent":null,"bytes":536,"lines":10,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/guard-rails.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/install-guard-hooks/SKILL.md","role":"skill","description":"Installs, tests and extends the three guard hooks and the permission rules.","skill":"install-guard-hooks","agent":null,"bytes":2912,"lines":46,"install_to":{"claude-code":".claude/skills/install-guard-hooks/SKILL.md","codex":".agents/skills/install-guard-hooks/SKILL.md","cursor":".agents/skills/install-guard-hooks/SKILL.md","gemini-cli":".agents/skills/install-guard-hooks/SKILL.md","antigravity-cli":".agents/skills/install-guard-hooks/SKILL.md","copilot":".agents/skills/install-guard-hooks/SKILL.md"}},{"path":"skills/install-guard-hooks/scripts/guard-bash.sh","role":"reference","description":"PreToolUse Bash guard that prints a deny decision with a reason.","skill":"install-guard-hooks","agent":null,"bytes":3703,"lines":76,"install_to":{"claude-code":".claude/skills/install-guard-hooks/scripts/guard-bash.sh","codex":".agents/skills/install-guard-hooks/scripts/guard-bash.sh","cursor":".agents/skills/install-guard-hooks/scripts/guard-bash.sh","gemini-cli":".agents/skills/install-guard-hooks/scripts/guard-bash.sh","antigravity-cli":".agents/skills/install-guard-hooks/scripts/guard-bash.sh","copilot":".agents/skills/install-guard-hooks/scripts/guard-bash.sh"}},{"path":"skills/install-guard-hooks/scripts/post-edit-check.sh","role":"reference","description":"PostToolUse fast check of the edited file.","skill":"install-guard-hooks","agent":null,"bytes":1135,"lines":27,"install_to":{"claude-code":".claude/skills/install-guard-hooks/scripts/post-edit-check.sh","codex":".agents/skills/install-guard-hooks/scripts/post-edit-check.sh","cursor":".agents/skills/install-guard-hooks/scripts/post-edit-check.sh","gemini-cli":".agents/skills/install-guard-hooks/scripts/post-edit-check.sh","antigravity-cli":".agents/skills/install-guard-hooks/scripts/post-edit-check.sh","copilot":".agents/skills/install-guard-hooks/scripts/post-edit-check.sh"}},{"path":"skills/install-guard-hooks/scripts/stop-gate.sh","role":"reference","description":"Stop hook that runs the tests once and respects stop_hook_active.","skill":"install-guard-hooks","agent":null,"bytes":1381,"lines":28,"install_to":{"claude-code":".claude/skills/install-guard-hooks/scripts/stop-gate.sh","codex":".agents/skills/install-guard-hooks/scripts/stop-gate.sh","cursor":".agents/skills/install-guard-hooks/scripts/stop-gate.sh","gemini-cli":".agents/skills/install-guard-hooks/scripts/stop-gate.sh","antigravity-cli":".agents/skills/install-guard-hooks/scripts/stop-gate.sh","copilot":".agents/skills/install-guard-hooks/scripts/stop-gate.sh"}},{"path":"skills/install-guard-hooks/scripts/selftest.sh","role":"reference","description":"Feeds sample hook input to each script and checks every decision.","skill":"install-guard-hooks","agent":null,"bytes":3531,"lines":62,"install_to":{"claude-code":".claude/skills/install-guard-hooks/scripts/selftest.sh","codex":".agents/skills/install-guard-hooks/scripts/selftest.sh","cursor":".agents/skills/install-guard-hooks/scripts/selftest.sh","gemini-cli":".agents/skills/install-guard-hooks/scripts/selftest.sh","antigravity-cli":".agents/skills/install-guard-hooks/scripts/selftest.sh","copilot":".agents/skills/install-guard-hooks/scripts/selftest.sh"}},{"path":"skills/install-guard-hooks/references/settings.example.json","role":"reference","description":"Hooks and permission rules to merge into .claude/settings.json.","skill":"install-guard-hooks","agent":null,"bytes":1147,"lines":54,"install_to":{"claude-code":".claude/skills/install-guard-hooks/references/settings.example.json","codex":".agents/skills/install-guard-hooks/references/settings.example.json","cursor":".agents/skills/install-guard-hooks/references/settings.example.json","gemini-cli":".agents/skills/install-guard-hooks/references/settings.example.json","antigravity-cli":".agents/skills/install-guard-hooks/references/settings.example.json","copilot":".agents/skills/install-guard-hooks/references/settings.example.json"}},{"path":"skills/install-guard-hooks/references/permissions.md","role":"reference","description":"What permissions and hooks really enforce, with version notes.","skill":"install-guard-hooks","agent":null,"bytes":2791,"lines":42,"install_to":{"claude-code":".claude/skills/install-guard-hooks/references/permissions.md","codex":".agents/skills/install-guard-hooks/references/permissions.md","cursor":".agents/skills/install-guard-hooks/references/permissions.md","gemini-cli":".agents/skills/install-guard-hooks/references/permissions.md","antigravity-cli":".agents/skills/install-guard-hooks/references/permissions.md","copilot":".agents/skills/install-guard-hooks/references/permissions.md"}}]},{"id":"discord-bot-ts","title":"Discord bot (TypeScript)","summary":"discord.js v14 rules and an add-a-slash-command skill for building a Discord bot that registers commands properly and never leaks its token.","description":"Discord bots are a classic first agent project and a classic way to leak a token to GitHub.\nThis loadout sets up a clean discord.js v14 structure (one file per slash command, a loader, a deploy\nscript), teaches the agent the three-second interaction rule and the intents model, and gives it a\nskill for adding new commands end to end.","highlights":["One-file-per-command structure with a separate command deploy script","The three-second rule: defer, then edit the reply","Minimal intents; no privileged Message Content intent unless you really need it","Skill that adds, registers and documents a new slash command"],"version":"1.1.0","license":"MIT","author":"Setupbay","categories":["bots"],"stacks":["discord","nodejs","typescript"],"featured":true,"deprecated":false,"last_checked":"2026-10-16","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["node"],"env":["DISCORD_TOKEN","DISCORD_CLIENT_ID","DISCORD_GUILD_ID"],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Discord bot project rules.","skill":null,"agent":null,"bytes":3625,"lines":63,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":362,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":363,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/discord-commands.mdc","role":"rules","description":"Rule for files in src/commands/.","skill":null,"agent":null,"bytes":1144,"lines":28,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/discord-commands.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/add-slash-command/SKILL.md","role":"skill","description":"Adds and registers a new slash command.","skill":"add-slash-command","agent":null,"bytes":1650,"lines":24,"install_to":{"claude-code":".claude/skills/add-slash-command/SKILL.md","codex":".agents/skills/add-slash-command/SKILL.md","cursor":".agents/skills/add-slash-command/SKILL.md","gemini-cli":".agents/skills/add-slash-command/SKILL.md","antigravity-cli":".agents/skills/add-slash-command/SKILL.md","copilot":".agents/skills/add-slash-command/SKILL.md"}}]},{"id":"godot-4-game-jam","title":"Godot 4 game jam","summary":"GDScript conventions, jam-scope discipline and a ship-to-itch.io skill so your agent helps you finish a Godot 4 game in 48 hours.","description":"Game jams are lost to scope creep and a broken web build at hour 47. This loadout teaches your agent\ntyped GDScript and Godot 4 scene conventions, makes it protect the core loop before adding features,\nand gives it a step-by-step skill for exporting a web build and pushing it to itch.io with butler.","highlights":["Typed GDScript 4 conventions, signals over hard references, scenes as the unit of reuse","Jam rules: playable loop first, feature freeze, a cut list instead of crunch","Ship skill covering headless web export, the single-threaded vs threaded trap, and butler pushes","Cursor rule scoped to .gd files"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["gamedev"],"stacks":["godot","gdscript"],"featured":true,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["godot-4","butler"],"env":["BUTLER_API_KEY"],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Godot 4 project and game jam rules.","skill":null,"agent":null,"bytes":2956,"lines":45,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":353,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":354,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/gdscript.mdc","role":"rules","description":"GDScript style rule, applied to .gd files.","skill":null,"agent":null,"bytes":875,"lines":15,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/gdscript.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/godot-jam-ship/SKILL.md","role":"skill","description":"Exports a web build and publishes it to itch.io.","skill":"godot-jam-ship","agent":null,"bytes":2662,"lines":51,"install_to":{"claude-code":".claude/skills/godot-jam-ship/SKILL.md","codex":".agents/skills/godot-jam-ship/SKILL.md","cursor":".agents/skills/godot-jam-ship/SKILL.md","gemini-cli":".agents/skills/godot-jam-ship/SKILL.md","antigravity-cli":".agents/skills/godot-jam-ship/SKILL.md","copilot":".agents/skills/godot-jam-ship/SKILL.md"}}]},{"id":"mcp-server-typescript","title":"MCP server (TypeScript)","summary":"Rules and an add-a-tool skill for building a Model Context Protocol server in TypeScript that agents can actually use well — clear tools, safe inputs, no stdout noise.","description":"Building your own MCP server is the fastest way to give agents a new superpower, and the easiest way to\ngive them a confusing one. This loadout teaches your agent the official TypeScript SDK patterns, how to\ndesign tools that models pick correctly, how to keep a stdio server's output clean, and how to test with\nthe MCP Inspector before plugging it into Claude Code, Cursor or Codex.","highlights":["Tool design rules: verb-first names, descriptions written for the model, small typed inputs","stdio hygiene — logs to stderr only, or the protocol breaks","Input validation with zod and errors returned as tool results, not crashes","Add-a-tool skill with an Inspector test loop"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents"],"stacks":["mcp","typescript","nodejs"],"featured":true,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["node"],"env":[],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"MCP server project rules.","skill":null,"agent":null,"bytes":2948,"lines":43,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":363,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":364,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/mcp-tools.mdc","role":"rules","description":"Rule applied to tool definition files.","skill":null,"agent":null,"bytes":832,"lines":15,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/mcp-tools.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/add-mcp-tool/SKILL.md","role":"skill","description":"Designs, implements and tests a new MCP tool.","skill":"add-mcp-tool","agent":null,"bytes":2635,"lines":56,"install_to":{"claude-code":".claude/skills/add-mcp-tool/SKILL.md","codex":".agents/skills/add-mcp-tool/SKILL.md","cursor":".agents/skills/add-mcp-tool/SKILL.md","gemini-cli":".agents/skills/add-mcp-tool/SKILL.md","antigravity-cli":".agents/skills/add-mcp-tool/SKILL.md","copilot":".agents/skills/add-mcp-tool/SKILL.md"}}]},{"id":"nextjs-supabase-saas","title":"Next.js + Supabase SaaS","summary":"Rules, an RLS audit skill and a read-only Supabase MCP config for vibe-coding a Next.js App Router SaaS without leaking your database.","description":"The stack most vibe-coded SaaS apps end up on, with the guard rails agents usually forget.\nYour agent learns where server code ends and client code begins, how to use Supabase auth\nwith cookies, and that every table needs row level security before it holds real data.","highlights":["Clear server/client boundary rules for the App Router","Migrations-only schema changes, with RLS enabled on every new table","A skill that audits every table's RLS policies and reports gaps in plain English","Read-only Supabase MCP config so the agent can inspect, not drop, your database"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["nextjs","react","typescript","supabase","postgres"],"featured":true,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":2,"skills":1,"mcp":1},"requires":{"tools":["node","supabase-cli"],"env":["NEXT_PUBLIC_SUPABASE_URL","NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY"],"mcp":["supabase"]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":10,"failed":0,"not_applicable":0,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Project rules for any agent that reads AGENTS.md.","skill":null,"agent":null,"bytes":3421,"lines":55,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":495,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":369,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/supabase-migrations.mdc","role":"rules","description":"Scoped Cursor rule that applies when editing SQL migrations.","skill":null,"agent":null,"bytes":1768,"lines":43,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/supabase-migrations.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/supabase-rls-audit/SKILL.md","role":"skill","description":"Audits row level security across every table and reports gaps.","skill":"supabase-rls-audit","agent":null,"bytes":3131,"lines":72,"install_to":{"claude-code":".claude/skills/supabase-rls-audit/SKILL.md","codex":".agents/skills/supabase-rls-audit/SKILL.md","cursor":".agents/skills/supabase-rls-audit/SKILL.md","gemini-cli":".agents/skills/supabase-rls-audit/SKILL.md","antigravity-cli":".agents/skills/supabase-rls-audit/SKILL.md","copilot":".agents/skills/supabase-rls-audit/SKILL.md"}},{"path":"mcp.json","role":"mcp","description":"Supabase hosted MCP server in read-only mode, scoped to one project.","skill":null,"agent":null,"bytes":160,"lines":9,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}}]},{"id":"secure-before-you-ship","title":"Secure before you ship","summary":"A launch-check skill and always-on security rules that catch leaked keys, open databases and missing auth before your vibe-coded app goes live.","description":"Most vibe-coded apps that get burnt at launch fail on the same ten things: a secret key in the\nfront end, a database anyone can read, an admin route with no auth check, or a free API endpoint\nsomeone scripts to run up your bill. This loadout gives your agent a repeatable pre-launch audit\nand a set of rules that stop the worst mistakes being written in the first place.\nStack-agnostic: works for Next.js, Vite, Astro, Express, Flask, Supabase, Firebase and friends.","highlights":["Launch-check skill that produces a plain-English, severity-ranked fix list","Checklist reference covering secrets, auth, data access, abuse, headers and dependencies","Always-on rule that stops agents hard-coding or logging secrets","Read-only by design — the skill reports and proposes fixes, it does not rewrite your app unasked"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["security","web-app"],"stacks":["any","javascript","typescript","python"],"featured":true,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["git"],"env":[],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Security baseline rules for any agent that reads AGENTS.md.","skill":null,"agent":null,"bytes":2212,"lines":38,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":363,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":364,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/no-secrets.mdc","role":"rules","description":"Always-on Cursor rule about secrets and environment variables.","skill":null,"agent":null,"bytes":727,"lines":12,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/no-secrets.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/launch-check/SKILL.md","role":"skill","description":"Runs a pre-launch security and readiness audit.","skill":"launch-check","agent":null,"bytes":2631,"lines":54,"install_to":{"claude-code":".claude/skills/launch-check/SKILL.md","codex":".agents/skills/launch-check/SKILL.md","cursor":".agents/skills/launch-check/SKILL.md","gemini-cli":".agents/skills/launch-check/SKILL.md","antigravity-cli":".agents/skills/launch-check/SKILL.md","copilot":".agents/skills/launch-check/SKILL.md"}},{"path":"skills/launch-check/references/checklist.md","role":"reference","description":"The full checklist the launch-check skill works through.","skill":"launch-check","agent":null,"bytes":2783,"lines":52,"install_to":{"claude-code":".claude/skills/launch-check/references/checklist.md","codex":".agents/skills/launch-check/references/checklist.md","cursor":".agents/skills/launch-check/references/checklist.md","gemini-cli":".agents/skills/launch-check/references/checklist.md","antigravity-cli":".agents/skills/launch-check/references/checklist.md","copilot":".agents/skills/launch-check/references/checklist.md"}}]},{"id":"vibe-coding-guardrails","title":"Vibe-coding guard rails","summary":"A stack-agnostic working style for coding agents — plan first, small diffs, never delete tests to go green — plus handoff notes and up-to-date docs via MCP.","description":"The general-purpose loadout to drop into any project you vibe-code. It fixes the habits that make\nagent sessions go wrong: diving in without a plan, 40-file diffs, \"fixing\" a failing test by deleting\nit, inventing APIs from stale training data, and losing all context when the session ends. Pairs well\nwith any stack-specific loadout.","highlights":["Plan-then-build skill that writes a short plan and waits for a thumbs up","Small, reviewable changes with a commit after each working step","Hard rules against weakening tests, silencing errors or adding surprise dependencies","Session-handoff skill that leaves a NOTES.md the next session (or agent) can pick up","Context7 MCP config for current library docs instead of guesses"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow"],"stacks":["any"],"featured":true,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":2,"skills":2,"mcp":1},"requires":{"tools":["git"],"env":[],"mcp":["context7"]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Working-style rules for any coding agent.","skill":null,"agent":null,"bytes":2199,"lines":31,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":513,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":387,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/guardrails.mdc","role":"rules","description":"Always-on Cursor rule with the hard guard rails.","skill":null,"agent":null,"bytes":631,"lines":13,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/guardrails.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/plan-then-build/SKILL.md","role":"skill","description":"Writes a short plan for non-trivial work and waits for approval.","skill":"plan-then-build","agent":null,"bytes":1648,"lines":40,"install_to":{"claude-code":".claude/skills/plan-then-build/SKILL.md","codex":".agents/skills/plan-then-build/SKILL.md","cursor":".agents/skills/plan-then-build/SKILL.md","gemini-cli":".agents/skills/plan-then-build/SKILL.md","antigravity-cli":".agents/skills/plan-then-build/SKILL.md","copilot":".agents/skills/plan-then-build/SKILL.md"}},{"path":"skills/session-handoff/SKILL.md","role":"skill","description":"Leaves a handoff note at the end of a session.","skill":"session-handoff","agent":null,"bytes":1278,"lines":32,"install_to":{"claude-code":".claude/skills/session-handoff/SKILL.md","codex":".agents/skills/session-handoff/SKILL.md","cursor":".agents/skills/session-handoff/SKILL.md","gemini-cli":".agents/skills/session-handoff/SKILL.md","antigravity-cli":".agents/skills/session-handoff/SKILL.md","copilot":".agents/skills/session-handoff/SKILL.md"}},{"path":"mcp.json","role":"mcp","description":"Context7 hosted MCP server for current library documentation.","skill":null,"agent":null,"bytes":116,"lines":9,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}}]},{"id":"ai-code-review-rules","title":"AI code review rules","summary":"Review-only rule files for Claude Code Review, Cursor Bugbot and Copilot, built from one list: severity, a nit cap, what to skip and what to always check.","description":"AI code review went mainstream this autumn, and teams found each reviewer reads its own file: Claude Code Review reads\nREVIEW.md from the default branch (never from the PR), Bugbot reads .cursor/BUGBOT.md and ignores .cursor/rules, and Copilot\nuses instruction files with applyTo and excludeAgent. This loadout gives your agent the map of who reads what, rules for\nwriting review instructions that cut noise, and a skill that writes all three files from one evidence-based list.","highlights":["Who reads what: REVIEW.md, .cursor/BUGBOT.md, Copilot instruction files","Severity, nit cap, do-not-report and always-check sections","Rules come from evidence: past false positives and real misses","Reminder that REVIEW.md changes apply only after merging to a protected default branch","Copilot review-only file with excludeAgent"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","ai-agents"],"stacks":["github"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["gh"],"env":[],"mcp":[]},"credits":[{"title":"@Cisco_research: Code Review reads REVIEW.md from the default branch","url":"https://x.com/Cisco_research/status/2111019382038012147"},{"title":"@FastfixAI: .cursor/BUGBOT.md for Bugbot","url":"https://x.com/FastfixAI/status/2096752814303174784"},{"title":"Claude Code docs: customise Code Review","url":"https://code.claude.com/docs/en/code-review-customize"},{"title":"Cursor docs: Bugbot","url":"https://cursor.com/docs/bugbot"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Where AI reviewers read rules and how to write them.","skill":null,"agent":null,"bytes":1891,"lines":26,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":366,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":367,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/set-up-review-rules/SKILL.md","role":"skill","description":"Write review files for each reviewer from one rule list.","skill":"set-up-review-rules","agent":null,"bytes":1563,"lines":21,"install_to":{"claude-code":".claude/skills/set-up-review-rules/SKILL.md","codex":".agents/skills/set-up-review-rules/SKILL.md","cursor":".agents/skills/set-up-review-rules/SKILL.md","gemini-cli":".agents/skills/set-up-review-rules/SKILL.md","antigravity-cli":".agents/skills/set-up-review-rules/SKILL.md","copilot":".agents/skills/set-up-review-rules/SKILL.md"}},{"path":"skills/set-up-review-rules/references/review-rules-template.md","role":"reference","description":"Shared review rule template.","skill":"set-up-review-rules","agent":null,"bytes":838,"lines":22,"install_to":{"claude-code":".claude/skills/set-up-review-rules/references/review-rules-template.md","codex":".agents/skills/set-up-review-rules/references/review-rules-template.md","cursor":".agents/skills/set-up-review-rules/references/review-rules-template.md","gemini-cli":".agents/skills/set-up-review-rules/references/review-rules-template.md","antigravity-cli":".agents/skills/set-up-review-rules/references/review-rules-template.md","copilot":".agents/skills/set-up-review-rules/references/review-rules-template.md"}},{"path":"skills/set-up-review-rules/references/copilot-review-instructions.md","role":"reference","description":"Copilot review-only instruction file.","skill":"set-up-review-rules","agent":null,"bytes":382,"lines":14,"install_to":{"claude-code":".claude/skills/set-up-review-rules/references/copilot-review-instructions.md","codex":".agents/skills/set-up-review-rules/references/copilot-review-instructions.md","cursor":".agents/skills/set-up-review-rules/references/copilot-review-instructions.md","gemini-cli":".agents/skills/set-up-review-rules/references/copilot-review-instructions.md","antigravity-cli":".agents/skills/set-up-review-rules/references/copilot-review-instructions.md","copilot":".agents/skills/set-up-review-rules/references/copilot-review-instructions.md"}}]},{"id":"astro-static-site","title":"Astro static site","summary":"Astro conventions for fast, zero-JS-by-default sites with content collections, plus a skill for deploying to Cloudflare Pages with headers and redirects.","description":"Astro is a great fit for portfolios, docs, blogs and landing pages, but agents love to turn it into a\nReact app with a hydrated component on every line. This loadout keeps pages static and fast, uses\ncontent collections for anything that looks like content, and finishes with a reliable Cloudflare\nPages deploy. (This very site is built on the same approach.)","highlights":["Zero JavaScript by default; islands only where there is real interactivity","Typed content collections with schemas instead of ad-hoc markdown imports","Images through astro:assets, semantic HTML and accessibility basics","Cloudflare Pages deploy skill: build settings, _headers, _redirects and custom domains"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["astro","typescript","cloudflare"],"featured":false,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["node","wrangler"],"env":[],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Astro static site rules.","skill":null,"agent":null,"bytes":2630,"lines":46,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":364,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":365,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/astro-components.mdc","role":"rules","description":"Rule applied to .astro files.","skill":null,"agent":null,"bytes":815,"lines":14,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/astro-components.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/cloudflare-pages-deploy/SKILL.md","role":"skill","description":"Deploys a static build to Cloudflare Pages.","skill":"cloudflare-pages-deploy","agent":null,"bytes":2336,"lines":52,"install_to":{"claude-code":".claude/skills/cloudflare-pages-deploy/SKILL.md","codex":".agents/skills/cloudflare-pages-deploy/SKILL.md","cursor":".agents/skills/cloudflare-pages-deploy/SKILL.md","gemini-cli":".agents/skills/cloudflare-pages-deploy/SKILL.md","antigravity-cli":".agents/skills/cloudflare-pages-deploy/SKILL.md","copilot":".agents/skills/cloudflare-pages-deploy/SKILL.md"}}]},{"id":"agent-plugin-authoring","title":"Author plugins for Claude Code and Antigravity","summary":"Build one plugin for Claude Code and Antigravity from a single source tree, pin its MCP servers, and pass claude plugin validate --strict before anyone installs.","description":"Claude Code and Antigravity both install plugins made of skills, subagents and MCP servers, but the manifests differ. Claude Code reads .claude-plugin/plugin.json and .mcp.json with url. Antigravity reads a root plugin.json whose schema allows only a name and description, and mcp_config.json with serverUrl. It has no validate command. This loadout keeps one portable source tree and builds both layouts plus a local marketplace. A checker catches extra manifest fields, reserved names, unpinned npx servers, http remotes, literal credentials and drift between the builds. The verifier builds the example plugin and runs Claude Code 2.1.302's own validate --strict on the plugin and marketplace, with no account needed. It then confirms a broken source fails both checkers. It pairs with the agent-extension-vetting loadout for the reviewer's side.","highlights":["One plugin-src tree builds both Claude Code and Antigravity layouts","Antigravity manifest checked against its documented schema (it has no validate command)","claude plugin validate --strict on the plugin and marketplace, no sign-in","Exact MCP pins, https remotes, no literal credentials in env or headers","Release notes: version bumps and sha pins for GitHub marketplace sources"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents","workflow"],"stacks":["mcp","nodejs"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["nodejs","npm"],"env":[],"mcp":[]},"credits":[{"title":"Claude Code docs: plugin manifest reference","url":"https://code.claude.com/docs/en/plugins/manifest-reference"},{"title":"Claude Code docs: add components to a plugin","url":"https://code.claude.com/docs/en/plugins/components"},{"title":"Claude Code docs: plugin commands (plugin validate)","url":"https://code.claude.com/docs/en/plugins/cli-reference"},{"title":"Claude Code docs: marketplace reference (ref and sha)","url":"https://code.claude.com/docs/en/plugins/marketplace-reference"},{"title":"Google Antigravity docs: plugins","url":"https://antigravity.google/docs/plugins"},{"title":"Google Antigravity docs: custom subagents","url":"https://antigravity.google/docs/subagents"},{"title":"Google Antigravity docs: MCP configuration","url":"https://antigravity.google/docs/mcp"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for building and releasing a plugin for Claude Code and Antigravity from one source tree.","skill":null,"agent":null,"bytes":1804,"lines":29,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":393,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":394,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/build-agent-plugin/SKILL.md","role":"skill","description":"Layout differences, build, check, local test and release.","skill":"build-agent-plugin","agent":null,"bytes":4803,"lines":85,"install_to":{"claude-code":".claude/skills/build-agent-plugin/SKILL.md","codex":".agents/skills/build-agent-plugin/SKILL.md","cursor":".agents/skills/build-agent-plugin/SKILL.md","gemini-cli":".agents/skills/build-agent-plugin/SKILL.md","antigravity-cli":".agents/skills/build-agent-plugin/SKILL.md","copilot":".agents/skills/build-agent-plugin/SKILL.md"}},{"path":"skills/build-agent-plugin/scripts/build_plugins.mjs","role":"reference","description":"Builds both plugin layouts and a local marketplace.","skill":"build-agent-plugin","agent":null,"bytes":3566,"lines":82,"install_to":{"claude-code":".claude/skills/build-agent-plugin/scripts/build_plugins.mjs","codex":".agents/skills/build-agent-plugin/scripts/build_plugins.mjs","cursor":".agents/skills/build-agent-plugin/scripts/build_plugins.mjs","gemini-cli":".agents/skills/build-agent-plugin/scripts/build_plugins.mjs","antigravity-cli":".agents/skills/build-agent-plugin/scripts/build_plugins.mjs","copilot":".agents/skills/build-agent-plugin/scripts/build_plugins.mjs"}},{"path":"skills/build-agent-plugin/scripts/check_plugins.mjs","role":"reference","description":"Schema, parity, pin and credential checks for both builds.","skill":"build-agent-plugin","agent":null,"bytes":6626,"lines":127,"install_to":{"claude-code":".claude/skills/build-agent-plugin/scripts/check_plugins.mjs","codex":".agents/skills/build-agent-plugin/scripts/check_plugins.mjs","cursor":".agents/skills/build-agent-plugin/scripts/check_plugins.mjs","gemini-cli":".agents/skills/build-agent-plugin/scripts/check_plugins.mjs","antigravity-cli":".agents/skills/build-agent-plugin/scripts/check_plugins.mjs","copilot":".agents/skills/build-agent-plugin/scripts/check_plugins.mjs"}},{"path":"skills/build-agent-plugin/references/plugin-src/plugin.json","role":"reference","description":"Example source manifest with a pinned MCP server.","skill":"build-agent-plugin","agent":null,"bytes":475,"lines":16,"install_to":{"claude-code":".claude/skills/build-agent-plugin/references/plugin-src/plugin.json","codex":".agents/skills/build-agent-plugin/references/plugin-src/plugin.json","cursor":".agents/skills/build-agent-plugin/references/plugin-src/plugin.json","gemini-cli":".agents/skills/build-agent-plugin/references/plugin-src/plugin.json","antigravity-cli":".agents/skills/build-agent-plugin/references/plugin-src/plugin.json","copilot":".agents/skills/build-agent-plugin/references/plugin-src/plugin.json"}},{"path":"skills/build-agent-plugin/references/plugin-src/skills/tidy-pr/SKILL.md","role":"reference","description":"Example portable skill.","skill":"build-agent-plugin","agent":null,"bytes":752,"lines":15,"install_to":{"claude-code":".claude/skills/build-agent-plugin/references/plugin-src/skills/tidy-pr/SKILL.md","codex":".agents/skills/build-agent-plugin/references/plugin-src/skills/tidy-pr/SKILL.md","cursor":".agents/skills/build-agent-plugin/references/plugin-src/skills/tidy-pr/SKILL.md","gemini-cli":".agents/skills/build-agent-plugin/references/plugin-src/skills/tidy-pr/SKILL.md","antigravity-cli":".agents/skills/build-agent-plugin/references/plugin-src/skills/tidy-pr/SKILL.md","copilot":".agents/skills/build-agent-plugin/references/plugin-src/skills/tidy-pr/SKILL.md"}},{"path":"skills/build-agent-plugin/references/plugin-src/agents/pr-reviewer.md","role":"reference","description":"Example portable subagent.","skill":"build-agent-plugin","agent":null,"bytes":496,"lines":10,"install_to":{"claude-code":".claude/skills/build-agent-plugin/references/plugin-src/agents/pr-reviewer.md","codex":".agents/skills/build-agent-plugin/references/plugin-src/agents/pr-reviewer.md","cursor":".agents/skills/build-agent-plugin/references/plugin-src/agents/pr-reviewer.md","gemini-cli":".agents/skills/build-agent-plugin/references/plugin-src/agents/pr-reviewer.md","antigravity-cli":".agents/skills/build-agent-plugin/references/plugin-src/agents/pr-reviewer.md","copilot":".agents/skills/build-agent-plugin/references/plugin-src/agents/pr-reviewer.md"}}]},{"id":"browser-verified-ui","title":"Browser-verified UI changes","summary":"Make the agent load every UI change in a real browser via Playwright MCP, exercise it, fail on console or network errors and attach screenshots at two widths.","description":"The most repeated failure in practitioner posts about agent-built front ends: the agent says done, the page is blank or\nthrows in the console. This loadout wires in the Playwright MCP server (pinned, isolated profile, headless, output in a\ngit-ignored folder) and a verification procedure: snapshot, exercise the change including an error path, check console\nand network, screenshot at 390 and 1280 pixels. It also keeps the browser away from production and real credentials,\nand notes the context cost of browser MCP servers.","highlights":["Playwright MCP pinned to 0.0.83, isolated in-memory profile, headless","Done means loaded, exercised and error-free in a browser","Accessibility snapshot first, screenshots for layout evidence","Console errors and failed requests count as failures","Screenshots at 390 and 1280 pixels in a git-ignored folder"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","workflow"],"stacks":["playwright"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":1,"skills":1,"mcp":1},"requires":{"tools":["node"],"env":[],"mcp":["playwright"]},"credits":[{"title":"@vishalsg42: context cost of browser MCP servers, measured","url":"https://x.com/vishalsg42/status/2102314115897373161"},{"title":"Playwright MCP","url":"https://github.com/microsoft/playwright-mcp"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Browser verification rules for UI work.","skill":null,"agent":null,"bytes":1512,"lines":22,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":497,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":371,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"mcp.json","role":"mcp","description":"Playwright MCP server, pinned and isolated.","skill":null,"agent":null,"bytes":186,"lines":9,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}},{"path":"skills/verify-in-browser/SKILL.md","role":"skill","description":"Load, exercise, check errors and screenshot a UI change.","skill":"verify-in-browser","agent":null,"bytes":1423,"lines":22,"install_to":{"claude-code":".claude/skills/verify-in-browser/SKILL.md","codex":".agents/skills/verify-in-browser/SKILL.md","cursor":".agents/skills/verify-in-browser/SKILL.md","gemini-cli":".agents/skills/verify-in-browser/SKILL.md","antigravity-cli":".agents/skills/verify-in-browser/SKILL.md","copilot":".agents/skills/verify-in-browser/SKILL.md"}}]},{"id":"chrome-extension-mv3","title":"Chrome extension (Manifest V3)","summary":"Manifest V3 rules for service workers, messaging and minimal permissions, plus a skill that gets your extension through Chrome Web Store review.","description":"Agents trained on years of Manifest V2 tutorials will happily write background pages, remote code and\n\"<all_urls>\" permissions — all of which either break in Manifest V3 or get you rejected from the Chrome\nWeb Store. This loadout keeps your agent on MV3, keeps permissions tight, and walks through store\nsubmission so the review goes smoothly first time.","highlights":["Service worker lifecycle rules (no global state, use chrome.storage and alarms)","Least-privilege permissions with activeTab and optional host permissions","Clear message-passing pattern between content scripts, popup and service worker","Store-prep skill: permission justifications, privacy disclosures, zip packaging"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["browser-extension"],"stacks":["chrome","javascript","typescript"],"featured":false,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["node","chrome"],"env":[],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Manifest V3 extension project rules.","skill":null,"agent":null,"bytes":3246,"lines":51,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":377,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":378,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/manifest.mdc","role":"rules","description":"Rule applied when editing manifest.json.","skill":null,"agent":null,"bytes":831,"lines":15,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/manifest.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/extension-store-prep/SKILL.md","role":"skill","description":"Prepares a Chrome Web Store submission.","skill":"extension-store-prep","agent":null,"bytes":2357,"lines":38,"install_to":{"claude-code":".claude/skills/extension-store-prep/SKILL.md","codex":".agents/skills/extension-store-prep/SKILL.md","cursor":".agents/skills/extension-store-prep/SKILL.md","gemini-cli":".agents/skills/extension-store-prep/SKILL.md","antigravity-cli":".agents/skills/extension-store-prep/SKILL.md","copilot":".agents/skills/extension-store-prep/SKILL.md"}}]},{"id":"cloudflare-workers","title":"Cloudflare Workers rules","summary":"Workers rules for agents: bindings from env, wrangler types, prepared D1 queries, waitUntil, secrets via wrangler secret, no deploys or --remote writes unasked.","description":"Agents can scaffold a Worker in a minute; the trouble is what they do next: deploy to production to test a change, apply D1 migrations with --remote, keep request data in module scope, call the REST API instead of a binding, or put a token in vars. This loadout sets the rules we use on our own Workers and D1 project, connects Cloudflare's public documentation MCP server so the agent checks current APIs and limits, and includes an endpoint skill whose example Worker the verifier type-checks against the Workers runtime types.","highlights":["No wrangler deploy or --remote writes unless asked in the session","wrangler types after binding changes; strict type-check","Prepared D1 statements and migrations applied --local first","No request state in module scope; ctx.waitUntil for background work","Cloudflare docs MCP server (public, no auth)"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["cloudflare","cloudflare-workers","typescript"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":1,"skills":1,"mcp":1},"requires":{"tools":["node","wrangler"],"env":[],"mcp":["cloudflare-docs"]},"credits":[{"title":"Cloudflare docs: Cloudflare's own MCP servers (documentation server)","url":"https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/"},{"title":"Cloudflare docs: Wrangler configuration","url":"https://developers.cloudflare.com/workers/wrangler/configuration/"},{"title":"Cloudflare docs: D1 migrations","url":"https://developers.cloudflare.com/d1/reference/migrations/"},{"title":"Cloudflare docs: secrets","url":"https://developers.cloudflare.com/workers/configuration/secrets/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":10,"failed":0,"not_applicable":0,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Workers runtime, Wrangler, D1 and secrets rules.","skill":null,"agent":null,"bytes":2143,"lines":33,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":491,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":365,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/worker-endpoint/SKILL.md","role":"skill","description":"Add a Worker route with bindings and checks.","skill":"worker-endpoint","agent":null,"bytes":1083,"lines":16,"install_to":{"claude-code":".claude/skills/worker-endpoint/SKILL.md","codex":".agents/skills/worker-endpoint/SKILL.md","cursor":".agents/skills/worker-endpoint/SKILL.md","gemini-cli":".agents/skills/worker-endpoint/SKILL.md","antigravity-cli":".agents/skills/worker-endpoint/SKILL.md","copilot":".agents/skills/worker-endpoint/SKILL.md"}},{"path":"skills/worker-endpoint/references/index.ts","role":"reference","description":"Example Worker with D1, KV and waitUntil.","skill":"worker-endpoint","agent":null,"bytes":2400,"lines":57,"install_to":{"claude-code":".claude/skills/worker-endpoint/references/index.ts","codex":".agents/skills/worker-endpoint/references/index.ts","cursor":".agents/skills/worker-endpoint/references/index.ts","gemini-cli":".agents/skills/worker-endpoint/references/index.ts","antigravity-cli":".agents/skills/worker-endpoint/references/index.ts","copilot":".agents/skills/worker-endpoint/references/index.ts"}},{"path":"mcp.json","role":"mcp","description":"Cloudflare documentation MCP server (remote, public).","skill":null,"agent":null,"bytes":130,"lines":9,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}}]},{"id":"cursor-rules-that-load","title":"Cursor rules that load","summary":"How to decide between AGENTS.md, Cursor .mdc rules, skills and hooks, write front matter that loads, and check that a rule is really attached.","description":"Most ignored rules are not ignored: they never loaded. Common causes are globs written as a YAML list, alwaysApply set\nalongside globs, descriptions that do not say when to use the rule, and legacy .cursorrules files. This loadout gives your agent a\ndecision table for where an instruction belongs, the four Cursor rule types with correct front matter, Copilot applyTo\nequivalents, and a skill that writes a rule and checks it attaches.","highlights":["Decision table: AGENTS.md vs scoped rule vs skill vs hook","The four .mdc rule types with front matter that works","Fix list for rules that never attach","Copilot .instructions.md applyTo equivalent","Auto-attached meta-rule for editing rules"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents","workflow"],"stacks":["any"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":[],"env":[],"mcp":[]},"credits":[{"title":"@iPuneetSingh: .mdc rule types and globs in practice","url":"https://x.com/iPuneetSingh/status/2096461210594267540"},{"title":"Cursor docs: rules","url":"https://cursor.com/docs/rules"},{"title":"GitHub docs: path-specific custom instructions","url":"https://docs.github.com/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Where instructions belong and how Cursor rule types load.","skill":null,"agent":null,"bytes":1883,"lines":29,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":368,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":369,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/rule-authoring.mdc","role":"rules","description":"Auto-attached rule for editing .mdc files.","skill":null,"agent":null,"bytes":670,"lines":12,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/rule-authoring.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/write-cursor-rule/SKILL.md","role":"skill","description":"Write or fix a rule and check it attaches.","skill":"write-cursor-rule","agent":null,"bytes":1457,"lines":21,"install_to":{"claude-code":".claude/skills/write-cursor-rule/SKILL.md","codex":".agents/skills/write-cursor-rule/SKILL.md","cursor":".agents/skills/write-cursor-rule/SKILL.md","gemini-cli":".agents/skills/write-cursor-rule/SKILL.md","antigravity-cli":".agents/skills/write-cursor-rule/SKILL.md","copilot":".agents/skills/write-cursor-rule/SKILL.md"}},{"path":"skills/write-cursor-rule/references/examples.md","role":"reference","description":"Example rules for each type, plus a Copilot equivalent.","skill":"write-cursor-rule","agent":null,"bytes":1117,"lines":48,"install_to":{"claude-code":".claude/skills/write-cursor-rule/references/examples.md","codex":".agents/skills/write-cursor-rule/references/examples.md","cursor":".agents/skills/write-cursor-rule/references/examples.md","gemini-cli":".agents/skills/write-cursor-rule/references/examples.md","antigravity-cli":".agents/skills/write-cursor-rule/references/examples.md","copilot":".agents/skills/write-cursor-rule/references/examples.md"}}]},{"id":"discord-bot-python","title":"Discord bot in Python (discord.py 2)","summary":"discord.py 2 rules for agents: slash commands in cogs, range-limited options, 3-second responses, manual syncing, default intents and offline tests of the payload.","description":"Agents writing Discord bots in Python reach for prefix commands and the message content intent, sync the command tree on every start until Discord rate-limits them, and test nothing because everything seems to need a live gateway. This loadout sets the discord.py 2 conventions: slash commands in cogs, options described and limited in the schema, deferral for slow work, ephemeral error replies, syncing by hand to a dev guild, and the token only from the environment. A skill adds commands with logic in plain functions and offline tests of the exact payload Discord will receive. The verifier runs those tests on discord.py 2.7.1 and loads the cog without logging in.","highlights":["Slash commands in cogs; no message content intent","Options described and limited with app_commands.Range","Offline tests of logic and the command payload, no gateway needed","Sync by hand to a dev guild, never on every start","Token from the environment; default intents only"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["bots"],"stacks":["python","discord","uv","pytest"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv","python3"],"env":["DISCORD_TOKEN"],"mcp":[]},"credits":[{"title":"discord.py docs: interactions API reference","url":"https://discordpy.readthedocs.io/en/stable/interactions/api.html"},{"title":"discord.py docs: extensions and cogs","url":"https://discordpy.readthedocs.io/en/stable/ext/commands/cogs.html"},{"title":"Discord developer docs: receiving and responding to interactions","url":"https://discord.com/developers/docs/interactions/receiving-and-responding"},{"title":"Discord developer docs: privileged gateway intents","url":"https://discord.com/developers/docs/events/gateway#privileged-intents"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for a discord.py 2 bot: layout, commands, interactions, syncing and secrets.","skill":null,"agent":null,"bytes":2267,"lines":42,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":379,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":380,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/discord-py-command/SKILL.md","role":"skill","description":"Add a slash command as a tested cog.","skill":"discord-py-command","agent":null,"bytes":1477,"lines":24,"install_to":{"claude-code":".claude/skills/discord-py-command/SKILL.md","codex":".agents/skills/discord-py-command/SKILL.md","cursor":".agents/skills/discord-py-command/SKILL.md","gemini-cli":".agents/skills/discord-py-command/SKILL.md","antigravity-cli":".agents/skills/discord-py-command/SKILL.md","copilot":".agents/skills/discord-py-command/SKILL.md"}},{"path":"skills/discord-py-command/references/dice.py","role":"reference","description":"Cog with a validated, rate-limited command.","skill":"discord-py-command","agent":null,"bytes":2299,"lines":62,"install_to":{"claude-code":".claude/skills/discord-py-command/references/dice.py","codex":".agents/skills/discord-py-command/references/dice.py","cursor":".agents/skills/discord-py-command/references/dice.py","gemini-cli":".agents/skills/discord-py-command/references/dice.py","antigravity-cli":".agents/skills/discord-py-command/references/dice.py","copilot":".agents/skills/discord-py-command/references/dice.py"}},{"path":"skills/discord-py-command/references/bot.py","role":"reference","description":"Entry point with default intents and manual sync.","skill":"discord-py-command","agent":null,"bytes":1390,"lines":41,"install_to":{"claude-code":".claude/skills/discord-py-command/references/bot.py","codex":".agents/skills/discord-py-command/references/bot.py","cursor":".agents/skills/discord-py-command/references/bot.py","gemini-cli":".agents/skills/discord-py-command/references/bot.py","antigravity-cli":".agents/skills/discord-py-command/references/bot.py","copilot":".agents/skills/discord-py-command/references/bot.py"}},{"path":"skills/discord-py-command/references/test_dice.py","role":"reference","description":"Offline tests of logic and payload.","skill":"discord-py-command","agent":null,"bytes":1402,"lines":40,"install_to":{"claude-code":".claude/skills/discord-py-command/references/test_dice.py","codex":".agents/skills/discord-py-command/references/test_dice.py","cursor":".agents/skills/discord-py-command/references/test_dice.py","gemini-cli":".agents/skills/discord-py-command/references/test_dice.py","antigravity-cli":".agents/skills/discord-py-command/references/test_dice.py","copilot":".agents/skills/discord-py-command/references/test_dice.py"}}]},{"id":"django-app","title":"Django app rules","summary":"Django rules and a safe-migration skill: migrations checked in CI, two-step destructive changes, N+1 caught with query-count tests, settings from the environment.","description":"Agents are quick at Django and quick to leave behind the classic problems: model changes without migrations, edited migrations that already ran, N+1 queries in list views, csrf_exempt to make a form work, DEBUG and SECRET_KEY in code. This loadout sets the rules from Django's own docs, adds makemigrations --check and check --deploy as gates, and ships a safe-migration skill with a two-release path for removals and renames and a query-count test that the verifier runs against a real N+1.","highlights":["makemigrations --check --dry-run and manage.py check as done-gates","Two-release path for removing or renaming columns","assertNumQueries test that catches N+1 queries","Data migrations with apps.get_model and a backwards function","No csrf_exempt, no |safe on user input, secrets from the environment"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["python","django","uv","pytest"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv"],"env":[],"mcp":[]},"credits":[{"title":"Django docs: migrations","url":"https://docs.djangoproject.com/en/6.1/topics/migrations/"},{"title":"Django docs: database access optimisation","url":"https://docs.djangoproject.com/en/6.1/topics/db/optimization/"},{"title":"Django docs: deployment checklist","url":"https://docs.djangoproject.com/en/6.1/howto/deployment/checklist/"},{"title":"@geronco: CLAUDE.md templates per framework with exact commands and a never-do list","url":"https://x.com/geronco/status/2108014691582681184"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Django rules for models, migrations, queries and security.","skill":null,"agent":null,"bytes":2036,"lines":33,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":347,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":348,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/safe-migration/SKILL.md","role":"skill","description":"Model change with reviewed SQL and a zero-downtime path.","skill":"safe-migration","agent":null,"bytes":1503,"lines":20,"install_to":{"claude-code":".claude/skills/safe-migration/SKILL.md","codex":".agents/skills/safe-migration/SKILL.md","cursor":".agents/skills/safe-migration/SKILL.md","gemini-cli":".agents/skills/safe-migration/SKILL.md","antigravity-cli":".agents/skills/safe-migration/SKILL.md","copilot":".agents/skills/safe-migration/SKILL.md"}},{"path":"skills/safe-migration/references/test_query_count.py","role":"reference","description":"assertNumQueries test against N+1 queries.","skill":"safe-migration","agent":null,"bytes":773,"lines":24,"install_to":{"claude-code":".claude/skills/safe-migration/references/test_query_count.py","codex":".agents/skills/safe-migration/references/test_query_count.py","cursor":".agents/skills/safe-migration/references/test_query_count.py","gemini-cli":".agents/skills/safe-migration/references/test_query_count.py","antigravity-cli":".agents/skills/safe-migration/references/test_query_count.py","copilot":".agents/skills/safe-migration/references/test_query_count.py"}}]},{"id":"django-rest-api","title":"Django REST Framework API rules","summary":"DRF rules for agents: explicit serializer fields, querysets scoped to the user, owner set on the server, pagination, and six tests for every endpoint.","description":"The DRF code agents write usually works for the person testing it and leaks for everyone else: fields set to __all__, a queryset of every row with a permission check bolted on, an owner field accepted from the request body, an unpaginated list that runs a query per row. This loadout gives your agent the DRF conventions that prevent that, from the official docs and the OWASP API Security Top 10's broken object level authorisation. A skill adds endpoints with the six tests each one needs. The verifier runs the tests on Django 6.1 and DRF 3.18, and checks that the query-count test fails without select_related.","highlights":["IsAuthenticated by default; AllowAny only when asked","get_queryset scoped to request.user: other users' rows are a 404","Owner set in perform_create, never from the request body","Explicit serializer fields; no __all__ or exclude","Six tests per endpoint, including a flat query count"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","security"],"stacks":["python","django","uv"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv","python3"],"env":[],"mcp":[]},"credits":[{"title":"Django REST Framework docs: permissions","url":"https://www.django-rest-framework.org/api-guide/permissions/"},{"title":"Django REST Framework docs: serializers","url":"https://www.django-rest-framework.org/api-guide/serializers/"},{"title":"Django REST Framework docs: testing","url":"https://www.django-rest-framework.org/api-guide/testing/"},{"title":"OWASP API Security Top 10 2023: broken object level authorisation","url":"https://owasp.org/API-Security/editions/2023/en/0xa1-broken-object-level-authorization/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for a Django REST Framework API: security defaults, serializers, queries and tests.","skill":null,"agent":null,"bytes":2166,"lines":37,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":365,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":366,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/drf-endpoint/SKILL.md","role":"skill","description":"Add an endpoint with the six tests it needs.","skill":"drf-endpoint","agent":null,"bytes":1349,"lines":25,"install_to":{"claude-code":".claude/skills/drf-endpoint/SKILL.md","codex":".agents/skills/drf-endpoint/SKILL.md","cursor":".agents/skills/drf-endpoint/SKILL.md","gemini-cli":".agents/skills/drf-endpoint/SKILL.md","antigravity-cli":".agents/skills/drf-endpoint/SKILL.md","copilot":".agents/skills/drf-endpoint/SKILL.md"}},{"path":"skills/drf-endpoint/references/serializers.py","role":"reference","description":"Explicit serializer with validation.","skill":"drf-endpoint","agent":null,"bytes":651,"lines":20,"install_to":{"claude-code":".claude/skills/drf-endpoint/references/serializers.py","codex":".agents/skills/drf-endpoint/references/serializers.py","cursor":".agents/skills/drf-endpoint/references/serializers.py","gemini-cli":".agents/skills/drf-endpoint/references/serializers.py","antigravity-cli":".agents/skills/drf-endpoint/references/serializers.py","copilot":".agents/skills/drf-endpoint/references/serializers.py"}},{"path":"skills/drf-endpoint/references/views.py","role":"reference","description":"User-scoped viewset.","skill":"drf-endpoint","agent":null,"bytes":607,"lines":18,"install_to":{"claude-code":".claude/skills/drf-endpoint/references/views.py","codex":".agents/skills/drf-endpoint/references/views.py","cursor":".agents/skills/drf-endpoint/references/views.py","gemini-cli":".agents/skills/drf-endpoint/references/views.py","antigravity-cli":".agents/skills/drf-endpoint/references/views.py","copilot":".agents/skills/drf-endpoint/references/views.py"}},{"path":"skills/drf-endpoint/references/urls.py","role":"reference","description":"Router registration.","skill":"drf-endpoint","agent":null,"bytes":194,"lines":9,"install_to":{"claude-code":".claude/skills/drf-endpoint/references/urls.py","codex":".agents/skills/drf-endpoint/references/urls.py","cursor":".agents/skills/drf-endpoint/references/urls.py","gemini-cli":".agents/skills/drf-endpoint/references/urls.py","antigravity-cli":".agents/skills/drf-endpoint/references/urls.py","copilot":".agents/skills/drf-endpoint/references/urls.py"}},{"path":"skills/drf-endpoint/references/tests.py","role":"reference","description":"API tests for auth, ownership, validation and queries.","skill":"drf-endpoint","agent":null,"bytes":2563,"lines":54,"install_to":{"claude-code":".claude/skills/drf-endpoint/references/tests.py","codex":".agents/skills/drf-endpoint/references/tests.py","cursor":".agents/skills/drf-endpoint/references/tests.py","gemini-cli":".agents/skills/drf-endpoint/references/tests.py","antigravity-cli":".agents/skills/drf-endpoint/references/tests.py","copilot":".agents/skills/drf-endpoint/references/tests.py"}}]},{"id":"electron-app","title":"Electron desktop app rules","summary":"Electron rules for agents: sandboxed renderers, narrow contextBridge APIs, sender-checked IPC, deny-by-default windows, CSP and fuses, with a static security check.","description":"Agents build Electron apps that work and then turn off the protections to make a feature easier: nodeIntegration on, contextIsolation off, ipcRenderer handed straight to the page, shell.openExternal on whatever URL arrives. This loadout writes the Electron security checklist into rules your agent follows, and ships a skill for adding IPC channels the safe way: a named preload function, a fixed channel, an ipcMain.handle that checks event.senderFrame and validates every argument. A small static check catches the common regressions. The verifier type-checks the examples against Electron 44's types and runs the check on a good and an insecure app.","highlights":["contextIsolation, sandbox and nodeIntegration written out, never weakened","IPC through named preload functions; handlers check senderFrame and validate input","Custom app:// protocol instead of file://; deny-by-default window and navigation handlers","Fuses flipped at package time with @electron/fuses","Static check mapped to the numbered Electron security checklist"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["electron","desktop","typescript","nodejs"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["node","npm"],"env":[],"mcp":[]},"credits":[{"title":"Electron docs: security checklist","url":"https://www.electronjs.org/docs/latest/tutorial/security"},{"title":"Electron docs: context isolation","url":"https://www.electronjs.org/docs/latest/tutorial/context-isolation"},{"title":"Electron docs: inter-process communication","url":"https://www.electronjs.org/docs/latest/tutorial/ipc"},{"title":"Electron docs: fuses","url":"https://www.electronjs.org/docs/latest/tutorial/fuses"},{"title":"@electron/fuses on GitHub","url":"https://github.com/electron/fuses"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Electron rules for windows, preload, IPC, packaging and dependencies.","skill":null,"agent":null,"bytes":2687,"lines":42,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":365,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":366,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/electron-ipc-channel/SKILL.md","role":"skill","description":"Add a typed, sender-checked IPC channel.","skill":"electron-ipc-channel","agent":null,"bytes":1365,"lines":21,"install_to":{"claude-code":".claude/skills/electron-ipc-channel/SKILL.md","codex":".agents/skills/electron-ipc-channel/SKILL.md","cursor":".agents/skills/electron-ipc-channel/SKILL.md","gemini-cli":".agents/skills/electron-ipc-channel/SKILL.md","antigravity-cli":".agents/skills/electron-ipc-channel/SKILL.md","copilot":".agents/skills/electron-ipc-channel/SKILL.md"}},{"path":"skills/electron-ipc-channel/references/main.ts","role":"reference","description":"Main process: window, protocol, IPC handlers.","skill":"electron-ipc-channel","agent":null,"bytes":2796,"lines":83,"install_to":{"claude-code":".claude/skills/electron-ipc-channel/references/main.ts","codex":".agents/skills/electron-ipc-channel/references/main.ts","cursor":".agents/skills/electron-ipc-channel/references/main.ts","gemini-cli":".agents/skills/electron-ipc-channel/references/main.ts","antigravity-cli":".agents/skills/electron-ipc-channel/references/main.ts","copilot":".agents/skills/electron-ipc-channel/references/main.ts"}},{"path":"skills/electron-ipc-channel/references/preload.ts","role":"reference","description":"Narrow contextBridge API.","skill":"electron-ipc-channel","agent":null,"bytes":472,"lines":13,"install_to":{"claude-code":".claude/skills/electron-ipc-channel/references/preload.ts","codex":".agents/skills/electron-ipc-channel/references/preload.ts","cursor":".agents/skills/electron-ipc-channel/references/preload.ts","gemini-cli":".agents/skills/electron-ipc-channel/references/preload.ts","antigravity-cli":".agents/skills/electron-ipc-channel/references/preload.ts","copilot":".agents/skills/electron-ipc-channel/references/preload.ts"}},{"path":"skills/electron-ipc-channel/references/renderer-api.d.ts","role":"reference","description":"Window API types for the renderer.","skill":"electron-ipc-channel","agent":null,"bytes":121,"lines":10,"install_to":{"claude-code":".claude/skills/electron-ipc-channel/references/renderer-api.d.ts","codex":".agents/skills/electron-ipc-channel/references/renderer-api.d.ts","cursor":".agents/skills/electron-ipc-channel/references/renderer-api.d.ts","gemini-cli":".agents/skills/electron-ipc-channel/references/renderer-api.d.ts","antigravity-cli":".agents/skills/electron-ipc-channel/references/renderer-api.d.ts","copilot":".agents/skills/electron-ipc-channel/references/renderer-api.d.ts"}},{"path":"skills/electron-ipc-channel/references/flip-fuses.ts","role":"reference","description":"Fuses hardening for packaged builds.","skill":"electron-ipc-channel","agent":null,"bytes":854,"lines":18,"install_to":{"claude-code":".claude/skills/electron-ipc-channel/references/flip-fuses.ts","codex":".agents/skills/electron-ipc-channel/references/flip-fuses.ts","cursor":".agents/skills/electron-ipc-channel/references/flip-fuses.ts","gemini-cli":".agents/skills/electron-ipc-channel/references/flip-fuses.ts","antigravity-cli":".agents/skills/electron-ipc-channel/references/flip-fuses.ts","copilot":".agents/skills/electron-ipc-channel/references/flip-fuses.ts"}},{"path":"skills/electron-ipc-channel/scripts/check_electron_security.mjs","role":"reference","description":"Static check against the Electron security checklist.","skill":"electron-ipc-channel","agent":null,"bytes":4396,"lines":81,"install_to":{"claude-code":".claude/skills/electron-ipc-channel/scripts/check_electron_security.mjs","codex":".agents/skills/electron-ipc-channel/scripts/check_electron_security.mjs","cursor":".agents/skills/electron-ipc-channel/scripts/check_electron_security.mjs","gemini-cli":".agents/skills/electron-ipc-channel/scripts/check_electron_security.mjs","antigravity-cli":".agents/skills/electron-ipc-channel/scripts/check_electron_security.mjs","copilot":".agents/skills/electron-ipc-channel/scripts/check_electron_security.mjs"}}]},{"id":"electron-playwright-e2e","title":"Electron end-to-end tests with Playwright","summary":"Playwright tests that drive the real Electron app: secure webPreferences, no Node in the renderer, IPC round trips, input validation and blocked navigation.","description":"Renderer unit tests miss the Electron bugs that matter. A preload leaks ipcRenderer, a handler trusts its input, or someone sets sandbox: false to make a feature work. This loadout gives your agent Playwright's Electron support, set up properly. A fixture gives every test its own app instance and an empty userData folder, with a relaunch for persistence tests. An example suite asserts the secure webPreferences from the main process and checks that the renderer sees only the preload API. It drives an IPC feature through the UI and onto disk and back after a restart, checks the handler rejects bad input, and confirms that window.open and navigation are denied. A CI workflow runs it under xvfb on Ubuntu. The verifier runs the suite against a sandboxed Electron 44.9.0 app with @playwright/test 1.64.1. It also checks that turning the sandbox off or exposing ipcRenderer fails a test.","highlights":["Fresh app and userData per test, with relaunch for persistence","Security assertions: sandbox, contextIsolation, no Node in the renderer","IPC tested end to end, including handler validation","Runs headless on Linux CI under xvfb-run","Verified on Electron 44.9.0 and @playwright/test 1.64.1"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","security"],"stacks":["electron","playwright","javascript","desktop","github-actions"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["node","npm","xvfb-run"],"env":[],"mcp":[]},"credits":[{"title":"Playwright docs: Electron","url":"https://playwright.dev/docs/api/class-electron"},{"title":"Playwright docs: test fixtures","url":"https://playwright.dev/docs/test-fixtures"},{"title":"Electron docs: automated testing","url":"https://www.electronjs.org/docs/latest/tutorial/automated-testing"},{"title":"Electron docs: security checklist","url":"https://www.electronjs.org/docs/latest/tutorial/security"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for an Electron app whose security settings and IPC are covered by Playwright end-to-end tests.","skill":null,"agent":null,"bytes":1371,"lines":24,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":388,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":389,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/electron-e2e-test/SKILL.md","role":"skill","description":"Setup, what every suite covers, rules and CI.","skill":"electron-e2e-test","agent":null,"bytes":3583,"lines":63,"install_to":{"claude-code":".claude/skills/electron-e2e-test/SKILL.md","codex":".agents/skills/electron-e2e-test/SKILL.md","cursor":".agents/skills/electron-e2e-test/SKILL.md","gemini-cli":".agents/skills/electron-e2e-test/SKILL.md","antigravity-cli":".agents/skills/electron-e2e-test/SKILL.md","copilot":".agents/skills/electron-e2e-test/SKILL.md"}},{"path":"skills/electron-e2e-test/references/playwright.config.js","role":"reference","description":"One worker, traces on failure, a CI-only retry.","skill":"electron-e2e-test","agent":null,"bytes":323,"lines":12,"install_to":{"claude-code":".claude/skills/electron-e2e-test/references/playwright.config.js","codex":".agents/skills/electron-e2e-test/references/playwright.config.js","cursor":".agents/skills/electron-e2e-test/references/playwright.config.js","gemini-cli":".agents/skills/electron-e2e-test/references/playwright.config.js","antigravity-cli":".agents/skills/electron-e2e-test/references/playwright.config.js","copilot":".agents/skills/electron-e2e-test/references/playwright.config.js"}},{"path":"skills/electron-e2e-test/references/electron-fixture.js","role":"reference","description":"Per-test app, page and userData fixtures with relaunch.","skill":"electron-e2e-test","agent":null,"bytes":1463,"lines":42,"install_to":{"claude-code":".claude/skills/electron-e2e-test/references/electron-fixture.js","codex":".agents/skills/electron-e2e-test/references/electron-fixture.js","cursor":".agents/skills/electron-e2e-test/references/electron-fixture.js","gemini-cli":".agents/skills/electron-e2e-test/references/electron-fixture.js","antigravity-cli":".agents/skills/electron-e2e-test/references/electron-fixture.js","copilot":".agents/skills/electron-e2e-test/references/electron-fixture.js"}},{"path":"skills/electron-e2e-test/references/app.spec.js","role":"reference","description":"Five end-to-end tests, including security assertions.","skill":"electron-e2e-test","agent":null,"bytes":2659,"lines":54,"install_to":{"claude-code":".claude/skills/electron-e2e-test/references/app.spec.js","codex":".agents/skills/electron-e2e-test/references/app.spec.js","cursor":".agents/skills/electron-e2e-test/references/app.spec.js","gemini-cli":".agents/skills/electron-e2e-test/references/app.spec.js","antigravity-cli":".agents/skills/electron-e2e-test/references/app.spec.js","copilot":".agents/skills/electron-e2e-test/references/app.spec.js"}},{"path":"skills/electron-e2e-test/references/electron-e2e.yml","role":"reference","description":"GitHub workflow running the suite under xvfb.","skill":"electron-e2e-test","agent":null,"bytes":927,"lines":37,"install_to":{"claude-code":".claude/skills/electron-e2e-test/references/electron-e2e.yml","codex":".agents/skills/electron-e2e-test/references/electron-e2e.yml","cursor":".agents/skills/electron-e2e-test/references/electron-e2e.yml","gemini-cli":".agents/skills/electron-e2e-test/references/electron-e2e.yml","antigravity-cli":".agents/skills/electron-e2e-test/references/electron-e2e.yml","copilot":".agents/skills/electron-e2e-test/references/electron-e2e.yml"}}]},{"id":"evals-from-real-failures","title":"Evals from real failures","summary":"Build LLM and agent evals the practitioner way: read real traces first, tally failure categories, then turn each into code-checked regression cases.","description":"Teams that ship LLM features keep giving the same advice: look at your data before writing an eval, and test for the failures you actually have rather than generic scores. This loadout makes that the default. The agent reads 30 to 50 real traces, notes the first failure in each, groups and counts the notes with a small script, and only then writes evals: code checks first, a binary model judge only where code cannot check, validated against human labels. Every case links to the trace it came from and must be shown to fail on the original bad output.","highlights":["Error analysis before evals: one note per trace, categories after reading","tally.py ranks failure categories with shares and example trace ids","pytest regression runner with code checks; every case links to a real trace","Model judges binary only, checked against human labels","Each eval proven to fail on the original bad output"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents","data"],"stacks":["python","pytest","uv"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":2,"mcp":0},"requires":{"tools":["python3","uv"],"env":[],"mcp":[]},"credits":[{"title":"Hamel Husain: LLM evals FAQ (error analysis first)","url":"https://hamel.dev/blog/posts/evals-faq/"},{"title":"@HamelHusain: eval skills that start from real traces","url":"https://x.com/HamelHusain/status/2089438973714440196"},{"title":"@Benogju: look at the data, start with around 30 traces","url":"https://x.com/Benogju/status/2104930651573240043"},{"title":"@pauliusztin_: replay your agent's real failures after every change","url":"https://x.com/pauliusztin_/status/2109986591959626178"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Order of work and rules for evals built from real traces.","skill":null,"agent":null,"bytes":1764,"lines":27,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":388,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":389,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/error-analysis/SKILL.md","role":"skill","description":"Read traces, note failures, group and count them.","skill":"error-analysis","agent":null,"bytes":1827,"lines":28,"install_to":{"claude-code":".claude/skills/error-analysis/SKILL.md","codex":".agents/skills/error-analysis/SKILL.md","cursor":".agents/skills/error-analysis/SKILL.md","gemini-cli":".agents/skills/error-analysis/SKILL.md","antigravity-cli":".agents/skills/error-analysis/SKILL.md","copilot":".agents/skills/error-analysis/SKILL.md"}},{"path":"skills/error-analysis/scripts/tally.py","role":"reference","description":"Ranks failure categories from a notes CSV.","skill":"error-analysis","agent":null,"bytes":1707,"lines":46,"install_to":{"claude-code":".claude/skills/error-analysis/scripts/tally.py","codex":".agents/skills/error-analysis/scripts/tally.py","cursor":".agents/skills/error-analysis/scripts/tally.py","gemini-cli":".agents/skills/error-analysis/scripts/tally.py","antigravity-cli":".agents/skills/error-analysis/scripts/tally.py","copilot":".agents/skills/error-analysis/scripts/tally.py"}},{"path":"skills/failure-to-eval/SKILL.md","role":"skill","description":"Turn a failure category into regression cases.","skill":"failure-to-eval","agent":null,"bytes":1636,"lines":23,"install_to":{"claude-code":".claude/skills/failure-to-eval/SKILL.md","codex":".agents/skills/failure-to-eval/SKILL.md","cursor":".agents/skills/failure-to-eval/SKILL.md","gemini-cli":".agents/skills/failure-to-eval/SKILL.md","antigravity-cli":".agents/skills/failure-to-eval/SKILL.md","copilot":".agents/skills/failure-to-eval/SKILL.md"}},{"path":"skills/failure-to-eval/references/test_regressions.py","role":"reference","description":"pytest runner for JSONL cases with code checks.","skill":"failure-to-eval","agent":null,"bytes":2381,"lines":70,"install_to":{"claude-code":".claude/skills/failure-to-eval/references/test_regressions.py","codex":".agents/skills/failure-to-eval/references/test_regressions.py","cursor":".agents/skills/failure-to-eval/references/test_regressions.py","gemini-cli":".agents/skills/failure-to-eval/references/test_regressions.py","antigravity-cli":".agents/skills/failure-to-eval/references/test_regressions.py","copilot":".agents/skills/failure-to-eval/references/test_regressions.py"}},{"path":"skills/failure-to-eval/references/judge-prompt.md","role":"reference","description":"Binary judge template with a validation step.","skill":"failure-to-eval","agent":null,"bytes":596,"lines":18,"install_to":{"claude-code":".claude/skills/failure-to-eval/references/judge-prompt.md","codex":".agents/skills/failure-to-eval/references/judge-prompt.md","cursor":".agents/skills/failure-to-eval/references/judge-prompt.md","gemini-cli":".agents/skills/failure-to-eval/references/judge-prompt.md","antigravity-cli":".agents/skills/failure-to-eval/references/judge-prompt.md","copilot":".agents/skills/failure-to-eval/references/judge-prompt.md"}}]},{"id":"expo-react-native","title":"Expo and React Native with Expo MCP","summary":"Expo rules for agents plus Expo's official MCP server: npx expo install, Expo Router, no secrets in EXPO_PUBLIC_, no production EAS releases, check on a simulator.","description":"Expo now ships its own agent tooling: new projects include an AGENTS.md, Claude Code and Codex have an official Expo plugin, and the hosted Expo MCP server (free plan included) gives agents current docs, EAS build logs and simulator screenshots. This loadout adds the project rules agents still get wrong: SDK-matched installs with npx expo install, never editing generated native folders, EXPO_PUBLIC_ variables treated as public, development builds for native packages, and no production builds, submits or updates unless asked.","highlights":["Expo MCP server (remote, OAuth) for docs, EAS logs and screenshots","npx expo install and expo-doctor after every dependency change","Generated ios/ and android/ folders left alone under CNG","EXPO_PUBLIC_ variables treated as public; no secrets in the app","No production eas build, submit or update without being asked"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["react-native","expo","typescript","ios","android"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":1,"skills":1,"mcp":1},"requires":{"tools":["node"],"env":[],"mcp":["expo"]},"credits":[{"title":"Expo docs: AI agents and Expo","url":"https://docs.expo.dev/agents/"},{"title":"Expo docs: Expo MCP server","url":"https://docs.expo.dev/mcp/"},{"title":"Expo changelog: Expo MCP server on the Free plan","url":"https://expo.dev/changelog/the-expo-mcp-server-is-now-available-on-the-free-plan"},{"title":"@KhalidDevLog: daily mobile MCPs (XcodeBuildMCP, Expo MCP, Figma MCP)","url":"https://x.com/KhalidDevLog/status/2096183096697586039"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Expo, Expo Router and EAS rules, with Expo MCP usage.","skill":null,"agent":null,"bytes":2022,"lines":29,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":497,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":371,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/expo-change/SKILL.md","role":"skill","description":"Feature or fix with docs lookup, checks and a simulator check.","skill":"expo-change","agent":null,"bytes":1237,"lines":17,"install_to":{"claude-code":".claude/skills/expo-change/SKILL.md","codex":".agents/skills/expo-change/SKILL.md","cursor":".agents/skills/expo-change/SKILL.md","gemini-cli":".agents/skills/expo-change/SKILL.md","antigravity-cli":".agents/skills/expo-change/SKILL.md","copilot":".agents/skills/expo-change/SKILL.md"}},{"path":"mcp.json","role":"mcp","description":"Expo MCP server (remote, OAuth).","skill":null,"agent":null,"bytes":108,"lines":9,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}}]},{"id":"expo-eas-update","title":"Expo EAS Update without shipping native changes over the air","summary":"Checks whether an Expo change can ship as an EAS Update or needs a new build, using the native fingerprint; preview by CI, production rollouts by a person.","description":"An EAS Update swaps the JavaScript inside a build, but it cannot add native code. An agent that installs expo-camera and then runs eas update ships a crash to every user on that build. This loadout gives your agent a check it runs before any update. It records the native fingerprint when a store build is cut, then compares the current project against it with expo-updates' own fingerprint tool. JavaScript and version bumps pass. A new native module, config plugin or permission fails, and the output names what changed. A config check makes sure runtimeVersion uses the fingerprint policy, updates.url matches the project and every build profile has its own channel. It validates eas.json with Expo's own parser. CI publishes to preview only. Production goes out as a staged rollout run by a person. The verifier runs it on Expo SDK 58 with expo-updates 58.0.17.","highlights":["OTA-safe or needs a new build, from the expo-updates native fingerprint","Names what changed: added native modules, config, autolinking","Fingerprint runtime policy, matching updates.url, one channel per build profile","CI publishes to preview only; production is a person's staged rollout","Verified on Expo SDK 58, expo-updates 58.0.17 and @expo/eas-json 25.1.1"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","workflow"],"stacks":["expo","react-native","typescript","github-actions"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["node","npm"],"env":[],"mcp":[]},"credits":[{"title":"Expo docs: runtime versions and updates","url":"https://docs.expo.dev/eas-update/runtime-versions/"},{"title":"Expo docs: EAS Update rollouts","url":"https://docs.expo.dev/eas-update/rollouts/"},{"title":"Expo docs: fingerprint","url":"https://docs.expo.dev/versions/latest/sdk/fingerprint/"},{"title":"Expo docs: configure EAS Build with eas.json","url":"https://docs.expo.dev/build/eas-json/"},{"title":"expo/eas-cli","url":"https://github.com/expo/eas-cli"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for an Expo app updated over the air with EAS Update, where native changes always get a new build.","skill":null,"agent":null,"bytes":1558,"lines":25,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":400,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":401,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/eas-update-release/SKILL.md","role":"skill","description":"Config, the OTA-safe check, and who publishes where.","skill":"eas-update-release","agent":null,"bytes":4001,"lines":82,"install_to":{"claude-code":".claude/skills/eas-update-release/SKILL.md","codex":".agents/skills/eas-update-release/SKILL.md","cursor":".agents/skills/eas-update-release/SKILL.md","gemini-cli":".agents/skills/eas-update-release/SKILL.md","antigravity-cli":".agents/skills/eas-update-release/SKILL.md","copilot":".agents/skills/eas-update-release/SKILL.md"}},{"path":"skills/eas-update-release/scripts/ota_check.mjs","role":"reference","description":"config, record and compare: fingerprint and update config checks.","skill":"eas-update-release","agent":null,"bytes":6359,"lines":114,"install_to":{"claude-code":".claude/skills/eas-update-release/scripts/ota_check.mjs","codex":".agents/skills/eas-update-release/scripts/ota_check.mjs","cursor":".agents/skills/eas-update-release/scripts/ota_check.mjs","gemini-cli":".agents/skills/eas-update-release/scripts/ota_check.mjs","antigravity-cli":".agents/skills/eas-update-release/scripts/ota_check.mjs","copilot":".agents/skills/eas-update-release/scripts/ota_check.mjs"}},{"path":"skills/eas-update-release/references/app.json","role":"reference","description":"App config with the fingerprint policy and updates.url.","skill":"eas-update-release","agent":null,"bytes":571,"lines":19,"install_to":{"claude-code":".claude/skills/eas-update-release/references/app.json","codex":".agents/skills/eas-update-release/references/app.json","cursor":".agents/skills/eas-update-release/references/app.json","gemini-cli":".agents/skills/eas-update-release/references/app.json","antigravity-cli":".agents/skills/eas-update-release/references/app.json","copilot":".agents/skills/eas-update-release/references/app.json"}},{"path":"skills/eas-update-release/references/eas.json","role":"reference","description":"Build profiles with one channel each.","skill":"eas-update-release","agent":null,"bytes":402,"lines":24,"install_to":{"claude-code":".claude/skills/eas-update-release/references/eas.json","codex":".agents/skills/eas-update-release/references/eas.json","cursor":".agents/skills/eas-update-release/references/eas.json","gemini-cli":".agents/skills/eas-update-release/references/eas.json","antigravity-cli":".agents/skills/eas-update-release/references/eas.json","copilot":".agents/skills/eas-update-release/references/eas.json"}},{"path":"skills/eas-update-release/references/eas-update-preview.yml","role":"reference","description":"GitHub workflow: publish to preview only when OTA-safe.","skill":"eas-update-release","agent":null,"bytes":1376,"lines":43,"install_to":{"claude-code":".claude/skills/eas-update-release/references/eas-update-preview.yml","codex":".agents/skills/eas-update-release/references/eas-update-preview.yml","cursor":".agents/skills/eas-update-release/references/eas-update-preview.yml","gemini-cli":".agents/skills/eas-update-release/references/eas-update-preview.yml","antigravity-cli":".agents/skills/eas-update-release/references/eas-update-preview.yml","copilot":".agents/skills/eas-update-release/references/eas-update-preview.yml"}}]},{"id":"fastapi-service","title":"FastAPI service rules","summary":"Rules and an endpoint skill for FastAPI with uv and Pydantic v2: Annotated dependencies, typed responses, async only when awaited, lifespan, tested routes.","description":"FastAPI is one of the stacks agents write most often, and the same mistakes keep turning up in their output: blocking calls inside async routes, ORM objects returned unvalidated, Pydantic v1 syntax, on_event hooks, wildcard CORS with credentials. This loadout pins the current conventions from the FastAPI docs (Annotated dependencies, return-type response models, lifespan, dependency overrides in tests) and gives the agent an endpoint skill with an example router and tests that the verifier runs.","highlights":["uv for everything: uv add, uv run fastapi dev, uv run pytest","Annotated[..., Depends()] aliases and dependency_overrides in tests","async def only when everything inside is awaited","Typed response models; 201, 404 and 422 handled properly","Example router and tests checked by the verifier"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["python","fastapi","uv","pytest"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv"],"env":[],"mcp":[]},"credits":[{"title":"FastAPI docs: dependencies with Annotated","url":"https://fastapi.tiangolo.com/tutorial/dependencies/"},{"title":"FastAPI docs: concurrency and async / await","url":"https://fastapi.tiangolo.com/async/"},{"title":"FastAPI docs: lifespan events","url":"https://fastapi.tiangolo.com/advanced/events/"},{"title":"FastAPI docs: testing dependencies with overrides","url":"https://fastapi.tiangolo.com/advanced/testing-dependencies/"},{"title":"@geronco: CLAUDE.md templates per framework with exact commands and a never-do list","url":"https://x.com/geronco/status/2108014691582681184"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"FastAPI, Pydantic v2 and uv rules with commands.","skill":null,"agent":null,"bytes":2251,"lines":34,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":355,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":356,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/add-endpoint/SKILL.md","role":"skill","description":"Add a typed, tested FastAPI route.","skill":"add-endpoint","agent":null,"bytes":1081,"lines":17,"install_to":{"claude-code":".claude/skills/add-endpoint/SKILL.md","codex":".agents/skills/add-endpoint/SKILL.md","cursor":".agents/skills/add-endpoint/SKILL.md","gemini-cli":".agents/skills/add-endpoint/SKILL.md","antigravity-cli":".agents/skills/add-endpoint/SKILL.md","copilot":".agents/skills/add-endpoint/SKILL.md"}},{"path":"skills/add-endpoint/references/items.py","role":"reference","description":"Example router with models and a dependency.","skill":"add-endpoint","agent":null,"bytes":1417,"lines":57,"install_to":{"claude-code":".claude/skills/add-endpoint/references/items.py","codex":".agents/skills/add-endpoint/references/items.py","cursor":".agents/skills/add-endpoint/references/items.py","gemini-cli":".agents/skills/add-endpoint/references/items.py","antigravity-cli":".agents/skills/add-endpoint/references/items.py","copilot":".agents/skills/add-endpoint/references/items.py"}},{"path":"skills/add-endpoint/references/test_items.py","role":"reference","description":"Tests for success, 404 and 422 with an override.","skill":"add-endpoint","agent":null,"bytes":943,"lines":33,"install_to":{"claude-code":".claude/skills/add-endpoint/references/test_items.py","codex":".agents/skills/add-endpoint/references/test_items.py","cursor":".agents/skills/add-endpoint/references/test_items.py","gemini-cli":".agents/skills/add-endpoint/references/test_items.py","antigravity-cli":".agents/skills/add-endpoint/references/test_items.py","copilot":".agents/skills/add-endpoint/references/test_items.py"}}]},{"id":"fastapi-async-sqlalchemy","title":"FastAPI with async SQLAlchemy 2.1 and Alembic","summary":"FastAPI on async SQLAlchemy 2.1: per-request AsyncSession, lazy=\"raise\" with eager loads, async Alembic with alembic check, and tests that count queries.","description":"Agents writing async SQLAlchemy reach for habits from sync code. They lazy-load a relationship inside an async route and hit MissingGreenlet, or share one AsyncSession across asyncio.gather. SQLAlchemy 2.1 adds a new trap: it no longer installs greenlet, so a project that declares plain sqlalchemy cannot start an async engine. This loadout sets the rules: a per-request session dependency, expire_on_commit=False, lazy=\"raise\" on every relationship with selectinload for what the response needs, explicit commits with IntegrityError mapped to 409, and database URLs from the environment. The skill adds a resource end to end, with model, reviewed Alembic migration, router and async tests that assert the query count. The verifier runs the tests on SQLAlchemy 2.1.5 and FastAPI 0.143.3. It upgrades and downgrades the migration, confirms alembic check catches model drift, and shows the greenlet failure.","highlights":["SQLAlchemy 2.1 needs sqlalchemy[asyncio]; the verifier shows the greenlet error","lazy=\"raise\" plus selectinload: the list test asserts exactly two SELECTs","One AsyncSession per request, never shared across tasks","Async Alembic env from DATABASE_URL; alembic check catches model drift","httpx AsyncClient over ASGITransport with a fresh database per test"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","data"],"stacks":["python","fastapi","sqlalchemy","uv","pytest"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv","python3"],"env":[],"mcp":[]},"credits":[{"title":"SQLAlchemy 2.1 docs: asynchronous I/O (asyncio)","url":"https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html"},{"title":"SQLAlchemy 2.1 docs: what's new (greenlet no longer installed by default)","url":"https://docs.sqlalchemy.org/en/21/changelog/migration_21.html"},{"title":"SQLAlchemy docs: relationship loading techniques (raise loading)","url":"https://docs.sqlalchemy.org/en/21/orm/queryguide/relationships.html"},{"title":"Alembic docs: autogenerate and alembic check","url":"https://alembic.sqlalchemy.org/en/latest/autogenerate.html"},{"title":"FastAPI docs: async tests","url":"https://fastapi.tiangolo.com/advanced/async-tests/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for a FastAPI service on async SQLAlchemy 2.1 with Alembic and uv.","skill":null,"agent":null,"bytes":1918,"lines":29,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":401,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":402,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/async-sqlalchemy-resource/SKILL.md","role":"skill","description":"Model, migration, router and tests for a new resource.","skill":"async-sqlalchemy-resource","agent":null,"bytes":2983,"lines":60,"install_to":{"claude-code":".claude/skills/async-sqlalchemy-resource/SKILL.md","codex":".agents/skills/async-sqlalchemy-resource/SKILL.md","cursor":".agents/skills/async-sqlalchemy-resource/SKILL.md","gemini-cli":".agents/skills/async-sqlalchemy-resource/SKILL.md","antigravity-cli":".agents/skills/async-sqlalchemy-resource/SKILL.md","copilot":".agents/skills/async-sqlalchemy-resource/SKILL.md"}},{"path":"skills/async-sqlalchemy-resource/references/db.py","role":"reference","description":"Async engine, session factory and SessionDep.","skill":"async-sqlalchemy-resource","agent":null,"bytes":928,"lines":29,"install_to":{"claude-code":".claude/skills/async-sqlalchemy-resource/references/db.py","codex":".agents/skills/async-sqlalchemy-resource/references/db.py","cursor":".agents/skills/async-sqlalchemy-resource/references/db.py","gemini-cli":".agents/skills/async-sqlalchemy-resource/references/db.py","antigravity-cli":".agents/skills/async-sqlalchemy-resource/references/db.py","copilot":".agents/skills/async-sqlalchemy-resource/references/db.py"}},{"path":"skills/async-sqlalchemy-resource/references/models.py","role":"reference","description":"Typed models with lazy=\"raise\" relationships.","skill":"async-sqlalchemy-resource","agent":null,"bytes":928,"lines":27,"install_to":{"claude-code":".claude/skills/async-sqlalchemy-resource/references/models.py","codex":".agents/skills/async-sqlalchemy-resource/references/models.py","cursor":".agents/skills/async-sqlalchemy-resource/references/models.py","gemini-cli":".agents/skills/async-sqlalchemy-resource/references/models.py","antigravity-cli":".agents/skills/async-sqlalchemy-resource/references/models.py","copilot":".agents/skills/async-sqlalchemy-resource/references/models.py"}},{"path":"skills/async-sqlalchemy-resource/references/customers.py","role":"reference","description":"Router with eager loads, commits and 409/404 handling.","skill":"async-sqlalchemy-resource","agent":null,"bytes":2147,"lines":64,"install_to":{"claude-code":".claude/skills/async-sqlalchemy-resource/references/customers.py","codex":".agents/skills/async-sqlalchemy-resource/references/customers.py","cursor":".agents/skills/async-sqlalchemy-resource/references/customers.py","gemini-cli":".agents/skills/async-sqlalchemy-resource/references/customers.py","antigravity-cli":".agents/skills/async-sqlalchemy-resource/references/customers.py","copilot":".agents/skills/async-sqlalchemy-resource/references/customers.py"}},{"path":"skills/async-sqlalchemy-resource/references/0001_customers_orders.py","role":"reference","description":"Reviewed Alembic migration with a working downgrade.","skill":"async-sqlalchemy-resource","agent":null,"bytes":1167,"lines":41,"install_to":{"claude-code":".claude/skills/async-sqlalchemy-resource/references/0001_customers_orders.py","codex":".agents/skills/async-sqlalchemy-resource/references/0001_customers_orders.py","cursor":".agents/skills/async-sqlalchemy-resource/references/0001_customers_orders.py","gemini-cli":".agents/skills/async-sqlalchemy-resource/references/0001_customers_orders.py","antigravity-cli":".agents/skills/async-sqlalchemy-resource/references/0001_customers_orders.py","copilot":".agents/skills/async-sqlalchemy-resource/references/0001_customers_orders.py"}},{"path":"skills/async-sqlalchemy-resource/references/alembic_env.py","role":"reference","description":"Async Alembic env.py reading DATABASE_URL.","skill":"async-sqlalchemy-resource","agent":null,"bytes":1443,"lines":45,"install_to":{"claude-code":".claude/skills/async-sqlalchemy-resource/references/alembic_env.py","codex":".agents/skills/async-sqlalchemy-resource/references/alembic_env.py","cursor":".agents/skills/async-sqlalchemy-resource/references/alembic_env.py","gemini-cli":".agents/skills/async-sqlalchemy-resource/references/alembic_env.py","antigravity-cli":".agents/skills/async-sqlalchemy-resource/references/alembic_env.py","copilot":".agents/skills/async-sqlalchemy-resource/references/alembic_env.py"}},{"path":"skills/async-sqlalchemy-resource/references/test_customers.py","role":"reference","description":"Async tests with a query-count N+1 guard.","skill":"async-sqlalchemy-resource","agent":null,"bytes":3309,"lines":88,"install_to":{"claude-code":".claude/skills/async-sqlalchemy-resource/references/test_customers.py","codex":".agents/skills/async-sqlalchemy-resource/references/test_customers.py","cursor":".agents/skills/async-sqlalchemy-resource/references/test_customers.py","gemini-cli":".agents/skills/async-sqlalchemy-resource/references/test_customers.py","antigravity-cli":".agents/skills/async-sqlalchemy-resource/references/test_customers.py","copilot":".agents/skills/async-sqlalchemy-resource/references/test_customers.py"}}]},{"id":"github-actions-hardening","title":"GitHub Actions hardening for agent workflows","summary":"Rules and a zizmor skill for agents editing GitHub Actions: SHA-pinned actions, permissions: {}, no template injection, no pull_request_target, read-only agent jobs.","description":"Agents now write and edit CI workflows, and increasingly run inside them on untrusted issue and PR text. The common mistakes are the ones attackers use: actions pinned to a movable tag, an issue title expanded straight into a shell script, pull_request_target checking out fork code, a default token with write access to everything. This loadout gives your agent the hardening rules from GitHub's secure-use guide and Security Lab, a pattern for agent workflows that separates thinking (read-only) from acting (narrow writes), and a skill that runs zizmor offline and fixes each audit. The verifier runs zizmor 1.31.1 on the example workflow (clean) and on an unsafe agent-triage workflow.","highlights":["Actions pinned to full commit SHAs, kept current by Dependabot","permissions: {} at the top; per-job grants; persist-credentials: false","Untrusted event text through env, never inline in run","Agent jobs read-only; a separate narrow job applies their output","zizmor --offline as the check, no token needed"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["security","workflow"],"stacks":["github-actions","github"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv","gh"],"env":[],"mcp":[]},"credits":[{"title":"GitHub docs: secure use reference for Actions","url":"https://docs.github.com/en/actions/reference/security/secure-use"},{"title":"GitHub Security Lab: preventing pwn requests","url":"https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/"},{"title":"zizmor: static analysis for GitHub Actions","url":"https://github.com/zizmorcore/zizmor"},{"title":"zizmor docs: audit rules","url":"https://docs.zizmor.sh/audits/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for writing and changing GitHub Actions workflows, including ones that run AI agents.","skill":null,"agent":null,"bytes":2314,"lines":33,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":390,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":391,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/harden-workflow/SKILL.md","role":"skill","description":"Audit with zizmor and fix each finding.","skill":"harden-workflow","agent":null,"bytes":1638,"lines":26,"install_to":{"claude-code":".claude/skills/harden-workflow/SKILL.md","codex":".agents/skills/harden-workflow/SKILL.md","cursor":".agents/skills/harden-workflow/SKILL.md","gemini-cli":".agents/skills/harden-workflow/SKILL.md","antigravity-cli":".agents/skills/harden-workflow/SKILL.md","copilot":".agents/skills/harden-workflow/SKILL.md"}},{"path":"skills/harden-workflow/references/issue-triage.yml","role":"reference","description":"Hardened example workflow.","skill":"harden-workflow","agent":null,"bytes":1143,"lines":38,"install_to":{"claude-code":".claude/skills/harden-workflow/references/issue-triage.yml","codex":".agents/skills/harden-workflow/references/issue-triage.yml","cursor":".agents/skills/harden-workflow/references/issue-triage.yml","gemini-cli":".agents/skills/harden-workflow/references/issue-triage.yml","antigravity-cli":".agents/skills/harden-workflow/references/issue-triage.yml","copilot":".agents/skills/harden-workflow/references/issue-triage.yml"}}]},{"id":"go-service","title":"Go service rules","summary":"Go rules for agents: wrapped errors with errors.Is, context first, owned goroutines, 1.22+ routing, timeouts, and gofmt, vet and go test -race as the gate.","description":"Go is simple enough that agents produce working code fast, and idiomatic enough that reviewers spot the shortcuts: errors compared by string, goroutines with no way to stop, the default HTTP client with no timeout, a router library for what the standard mux now does. This loadout writes down the conventions from Effective Go and the Go blog, uses Go 1.22's method and path patterns, and ships a handler skill whose example and table-driven tests the verifier runs under the race detector.","highlights":["gofmt, go vet and go test -race as the done-gate","Errors wrapped with %w and checked with errors.Is / errors.As","context first; every goroutine has an owner and a stop","Go 1.22+ ServeMux patterns; no router library needed","Server and client timeouts, size-limited JSON bodies"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["go"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["go"],"env":[],"mcp":[]},"credits":[{"title":"Effective Go","url":"https://go.dev/doc/effective_go"},{"title":"Go blog: routing enhancements for Go 1.22","url":"https://go.dev/blog/routing-enhancements"},{"title":"Go blog: working with errors in Go 1.13","url":"https://go.dev/blog/go1.13-errors"},{"title":"@geronco: CLAUDE.md templates per framework with exact commands and a never-do list","url":"https://x.com/geronco/status/2108014691582681184"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Go rules for errors, concurrency, HTTP and dependencies.","skill":null,"agent":null,"bytes":1881,"lines":33,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":348,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":349,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/go-http-handler/SKILL.md","role":"skill","description":"Add an HTTP handler with tests.","skill":"go-http-handler","agent":null,"bytes":1018,"lines":16,"install_to":{"claude-code":".claude/skills/go-http-handler/SKILL.md","codex":".agents/skills/go-http-handler/SKILL.md","cursor":".agents/skills/go-http-handler/SKILL.md","gemini-cli":".agents/skills/go-http-handler/SKILL.md","antigravity-cli":".agents/skills/go-http-handler/SKILL.md","copilot":".agents/skills/go-http-handler/SKILL.md"}},{"path":"skills/go-http-handler/references/handler.go","role":"reference","description":"Example handlers with routing and error mapping.","skill":"go-http-handler","agent":null,"bytes":2740,"lines":107,"install_to":{"claude-code":".claude/skills/go-http-handler/references/handler.go","codex":".agents/skills/go-http-handler/references/handler.go","cursor":".agents/skills/go-http-handler/references/handler.go","gemini-cli":".agents/skills/go-http-handler/references/handler.go","antigravity-cli":".agents/skills/go-http-handler/references/handler.go","copilot":".agents/skills/go-http-handler/references/handler.go"}},{"path":"skills/go-http-handler/references/handler_test.go","role":"reference","description":"Table-driven httptest tests.","skill":"go-http-handler","agent":null,"bytes":1196,"lines":39,"install_to":{"claude-code":".claude/skills/go-http-handler/references/handler_test.go","codex":".agents/skills/go-http-handler/references/handler_test.go","cursor":".agents/skills/go-http-handler/references/handler_test.go","gemini-cli":".agents/skills/go-http-handler/references/handler_test.go","antigravity-cli":".agents/skills/go-http-handler/references/handler_test.go","copilot":".agents/skills/go-http-handler/references/handler_test.go"}}]},{"id":"godot-blender-mcp","title":"Godot and Blender through MCP","summary":"Drive Godot 4 and Blender from one agent: Godot MCP to run the game and read errors, MCP for Blender in safe mode to model assets, and a glTF pipeline between them.","description":"Solo game developers were posting the same setup all autumn: one agent with a Godot MCP server and a Blender MCP server,\na folder of reference images for the art style, and models flowing from Blender into the game. This loadout pins both\nservers (@coding-solo/godot-mcp and mcp-for-blender with safe mode on and telemetry off) and adds the rules that keep it\nsafe and shippable: save before Blender changes, look at the viewport after every step, typed GDScript, run the game and\nread the debug output, and a glTF export checklist so assets arrive game-ready.","highlights":["Pinned Godot MCP and MCP for Blender servers in one config","Blender safe mode on: no file, network or process access from scripts","Style matched to reference images in art/reference/","Blender to Godot glTF pipeline skill with a game-ready checklist","Run the game and treat new debug errors as failures"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["gamedev"],"stacks":["godot","gdscript","blender"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":1,"skills":1,"mcp":1},"requires":{"tools":["node","uv","godot","blender"],"env":[],"mcp":["godot","blender"]},"credits":[{"title":"@seftsaint: Godot MCP plus Blender MCP with a reference image folder","url":"https://x.com/seftsaint/status/2099527048515788847"},{"title":"Coding-Solo/godot-mcp","url":"https://github.com/Coding-Solo/godot-mcp"},{"title":"ahujasid/blender-mcp (MCP for Blender)","url":"https://github.com/ahujasid/blender-mcp"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for driving Godot and Blender through MCP.","skill":null,"agent":null,"bytes":1810,"lines":27,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":496,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":370,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"mcp.json","role":"mcp","description":"Godot MCP and MCP for Blender, pinned, safe mode on.","skill":null,"agent":null,"bytes":311,"lines":17,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}},{"path":"skills/blender-to-godot/SKILL.md","role":"skill","description":"Model in Blender, export glTF, place and test in Godot.","skill":"blender-to-godot","agent":null,"bytes":1312,"lines":18,"install_to":{"claude-code":".claude/skills/blender-to-godot/SKILL.md","codex":".agents/skills/blender-to-godot/SKILL.md","cursor":".agents/skills/blender-to-godot/SKILL.md","gemini-cli":".agents/skills/blender-to-godot/SKILL.md","antigravity-cli":".agents/skills/blender-to-godot/SKILL.md","copilot":".agents/skills/blender-to-godot/SKILL.md"}},{"path":"skills/blender-to-godot/references/asset-checklist.md","role":"reference","description":"Game-ready asset checklist.","skill":"blender-to-godot","agent":null,"bytes":711,"lines":12,"install_to":{"claude-code":".claude/skills/blender-to-godot/references/asset-checklist.md","codex":".agents/skills/blender-to-godot/references/asset-checklist.md","cursor":".agents/skills/blender-to-godot/references/asset-checklist.md","gemini-cli":".agents/skills/blender-to-godot/references/asset-checklist.md","antigravity-cli":".agents/skills/blender-to-godot/references/asset-checklist.md","copilot":".agents/skills/blender-to-godot/references/asset-checklist.md"}}]},{"id":"ralph-loop-guarded","title":"Guarded Ralph loop","summary":"Run an agent in a Ralph-style loop with guard rails: a fresh process per pass, state in files, iteration and no-progress limits, and a check it cannot fake.","description":"The Ralph loop (one prompt, re-run in a fresh agent process until the work is done) went mainstream this autumn: Claude Code and Codex both shipped /goal, and practitioners noticed that plugin versions often keep one long context instead of clearing it. This loadout keeps the original idea and adds the limits people learnt the hard way: a branch-only runner, a check command run outside the agent every pass, a false DONE removed, an edited prompt ending the loop, iteration, timeout and no-progress caps, and a STOP file. A self-test drives the runner with fake agents through every exit path.","highlights":["Fresh agent process per pass; plan, progress and prompt live in .ralph/","DONE only counts when the check passes outside the agent","Iteration, per-pass timeout and no-progress limits, plus a STOP file","Refuses to run on main or master; never pushes or merges","Works with claude -p, codex exec and agy -p; /goal compared honestly"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","ai-agents"],"stacks":["any","bash","git"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["bash","git"],"env":[],"mcp":[]},"credits":[{"title":"Geoffrey Huntley: Ralph Wiggum as a software engineer","url":"https://ghuntley.com/ralph/"},{"title":"@DRMacIver: the Claude Ralph plugin didn't clear context between iterations","url":"https://x.com/DRMacIver/status/2102456718915469473"},{"title":"Claude Code docs: keep Claude working toward a goal (/goal)","url":"https://code.claude.com/docs/en/goal"},{"title":"OpenAI cookbook: using Goals in Codex","url":"https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Per-pass rules for an agent running in a loop.","skill":null,"agent":null,"bytes":1468,"lines":23,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":353,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":354,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/ralph-loop/SKILL.md","role":"skill","description":"Set up, run and review a guarded loop.","skill":"ralph-loop","agent":null,"bytes":3145,"lines":54,"install_to":{"claude-code":".claude/skills/ralph-loop/SKILL.md","codex":".agents/skills/ralph-loop/SKILL.md","cursor":".agents/skills/ralph-loop/SKILL.md","gemini-cli":".agents/skills/ralph-loop/SKILL.md","antigravity-cli":".agents/skills/ralph-loop/SKILL.md","copilot":".agents/skills/ralph-loop/SKILL.md"}},{"path":"skills/ralph-loop/references/PROMPT.md","role":"reference","description":"Loop prompt template for .ralph/prompt.md.","skill":"ralph-loop","agent":null,"bytes":790,"lines":17,"install_to":{"claude-code":".claude/skills/ralph-loop/references/PROMPT.md","codex":".agents/skills/ralph-loop/references/PROMPT.md","cursor":".agents/skills/ralph-loop/references/PROMPT.md","gemini-cli":".agents/skills/ralph-loop/references/PROMPT.md","antigravity-cli":".agents/skills/ralph-loop/references/PROMPT.md","copilot":".agents/skills/ralph-loop/references/PROMPT.md"}},{"path":"skills/ralph-loop/scripts/ralph.sh","role":"reference","description":"The guarded runner with limits and exit codes.","skill":"ralph-loop","agent":null,"bytes":2576,"lines":56,"install_to":{"claude-code":".claude/skills/ralph-loop/scripts/ralph.sh","codex":".agents/skills/ralph-loop/scripts/ralph.sh","cursor":".agents/skills/ralph-loop/scripts/ralph.sh","gemini-cli":".agents/skills/ralph-loop/scripts/ralph.sh","antigravity-cli":".agents/skills/ralph-loop/scripts/ralph.sh","copilot":".agents/skills/ralph-loop/scripts/ralph.sh"}},{"path":"skills/ralph-loop/scripts/selftest.sh","role":"reference","description":"Drives the runner with fake agents through every exit path.","skill":"ralph-loop","agent":null,"bytes":2190,"lines":48,"install_to":{"claude-code":".claude/skills/ralph-loop/scripts/selftest.sh","codex":".agents/skills/ralph-loop/scripts/selftest.sh","cursor":".agents/skills/ralph-loop/scripts/selftest.sh","gemini-cli":".agents/skills/ralph-loop/scripts/selftest.sh","antigravity-cli":".agents/skills/ralph-loop/scripts/selftest.sh","copilot":".agents/skills/ralph-loop/scripts/selftest.sh"}}]},{"id":"agent-handoff","title":"Handoff without compaction","summary":"Write HANDOFF.md before you clear context or switch agents: goal, decisions, exact failing test, next step, commit. A checker flags stale or incomplete handoffs.","description":"Automatic compaction keeps what a summariser thought mattered, and decisions are the first thing to go. Practitioners have converged on the same fix: before clearing context or moving work to another agent or person, write a short handoff file with the goal, files touched, decisions and why, the exact failing test and error, and one next step. This loadout makes that a habit. One skill writes HANDOFF.md from git facts and a template; another resumes from it by re-running the verify commands before changing anything. A small checker flags missing sections, leftover placeholders, secrets, and handoffs written at an older commit. The verifier runs the checker through a template, a good handoff, a stale one and a leaky one.","highlights":["Write a handoff before /clear, compaction or switching agents, not after","Template: goal, state, files, decisions, exact failure, next step, verify commands","Checker compares the recorded commit with HEAD and counts the commits since","Resume skill re-runs the checks and confirms the next step before editing","Works across Claude Code, Codex, Antigravity, Cursor and Copilot"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","ai-agents"],"stacks":["any","git"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":2,"mcp":0},"requires":{"tools":["python3","git"],"env":[],"mcp":[]},"credits":[{"title":"@automater_ai: keep a handoff with the goal, files touched, what is done and the next step","url":"https://x.com/automater_ai/status/2107481727073395054"},{"title":"@PublicAI_: handoff notes with goal, files touched, failing test and last error","url":"https://x.com/PublicAI_/status/2104179567510556875"},{"title":"@calloway_dev: one owner per task; read the handoff before starting","url":"https://x.com/calloway_dev/status/2107099970562085278"},{"title":"@jai_kora: record decisions and what still fails, not a narrative","url":"https://x.com/jai_kora/status/2101657904147517719"},{"title":"@agentjeanclaude: commit a handoff file when switching agents; re-add MCP servers","url":"https://x.com/agentjeanclaude/status/2104989005813260667"},{"title":"Claude Code docs: manage costs and context (/clear and /compact)","url":"https://code.claude.com/docs/en/costs"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"When to write and read a handoff file, and what goes in it.","skill":null,"agent":null,"bytes":1782,"lines":28,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":382,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":383,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/write-handoff/SKILL.md","role":"skill","description":"Write HANDOFF.md from git facts and check it.","skill":"write-handoff","agent":null,"bytes":1441,"lines":24,"install_to":{"claude-code":".claude/skills/write-handoff/SKILL.md","codex":".agents/skills/write-handoff/SKILL.md","cursor":".agents/skills/write-handoff/SKILL.md","gemini-cli":".agents/skills/write-handoff/SKILL.md","antigravity-cli":".agents/skills/write-handoff/SKILL.md","copilot":".agents/skills/write-handoff/SKILL.md"}},{"path":"skills/write-handoff/references/HANDOFF.template.md","role":"reference","description":"Handoff template with every required section.","skill":"write-handoff","agent":null,"bytes":557,"lines":31,"install_to":{"claude-code":".claude/skills/write-handoff/references/HANDOFF.template.md","codex":".agents/skills/write-handoff/references/HANDOFF.template.md","cursor":".agents/skills/write-handoff/references/HANDOFF.template.md","gemini-cli":".agents/skills/write-handoff/references/HANDOFF.template.md","antigravity-cli":".agents/skills/write-handoff/references/HANDOFF.template.md","copilot":".agents/skills/write-handoff/references/HANDOFF.template.md"}},{"path":"skills/write-handoff/scripts/check_handoff.py","role":"reference","description":"Checks sections, commit freshness, length and secrets.","skill":"write-handoff","agent":null,"bytes":3305,"lines":76,"install_to":{"claude-code":".claude/skills/write-handoff/scripts/check_handoff.py","codex":".agents/skills/write-handoff/scripts/check_handoff.py","cursor":".agents/skills/write-handoff/scripts/check_handoff.py","gemini-cli":".agents/skills/write-handoff/scripts/check_handoff.py","antigravity-cli":".agents/skills/write-handoff/scripts/check_handoff.py","copilot":".agents/skills/write-handoff/scripts/check_handoff.py"}},{"path":"skills/resume-from-handoff/SKILL.md","role":"skill","description":"Start a session from HANDOFF.md: check, re-run, confirm.","skill":"resume-from-handoff","agent":null,"bytes":1094,"lines":17,"install_to":{"claude-code":".claude/skills/resume-from-handoff/SKILL.md","codex":".agents/skills/resume-from-handoff/SKILL.md","cursor":".agents/skills/resume-from-handoff/SKILL.md","gemini-cli":".agents/skills/resume-from-handoff/SKILL.md","antigravity-cli":".agents/skills/resume-from-handoff/SKILL.md","copilot":".agents/skills/resume-from-handoff/SKILL.md"}}]},{"id":"headless-agents-ci","title":"Headless agents in CI","summary":"Rules and a GitHub Actions template for unattended claude -p or codex exec: bare mode, read-only, a spend cap, pinned versions, PR text as untrusted data.","description":"Running agents from CI is now common (review on every PR, triage, docs updates), and so are the mistakes: a -p run that\nexecutes the repository's own hooks, PR text interpolated into a shell, unpinned CLIs, no budget. This loadout sets the\nrules for unattended runs and ships a read-only review workflow that installs a pinned Claude Code, runs it with --bare,\ndontAsk and --max-budget-usd, fails on errors and comments with gh. A Codex variant uses codex exec's read-only default.","highlights":["--bare so checked-out hooks and MCP config never run in CI","Read-only by default: dontAsk with an allow-list, or codex exec without --sandbox","--max-budget-usd, job timeout and loud failure","PR and issue text passed as files, never interpolated into shell","Pinned @anthropic-ai/claude-code and @openai/codex versions"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","security"],"stacks":["github","github-actions"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["gh","jq"],"env":[],"mcp":[]},"credits":[{"title":"@aacle_: claude -p with --max-budget-usd and JSON output in CI","url":"https://x.com/aacle_/status/2100223590876746162"},{"title":"Claude Code docs: headless mode and --bare","url":"https://code.claude.com/docs/en/headless"},{"title":"Codex docs: non-interactive mode","url":"https://developers.openai.com/codex/noninteractive"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for unattended agent runs.","skill":null,"agent":null,"bytes":1880,"lines":26,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":362,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":363,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/add-ci-agent-job/SKILL.md","role":"skill","description":"Add a least-privilege agent job to GitHub Actions.","skill":"add-ci-agent-job","agent":null,"bytes":1286,"lines":19,"install_to":{"claude-code":".claude/skills/add-ci-agent-job/SKILL.md","codex":".agents/skills/add-ci-agent-job/SKILL.md","cursor":".agents/skills/add-ci-agent-job/SKILL.md","gemini-cli":".agents/skills/add-ci-agent-job/SKILL.md","antigravity-cli":".agents/skills/add-ci-agent-job/SKILL.md","copilot":".agents/skills/add-ci-agent-job/SKILL.md"}},{"path":"skills/add-ci-agent-job/references/agent-review.yml","role":"reference","description":"Read-only PR review workflow with Claude Code, plus a Codex variant.","skill":"add-ci-agent-job","agent":null,"bytes":1822,"lines":52,"install_to":{"claude-code":".claude/skills/add-ci-agent-job/references/agent-review.yml","codex":".agents/skills/add-ci-agent-job/references/agent-review.yml","cursor":".agents/skills/add-ci-agent-job/references/agent-review.yml","gemini-cli":".agents/skills/add-ci-agent-job/references/agent-review.yml","antigravity-cli":".agents/skills/add-ci-agent-job/references/agent-review.yml","copilot":".agents/skills/add-ci-agent-job/references/agent-review.yml"}}]},{"id":"ios-mobilebuildmcp","title":"iOS builds with MobileBuildMCP (XcodeBuildMCP)","summary":"Let the agent build, test, run and screenshot iOS and macOS apps through MobileBuildMCP, pinned with telemetry off, with Swift concurrency and pbxproj rules.","description":"XcodeBuildMCP, now MobileBuildMCP from Sentry, is the MCP server iOS developers keep naming as a daily driver: it lets the agent discover schemes, build for a simulator, run tests, launch the app and look at the screen, instead of guessing xcodebuild flags. This loadout pins it with telemetry disabled and adds the rules for Swift work: build, test and look before reporting, main-actor UI, no force unwraps on outside data, Swift Testing for new tests, and hands off signing, entitlements, pbxproj and uploads.","highlights":["MobileBuildMCP pinned, telemetry off via MOBILEBUILDMCP_SENTRY_DISABLED","Session defaults set once: project, scheme, simulator","Done means built, tested, launched and seen on screen","Swift concurrency rules; no unsafe escapes without a reason","No pbxproj reformatting, signing changes or uploads"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["swift","ios","xcode"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":1,"skills":1,"mcp":1},"requires":{"tools":["node","xcode"],"env":[],"mcp":["mobilebuildmcp"]},"credits":[{"title":"getsentry/MobileBuildMCP (formerly XcodeBuildMCP)","url":"https://github.com/getsentry/XcodeBuildMCP"},{"title":"MobileBuildMCP docs: privacy and telemetry opt-out","url":"https://github.com/getsentry/xcodebuildmcp.com/blob/main/app/docs/_content/privacy.mdx"},{"title":"@KhalidDevLog: daily mobile MCPs (XcodeBuildMCP, Expo MCP, Figma MCP)","url":"https://x.com/KhalidDevLog/status/2096183096697586039"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Swift and Xcode rules with MobileBuildMCP as the build tool.","skill":null,"agent":null,"bytes":1949,"lines":31,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":512,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":386,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/ios-build-loop/SKILL.md","role":"skill","description":"Build, test, run and look, through MobileBuildMCP.","skill":"ios-build-loop","agent":null,"bytes":1244,"lines":20,"install_to":{"claude-code":".claude/skills/ios-build-loop/SKILL.md","codex":".agents/skills/ios-build-loop/SKILL.md","cursor":".agents/skills/ios-build-loop/SKILL.md","gemini-cli":".agents/skills/ios-build-loop/SKILL.md","antigravity-cli":".agents/skills/ios-build-loop/SKILL.md","copilot":".agents/skills/ios-build-loop/SKILL.md"}},{"path":"mcp.json","role":"mcp","description":"MobileBuildMCP pinned with telemetry off.","skill":null,"agent":null,"bytes":205,"lines":12,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}}]},{"id":"jupyter-notebooks","title":"Jupyter notebooks agents can edit","summary":"Notebook rules for agents: edit Jupytext-paired .py files instead of JSON, run top to bottom in a fresh kernel, keep outputs out of git with nbstripout, check data first.","description":"Agents struggle with notebooks for a simple reason: an .ipynb is JSON full of outputs and execution counts, so edits are fragile and diffs unreadable, and a notebook that ran once out of order passes for working. This loadout uses the tools data teams already rely on: Jupytext pairs each notebook with a percent-format .py file that the agent edits, nbstripout keeps outputs out of git, and done means executed from a fresh kernel. It adds reproducibility and data-care rules, and the verifier converts and runs the example notebook.","highlights":["Edit the paired .py (Jupytext percent format), never the .ipynb JSON","Done means executed top to bottom in a fresh kernel","nbstripout git filter keeps outputs and counts out of commits","Parameters cell, seeded randomness, relative paths","Data-check cell with asserts before any result"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["data"],"stacks":["python","jupyter","uv"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv"],"env":[],"mcp":[]},"credits":[{"title":"Jupytext documentation: paired notebooks","url":"https://jupytext.readthedocs.io/en/latest/paired-notebooks.html"},{"title":"kynan/nbstripout","url":"https://github.com/kynan/nbstripout"},{"title":"Jupytext documentation: percent format","url":"https://jupytext.readthedocs.io/en/latest/formats-scripts.html"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Notebook editing, execution, reproducibility and data-care rules.","skill":null,"agent":null,"bytes":2143,"lines":34,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":372,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":373,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/notebook-change/SKILL.md","role":"skill","description":"Edit via the paired .py, run fresh, strip outputs.","skill":"notebook-change","agent":null,"bytes":1306,"lines":19,"install_to":{"claude-code":".claude/skills/notebook-change/SKILL.md","codex":".agents/skills/notebook-change/SKILL.md","cursor":".agents/skills/notebook-change/SKILL.md","gemini-cli":".agents/skills/notebook-change/SKILL.md","antigravity-cli":".agents/skills/notebook-change/SKILL.md","copilot":".agents/skills/notebook-change/SKILL.md"}},{"path":"skills/notebook-change/references/analysis.py","role":"reference","description":"Percent-format example with parameters and a data check.","skill":"notebook-change","agent":null,"bytes":1237,"lines":42,"install_to":{"claude-code":".claude/skills/notebook-change/references/analysis.py","codex":".agents/skills/notebook-change/references/analysis.py","cursor":".agents/skills/notebook-change/references/analysis.py","gemini-cli":".agents/skills/notebook-change/references/analysis.py","antigravity-cli":".agents/skills/notebook-change/references/analysis.py","copilot":".agents/skills/notebook-change/references/analysis.py"}}]},{"id":"docs-markdown-checks","title":"Markdown docs with markdownlint and offline link checks","summary":"Agent-written READMEs and docs checked offline: markdownlint-cli2, relative links and #anchors resolve, and every npm run command in the docs exists.","description":"Agents write docs that read well and are quietly wrong. A link points to a page that was renamed. An anchor no longer matches its heading after an edit. A quick start says npm run deploy when there is no deploy script. This loadout gives your agent two checks that need no network. markdownlint-cli2 enforces style, with code block languages and in-file link fragments required. A small script checks that relative links and images resolve and that #fragments match GitHub-style heading slugs, across files too. It also checks that every npm, pnpm, yarn or bun run command in the docs names a real script. External URLs are left to a scheduled checker, so a flaky site never blocks a change. The verifier runs both on a clean docs tree and on a broken sample, with markdownlint-cli2 0.23.3.","highlights":["Relative links, images and #anchors checked offline, across files","GitHub heading slug rules, including repeated headings","Catches npm run commands in docs that have no script","markdownlint-cli2 with code block languages and link fragments enforced","Verified with markdownlint-cli2 0.23.3 on a clean tree and a broken sample"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow"],"stacks":["markdown","nodejs"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["node","npm"],"env":[],"mcp":[]},"credits":[{"title":"DavidAnson/markdownlint-cli2","url":"https://github.com/DavidAnson/markdownlint-cli2"},{"title":"markdownlint rules (MD040, MD051)","url":"https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md"},{"title":"GitHub docs: section links in Markdown","url":"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#section-links"},{"title":"lycheeverse/lychee (scheduled external link checks)","url":"https://github.com/lycheeverse/lychee"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for Markdown docs whose links, anchors and commands are checked before a change is done.","skill":null,"agent":null,"bytes":1023,"lines":22,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":392,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":393,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/docs-check/SKILL.md","role":"skill","description":"Both checks, the config, and writing rules for docs.","skill":"docs-check","agent":null,"bytes":2696,"lines":54,"install_to":{"claude-code":".claude/skills/docs-check/SKILL.md","codex":".agents/skills/docs-check/SKILL.md","cursor":".agents/skills/docs-check/SKILL.md","gemini-cli":".agents/skills/docs-check/SKILL.md","antigravity-cli":".agents/skills/docs-check/SKILL.md","copilot":".agents/skills/docs-check/SKILL.md"}},{"path":"skills/docs-check/scripts/check_docs.mjs","role":"reference","description":"Offline link, anchor and script-command check.","skill":"docs-check","agent":null,"bytes":5093,"lines":122,"install_to":{"claude-code":".claude/skills/docs-check/scripts/check_docs.mjs","codex":".agents/skills/docs-check/scripts/check_docs.mjs","cursor":".agents/skills/docs-check/scripts/check_docs.mjs","gemini-cli":".agents/skills/docs-check/scripts/check_docs.mjs","antigravity-cli":".agents/skills/docs-check/scripts/check_docs.mjs","copilot":".agents/skills/docs-check/scripts/check_docs.mjs"}},{"path":"skills/docs-check/references/markdownlint-cli2.jsonc","role":"reference","description":"Repository markdownlint-cli2 config.","skill":"docs-check","agent":null,"bytes":733,"lines":19,"install_to":{"claude-code":".claude/skills/docs-check/references/markdownlint-cli2.jsonc","codex":".agents/skills/docs-check/references/markdownlint-cli2.jsonc","cursor":".agents/skills/docs-check/references/markdownlint-cli2.jsonc","gemini-cli":".agents/skills/docs-check/references/markdownlint-cli2.jsonc","antigravity-cli":".agents/skills/docs-check/references/markdownlint-cli2.jsonc","copilot":".agents/skills/docs-check/references/markdownlint-cli2.jsonc"}}]},{"id":"mcp-server-go","title":"MCP server in Go (official go-sdk)","summary":"Build MCP servers in Go with the official go-sdk: typed tools with jsonschema tags, tool errors not panics, stdout kept for the protocol, in-memory client tests.","description":"The official Go SDK for the Model Context Protocol reached v1.8 in September 2026 and generates each tool's input schema from a Go struct. That makes the struct tags the documentation the model reads, and it makes a careless fmt.Println on stdout a protocol error. This loadout gives your agent the rules for a Go MCP server (stdout hygiene, typed tools, validation, read-only by default, untrusted tool output) and a skill for adding tools with an in-memory client test. The verifier builds the example on go-sdk v1.8.0, runs the tests under the race detector and talks raw JSON-RPC to the binary over stdio.","highlights":["Official github.com/modelcontextprotocol/go-sdk, pinned at v1.8.0","Typed input and output structs; jsonschema tags become the schema","Errors returned as isError tool results, never panics","Logs on stderr only; the verifier checks stdout is pure JSON-RPC","Every tool tested through a real client over in-memory transports"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents"],"stacks":["go","mcp"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["go"],"env":[],"mcp":[]},"credits":[{"title":"modelcontextprotocol/go-sdk (official Go SDK)","url":"https://github.com/modelcontextprotocol/go-sdk"},{"title":"go-sdk v1.8.0 release","url":"https://github.com/modelcontextprotocol/go-sdk/releases/tag/v1.8.0"},{"title":"MCP specification: tools","url":"https://modelcontextprotocol.io/specification/latest/server/tools"},{"title":"MCP docs: build a server","url":"https://modelcontextprotocol.io/docs/develop/build-server"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for a Go MCP server: protocol hygiene, tools, safety and dependencies.","skill":null,"agent":null,"bytes":1982,"lines":35,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":365,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":366,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/go-mcp-tool/SKILL.md","role":"skill","description":"Add a typed, tested tool to a Go MCP server.","skill":"go-mcp-tool","agent":null,"bytes":1258,"lines":22,"install_to":{"claude-code":".claude/skills/go-mcp-tool/SKILL.md","codex":".agents/skills/go-mcp-tool/SKILL.md","cursor":".agents/skills/go-mcp-tool/SKILL.md","gemini-cli":".agents/skills/go-mcp-tool/SKILL.md","antigravity-cli":".agents/skills/go-mcp-tool/SKILL.md","copilot":".agents/skills/go-mcp-tool/SKILL.md"}},{"path":"skills/go-mcp-tool/references/server.go","role":"reference","description":"Glossary server with one validated tool.","skill":"go-mcp-tool","agent":null,"bytes":2700,"lines":86,"install_to":{"claude-code":".claude/skills/go-mcp-tool/references/server.go","codex":".agents/skills/go-mcp-tool/references/server.go","cursor":".agents/skills/go-mcp-tool/references/server.go","gemini-cli":".agents/skills/go-mcp-tool/references/server.go","antigravity-cli":".agents/skills/go-mcp-tool/references/server.go","copilot":".agents/skills/go-mcp-tool/references/server.go"}},{"path":"skills/go-mcp-tool/references/server_test.go","role":"reference","description":"In-memory client tests for the tool.","skill":"go-mcp-tool","agent":null,"bytes":2330,"lines":78,"install_to":{"claude-code":".claude/skills/go-mcp-tool/references/server_test.go","codex":".agents/skills/go-mcp-tool/references/server_test.go","cursor":".agents/skills/go-mcp-tool/references/server_test.go","gemini-cli":".agents/skills/go-mcp-tool/references/server_test.go","antigravity-cli":".agents/skills/go-mcp-tool/references/server_test.go","copilot":".agents/skills/go-mcp-tool/references/server_test.go"}}]},{"id":"mcp-server-python","title":"MCP server in Python (official SDK v2)","summary":"Build MCP servers on the official Python SDK v2: MCPServer, Annotated schemas, structured output, ToolError for fixable failures and in-memory Client tests.","description":"Version 2 of the official MCP Python SDK renamed FastMCP to MCPServer, moved its modules and added a first-class Client that tests a server in memory. Agents trained on v1 still write from mcp.server.fastmcp import FastMCP, which no longer imports. This loadout pins the v2 API in your agent's rules: typed tools with Annotated descriptions and limits, Pydantic return types for structured output, ToolError for failures the model can fix, and nothing on stdout. A skill adds tools with in-memory Client tests. The verifier runs the tests on mcp 2.3.0, runs ruff and talks raw JSON-RPC to the server over stdio.","highlights":["Official mcp 2.3.0: MCPServer, not the removed FastMCP import","Annotated Field descriptions and limits become the input schema","ToolError for recoverable failures; other exceptions never leak internals","In-memory Client tests, no subprocess or port","Verifier checks stdout is pure JSON-RPC and logs go to stderr"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents"],"stacks":["python","mcp","uv","pytest"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv","python3"],"env":[],"mcp":[]},"credits":[{"title":"MCP Python SDK docs: what's new in v2","url":"https://py.sdk.modelcontextprotocol.io/whats-new/"},{"title":"MCP Python SDK docs: testing with the in-memory Client","url":"https://py.sdk.modelcontextprotocol.io/get-started/testing/"},{"title":"MCP Python SDK docs: handling errors (ToolError and MCPError)","url":"https://py.sdk.modelcontextprotocol.io/servers/handling-errors/"},{"title":"modelcontextprotocol/python-sdk","url":"https://github.com/modelcontextprotocol/python-sdk"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for a Python MCP server on SDK v2: protocol hygiene, tools, safety and dependencies.","skill":null,"agent":null,"bytes":2059,"lines":33,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":377,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":378,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/python-mcp-tool/SKILL.md","role":"skill","description":"Add a typed, tested tool to a Python MCP server.","skill":"python-mcp-tool","agent":null,"bytes":1399,"lines":21,"install_to":{"claude-code":".claude/skills/python-mcp-tool/SKILL.md","codex":".agents/skills/python-mcp-tool/SKILL.md","cursor":".agents/skills/python-mcp-tool/SKILL.md","gemini-cli":".agents/skills/python-mcp-tool/SKILL.md","antigravity-cli":".agents/skills/python-mcp-tool/SKILL.md","copilot":".agents/skills/python-mcp-tool/SKILL.md"}},{"path":"skills/python-mcp-tool/references/server.py","role":"reference","description":"Glossary server with one validated tool.","skill":"python-mcp-tool","agent":null,"bytes":1691,"lines":50,"install_to":{"claude-code":".claude/skills/python-mcp-tool/references/server.py","codex":".agents/skills/python-mcp-tool/references/server.py","cursor":".agents/skills/python-mcp-tool/references/server.py","gemini-cli":".agents/skills/python-mcp-tool/references/server.py","antigravity-cli":".agents/skills/python-mcp-tool/references/server.py","copilot":".agents/skills/python-mcp-tool/references/server.py"}},{"path":"skills/python-mcp-tool/references/test_server.py","role":"reference","description":"In-memory Client tests.","skill":"python-mcp-tool","agent":null,"bytes":1532,"lines":50,"install_to":{"claude-code":".claude/skills/python-mcp-tool/references/test_server.py","codex":".agents/skills/python-mcp-tool/references/test_server.py","cursor":".agents/skills/python-mcp-tool/references/test_server.py","gemini-cli":".agents/skills/python-mcp-tool/references/test_server.py","antigravity-cli":".agents/skills/python-mcp-tool/references/test_server.py","copilot":".agents/skills/python-mcp-tool/references/test_server.py"}}]},{"id":"mcp-2026-07-28-migration","title":"Migrate an MCP server to protocol 2026-07-28","summary":"Move an MCP server to the stateless 2026-07-28 revision on the official SDKs: no sessions or handshake, server/discover, input_required, then a raw stdio probe.","description":"MCP revision 2026-07-28 removed the initialize handshake and sessions. Every request now carries its own _meta envelope, and a tool asks the user for input by returning input_required instead of pushing a request mid-call. Upgrading the SDK is not enough on its own: a TypeScript v2 server still speaks 2025 until it is served through serveStdio, and session-keyed state or elicitInput calls survive the official codemod. This loadout gives your agent the changelog as a fix list, plus a scanner for removed patterns and a dependency-free stdio probe. The probe sends server/discover and stateless calls, runs one input_required round trip, and checks -32022 for unknown versions and dual-era fallback. The verifier builds a TypeScript v2 server and probes it alongside a Python SDK 2.3.0 server.","highlights":["Changes checked against the official 2026-07-28 changelog and spec pages","Scanner for sessions, pushed elicitation and sampling, setLevel, subscribe and v1 wiring","stdio probe: server/discover, resultType, stable tools/list, -32022, dual-era check","input_required round trip in place of elicitInput, with a working TypeScript v2 example","Exact pins: @modelcontextprotocol/server 2.3.1, mcp 2.3.0, go-sdk v1.8.0"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents"],"stacks":["mcp","typescript","nodejs","python"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["nodejs","npm"],"env":[],"mcp":[]},"credits":[{"title":"MCP specification 2026-07-28: key changes","url":"https://modelcontextprotocol.io/specification/2026-07-28/changelog"},{"title":"MCP specification 2026-07-28: versioning and backward compatibility","url":"https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning"},{"title":"MCP specification 2026-07-28: multi-round-trip requests","url":"https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/mrtr"},{"title":"MCP TypeScript SDK: supporting protocol revision 2026-07-28","url":"https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/migration/support-2026-07-28.md"},{"title":"MCP TypeScript SDK: upgrade-to-v2 skill and codemod","url":"https://github.com/modelcontextprotocol/typescript-sdk/tree/main/skills/mcp-typescript-sdk-upgrade-to-v2"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for moving an MCP server to the stateless 2026-07-28 revision through the official SDKs.","skill":null,"agent":null,"bytes":1732,"lines":29,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":393,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":394,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/mcp-2026-migration/SKILL.md","role":"skill","description":"Scan, upgrade, rewrite removed patterns and probe the result.","skill":"mcp-2026-migration","agent":null,"bytes":4727,"lines":85,"install_to":{"claude-code":".claude/skills/mcp-2026-migration/SKILL.md","codex":".agents/skills/mcp-2026-migration/SKILL.md","cursor":".agents/skills/mcp-2026-migration/SKILL.md","gemini-cli":".agents/skills/mcp-2026-migration/SKILL.md","antigravity-cli":".agents/skills/mcp-2026-migration/SKILL.md","copilot":".agents/skills/mcp-2026-migration/SKILL.md"}},{"path":"skills/mcp-2026-migration/references/changes.md","role":"reference","description":"Every 2026-07-28 change that affects servers, with the fix.","skill":"mcp-2026-migration","agent":null,"bytes":3364,"lines":48,"install_to":{"claude-code":".claude/skills/mcp-2026-migration/references/changes.md","codex":".agents/skills/mcp-2026-migration/references/changes.md","cursor":".agents/skills/mcp-2026-migration/references/changes.md","gemini-cli":".agents/skills/mcp-2026-migration/references/changes.md","antigravity-cli":".agents/skills/mcp-2026-migration/references/changes.md","copilot":".agents/skills/mcp-2026-migration/references/changes.md"}},{"path":"skills/mcp-2026-migration/references/server.ts","role":"reference","description":"TypeScript v2 dual-era stdio server with an input_required tool.","skill":"mcp-2026-migration","agent":null,"bytes":3834,"lines":79,"install_to":{"claude-code":".claude/skills/mcp-2026-migration/references/server.ts","codex":".agents/skills/mcp-2026-migration/references/server.ts","cursor":".agents/skills/mcp-2026-migration/references/server.ts","gemini-cli":".agents/skills/mcp-2026-migration/references/server.ts","antigravity-cli":".agents/skills/mcp-2026-migration/references/server.ts","copilot":".agents/skills/mcp-2026-migration/references/server.ts"}},{"path":"skills/mcp-2026-migration/scripts/probe_mcp_2026.mjs","role":"reference","description":"Dependency-free stdio probe for 2026-07-28 behaviour.","skill":"mcp-2026-migration","agent":null,"bytes":8431,"lines":169,"install_to":{"claude-code":".claude/skills/mcp-2026-migration/scripts/probe_mcp_2026.mjs","codex":".agents/skills/mcp-2026-migration/scripts/probe_mcp_2026.mjs","cursor":".agents/skills/mcp-2026-migration/scripts/probe_mcp_2026.mjs","gemini-cli":".agents/skills/mcp-2026-migration/scripts/probe_mcp_2026.mjs","antigravity-cli":".agents/skills/mcp-2026-migration/scripts/probe_mcp_2026.mjs","copilot":".agents/skills/mcp-2026-migration/scripts/probe_mcp_2026.mjs"}},{"path":"skills/mcp-2026-migration/scripts/scan_mcp_legacy.mjs","role":"reference","description":"Finds code using removed or changed protocol features.","skill":"mcp-2026-migration","agent":null,"bytes":6003,"lines":94,"install_to":{"claude-code":".claude/skills/mcp-2026-migration/scripts/scan_mcp_legacy.mjs","codex":".agents/skills/mcp-2026-migration/scripts/scan_mcp_legacy.mjs","cursor":".agents/skills/mcp-2026-migration/scripts/scan_mcp_legacy.mjs","gemini-cli":".agents/skills/mcp-2026-migration/scripts/scan_mcp_legacy.mjs","antigravity-cli":".agents/skills/mcp-2026-migration/scripts/scan_mcp_legacy.mjs","copilot":".agents/skills/mcp-2026-migration/scripts/scan_mcp_legacy.mjs"}}]},{"id":"one-agents-md-every-agent","title":"One AGENTS.md for every agent","summary":"Keep one AGENTS.md as the source of truth, with thin imports and a single MCP list, so Claude Code, Codex, Cursor, Copilot and Antigravity CLI all load the same rules.","description":"Teams on several agents end up with CLAUDE.md, .cursorrules, copilot-instructions and GEMINI.md drifting apart. This loadout\nsets rules for keeping one AGENTS.md as the source of truth, with per-agent files that only import it. It adds an audit skill\nthat checks what each agent really loads (with an October 2026 table of loading rules and gotchas, including Claude Code's\nnative AGENTS.md reading and the move from Gemini CLI to Antigravity CLI) and a skill that converts one MCP server list\ninto every agent's config format.","highlights":["Rules for where instructions, skills and MCP servers live","Loading table for Claude Code, Codex, Cursor, Copilot and Antigravity CLI, checked 16 October 2026","Audit skill that finds shadowed, duplicated and oversized config","One MCP source file converted to .mcp.json, .cursor/mcp.json, .vscode/mcp.json, Codex TOML and Gemini settings"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents","workflow"],"stacks":["any"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":2,"mcp":0},"requires":{"tools":[],"env":[],"mcp":[]},"credits":[{"title":"@mitsuhiko: one AGENTS.md, no per-agent files","url":"https://x.com/mitsuhiko/status/2088900774466105797"},{"title":"AGENTS.md open format","url":"https://agents.md"},{"title":"Claude Code changelog","url":"https://code.claude.com/docs/en/changelog"},{"title":"Antigravity CLI: migrating from Gemini CLI","url":"https://antigravity.google/docs/cli/gcli-migration/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for keeping one source of agent instructions.","skill":null,"agent":null,"bytes":1484,"lines":22,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":398,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":399,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/audit-agent-config/SKILL.md","role":"skill","description":"Check what each agent loads and find shadowed or duplicated rules.","skill":"audit-agent-config","agent":null,"bytes":1472,"lines":21,"install_to":{"claude-code":".claude/skills/audit-agent-config/SKILL.md","codex":".agents/skills/audit-agent-config/SKILL.md","cursor":".agents/skills/audit-agent-config/SKILL.md","gemini-cli":".agents/skills/audit-agent-config/SKILL.md","antigravity-cli":".agents/skills/audit-agent-config/SKILL.md","copilot":".agents/skills/audit-agent-config/SKILL.md"}},{"path":"skills/audit-agent-config/references/loading.md","role":"reference","description":"Per-agent loading rules, checked 16 October 2026.","skill":"audit-agent-config","agent":null,"bytes":1812,"lines":13,"install_to":{"claude-code":".claude/skills/audit-agent-config/references/loading.md","codex":".agents/skills/audit-agent-config/references/loading.md","cursor":".agents/skills/audit-agent-config/references/loading.md","gemini-cli":".agents/skills/audit-agent-config/references/loading.md","antigravity-cli":".agents/skills/audit-agent-config/references/loading.md","copilot":".agents/skills/audit-agent-config/references/loading.md"}},{"path":"skills/sync-mcp-config/SKILL.md","role":"skill","description":"Generate each agent's MCP config from one list.","skill":"sync-mcp-config","agent":null,"bytes":1253,"lines":20,"install_to":{"claude-code":".claude/skills/sync-mcp-config/SKILL.md","codex":".agents/skills/sync-mcp-config/SKILL.md","cursor":".agents/skills/sync-mcp-config/SKILL.md","gemini-cli":".agents/skills/sync-mcp-config/SKILL.md","antigravity-cli":".agents/skills/sync-mcp-config/SKILL.md","copilot":".agents/skills/sync-mcp-config/SKILL.md"}},{"path":"skills/sync-mcp-config/references/formats.md","role":"reference","description":"MCP config shapes for six agents.","skill":"sync-mcp-config","agent":null,"bytes":1299,"lines":34,"install_to":{"claude-code":".claude/skills/sync-mcp-config/references/formats.md","codex":".agents/skills/sync-mcp-config/references/formats.md","cursor":".agents/skills/sync-mcp-config/references/formats.md","gemini-cli":".agents/skills/sync-mcp-config/references/formats.md","antigravity-cli":".agents/skills/sync-mcp-config/references/formats.md","copilot":".agents/skills/sync-mcp-config/references/formats.md"}}]},{"id":"agent-spend-cap","title":"One spend cap across Claude Code, Codex and Antigravity","summary":"Run headless Claude Code, Codex and Antigravity CLI through one guard: a shared daily cap, per-run budgets, a ledger, and the provider limits that stop spend.","description":"Each coding agent has its own meter. Claude Code reports dollars and can stop itself with --max-budget-usd. Codex and Antigravity CLI report only tokens and have no budget flag, so a script that mixes them can burn through every budget overnight. This loadout puts one standard-library guard in front of every headless run. It refuses the run once the shared daily or monthly cap or the run count is reached, and gives Claude Code a budget no bigger than what is left. It prices Codex and Antigravity tokens from prices you set, and writes one ledger line per run. It also lists the provider-side limits that hold when something bypasses the guard, including keeping Antigravity's useG1Credits off. The verifier drives the guard with stubs that print each agent's documented JSON and checks the arithmetic and the refusal.","highlights":["One daily, monthly and run-count cap across three agents","Claude Code: --max-budget-usd shrinks to what is left; total_cost_usd recorded","Codex and Antigravity: documented token usage priced from your own price table","Exit 3 means stop the loop; agents never raise caps or buy credits","Provider-side limits listed, including Antigravity's useG1Credits"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents","workflow"],"stacks":["python","bash"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["python3"],"env":[],"mcp":[]},"credits":[{"title":"Claude Code docs: manage costs","url":"https://code.claude.com/docs/en/costs"},{"title":"Claude Code docs: run Claude Code programmatically (total_cost_usd, --max-budget-usd)","url":"https://code.claude.com/docs/en/headless"},{"title":"Antigravity CLI docs: headless mode (usage envelope)","url":"https://antigravity.google/docs/cli/headless"},{"title":"Antigravity CLI docs: settings (useG1Credits)","url":"https://antigravity.google/docs/cli/reference"},{"title":"Codex SDK event types (turn.completed usage)","url":"https://github.com/openai/codex/blob/main/sdk/typescript/src/events.ts"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for running coding agents headless under one shared spend cap.","skill":null,"agent":null,"bytes":1253,"lines":21,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":386,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":387,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/spend-cap/SKILL.md","role":"skill","description":"Set caps, run agents through the guard, read the ledger.","skill":"spend-cap","agent":null,"bytes":3179,"lines":57,"install_to":{"claude-code":".claude/skills/spend-cap/SKILL.md","codex":".agents/skills/spend-cap/SKILL.md","cursor":".agents/skills/spend-cap/SKILL.md","gemini-cli":".agents/skills/spend-cap/SKILL.md","antigravity-cli":".agents/skills/spend-cap/SKILL.md","copilot":".agents/skills/spend-cap/SKILL.md"}},{"path":"skills/spend-cap/scripts/spend_guard.py","role":"reference","description":"Shared cap, per-run budget and ledger for three agents.","skill":"spend-cap","agent":null,"bytes":8498,"lines":217,"install_to":{"claude-code":".claude/skills/spend-cap/scripts/spend_guard.py","codex":".agents/skills/spend-cap/scripts/spend_guard.py","cursor":".agents/skills/spend-cap/scripts/spend_guard.py","gemini-cli":".agents/skills/spend-cap/scripts/spend_guard.py","antigravity-cli":".agents/skills/spend-cap/scripts/spend_guard.py","copilot":".agents/skills/spend-cap/scripts/spend_guard.py"}},{"path":"skills/spend-cap/references/caps.example.json","role":"reference","description":"Caps and price table to copy into .agent-spend/.","skill":"spend-cap","agent":null,"bytes":511,"lines":13,"install_to":{"claude-code":".claude/skills/spend-cap/references/caps.example.json","codex":".agents/skills/spend-cap/references/caps.example.json","cursor":".agents/skills/spend-cap/references/caps.example.json","gemini-cli":".agents/skills/spend-cap/references/caps.example.json","antigravity-cli":".agents/skills/spend-cap/references/caps.example.json","copilot":".agents/skills/spend-cap/references/caps.example.json"}},{"path":"skills/spend-cap/references/provider-limits.md","role":"reference","description":"Where each provider's own limit lives.","skill":"spend-cap","agent":null,"bytes":1981,"lines":37,"install_to":{"claude-code":".claude/skills/spend-cap/references/provider-limits.md","codex":".agents/skills/spend-cap/references/provider-limits.md","cursor":".agents/skills/spend-cap/references/provider-limits.md","gemini-cli":".agents/skills/spend-cap/references/provider-limits.md","antigravity-cli":".agents/skills/spend-cap/references/provider-limits.md","copilot":".agents/skills/spend-cap/references/provider-limits.md"}}]},{"id":"opentofu-module-checkov","title":"OpenTofu modules gated by tofu test and Checkov","summary":"Agents write OpenTofu modules that pass a local gate: fmt, a read-only lock file, tofu test with a mocked AWS provider, and Checkov with reasoned skips only.","description":"Ask an agent for a bucket and you get a public ACL, no encryption and a Checkov skip with no reason, or a soft-fail flag that turns the scan into decoration. This loadout gives your agent a gate it runs before calling a module change done. It checks formatting, runs init against the committed lock file, validates, and runs tofu test against a mocked AWS provider, so no credentials are needed and nothing is created. Checkov runs last. It refuses soft-fail, repo-wide skip lists and inline skips without a reason. A complete S3 bucket module shows the target, with tests that check its secure defaults and every validation rule. A root example enforces OpenTofu's native state and plan encryption. The verifier runs it on OpenTofu 1.13.1, the AWS provider 6.69.1 and Checkov 3.3.29. It also checks that a reasonless skip, soft-fail, suspended versioning and an agent-written public bucket all fail.","highlights":["One gate script: fmt, read-only lock file, validate, tofu test, Checkov","tofu test with mock_provider: no AWS credentials, nothing created","Checkov exceptions only as inline skips with a reason; soft-fail refused","Root example with OpenTofu state and plan encryption enforced","Verified on OpenTofu 1.13.1, AWS provider 6.69.1 and Checkov 3.3.29"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["security","workflow"],"stacks":["opentofu","terraform","aws","bash"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["tofu","uv"],"env":[],"mcp":[]},"credits":[{"title":"OpenTofu docs: tofu test (mock providers)","url":"https://opentofu.org/docs/cli/commands/test/"},{"title":"OpenTofu docs: state and plan encryption","url":"https://opentofu.org/docs/language/state/encryption/"},{"title":"OpenTofu docs: dependency lock file","url":"https://opentofu.org/docs/language/files/dependency-lock/"},{"title":"Checkov docs: suppressing and skipping policies","url":"https://www.checkov.io/2.Basics/Suppressing%20and%20Skipping%20Policies.html"},{"title":"bridgecrewio/checkov","url":"https://github.com/bridgecrewio/checkov"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for OpenTofu modules that pass fmt, validate, tofu test and Checkov before a person plans and applies.","skill":null,"agent":null,"bytes":1754,"lines":28,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":393,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":394,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/tofu-module-gate/SKILL.md","role":"skill","description":"Workflow, Checkov exception rules, lock file and state encryption.","skill":"tofu-module-gate","agent":null,"bytes":4087,"lines":80,"install_to":{"claude-code":".claude/skills/tofu-module-gate/SKILL.md","codex":".agents/skills/tofu-module-gate/SKILL.md","cursor":".agents/skills/tofu-module-gate/SKILL.md","gemini-cli":".agents/skills/tofu-module-gate/SKILL.md","antigravity-cli":".agents/skills/tofu-module-gate/SKILL.md","copilot":".agents/skills/tofu-module-gate/SKILL.md"}},{"path":"skills/tofu-module-gate/scripts/gate.sh","role":"reference","description":"fmt, init (read-only lock), validate, tofu test, exception audit, Checkov.","skill":"tofu-module-gate","agent":null,"bytes":2090,"lines":56,"install_to":{"claude-code":".claude/skills/tofu-module-gate/scripts/gate.sh","codex":".agents/skills/tofu-module-gate/scripts/gate.sh","cursor":".agents/skills/tofu-module-gate/scripts/gate.sh","gemini-cli":".agents/skills/tofu-module-gate/scripts/gate.sh","antigravity-cli":".agents/skills/tofu-module-gate/scripts/gate.sh","copilot":".agents/skills/tofu-module-gate/scripts/gate.sh"}},{"path":"skills/tofu-module-gate/references/main.tf","role":"reference","description":"Private, versioned, SSE-KMS S3 bucket with logging and a TLS-only policy.","skill":"tofu-module-gate","agent":null,"bytes":2557,"lines":107,"install_to":{"claude-code":".claude/skills/tofu-module-gate/references/main.tf","codex":".agents/skills/tofu-module-gate/references/main.tf","cursor":".agents/skills/tofu-module-gate/references/main.tf","gemini-cli":".agents/skills/tofu-module-gate/references/main.tf","antigravity-cli":".agents/skills/tofu-module-gate/references/main.tf","copilot":".agents/skills/tofu-module-gate/references/main.tf"}},{"path":"skills/tofu-module-gate/references/variables.tf","role":"reference","description":"Typed, described inputs with validation blocks.","skill":"tofu-module-gate","agent":null,"bytes":1177,"lines":42,"install_to":{"claude-code":".claude/skills/tofu-module-gate/references/variables.tf","codex":".agents/skills/tofu-module-gate/references/variables.tf","cursor":".agents/skills/tofu-module-gate/references/variables.tf","gemini-cli":".agents/skills/tofu-module-gate/references/variables.tf","antigravity-cli":".agents/skills/tofu-module-gate/references/variables.tf","copilot":".agents/skills/tofu-module-gate/references/variables.tf"}},{"path":"skills/tofu-module-gate/references/outputs.tf","role":"reference","description":"Module outputs.","skill":"tofu-module-gate","agent":null,"bytes":172,"lines":10,"install_to":{"claude-code":".claude/skills/tofu-module-gate/references/outputs.tf","codex":".agents/skills/tofu-module-gate/references/outputs.tf","cursor":".agents/skills/tofu-module-gate/references/outputs.tf","gemini-cli":".agents/skills/tofu-module-gate/references/outputs.tf","antigravity-cli":".agents/skills/tofu-module-gate/references/outputs.tf","copilot":".agents/skills/tofu-module-gate/references/outputs.tf"}},{"path":"skills/tofu-module-gate/references/versions.tf","role":"reference","description":"OpenTofu and AWS provider version constraints.","skill":"tofu-module-gate","agent":null,"bytes":151,"lines":11,"install_to":{"claude-code":".claude/skills/tofu-module-gate/references/versions.tf","codex":".agents/skills/tofu-module-gate/references/versions.tf","cursor":".agents/skills/tofu-module-gate/references/versions.tf","gemini-cli":".agents/skills/tofu-module-gate/references/versions.tf","antigravity-cli":".agents/skills/tofu-module-gate/references/versions.tf","copilot":".agents/skills/tofu-module-gate/references/versions.tf"}},{"path":"skills/tofu-module-gate/references/bucket.tftest.hcl","role":"reference","description":"Four tofu test runs against a mocked AWS provider.","skill":"tofu-module-gate","agent":null,"bytes":2023,"lines":79,"install_to":{"claude-code":".claude/skills/tofu-module-gate/references/bucket.tftest.hcl","codex":".agents/skills/tofu-module-gate/references/bucket.tftest.hcl","cursor":".agents/skills/tofu-module-gate/references/bucket.tftest.hcl","gemini-cli":".agents/skills/tofu-module-gate/references/bucket.tftest.hcl","antigravity-cli":".agents/skills/tofu-module-gate/references/bucket.tftest.hcl","copilot":".agents/skills/tofu-module-gate/references/bucket.tftest.hcl"}},{"path":"skills/tofu-module-gate/references/example-root.tf","role":"reference","description":"Root module with enforced state and plan encryption.","skill":"tofu-module-gate","agent":null,"bytes":1272,"lines":57,"install_to":{"claude-code":".claude/skills/tofu-module-gate/references/example-root.tf","codex":".agents/skills/tofu-module-gate/references/example-root.tf","cursor":".agents/skills/tofu-module-gate/references/example-root.tf","gemini-cli":".agents/skills/tofu-module-gate/references/example-root.tf","antigravity-cli":".agents/skills/tofu-module-gate/references/example-root.tf","copilot":".agents/skills/tofu-module-gate/references/example-root.tf"}},{"path":"skills/tofu-module-gate/references/checkov.yaml","role":"reference","description":"Repository Checkov config with no soft-fail or skip list.","skill":"tofu-module-gate","agent":null,"bytes":347,"lines":11,"install_to":{"claude-code":".claude/skills/tofu-module-gate/references/checkov.yaml","codex":".agents/skills/tofu-module-gate/references/checkov.yaml","cursor":".agents/skills/tofu-module-gate/references/checkov.yaml","gemini-cli":".agents/skills/tofu-module-gate/references/checkov.yaml","antigravity-cli":".agents/skills/tofu-module-gate/references/checkov.yaml","copilot":".agents/skills/tofu-module-gate/references/checkov.yaml"}}]},{"id":"parallel-agents-worktrees","title":"Parallel agents in git worktrees","summary":"Rules and two skills for running several coding agents at once, one task per git worktree: isolation, ports, dependencies, rebasing and clean-up.","description":"Running three or four agents in parallel is now routine, and the tools have caught up: Claude Code has --worktree and\nworktree-isolated subagents, Codex manages worktrees, and gh can create one per issue. What breaks is the etiquette:\nagents editing the main checkout, two dev servers on one port, a shared database migrated twice, or a worktree deleted\nwith unpushed work. This loadout gives every agent the same rules and a start and land procedure.","highlights":["Isolation rules: own directory, own branch, no branch switching","Port and shared-resource conventions so agents do not collide","Start skill: worktree outside the repo, lockfile install, baseline test run","Land skill: rebase, checks, PR, safe clean-up with git branch -d","Notes for claude --worktree, isolation: worktree subagents, Codex managed worktrees and gh issue develop --worktree"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","ai-agents"],"stacks":["git"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":2,"mcp":0},"requires":{"tools":["git"],"env":[],"mcp":[]},"credits":[{"title":"Claude Code docs: worktrees","url":"https://code.claude.com/docs/en/worktrees"},{"title":"GitHub CLI 2.99.0 release notes","url":"https://github.com/cli/cli/releases/tag/v2.99.0"},{"title":"git-worktree documentation","url":"https://git-scm.com/docs/git-worktree"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for agents working in parallel worktrees.","skill":null,"agent":null,"bytes":1709,"lines":25,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":395,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":396,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/start-worktree/SKILL.md","role":"skill","description":"Create a worktree for one task with deps, port and baseline tests.","skill":"start-worktree","agent":null,"bytes":1233,"lines":21,"install_to":{"claude-code":".claude/skills/start-worktree/SKILL.md","codex":".agents/skills/start-worktree/SKILL.md","cursor":".agents/skills/start-worktree/SKILL.md","gemini-cli":".agents/skills/start-worktree/SKILL.md","antigravity-cli":".agents/skills/start-worktree/SKILL.md","copilot":".agents/skills/start-worktree/SKILL.md"}},{"path":"skills/land-worktree/SKILL.md","role":"skill","description":"Rebase, check, open a PR and clean up after merge.","skill":"land-worktree","agent":null,"bytes":1277,"lines":19,"install_to":{"claude-code":".claude/skills/land-worktree/SKILL.md","codex":".agents/skills/land-worktree/SKILL.md","cursor":".agents/skills/land-worktree/SKILL.md","gemini-cli":".agents/skills/land-worktree/SKILL.md","antigravity-cli":".agents/skills/land-worktree/SKILL.md","copilot":".agents/skills/land-worktree/SKILL.md"}}]},{"id":"phaser-web-game","title":"Phaser 4 web game","summary":"Phaser 4 rules that send the agent to the skills Phaser ships in node_modules, not v3 tutorials: pooled objects, delta movement, play-tested changes.","description":"Phaser 4 changed the renderer, turned FX and masks into filters and reworked tinting, so agents trained on years of Phaser 3 tutorials write code that no longer works. Phaser's answer is to ship agent skills inside the npm package, one per subsystem plus a v3-to-v4 migration guide. This loadout makes the agent read those version-matched skills before using an API, and adds the game rules that keep a web game smooth: scenes per mode, assets in preload, pooled groups, delta-based movement and a play test after every change.","highlights":["Reads Phaser's own skills from node_modules/phaser/skills/ for the installed version","v3-to-v4 migration skill first when porting old code","Pooled Arcade groups; no allocation in update()","Delta-based movement and constants in one tuning module","Example scene type-checked against Phaser 4.2.1 by the verifier"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["gamedev"],"stacks":["phaser","typescript","vite"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["node"],"env":[],"mcp":[]},"credits":[{"title":"phaserjs/phaser: agent skills shipped in the repository and npm package","url":"https://github.com/phaserjs/phaser/tree/master/skills"},{"title":"Phaser: migrating from Phaser 3 to Phaser 4","url":"https://phaser.io/news/2026/04/migrating-from-phaser-3-to-phaser-4-what-you-need-to-know"},{"title":"Phaser 4 migration guide","url":"https://github.com/phaserjs/phaser/blob/master/changelog/v4/4.0/MIGRATION-GUIDE.md"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Phaser 4 game rules and where the version-matched docs live.","skill":null,"agent":null,"bytes":2091,"lines":33,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":353,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":354,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/phaser-feature/SKILL.md","role":"skill","description":"Gameplay change with Phaser's skills, checks and a play test.","skill":"phaser-feature","agent":null,"bytes":1188,"lines":18,"install_to":{"claude-code":".claude/skills/phaser-feature/SKILL.md","codex":".agents/skills/phaser-feature/SKILL.md","cursor":".agents/skills/phaser-feature/SKILL.md","gemini-cli":".agents/skills/phaser-feature/SKILL.md","antigravity-cli":".agents/skills/phaser-feature/SKILL.md","copilot":".agents/skills/phaser-feature/SKILL.md"}},{"path":"skills/phaser-feature/references/GameScene.ts","role":"reference","description":"Example v4 scene with pooling and delta movement.","skill":"phaser-feature","agent":null,"bytes":2262,"lines":65,"install_to":{"claude-code":".claude/skills/phaser-feature/references/GameScene.ts","codex":".agents/skills/phaser-feature/references/GameScene.ts","cursor":".agents/skills/phaser-feature/references/GameScene.ts","gemini-cli":".agents/skills/phaser-feature/references/GameScene.ts","antigravity-cli":".agents/skills/phaser-feature/references/GameScene.ts","copilot":".agents/skills/phaser-feature/references/GameScene.ts"}}]},{"id":"playwright-e2e-tests","title":"Playwright end-to-end tests agents don't make flaky","summary":"Rules for agents writing and healing Playwright tests, including Playwright's test agents: role locators, web-first assertions, no sleeps, never weaken a test to pass.","description":"Playwright now ships its own planner, generator and healer agents, and every coding agent writes Playwright tests on request. Left alone they reach for the same shortcuts: waitForTimeout, CSS chains, force clicks, expect(await isVisible()) that never retries, and a healer that makes a red test green by deleting the assertion. This loadout gives your agent Playwright's own best practices as rules, a healing procedure that decides whether the app or the test is wrong before touching anything, and a linter for the anti-patterns. The verifier runs the example spec twice over in real Chrome against a page that renders late, and lints a flaky spec.","highlights":["Works alongside npx playwright init-agents (planner, generator, healer)","getByRole first; web-first assertions only; no fixed waits","Healing rule: if the app regressed, report it, never edit the test to match","Linter for waitForTimeout, force clicks, test.only and non-retrying assertions","Example passes repeat runs in Chrome against a deliberately slow page"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","workflow"],"stacks":["playwright","typescript"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["node","npm"],"env":[],"mcp":[]},"credits":[{"title":"Playwright docs: best practices","url":"https://playwright.dev/docs/best-practices"},{"title":"Playwright docs: test agents (planner, generator, healer)","url":"https://playwright.dev/docs/test-agents"},{"title":"Playwright docs: locators","url":"https://playwright.dev/docs/locators"},{"title":"Playwright docs: auto-retrying assertions","url":"https://playwright.dev/docs/test-assertions"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for writing, running and healing Playwright end-to-end tests.","skill":null,"agent":null,"bytes":2359,"lines":36,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":392,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":393,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/write-e2e-test/SKILL.md","role":"skill","description":"Write or repair a test, lint it and run it three times.","skill":"write-e2e-test","agent":null,"bytes":1443,"lines":26,"install_to":{"claude-code":".claude/skills/write-e2e-test/SKILL.md","codex":".agents/skills/write-e2e-test/SKILL.md","cursor":".agents/skills/write-e2e-test/SKILL.md","gemini-cli":".agents/skills/write-e2e-test/SKILL.md","antigravity-cli":".agents/skills/write-e2e-test/SKILL.md","copilot":".agents/skills/write-e2e-test/SKILL.md"}},{"path":"skills/write-e2e-test/references/todo.spec.ts","role":"reference","description":"Example spec with role locators and web-first assertions.","skill":"write-e2e-test","agent":null,"bytes":1281,"lines":32,"install_to":{"claude-code":".claude/skills/write-e2e-test/references/todo.spec.ts","codex":".agents/skills/write-e2e-test/references/todo.spec.ts","cursor":".agents/skills/write-e2e-test/references/todo.spec.ts","gemini-cli":".agents/skills/write-e2e-test/references/todo.spec.ts","antigravity-cli":".agents/skills/write-e2e-test/references/todo.spec.ts","copilot":".agents/skills/write-e2e-test/references/todo.spec.ts"}},{"path":"skills/write-e2e-test/scripts/lint_specs.mjs","role":"reference","description":"Linter for Playwright test anti-patterns.","skill":"write-e2e-test","agent":null,"bytes":2180,"lines":41,"install_to":{"claude-code":".claude/skills/write-e2e-test/scripts/lint_specs.mjs","codex":".agents/skills/write-e2e-test/scripts/lint_specs.mjs","cursor":".agents/skills/write-e2e-test/scripts/lint_specs.mjs","gemini-cli":".agents/skills/write-e2e-test/scripts/lint_specs.mjs","antigravity-cli":".agents/skills/write-e2e-test/scripts/lint_specs.mjs","copilot":".agents/skills/write-e2e-test/scripts/lint_specs.mjs"}}]},{"id":"pr-hygiene-for-agents","title":"PR hygiene for agents","summary":"Commit and PR rules for coding agents: small PRs, a four-part body, screenshots with gh --attach and a leak check for session links and secrets before pushing.","description":"Agent-written pull requests fail review for boring reasons: too big, no test evidence, no screenshots, and sometimes a\nprivate session link or local path in a public commit. This loadout sets commit and PR rules an agent can follow, a\npre-push leak check, and a gh-based procedure that uses the --attach flag added in GitHub CLI 2.99 for screenshots.\nIt respects each repository's own AI-disclosure policy rather than hiding attribution.","highlights":["Commit and PR size rules, with a What / Why / How tested / Notes body","Screenshots attached with gh pr create --attach and alt text (gh 2.99+)","Pre-push leak check for session URLs, local paths and secret-looking lines","Claude Code attribution.sessionUrl setting for cloud and Remote Control sessions","Draft first, ready when checks are green"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow"],"stacks":["git","github"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["git","gh"],"env":[],"mcp":[]},"credits":[{"title":"@cwage: private session URLs in public PRs","url":"https://x.com/cwage/status/2099570173829087479"},{"title":"@neil_jhaveri: AGENTS.md rule to attach UI screenshots with gh","url":"https://x.com/neil_jhaveri/status/2108061424215789751"},{"title":"GitHub CLI 2.99.0 release notes","url":"https://github.com/cli/cli/releases/tag/v2.99.0"},{"title":"Claude Code settings: attribution","url":"https://code.claude.com/docs/en/settings"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Commit, pull request and leak rules for agents.","skill":null,"agent":null,"bytes":1552,"lines":23,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":366,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":367,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/open-pull-request/SKILL.md","role":"skill","description":"Self-review, leak check, screenshots and gh pr create.","skill":"open-pull-request","agent":null,"bytes":1490,"lines":21,"install_to":{"claude-code":".claude/skills/open-pull-request/SKILL.md","codex":".agents/skills/open-pull-request/SKILL.md","cursor":".agents/skills/open-pull-request/SKILL.md","gemini-cli":".agents/skills/open-pull-request/SKILL.md","antigravity-cli":".agents/skills/open-pull-request/SKILL.md","copilot":".agents/skills/open-pull-request/SKILL.md"}},{"path":"skills/open-pull-request/references/pr-body.md","role":"reference","description":"PR body template.","skill":"open-pull-request","agent":null,"bytes":351,"lines":18,"install_to":{"claude-code":".claude/skills/open-pull-request/references/pr-body.md","codex":".agents/skills/open-pull-request/references/pr-body.md","cursor":".agents/skills/open-pull-request/references/pr-body.md","gemini-cli":".agents/skills/open-pull-request/references/pr-body.md","antigravity-cli":".agents/skills/open-pull-request/references/pr-body.md","copilot":".agents/skills/open-pull-request/references/pr-body.md"}},{"path":"skills/open-pull-request/references/attribution.json","role":"reference","description":"Claude Code settings snippet that drops session links.","skill":"open-pull-request","agent":null,"bytes":51,"lines":6,"install_to":{"claude-code":".claude/skills/open-pull-request/references/attribution.json","codex":".agents/skills/open-pull-request/references/attribution.json","cursor":".agents/skills/open-pull-request/references/attribution.json","gemini-cli":".agents/skills/open-pull-request/references/attribution.json","antigravity-cli":".agents/skills/open-pull-request/references/attribution.json","copilot":".agents/skills/open-pull-request/references/attribution.json"}}]},{"id":"python-data-script","title":"Python data script","summary":"Rules for reproducible, single-file Python data scripts with uv and inline dependencies, plus a skill that sanity-checks a dataset before anyone trusts the numbers.","description":"For the scripts that turn a CSV export into a chart, a report or a cleaned file. Agents tend to write\none-off notebooks that only run on their machine and silently drop half the rows. This loadout makes\nevery script runnable with one command, keeps raw data untouched, and adds a sanity-check skill that\nlooks for the classic data mistakes before results get shared.","highlights":["Single-file scripts with PEP 723 inline dependencies, run with `uv run`","Raw data is read-only; outputs go to their own folder","Row counts and assumptions logged at each step, so silent data loss shows up","Sanity-check skill: types, nulls, duplicates, ranges, join explosions, date and currency traps"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["data"],"stacks":["python","uv","polars","pandas"],"featured":false,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["uv","python"],"env":[],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Python data scripting rules.","skill":null,"agent":null,"bytes":2282,"lines":43,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":360,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":361,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/python-scripts.mdc","role":"rules","description":"Rule applied to Python files.","skill":null,"agent":null,"bytes":593,"lines":14,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/python-scripts.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/data-sanity-check/SKILL.md","role":"skill","description":"Profiles a dataset and flags data quality problems.","skill":"data-sanity-check","agent":null,"bytes":2262,"lines":38,"install_to":{"claude-code":".claude/skills/data-sanity-check/SKILL.md","codex":".agents/skills/data-sanity-check/SKILL.md","cursor":".agents/skills/data-sanity-check/SKILL.md","gemini-cli":".agents/skills/data-sanity-check/SKILL.md","antigravity-cli":".agents/skills/data-sanity-check/SKILL.md","copilot":".agents/skills/data-sanity-check/SKILL.md"}}]},{"id":"rails-app","title":"Rails app rules","summary":"Rails 8 rules for agents: reversible migrations with real constraints, params.expect, N+1 checks with assert_queries_count, and rubocop and brakeman as the gate.","description":"Agents write Rails code that runs, then leave the database to the model layer: validations with no constraint behind them, migrations that only go up, an each loop that fires a query per row, permit! to make a form work. This loadout gives your agent the Rails 8 conventions from the official guides, with the commands that prove a change is done, and a model-change skill whose migration, models and tests the verifier runs on Active Record 8.1 and SQLite. The N+1 test is checked both ways: it passes with includes and fails without it.","highlights":["Every schema change is a reversible migration, checked by rolling back and migrating again","Database constraints behind validations: null false, foreign keys, unique indexes","params.expect, scoped record lookups and no html_safe on user content","assert_queries_count guards against N+1 queries","bin/rails test, bin/rubocop and bin/brakeman as the done-gate"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["ruby","rails"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["ruby","bundler"],"env":[],"mcp":[]},"credits":[{"title":"Rails Guides: Active Record migrations","url":"https://guides.rubyonrails.org/active_record_migrations.html"},{"title":"Rails Guides: testing Rails applications (assert_queries_count)","url":"https://guides.rubyonrails.org/testing.html"},{"title":"Rails Guides: Action Controller overview (params.expect)","url":"https://guides.rubyonrails.org/action_controller_overview.html"},{"title":"Rails Guides: securing Rails applications","url":"https://guides.rubyonrails.org/security.html"},{"title":"rubocop-rails-omakase","url":"https://github.com/rails/rubocop-rails-omakase"},{"title":"strong_migrations by Andrew Kane","url":"https://github.com/ankane/strong_migrations"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rails rules for migrations, models, controllers, secrets and gems.","skill":null,"agent":null,"bytes":2247,"lines":37,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":349,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":350,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/rails-model-change/SKILL.md","role":"skill","description":"Add or change a model with a reversible migration and tests.","skill":"rails-model-change","agent":null,"bytes":1345,"lines":23,"install_to":{"claude-code":".claude/skills/rails-model-change/SKILL.md","codex":".agents/skills/rails-model-change/SKILL.md","cursor":".agents/skills/rails-model-change/SKILL.md","gemini-cli":".agents/skills/rails-model-change/SKILL.md","antigravity-cli":".agents/skills/rails-model-change/SKILL.md","copilot":".agents/skills/rails-model-change/SKILL.md"}},{"path":"skills/rails-model-change/references/20261017120000_create_orders.rb","role":"reference","description":"Migration with constraints, foreign key and unique indexes.","skill":"rails-model-change","agent":null,"bytes":535,"lines":19,"install_to":{"claude-code":".claude/skills/rails-model-change/references/20261017120000_create_orders.rb","codex":".agents/skills/rails-model-change/references/20261017120000_create_orders.rb","cursor":".agents/skills/rails-model-change/references/20261017120000_create_orders.rb","gemini-cli":".agents/skills/rails-model-change/references/20261017120000_create_orders.rb","antigravity-cli":".agents/skills/rails-model-change/references/20261017120000_create_orders.rb","copilot":".agents/skills/rails-model-change/references/20261017120000_create_orders.rb"}},{"path":"skills/rails-model-change/references/order.rb","role":"reference","description":"Models with validations, normalizes and preloading scopes.","skill":"rails-model-change","agent":null,"bytes":705,"lines":24,"install_to":{"claude-code":".claude/skills/rails-model-change/references/order.rb","codex":".agents/skills/rails-model-change/references/order.rb","cursor":".agents/skills/rails-model-change/references/order.rb","gemini-cli":".agents/skills/rails-model-change/references/order.rb","antigravity-cli":".agents/skills/rails-model-change/references/order.rb","copilot":".agents/skills/rails-model-change/references/order.rb"}},{"path":"skills/rails-model-change/references/order_test.rb","role":"reference","description":"Model tests including an N+1 guard.","skill":"rails-model-change","agent":null,"bytes":1544,"lines":44,"install_to":{"claude-code":".claude/skills/rails-model-change/references/order_test.rb","codex":".agents/skills/rails-model-change/references/order_test.rb","cursor":".agents/skills/rails-model-change/references/order_test.rb","gemini-cli":".agents/skills/rails-model-change/references/order_test.rb","antigravity-cli":".agents/skills/rails-model-change/references/order_test.rb","copilot":".agents/skills/rails-model-change/references/order_test.rb"}}]},{"id":"rails-rspec","title":"Rails request specs with RSpec and FactoryBot","summary":"RSpec request specs for Rails 8.1 JSON endpoints: happy path, 422 errors, missing params, owner scoping and mass assignment, with FactoryBot and rubocop-rspec.","description":"Agents asked to test a Rails endpoint write a controller spec that checks the status code and stops there. The bugs that matter go untested: an unscoped find that shows another user's record, an owner_id accepted from the request body, a missing params key that turns into a 500. This loadout gives your agent RSpec rules for Rails 8.1. It uses request specs, not controller specs, with params.expect strong params and lookups scoped to the current owner. FactoryBot keeps the minimum valid record, with traits for variants. A skill lists what every endpoint's spec must cover and ships a complete, passing example. The verifier runs it in a Rails 8.1.4 API app on rspec-rails 8.0.4 in random order, runs rubocop with rubocop-rspec, and checks that removing the owner scope fails the 404 spec.","highlights":["Request specs through routing, middleware and params, not controller specs","Every endpoint: happy path, 422, 400, someone else's record (404) and mass assignment","params.expect strong params; ownership set from the session, never the body","FactoryBot sequences and traits; build_stubbed where no database is needed","Verified on Rails 8.1.4, rspec-rails 8.0.4 and rubocop-rspec 3.10.2"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app"],"stacks":["ruby","rails","rspec"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["ruby","bundle"],"env":[],"mcp":[]},"credits":[{"title":"rspec-rails: request specs","url":"https://rspec.info/features/8-0/rspec-rails/request-specs/request-spec/"},{"title":"rspec/rspec-rails","url":"https://github.com/rspec/rspec-rails"},{"title":"FactoryBot getting started","url":"https://thoughtbot.github.io/factory_bot/"},{"title":"Rails guides: Action Controller parameters (params.expect)","url":"https://guides.rubyonrails.org/action_controller_overview.html#strong-parameters"},{"title":"RuboCop RSpec","url":"https://docs.rubocop.org/rubocop-rspec/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for a Rails 8.1 app tested with RSpec request specs and FactoryBot.","skill":null,"agent":null,"bytes":1568,"lines":26,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":381,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":382,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/rspec-request-spec/SKILL.md","role":"skill","description":"What every endpoint spec covers, and how to write and run it.","skill":"rspec-request-spec","agent":null,"bytes":2676,"lines":50,"install_to":{"claude-code":".claude/skills/rspec-request-spec/SKILL.md","codex":".agents/skills/rspec-request-spec/SKILL.md","cursor":".agents/skills/rspec-request-spec/SKILL.md","gemini-cli":".agents/skills/rspec-request-spec/SKILL.md","antigravity-cli":".agents/skills/rspec-request-spec/SKILL.md","copilot":".agents/skills/rspec-request-spec/SKILL.md"}},{"path":"skills/rspec-request-spec/references/projects_controller.rb","role":"reference","description":"Owner-scoped JSON controller with params.expect.","skill":"rspec-request-spec","agent":null,"bytes":1414,"lines":54,"install_to":{"claude-code":".claude/skills/rspec-request-spec/references/projects_controller.rb","codex":".agents/skills/rspec-request-spec/references/projects_controller.rb","cursor":".agents/skills/rspec-request-spec/references/projects_controller.rb","gemini-cli":".agents/skills/rspec-request-spec/references/projects_controller.rb","antigravity-cli":".agents/skills/rspec-request-spec/references/projects_controller.rb","copilot":".agents/skills/rspec-request-spec/references/projects_controller.rb"}},{"path":"skills/rspec-request-spec/references/project.rb","role":"reference","description":"Model with validations and an owner scope.","skill":"rspec-request-spec","agent":null,"bytes":322,"lines":10,"install_to":{"claude-code":".claude/skills/rspec-request-spec/references/project.rb","codex":".agents/skills/rspec-request-spec/references/project.rb","cursor":".agents/skills/rspec-request-spec/references/project.rb","gemini-cli":".agents/skills/rspec-request-spec/references/project.rb","antigravity-cli":".agents/skills/rspec-request-spec/references/project.rb","copilot":".agents/skills/rspec-request-spec/references/project.rb"}},{"path":"skills/rspec-request-spec/references/projects_factory.rb","role":"reference","description":"FactoryBot factory with a sequence and a trait.","skill":"rspec-request-spec","agent":null,"bytes":199,"lines":12,"install_to":{"claude-code":".claude/skills/rspec-request-spec/references/projects_factory.rb","codex":".agents/skills/rspec-request-spec/references/projects_factory.rb","cursor":".agents/skills/rspec-request-spec/references/projects_factory.rb","gemini-cli":".agents/skills/rspec-request-spec/references/projects_factory.rb","antigravity-cli":".agents/skills/rspec-request-spec/references/projects_factory.rb","copilot":".agents/skills/rspec-request-spec/references/projects_factory.rb"}},{"path":"skills/rspec-request-spec/references/projects_spec.rb","role":"reference","description":"Ten request specs covering every case.","skill":"rspec-request-spec","agent":null,"bytes":3118,"lines":98,"install_to":{"claude-code":".claude/skills/rspec-request-spec/references/projects_spec.rb","codex":".agents/skills/rspec-request-spec/references/projects_spec.rb","cursor":".agents/skills/rspec-request-spec/references/projects_spec.rb","gemini-cli":".agents/skills/rspec-request-spec/references/projects_spec.rb","antigravity-cli":".agents/skills/rspec-request-spec/references/projects_spec.rb","copilot":".agents/skills/rspec-request-spec/references/projects_spec.rb"}},{"path":"skills/rspec-request-spec/references/rails_helper.rb","role":"reference","description":"rails_helper with FactoryBot and transactional fixtures.","skill":"rspec-request-spec","agent":null,"bytes":681,"lines":19,"install_to":{"claude-code":".claude/skills/rspec-request-spec/references/rails_helper.rb","codex":".agents/skills/rspec-request-spec/references/rails_helper.rb","cursor":".agents/skills/rspec-request-spec/references/rails_helper.rb","gemini-cli":".agents/skills/rspec-request-spec/references/rails_helper.rb","antigravity-cli":".agents/skills/rspec-request-spec/references/rails_helper.rb","copilot":".agents/skills/rspec-request-spec/references/rails_helper.rb"}},{"path":"skills/rspec-request-spec/references/spec_helper.rb","role":"reference","description":"spec_helper with random order and verified doubles.","skill":"rspec-request-spec","agent":null,"bytes":396,"lines":13,"install_to":{"claude-code":".claude/skills/rspec-request-spec/references/spec_helper.rb","codex":".agents/skills/rspec-request-spec/references/spec_helper.rb","cursor":".agents/skills/rspec-request-spec/references/spec_helper.rb","gemini-cli":".agents/skills/rspec-request-spec/references/spec_helper.rb","antigravity-cli":".agents/skills/rspec-request-spec/references/spec_helper.rb","copilot":".agents/skills/rspec-request-spec/references/spec_helper.rb"}},{"path":"skills/rspec-request-spec/references/rubocop.yml","role":"reference","description":"RuboCop config: omakase plus RSpec plugins.","skill":"rspec-request-spec","agent":null,"bytes":251,"lines":18,"install_to":{"claude-code":".claude/skills/rspec-request-spec/references/rubocop.yml","codex":".agents/skills/rspec-request-spec/references/rubocop.yml","cursor":".agents/skills/rspec-request-spec/references/rubocop.yml","gemini-cli":".agents/skills/rspec-request-spec/references/rubocop.yml","antigravity-cli":".agents/skills/rspec-request-spec/references/rubocop.yml","copilot":".agents/skills/rspec-request-spec/references/rubocop.yml"}}]},{"id":"roblox-luau","title":"Roblox Luau (Rojo)","summary":"Luau conventions for Rojo projects with a server-authoritative mindset, plus a skill that reviews every RemoteEvent for exploits before you publish.","description":"On Roblox, the client is the exploiter's playground: anything a LocalScript sends can be faked. Agents\nroutinely write remotes like \"GiveCoins(amount)\" that hand the game to the first script kiddie. This\nloadout teaches your agent typed Luau, the Rojo file layout, server authority and safe DataStore use,\nand adds a skill that audits every remote in the place.","highlights":["Server-authoritative rules: clients request, the server decides","--!strict typed Luau, task library, no deprecated wait/spawn","DataStore patterns with pcall, UpdateAsync and session-safe saving","Remote security review skill with a per-remote verdict"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["gamedev","security"],"stacks":["roblox","luau","rojo"],"featured":false,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["rojo","roblox-studio"],"env":[],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Roblox Luau project rules for Rojo layouts.","skill":null,"agent":null,"bytes":2720,"lines":41,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":358,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":359,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/luau-remotes.mdc","role":"rules","description":"Rule applied to server scripts that handle remotes.","skill":null,"agent":null,"bytes":1172,"lines":33,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/luau-remotes.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/remote-security-review/SKILL.md","role":"skill","description":"Audits every RemoteEvent and RemoteFunction for exploitable trust.","skill":"remote-security-review","agent":null,"bytes":2545,"lines":41,"install_to":{"claude-code":".claude/skills/remote-security-review/SKILL.md","codex":".agents/skills/remote-security-review/SKILL.md","cursor":".agents/skills/remote-security-review/SKILL.md","gemini-cli":".agents/skills/remote-security-review/SKILL.md","antigravity-cli":".agents/skills/remote-security-review/SKILL.md","copilot":".agents/skills/remote-security-review/SKILL.md"}}]},{"id":"rust-crate","title":"Rust crate rules","summary":"Rust rules for agents: typed errors instead of unwrap, clippy -D warnings, fmt and tests as the done-gate, no unsafe without a SAFETY note, no surprise MSRV bumps.","description":"Agents write plausible Rust that compiles after a few rounds, often by cloning everything, unwrapping on input and sprinkling allow attributes over clippy. This loadout sets the habits Rust reviewers expect: typed error enums with source(), anyhow only in binaries, cargo fmt, clippy with -D warnings and tests before reporting, unsafe only with approval and a SAFETY comment, and no edition, MSRV or major dependency bumps on the side. The skill's error example is compiled and tested by the verifier.","highlights":["Done-gate: cargo fmt --check, clippy -D warnings, cargo test","Typed error enums; no unwrap or panic on input-driven paths","unsafe only with approval and a SAFETY comment","No MSRV, edition or major version bumps as a side effect","Stop and explain after two rounds against the borrow checker"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow"],"stacks":["rust","cargo"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["cargo"],"env":[],"mcp":[]},"credits":[{"title":"The Rust Programming Language: recoverable errors with Result","url":"https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html"},{"title":"Rust API Guidelines","url":"https://rust-lang.github.io/api-guidelines/"},{"title":"Clippy documentation","url":"https://doc.rust-lang.org/clippy/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rust rules for errors, safety, dependencies and style.","skill":null,"agent":null,"bytes":1960,"lines":29,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":344,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":345,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/rust-change/SKILL.md","role":"skill","description":"Reviewable Rust change with the three gates.","skill":"rust-change","agent":null,"bytes":1000,"lines":16,"install_to":{"claude-code":".claude/skills/rust-change/SKILL.md","codex":".agents/skills/rust-change/SKILL.md","cursor":".agents/skills/rust-change/SKILL.md","gemini-cli":".agents/skills/rust-change/SKILL.md","antigravity-cli":".agents/skills/rust-change/SKILL.md","copilot":".agents/skills/rust-change/SKILL.md"}},{"path":"skills/rust-change/references/errors.rs","role":"reference","description":"Typed error enum with Display, source() and tests.","skill":"rust-change","agent":null,"bytes":2676,"lines":86,"install_to":{"claude-code":".claude/skills/rust-change/references/errors.rs","codex":".agents/skills/rust-change/references/errors.rs","cursor":".agents/skills/rust-change/references/errors.rs","gemini-cli":".agents/skills/rust-change/references/errors.rs","antigravity-cli":".agents/skills/rust-change/references/errors.rs","copilot":".agents/skills/rust-change/references/errors.rs"}}]},{"id":"second-opinion-review","title":"Second-opinion review from another model","summary":"Before calling work done, the agent gets a read-only review of its diff from a different model, checks each finding and stops after two rounds.","description":"A pattern that spread through practitioner feeds this autumn: Claude Code writes the change, then calls codex exec to\nreview the diff before saying it is finished, or the other way round. It works because the reviewer is a different\nmodel and cannot edit what it judges. This loadout sets when a second opinion is worth it, keeps the reviewer\nread-only, gives a prompt that asks for ranked, located findings, and caps the loop at two rounds so it cannot spin.","highlights":["When a second opinion is worth the time, and when to skip it","Exact read-only commands for codex exec and claude -p","Prompt template that returns ranked path:line findings","Findings are verified against code, never applied blindly","Hard cap of two rounds, then escalate to the human"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","ai-agents"],"stacks":["any"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["git"],"env":[],"mcp":[]},"credits":[{"title":"@Damir_Akaza: Claude Code calls codex exec to review its diff","url":"https://x.com/Damir_Akaza/status/2106333764548702392"},{"title":"@leavemagic: a reviewer that cannot edit what it judges (MIT)","url":"https://github.com/leavemagic-cyber/earned-confidence"},{"title":"Codex docs: non-interactive mode","url":"https://developers.openai.com/codex/noninteractive"},{"title":"Claude Code docs: headless mode","url":"https://code.claude.com/docs/en/headless"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"When and how to get an independent review.","skill":null,"agent":null,"bytes":1351,"lines":21,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":386,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":387,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/cross-model-review/SKILL.md","role":"skill","description":"Run a read-only review by another model and triage findings.","skill":"cross-model-review","agent":null,"bytes":1800,"lines":22,"install_to":{"claude-code":".claude/skills/cross-model-review/SKILL.md","codex":".agents/skills/cross-model-review/SKILL.md","cursor":".agents/skills/cross-model-review/SKILL.md","gemini-cli":".agents/skills/cross-model-review/SKILL.md","antigravity-cli":".agents/skills/cross-model-review/SKILL.md","copilot":".agents/skills/cross-model-review/SKILL.md"}},{"path":"skills/cross-model-review/references/review-prompt.md","role":"reference","description":"Reviewer prompt template.","skill":"cross-model-review","agent":null,"bytes":809,"lines":20,"install_to":{"claude-code":".claude/skills/cross-model-review/references/review-prompt.md","codex":".agents/skills/cross-model-review/references/review-prompt.md","cursor":".agents/skills/cross-model-review/references/review-prompt.md","gemini-cli":".agents/skills/cross-model-review/references/review-prompt.md","antigravity-cli":".agents/skills/cross-model-review/references/review-prompt.md","copilot":".agents/skills/cross-model-review/references/review-prompt.md"}}]},{"id":"spec-first-tickets","title":"Spec first, then tickets","summary":"Lightweight spec-driven flow: a SPEC.md with testable acceptance criteria, small tickets, test-first builds in parallel waves and a review against the spec.","description":"Spec-driven development was one of the most consistent practices among working developers this autumn, usually in a light\nform: write the spec with the agent, split it into tickets, build each ticket with a test, review against the spec. This\nloadout encodes that flow without a framework: when a spec is needed, what a testable acceptance criterion looks like,\nticket rules that make parallel work safe, and what to do when the spec turns out to be wrong. It points to Spec Kit and\nOpenSpec for teams that want more.","highlights":["When a spec is required and when it is not","SPEC.md and TASKS.md templates with testable acceptance criteria","Interview skill: at most five questions at a time, each with a recommended answer","Implementation in dependency waves, test first, one commit per ticket","Spec drift rule: stop and update the spec instead of improvising"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow","ai-agents"],"stacks":["any"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":2,"mcp":0},"requires":{"tools":[],"env":[],"mcp":[]},"credits":[{"title":"@mattpocockuk: /implement-spec with research, parallel tickets and review","url":"https://x.com/mattpocockuk/status/2090744569960824949"},{"title":"GitHub Spec Kit","url":"https://github.com/github/spec-kit"},{"title":"OpenSpec","url":"https://github.com/Fission-AI/OpenSpec"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Spec, ticket and implementation rules.","skill":null,"agent":null,"bytes":1523,"lines":28,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":377,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":378,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/write-spec/SKILL.md","role":"skill","description":"Research, interview and write SPEC.md and TASKS.md.","skill":"write-spec","agent":null,"bytes":1069,"lines":17,"install_to":{"claude-code":".claude/skills/write-spec/SKILL.md","codex":".agents/skills/write-spec/SKILL.md","cursor":".agents/skills/write-spec/SKILL.md","gemini-cli":".agents/skills/write-spec/SKILL.md","antigravity-cli":".agents/skills/write-spec/SKILL.md","copilot":".agents/skills/write-spec/SKILL.md"}},{"path":"skills/write-spec/references/spec-template.md","role":"reference","description":"SPEC.md and TASKS.md templates.","skill":"write-spec","agent":null,"bytes":736,"lines":35,"install_to":{"claude-code":".claude/skills/write-spec/references/spec-template.md","codex":".agents/skills/write-spec/references/spec-template.md","cursor":".agents/skills/write-spec/references/spec-template.md","gemini-cli":".agents/skills/write-spec/references/spec-template.md","antigravity-cli":".agents/skills/write-spec/references/spec-template.md","copilot":".agents/skills/write-spec/references/spec-template.md"}},{"path":"skills/implement-spec/SKILL.md","role":"skill","description":"Build tickets test-first in waves and review against the spec.","skill":"implement-spec","agent":null,"bytes":1400,"lines":22,"install_to":{"claude-code":".claude/skills/implement-spec/SKILL.md","codex":".agents/skills/implement-spec/SKILL.md","cursor":".agents/skills/implement-spec/SKILL.md","gemini-cli":".agents/skills/implement-spec/SKILL.md","antigravity-cli":".agents/skills/implement-spec/SKILL.md","copilot":".agents/skills/implement-spec/SKILL.md"}}]},{"id":"subagent-model-routing","title":"Subagent model routing","summary":"Rules for when to delegate, which model and effort each subagent gets, and a brief template, with ready subagents for Claude Code and Codex.","description":"Practitioners spent autumn 2026 writing down how their lead model should delegate: the lead plans and\ndecides, cheaper tiers do bounded work, and every spawn sets model and effort on purpose. This loadout\nturns that into rules an agent can follow: a three-class routing table (mechanical, bounded, judgement),\na tripwire for when to stop doing work inline, and a brief template, because subagents only know what\nthe brief tells them. It ships three Claude Code subagents (read-only scout on Sonnet, command runner on\nHaiku, reviewer on Opus) and equivalent Codex agent TOML.","highlights":["Routing table by task class, with tier and effort for Claude Code and Codex","Brief template so subagents get the facts instead of rediscovering them","scout (read-only), runner (mechanical) and reviewer (never edits) subagents for Claude Code","Codex .codex/agents TOML examples with model and model_reasoning_effort","Tripwire rule for when the lead must stop and delegate"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["ai-agents","workflow"],"stacks":["any"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":[],"env":[],"mcp":[]},"credits":[{"title":"@chrisbanes: subagent model and reasoning selection for Codex (gist)","url":"https://gist.github.com/chrisbanes/dc1407ddd22d6e8d6c4d374b564eac9a"},{"title":"@Shpigford: CLAUDE.md delegation policy with a tripwire (gist)","url":"https://gist.github.com/Shpigford/7c283ea5b75c02e1e96b175e603fca2e"},{"title":"@badlogicgames: subagent handoff fails when the parent omits the facts","url":"https://x.com/badlogicgames/status/2085655394286735777"},{"title":"Claude Code subagents reference","url":"https://code.claude.com/docs/en/sub-agents"},{"title":"Codex subagents","url":"https://developers.openai.com/codex/subagents"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Routing table, brief rules and when to delegate.","skill":null,"agent":null,"bytes":2501,"lines":37,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":364,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":365,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".claude/agents/scout.md","role":"subagent","description":"Read-only exploration subagent on Sonnet.","skill":null,"agent":null,"bytes":553,"lines":15,"install_to":{"claude-code":".claude/agents/scout.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":".claude/agents/runner.md","role":"subagent","description":"Mechanical command runner on Haiku.","skill":null,"agent":null,"bytes":530,"lines":14,"install_to":{"claude-code":".claude/agents/runner.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":".claude/agents/reviewer.md","role":"subagent","description":"Adversarial reviewer on Opus that never edits.","skill":null,"agent":null,"bytes":791,"lines":16,"install_to":{"claude-code":".claude/agents/reviewer.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/delegate-task/SKILL.md","role":"skill","description":"Classify, pick model and effort, and write the brief before spawning.","skill":"delegate-task","agent":null,"bytes":1559,"lines":32,"install_to":{"claude-code":".claude/skills/delegate-task/SKILL.md","codex":".agents/skills/delegate-task/SKILL.md","cursor":".agents/skills/delegate-task/SKILL.md","gemini-cli":".agents/skills/delegate-task/SKILL.md","antigravity-cli":".agents/skills/delegate-task/SKILL.md","copilot":".agents/skills/delegate-task/SKILL.md"}},{"path":"skills/delegate-task/references/codex-agents.md","role":"reference","description":"Codex custom agent TOML with model and reasoning effort.","skill":"delegate-task","agent":null,"bytes":1460,"lines":34,"install_to":{"claude-code":".claude/skills/delegate-task/references/codex-agents.md","codex":".agents/skills/delegate-task/references/codex-agents.md","cursor":".agents/skills/delegate-task/references/codex-agents.md","gemini-cli":".agents/skills/delegate-task/references/codex-agents.md","antigravity-cli":".agents/skills/delegate-task/references/codex-agents.md","copilot":".agents/skills/delegate-task/references/codex-agents.md"}}]},{"id":"supabase-agent-safety","title":"Supabase with a safe agent","summary":"Supabase MCP scoped to one dev project, read-only, database and docs tools only; every change as a reviewed migration with RLS, policy and expand-contract rules.","description":"Database horror stories are a staple of agent failure threads: a tool with write access to production, a migration run\nfrom chat, a table shipped without row level security. This loadout connects the hosted Supabase MCP server in its\nsafest documented form (project-scoped, read_only=true, database and docs feature groups) and makes every change a\nmigration file that is tested locally and applied by a human. It adds RLS and policy rules, an expand-contract rule for\ndestructive changes, and a reminder that query results are untrusted data.","highlights":["Hosted Supabase MCP, project-scoped, read-only, database and docs tools only","Changes only as migrations, tested with a local db reset","RLS on every new table; (select auth.uid()) in policies; indexed policy columns","Expand, backfill, switch, contract for destructive changes","Query results treated as untrusted data"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","security"],"stacks":["supabase","postgres"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":2,"skills":1,"mcp":1},"requires":{"tools":["supabase"],"env":[],"mcp":["supabase"]},"credits":[{"title":"Supabase MCP server: security and configuration","url":"https://supabase.com/docs/guides/getting-started/mcp"},{"title":"supabase-community/supabase-mcp","url":"https://github.com/supabase-community/supabase-mcp"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Supabase access and migration rules.","skill":null,"agent":null,"bytes":1775,"lines":26,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":496,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":370,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"mcp.json","role":"mcp","description":"Supabase MCP, project-scoped and read-only.","skill":null,"agent":null,"bytes":187,"lines":9,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}},{"path":".cursor/rules/supabase-migrations.mdc","role":"rules","description":"Migration rules for SQL files.","skill":null,"agent":null,"bytes":647,"lines":12,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/supabase-migrations.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/database-change/SKILL.md","role":"skill","description":"Plan, write and test a schema change as a migration.","skill":"database-change","agent":null,"bytes":1386,"lines":18,"install_to":{"claude-code":".claude/skills/database-change/SKILL.md","codex":".agents/skills/database-change/SKILL.md","cursor":".agents/skills/database-change/SKILL.md","gemini-cli":".agents/skills/database-change/SKILL.md","antigravity-cli":".agents/skills/database-change/SKILL.md","copilot":".agents/skills/database-change/SKILL.md"}},{"path":"skills/database-change/references/checklist.md","role":"reference","description":"Migration review checklist.","skill":"database-change","agent":null,"bytes":713,"lines":12,"install_to":{"claude-code":".claude/skills/database-change/references/checklist.md","codex":".agents/skills/database-change/references/checklist.md","cursor":".agents/skills/database-change/references/checklist.md","gemini-cli":".agents/skills/database-change/references/checklist.md","antigravity-cli":".agents/skills/database-change/references/checklist.md","copilot":".agents/skills/database-change/references/checklist.md"}}]},{"id":"swiftui-swift-test-ci","title":"SwiftUI with a Swift package core tested by swift test in CI","summary":"SwiftUI screens as thin views over @Observable view models in a Swift package, tested with Swift Testing by swift test on Linux and macOS CI.","description":"Agents writing SwiftUI put the logic in body, where nothing can test it, and then claim the feature works because Xcode built. This loadout gives your agent a structure that can be tested. Each screen's state, validation and side effects live in a main-actor @Observable view model inside a local Swift package. The network and clock come in through Sendable protocols, so tests swap in actor fakes. The SwiftUI view stays thin and sits behind canImport(SwiftUI), so the package builds and tests on Linux too. A cheap Linux CI job runs swift format lint and swift test in the Swift 6.4.1 container. A macOS job builds the views for the iOS simulator. The verifier runs the full example in the Swift 6 language mode on Swift 6.4.1: six tests and nine cases pass. It also checks that a swallowed error fails the tests and that a main-actor violation fails the build.","highlights":["@MainActor @Observable view model with enum state and no SwiftUI import","Injected Sendable client and clock; actor fakes in tests","Swift Testing with parameterised cases instead of XCTest copies","Linux CI runs swift test; macOS CI compiles the views for the simulator","Verified on Swift 6.4.1 in the Swift 6 language mode"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["web-app","workflow"],"stacks":["swift","swiftui","ios","github-actions"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["swift"],"env":[],"mcp":[]},"credits":[{"title":"Swift Testing documentation","url":"https://developer.apple.com/documentation/testing"},{"title":"Apple: Managing model data in your app (Observation)","url":"https://developer.apple.com/documentation/swiftui/managing-model-data-in-your-app"},{"title":"Swift.org: migrating to Swift 6 (data-race safety)","url":"https://www.swift.org/migration/documentation/migrationguide/"},{"title":"swiftlang/swift-format","url":"https://github.com/swiftlang/swift-format"},{"title":"Swift official Docker images","url":"https://hub.docker.com/_/swift"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for a SwiftUI app whose view models live in a Swift package tested by swift test.","skill":null,"agent":null,"bytes":1648,"lines":24,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":412,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":413,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/swiftui-testable-feature/SKILL.md","role":"skill","description":"Layout, view model and view rules, tests and commands.","skill":"swiftui-testable-feature","agent":null,"bytes":3739,"lines":76,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/SKILL.md","codex":".agents/skills/swiftui-testable-feature/SKILL.md","cursor":".agents/skills/swiftui-testable-feature/SKILL.md","gemini-cli":".agents/skills/swiftui-testable-feature/SKILL.md","antigravity-cli":".agents/skills/swiftui-testable-feature/SKILL.md","copilot":".agents/skills/swiftui-testable-feature/SKILL.md"}},{"path":"skills/swiftui-testable-feature/references/Package.swift","role":"reference","description":"Swift 6 language mode package for iOS 18 and macOS 15.","skill":"swiftui-testable-feature","agent":null,"bytes":391,"lines":16,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/references/Package.swift","codex":".agents/skills/swiftui-testable-feature/references/Package.swift","cursor":".agents/skills/swiftui-testable-feature/references/Package.swift","gemini-cli":".agents/skills/swiftui-testable-feature/references/Package.swift","antigravity-cli":".agents/skills/swiftui-testable-feature/references/Package.swift","copilot":".agents/skills/swiftui-testable-feature/references/Package.swift"}},{"path":"skills/swiftui-testable-feature/references/Note.swift","role":"reference","description":"Value type, client protocol and errors.","skill":"swiftui-testable-feature","agent":null,"bytes":737,"lines":28,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/references/Note.swift","codex":".agents/skills/swiftui-testable-feature/references/Note.swift","cursor":".agents/skills/swiftui-testable-feature/references/Note.swift","gemini-cli":".agents/skills/swiftui-testable-feature/references/Note.swift","antigravity-cli":".agents/skills/swiftui-testable-feature/references/Note.swift","copilot":".agents/skills/swiftui-testable-feature/references/Note.swift"}},{"path":"skills/swiftui-testable-feature/references/NotesModel.swift","role":"reference","description":"@MainActor @Observable view model.","skill":"swiftui-testable-feature","agent":null,"bytes":2517,"lines":72,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/references/NotesModel.swift","codex":".agents/skills/swiftui-testable-feature/references/NotesModel.swift","cursor":".agents/skills/swiftui-testable-feature/references/NotesModel.swift","gemini-cli":".agents/skills/swiftui-testable-feature/references/NotesModel.swift","antigravity-cli":".agents/skills/swiftui-testable-feature/references/NotesModel.swift","copilot":".agents/skills/swiftui-testable-feature/references/NotesModel.swift"}},{"path":"skills/swiftui-testable-feature/references/NotesView.swift","role":"reference","description":"Thin SwiftUI view behind canImport(SwiftUI).","skill":"swiftui-testable-feature","agent":null,"bytes":1157,"lines":39,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/references/NotesView.swift","codex":".agents/skills/swiftui-testable-feature/references/NotesView.swift","cursor":".agents/skills/swiftui-testable-feature/references/NotesView.swift","gemini-cli":".agents/skills/swiftui-testable-feature/references/NotesView.swift","antigravity-cli":".agents/skills/swiftui-testable-feature/references/NotesView.swift","copilot":".agents/skills/swiftui-testable-feature/references/NotesView.swift"}},{"path":"skills/swiftui-testable-feature/references/NotesModelTests.swift","role":"reference","description":"Swift Testing suite with actor fakes.","skill":"swiftui-testable-feature","agent":null,"bytes":3818,"lines":102,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/references/NotesModelTests.swift","codex":".agents/skills/swiftui-testable-feature/references/NotesModelTests.swift","cursor":".agents/skills/swiftui-testable-feature/references/NotesModelTests.swift","gemini-cli":".agents/skills/swiftui-testable-feature/references/NotesModelTests.swift","antigravity-cli":".agents/skills/swiftui-testable-feature/references/NotesModelTests.swift","copilot":".agents/skills/swiftui-testable-feature/references/NotesModelTests.swift"}},{"path":"skills/swiftui-testable-feature/references/swift-format.json","role":"reference","description":"swift-format config, saved as .swift-format.","skill":"swiftui-testable-feature","agent":null,"bytes":373,"lines":15,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/references/swift-format.json","codex":".agents/skills/swiftui-testable-feature/references/swift-format.json","cursor":".agents/skills/swiftui-testable-feature/references/swift-format.json","gemini-cli":".agents/skills/swiftui-testable-feature/references/swift-format.json","antigravity-cli":".agents/skills/swiftui-testable-feature/references/swift-format.json","copilot":".agents/skills/swiftui-testable-feature/references/swift-format.json"}},{"path":"skills/swiftui-testable-feature/references/swift-ci.yml","role":"reference","description":"Linux swift test job and macOS simulator build job.","skill":"swiftui-testable-feature","agent":null,"bytes":1132,"lines":40,"install_to":{"claude-code":".claude/skills/swiftui-testable-feature/references/swift-ci.yml","codex":".agents/skills/swiftui-testable-feature/references/swift-ci.yml","cursor":".agents/skills/swiftui-testable-feature/references/swift-ci.yml","gemini-cli":".agents/skills/swiftui-testable-feature/references/swift-ci.yml","antigravity-cli":".agents/skills/swiftui-testable-feature/references/swift-ci.yml","copilot":".agents/skills/swiftui-testable-feature/references/swift-ci.yml"}}]},{"id":"tauri-desktop-app","title":"Tauri 2 desktop app, least privilege","summary":"Tauri 2 rules and a permissions skill: capabilities for named windows, scoped fs and http, no shell execute, a CSP kept, plus a checker that flags wide grants.","description":"Tauri 2 replaced the old allowlist with capabilities and permissions, and agents adding a feature tend to reach for the widest grant that makes it work: fs:default for every window, shell execute, http without a URL scope, CSP set to null. This loadout follows Tauri's security docs: the frontend is untrusted, capabilities name their windows, file and HTTP permissions carry scopes, commands validate their arguments. A small Node script checks capability files and tauri.conf.json, and the verifier runs it on a clean and a permissive project.","highlights":["Capabilities for named windows, never \"*\" with fs, shell or http","Every fs and http permission carries an allow scope","No shell execute or spawn; shell:allow-open or the opener plugin instead","CSP kept in app.security.csp","Checker script with clear findings, tested by the verifier"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["security","web-app"],"stacks":["tauri","rust","typescript","desktop"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["node","cargo"],"env":[],"mcp":[]},"credits":[{"title":"Tauri docs: capabilities","url":"https://v2.tauri.app/security/capabilities/"},{"title":"Tauri docs: permissions","url":"https://v2.tauri.app/security/permissions/"},{"title":"Tauri docs: content security policy","url":"https://v2.tauri.app/security/csp/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Tauri 2 security model, Rust command rules and checks.","skill":null,"agent":null,"bytes":1929,"lines":31,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":377,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":378,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/tauri-permissions/SKILL.md","role":"skill","description":"Grant the narrowest permission, then check.","skill":"tauri-permissions","agent":null,"bytes":1285,"lines":20,"install_to":{"claude-code":".claude/skills/tauri-permissions/SKILL.md","codex":".agents/skills/tauri-permissions/SKILL.md","cursor":".agents/skills/tauri-permissions/SKILL.md","gemini-cli":".agents/skills/tauri-permissions/SKILL.md","antigravity-cli":".agents/skills/tauri-permissions/SKILL.md","copilot":".agents/skills/tauri-permissions/SKILL.md"}},{"path":"skills/tauri-permissions/scripts/check-capabilities.mjs","role":"reference","description":"Flags wide or unscoped grants and a missing CSP.","skill":"tauri-permissions","agent":null,"bytes":2626,"lines":48,"install_to":{"claude-code":".claude/skills/tauri-permissions/scripts/check-capabilities.mjs","codex":".agents/skills/tauri-permissions/scripts/check-capabilities.mjs","cursor":".agents/skills/tauri-permissions/scripts/check-capabilities.mjs","gemini-cli":".agents/skills/tauri-permissions/scripts/check-capabilities.mjs","antigravity-cli":".agents/skills/tauri-permissions/scripts/check-capabilities.mjs","copilot":".agents/skills/tauri-permissions/scripts/check-capabilities.mjs"}}]},{"id":"telegram-bot-python","title":"Telegram bot with python-telegram-bot","summary":"Rules and a command skill for Telegram bots on python-telegram-bot v22: token from the environment, async-safe handlers, testable logic, escaped output, webhook secrets.","description":"Telegram bots are a favourite first project for agents, and the same issues come up: a token pasted into code or a test, blocking requests calls inside async handlers, raw user text in HTML replies, no error handler, a bot that answers every message in a group. This loadout uses python-telegram-bot v22's documented patterns: an Application with registered handlers and an error handler, logic in plain functions that test without Telegram, escaped output, admin allow-lists, and run_webhook with a secret token in production.","highlights":["Token only from TELEGRAM_BOT_TOKEN; separate test bot for development","No blocking calls in async handlers","Logic in plain functions with unit tests; no network in tests","Escaped user text in HTML replies; quiet in group chats","Webhooks with secret_token in production"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["bots"],"stacks":["python","telegram","uv","pytest"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["uv"],"env":["TELEGRAM_BOT_TOKEN"],"mcp":[]},"credits":[{"title":"python-telegram-bot documentation","url":"https://docs.python-telegram-bot.org/en/stable/"},{"title":"python-telegram-bot wiki: webhooks","url":"https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks"},{"title":"Telegram Bot API","url":"https://core.telegram.org/bots/api"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"python-telegram-bot rules for secrets, structure and behaviour.","skill":null,"agent":null,"bytes":2065,"lines":33,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":378,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":379,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/add-bot-command/SKILL.md","role":"skill","description":"New command with testable logic and checks.","skill":"add-bot-command","agent":null,"bytes":1095,"lines":17,"install_to":{"claude-code":".claude/skills/add-bot-command/SKILL.md","codex":".agents/skills/add-bot-command/SKILL.md","cursor":".agents/skills/add-bot-command/SKILL.md","gemini-cli":".agents/skills/add-bot-command/SKILL.md","antigravity-cli":".agents/skills/add-bot-command/SKILL.md","copilot":".agents/skills/add-bot-command/SKILL.md"}},{"path":"skills/add-bot-command/references/split.py","role":"reference","description":"Example /split command: plain function plus handler.","skill":"add-bot-command","agent":null,"bytes":1384,"lines":39,"install_to":{"claude-code":".claude/skills/add-bot-command/references/split.py","codex":".agents/skills/add-bot-command/references/split.py","cursor":".agents/skills/add-bot-command/references/split.py","gemini-cli":".agents/skills/add-bot-command/references/split.py","antigravity-cli":".agents/skills/add-bot-command/references/split.py","copilot":".agents/skills/add-bot-command/references/split.py"}},{"path":"skills/add-bot-command/references/test_split.py","role":"reference","description":"Unit tests and a no-network registration test.","skill":"add-bot-command","agent":null,"bytes":1140,"lines":36,"install_to":{"claude-code":".claude/skills/add-bot-command/references/test_split.py","codex":".agents/skills/add-bot-command/references/test_split.py","cursor":".agents/skills/add-bot-command/references/test_split.py","gemini-cli":".agents/skills/add-bot-command/references/test_split.py","antigravity-cli":".agents/skills/add-bot-command/references/test_split.py","copilot":".agents/skills/add-bot-command/references/test_split.py"}}]},{"id":"terraform-plan-only","title":"Terraform, plan only","summary":"Let agents write Terraform and produce plans but never apply: a guard hook for apply, destroy and state changes, a plan summary that flags deletes, pinned providers.","description":"Infrastructure is where an agent's confident mistake costs the most, and the stories are familiar: an apply with -auto-approve, a state rm to get past an error, a replace on a database nobody noticed in a long plan. This loadout draws a hard line: the agent writes code, validates and plans; a human applies. A Claude Code hook denies apply, destroy, import, state changes and -auto-approve for Terraform and OpenTofu, a jq script summarises plans and fails on any delete or replace, and HashiCorp's Terraform MCP server gives the agent current provider docs.","highlights":["Agent plans, human applies; apply and destroy blocked by a hook","Plan summary that lists every delete and replace and exits 1","Pinned providers, committed lock file, prevent_destroy on stateful resources","moved blocks for renames instead of destroy and recreate","HashiCorp Terraform MCP server for provider docs (no token needed)"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["security","workflow"],"stacks":["terraform","opentofu","bash","jq"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"adapter","cursor":"native","gemini-cli":"adapter","antigravity-cli":"native","copilot":"adapter"},"counts":{"rules":1,"skills":1,"mcp":1},"requires":{"tools":["terraform","jq","docker"],"env":[],"mcp":["terraform"]},"credits":[{"title":"hashicorp/terraform-mcp-server","url":"https://github.com/hashicorp/terraform-mcp-server"},{"title":"Terraform docs: JSON output format (plan representation)","url":"https://developer.hashicorp.com/terraform/internals/json-format"},{"title":"Terraform docs: refactoring with moved blocks","url":"https://developer.hashicorp.com/terraform/language/modules/develop/refactoring"},{"title":"Claude Code docs: hooks reference","url":"https://code.claude.com/docs/en/hooks"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":10,"failed":0,"not_applicable":0,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Plan-only Terraform rules: allowed commands, never list, code rules.","skill":null,"agent":null,"bytes":2123,"lines":34,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":484,"lines":12,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":358,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/plan-review/SKILL.md","role":"skill","description":"Plan, summarise, flag deletes and install the guard hook.","skill":"plan-review","agent":null,"bytes":1480,"lines":23,"install_to":{"claude-code":".claude/skills/plan-review/SKILL.md","codex":".agents/skills/plan-review/SKILL.md","cursor":".agents/skills/plan-review/SKILL.md","gemini-cli":".agents/skills/plan-review/SKILL.md","antigravity-cli":".agents/skills/plan-review/SKILL.md","copilot":".agents/skills/plan-review/SKILL.md"}},{"path":"skills/plan-review/scripts/plan-summary.sh","role":"reference","description":"Counts plan actions and fails on deletes or replaces.","skill":"plan-review","agent":null,"bytes":1113,"lines":23,"install_to":{"claude-code":".claude/skills/plan-review/scripts/plan-summary.sh","codex":".agents/skills/plan-review/scripts/plan-summary.sh","cursor":".agents/skills/plan-review/scripts/plan-summary.sh","gemini-cli":".agents/skills/plan-review/scripts/plan-summary.sh","antigravity-cli":".agents/skills/plan-review/scripts/plan-summary.sh","copilot":".agents/skills/plan-review/scripts/plan-summary.sh"}},{"path":"skills/plan-review/scripts/guard-terraform.sh","role":"reference","description":"PreToolUse hook that denies apply, destroy and state changes.","skill":"plan-review","agent":null,"bytes":1550,"lines":23,"install_to":{"claude-code":".claude/skills/plan-review/scripts/guard-terraform.sh","codex":".agents/skills/plan-review/scripts/guard-terraform.sh","cursor":".agents/skills/plan-review/scripts/guard-terraform.sh","gemini-cli":".agents/skills/plan-review/scripts/guard-terraform.sh","antigravity-cli":".agents/skills/plan-review/scripts/guard-terraform.sh","copilot":".agents/skills/plan-review/scripts/guard-terraform.sh"}},{"path":"skills/plan-review/scripts/selftest.sh","role":"reference","description":"20 sample commands through the guard hook.","skill":"plan-review","agent":null,"bytes":1563,"lines":33,"install_to":{"claude-code":".claude/skills/plan-review/scripts/selftest.sh","codex":".agents/skills/plan-review/scripts/selftest.sh","cursor":".agents/skills/plan-review/scripts/selftest.sh","gemini-cli":".agents/skills/plan-review/scripts/selftest.sh","antigravity-cli":".agents/skills/plan-review/scripts/selftest.sh","copilot":".agents/skills/plan-review/scripts/selftest.sh"}},{"path":"skills/plan-review/references/settings.example.json","role":"reference","description":"Claude Code settings: deny rules and the hook.","skill":"plan-review","agent":null,"bytes":613,"lines":29,"install_to":{"claude-code":".claude/skills/plan-review/references/settings.example.json","codex":".agents/skills/plan-review/references/settings.example.json","cursor":".agents/skills/plan-review/references/settings.example.json","gemini-cli":".agents/skills/plan-review/references/settings.example.json","antigravity-cli":".agents/skills/plan-review/references/settings.example.json","copilot":".agents/skills/plan-review/references/settings.example.json"}},{"path":"mcp.json","role":"mcp","description":"HashiCorp Terraform MCP server in Docker, pinned.","skill":null,"agent":null,"bytes":154,"lines":9,"install_to":{"claude-code":".mcp.json","codex":null,"cursor":".cursor/mcp.json","gemini-cli":null,"antigravity-cli":".agents/mcp_config.json","copilot":null},"generated":{"antigravity-cli":"generated/antigravity-cli/mcp_config.json"}}]},{"id":"unity-agent-plugin","title":"Unity 6 with the official agent plugin","summary":"Project rules for using Unity's official agent plugin safely in Claude Code or Codex: commit first, Editor-driven scene edits, .meta discipline, compile and test checks.","description":"Unity released an official agent plugin for Claude Code, Codex and Grok this autumn. Its skills edit scripts, scenes and\nassets directly and can run C# in the open Editor through the Unity CLI, and Unity's own README warns that not every change\ncan be undone from the Editor. This loadout adds the project rules around it: a clean git tree before changes, Editor-driven\nedits instead of hand-edited scene YAML, .meta file discipline, generated folders left alone, and compile and test checks,\nplus a setup skill with the documented install commands.","highlights":["Documented install commands for Claude Code and Codex, with checks","Commit before larger changes; clean tree required","Scenes and prefabs changed through the Editor, not hand-edited YAML",".meta and generated-folder rules that prevent broken references","Batch-mode EditMode and PlayMode test commands"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["gamedev"],"stacks":["unity","csharp"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["git"],"env":[],"mcp":[]},"credits":[{"title":"Unity-Technologies/unity-agent-plugin","url":"https://github.com/Unity-Technologies/unity-agent-plugin"},{"title":"Unity docs: about Unity's plugin","url":"https://docs.unity.com/en-us/ai/unity-plugin/about-unity-plugin"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Unity 6 project rules for agent work with the official plugin.","skill":null,"agent":null,"bytes":2039,"lines":29,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":381,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":382,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/unity-csharp.mdc","role":"rules","description":"C# conventions for Unity scripts.","skill":null,"agent":null,"bytes":667,"lines":13,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/unity-csharp.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/unity-plugin-setup/SKILL.md","role":"skill","description":"Install and check the plugin and prepare the project.","skill":"unity-plugin-setup","agent":null,"bytes":1646,"lines":22,"install_to":{"claude-code":".claude/skills/unity-plugin-setup/SKILL.md","codex":".agents/skills/unity-plugin-setup/SKILL.md","cursor":".agents/skills/unity-plugin-setup/SKILL.md","gemini-cli":".agents/skills/unity-plugin-setup/SKILL.md","antigravity-cli":".agents/skills/unity-plugin-setup/SKILL.md","copilot":".agents/skills/unity-plugin-setup/SKILL.md"}}]},{"id":"unity-game-jam","title":"Unity C# game jam","summary":"Unity C# conventions that respect the editor, .meta files and serialisation, plus a skill for scripted web builds ready for itch.io.","description":"Agents are good at C# and bad at Unity. They rename files without their .meta, break serialised\nfields, allocate every frame and forget that half the game lives in scenes and prefabs they cannot see.\nThis loadout fixes that, adds jam-scope discipline, and gives the agent a batch-mode build script for\nweb builds so you are not fighting the build window at the deadline.","highlights":["Rules for .meta files, serialised fields and prefab-first design","Performance habits that matter for web builds (no per-frame allocations or Find calls)","Batch-mode build skill with a ready-to-paste BuildScript.cs and itch.io compression settings","Cursor rule scoped to C# files under Assets/"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["gamedev"],"stacks":["unity","csharp"],"featured":false,"deprecated":false,"last_checked":"2026-10-15","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":2,"skills":1,"mcp":0},"requires":{"tools":["unity-editor"],"env":[],"mcp":[]},"credits":[],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":8,"failed":0,"not_applicable":2,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Unity project and game jam rules.","skill":null,"agent":null,"bytes":2534,"lines":35,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":353,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":354,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":".cursor/rules/unity-csharp.mdc","role":"rules","description":"Unity C# rule, applied to scripts under Assets/.","skill":null,"agent":null,"bytes":782,"lines":15,"install_to":{"claude-code":null,"codex":null,"cursor":".cursor/rules/unity-csharp.mdc","gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"skills/unity-web-build/SKILL.md","role":"skill","description":"Builds a web (WebGL) player from the command line, ready for itch.io.","skill":"unity-web-build","agent":null,"bytes":2586,"lines":63,"install_to":{"claude-code":".claude/skills/unity-web-build/SKILL.md","codex":".agents/skills/unity-web-build/SKILL.md","cursor":".agents/skills/unity-web-build/SKILL.md","gemini-cli":".agents/skills/unity-web-build/SKILL.md","antigravity-cli":".agents/skills/unity-web-build/SKILL.md","copilot":".agents/skills/unity-web-build/SKILL.md"}}]},{"id":"agent-extension-vetting","title":"Vet skills, plugins and MCP servers before install","summary":"Treat agent skills, plugins and MCP servers as dependencies: pin by SHA or exact version, prove HEAD matches the pin, scan every file, and get a human yes.","description":"A skill with shell access is a supply chain. In September 2026 Plugin4Shell showed that a marketplace entry pinned to a commit SHA could still run different code, because the agent checked out a branch named after the SHA. This loadout makes installing an extension a reviewed dependency change. The agent pins the source, proves the checkout matches the pin, runs a standard-library scanner over every file (hidden Unicode, pipe-to-shell, base64 execution, credential paths, agent-directed wording, hooks, unpinned MCP servers) and writes a report for a human to approve. The verifier runs the scanner against a clean skill and a booby-trapped one, and checks the pin script catches the branch trick.","highlights":["Agent proposes, human approves: no installs on the agent's own initiative","Pin check that catches a branch or tag named like the pinned SHA","Standard-library scanner: hidden Unicode, pipe-to-shell, credential paths, hooks, unpinned npx and uvx","Agent versions past the Plugin4Shell fixes; auto-update off for third-party marketplaces","Report template a reviewer can approve in minutes"],"version":"1.0.1","license":"MIT","author":"Setupbay","categories":["security","ai-agents"],"stacks":["any","mcp","git"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["python3","git"],"env":[],"mcp":[]},"credits":[{"title":"AIR Security: Plugin4Shell disclosure (17 September 2026)","url":"https://www.air.security/blog-posts/plugin4shell"},{"title":"The Hacker News: Plugin4Shell lets repository owners swap pinned plugin code","url":"https://thehackernews.com/2026/09/plugin4shell-lets-repository-owners.html"},{"title":"Claude Code docs: plugin marketplace reference (ref and sha pins)","url":"https://code.claude.com/docs/en/plugins/marketplace-reference"},{"title":"Claude Code docs: host a marketplace (auto-update and strictKnownMarketplaces)","url":"https://code.claude.com/docs/en/plugins/host-marketplace"},{"title":"NVIDIA docs: scanning agent skills with SkillSpector","url":"https://docs.nvidia.com/skills/scanning-agent-skills"},{"title":"@SarahLakzit: a skill bundle with shell reach is a supply chain; pin versions and review access","url":"https://x.com/SarahLakzit/status/2109274745585742114"},{"title":"@TheDailyViber: skills look like documentation but behave like supply chain","url":"https://x.com/TheDailyViber/status/2102389962897248684"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Rules for installing skills, plugins and MCP servers as reviewed, pinned dependencies.","skill":null,"agent":null,"bytes":2488,"lines":34,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":399,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":400,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/vet-agent-extension/SKILL.md","role":"skill","description":"Pin, fetch, scan, read and report on an extension.","skill":"vet-agent-extension","agent":null,"bytes":2382,"lines":38,"install_to":{"claude-code":".claude/skills/vet-agent-extension/SKILL.md","codex":".agents/skills/vet-agent-extension/SKILL.md","cursor":".agents/skills/vet-agent-extension/SKILL.md","gemini-cli":".agents/skills/vet-agent-extension/SKILL.md","antigravity-cli":".agents/skills/vet-agent-extension/SKILL.md","copilot":".agents/skills/vet-agent-extension/SKILL.md"}},{"path":"skills/vet-agent-extension/scripts/audit_extension.py","role":"reference","description":"Standard-library pattern scanner; exits 1 on high findings.","skill":"vet-agent-extension","agent":null,"bytes":7753,"lines":130,"install_to":{"claude-code":".claude/skills/vet-agent-extension/scripts/audit_extension.py","codex":".agents/skills/vet-agent-extension/scripts/audit_extension.py","cursor":".agents/skills/vet-agent-extension/scripts/audit_extension.py","gemini-cli":".agents/skills/vet-agent-extension/scripts/audit_extension.py","antigravity-cli":".agents/skills/vet-agent-extension/scripts/audit_extension.py","copilot":".agents/skills/vet-agent-extension/scripts/audit_extension.py"}},{"path":"skills/vet-agent-extension/scripts/check_pin.sh","role":"reference","description":"Detach at the pinned commit and prove HEAD matches.","skill":"vet-agent-extension","agent":null,"bytes":1180,"lines":18,"install_to":{"claude-code":".claude/skills/vet-agent-extension/scripts/check_pin.sh","codex":".agents/skills/vet-agent-extension/scripts/check_pin.sh","cursor":".agents/skills/vet-agent-extension/scripts/check_pin.sh","gemini-cli":".agents/skills/vet-agent-extension/scripts/check_pin.sh","antigravity-cli":".agents/skills/vet-agent-extension/scripts/check_pin.sh","copilot":".agents/skills/vet-agent-extension/scripts/check_pin.sh"}},{"path":"skills/vet-agent-extension/references/report-template.md","role":"reference","description":"Vetting report for a human to approve.","skill":"vet-agent-extension","agent":null,"bytes":785,"lines":24,"install_to":{"claude-code":".claude/skills/vet-agent-extension/references/report-template.md","codex":".agents/skills/vet-agent-extension/references/report-template.md","cursor":".agents/skills/vet-agent-extension/references/report-template.md","gemini-cli":".agents/skills/vet-agent-extension/references/report-template.md","antigravity-cli":".agents/skills/vet-agent-extension/references/report-template.md","copilot":".agents/skills/vet-agent-extension/references/report-template.md"}}]},{"id":"no-ai-voice-writing","title":"Writing rules that avoid AI-sounding prose","summary":"Rules and a linter that stop agents writing 'seamlessly empowers', 'not just X, it's Y', fake proof and em-dash runs into your docs, PRs and release notes.","description":"Readers now spot machine prose in a sentence and stop trusting the page. The tells are well documented: inflated words like delve, tapestry and pivotal, 'it's not just X, it's Y', reflexive groups of three, em-dash runs, emoji bullets, chat filler and proof nobody can check. This loadout gives the agent plain-English rules for every file it writes, a word list with the plain alternative for each pattern, and a standard-library linter that skips code and quotations. The verifier runs the linter on a sloppy README (22 findings) and on a plain rewrite (none).","highlights":["Rules for docs, READMEs, PRs, commit messages, release notes and UI copy","Word list with the plain alternative for each pattern, UK spelling","Linter skips fenced code, inline code, quotes and front matter","Flags fake proof such as '10,000+ users' and 'trusted by thousands'","Allow-list for deliberate exceptions"],"version":"1.0.0","license":"MIT","author":"Setupbay","categories":["workflow"],"stacks":["any","markdown"],"featured":false,"deprecated":false,"last_checked":"2026-10-17","compatibility":{"claude-code":"native","codex":"native","cursor":"native","gemini-cli":"native","antigravity-cli":"native","copilot":"native"},"counts":{"rules":1,"skills":1,"mcp":0},"requires":{"tools":["python3"],"env":[],"mcp":[]},"credits":[{"title":"Wikipedia: Signs of AI writing (WikiProject AI Cleanup)","url":"https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing"},{"title":"@CDGalpha: the tells, from 'delve' and 'seamless' to em-dash spam and fake '10,000+ users' proof","url":"https://x.com/CDGalpha/status/2110292549210620174"},{"title":"plainlanguage.gov: federal plain language guidelines","url":"https://www.plainlanguage.gov/guidelines/"}],"verification":{"status":"verified","checked_at":"2026-10-19T22:49:27Z","passed":9,"failed":0,"not_applicable":1,"skipped":0},"agent_tests":{"status":"untested","last_run":null,"per_agent":{"claude-code":"untested","codex":"untested","cursor":"untested","gemini-cli":"untested","antigravity-cli":"untested","copilot":"untested"}},"files":[{"path":"AGENTS.md","role":"instructions","description":"Plain-writing rules for every file and reply the agent writes.","skill":null,"agent":null,"bytes":1788,"lines":23,"install_to":{"claude-code":"AGENTS.md","codex":"AGENTS.md","cursor":"AGENTS.md","gemini-cli":"AGENTS.md","antigravity-cli":"AGENTS.md","copilot":"AGENTS.md"}},{"path":"CLAUDE.md","role":"adapter","description":"Imports AGENTS.md for Claude Code.","skill":null,"agent":"claude-code","bytes":379,"lines":11,"install_to":{"claude-code":"CLAUDE.md","codex":null,"cursor":null,"gemini-cli":null,"antigravity-cli":null,"copilot":null}},{"path":"GEMINI.md","role":"adapter","description":"Imports AGENTS.md for Gemini CLI.","skill":null,"agent":"gemini-cli","bytes":380,"lines":11,"install_to":{"claude-code":null,"codex":null,"cursor":null,"gemini-cli":"GEMINI.md","antigravity-cli":null,"copilot":null}},{"path":"skills/plain-prose/SKILL.md","role":"skill","description":"Lint, rewrite and re-check prose.","skill":"plain-prose","agent":null,"bytes":1450,"lines":24,"install_to":{"claude-code":".claude/skills/plain-prose/SKILL.md","codex":".agents/skills/plain-prose/SKILL.md","cursor":".agents/skills/plain-prose/SKILL.md","gemini-cli":".agents/skills/plain-prose/SKILL.md","antigravity-cli":".agents/skills/plain-prose/SKILL.md","copilot":".agents/skills/plain-prose/SKILL.md"}},{"path":"skills/plain-prose/scripts/prose_lint.py","role":"reference","description":"Standard-library linter for machine-prose patterns.","skill":"plain-prose","agent":null,"bytes":5460,"lines":120,"install_to":{"claude-code":".claude/skills/plain-prose/scripts/prose_lint.py","codex":".agents/skills/plain-prose/scripts/prose_lint.py","cursor":".agents/skills/plain-prose/scripts/prose_lint.py","gemini-cli":".agents/skills/plain-prose/scripts/prose_lint.py","antigravity-cli":".agents/skills/plain-prose/scripts/prose_lint.py","copilot":".agents/skills/plain-prose/scripts/prose_lint.py"}},{"path":"skills/plain-prose/references/word-list.md","role":"reference","description":"Patterns and plain alternatives.","skill":"plain-prose","agent":null,"bytes":1874,"lines":44,"install_to":{"claude-code":".claude/skills/plain-prose/references/word-list.md","codex":".agents/skills/plain-prose/references/word-list.md","cursor":".agents/skills/plain-prose/references/word-list.md","gemini-cli":".agents/skills/plain-prose/references/word-list.md","antigravity-cli":".agents/skills/plain-prose/references/word-list.md","copilot":".agents/skills/plain-prose/references/word-list.md"}}]}]}