multi-harness-plugins
Skill19 starsChanged 5 days agoApache-2.0View on GitHub
Use when creating, structuring, or validating multi-harness plugins or project-local .agents/ skills, subagents, hooks, rules, and MCP configs across Google Antigravity, Claude Code, Codex CLI, Cursor, OpenCode, and VS Code.
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- debloatSkill
- flow-completionSkill
- flow-docsSkill
- flow-executionSkill
- flow-learnSkill
- flow-planningSkill
- flow-setupSkill
- flowSkill
- okfSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 0 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 28
Keep every SKILL.md concise (<= 200 lines and strictly < 24,000 bytes so Google Antigravity never truncates the bottom of the file).
- Very specific: line 29
Start description with Use when ...
- Very specific: line 30
Put detailed schemas, checklists, and examples in references/*.md files linked from SKILL.md.
- Very specific: line 33
Use top-level H1 (# ) section headings (# Role & Identity, # Responsibilities, # Verification & Constraints, # Output Contract) with ### …
- Very specific: line 36
Do not require python3, node, or jq in SessionStart shell hooks (agy and codex ship as static native binaries).
- Very specific: line 39
Run /flow:validate to verify SKILL.md byte budgets, subagent frontmatter and H1 headings, hook schemas, and relative links.
- Very specific: line 43
No Duplicate Surface Mirrors: Never maintain plugins/<name>/ mirrors, root CLAUDE.md files alongside AGENTS.md (breaks claude plugin …
- Very specific: line 44
Strict
24 KBSKILL.mdCap: Never exceed 24,000 bytes in any SKILL.md file. - Very specific: line 45
YAML List Tool Restrictions: Always format tools and disallowedTools as YAML lists (- Edit), never comma-separated strings (tools: Read, …
- Very specific: line 46
Short MCP Server & Tool Names: Keep combined MCP tool names under 60 characters (^[a-zA-Z0-9_-]+$) so Cursor (59-char cap) and Antigravity …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Multi-Harness Plugins & Project-Local .agents/ Architecture
Build and maintain skills, subagents, hooks, rules, and MCP configurations that work cleanly across Google Antigravity (IDE & CLI), Claude Code, Codex CLI, Cursor, OpenCode V2, and VS Code / GitHub Copilot—both for project-local .agents/ folders and extension-wide plugins.
Project-Local Discovery Matrix (.agents/ & Repo-Local Configs)
How each harness discovers project-local instructions, skills, subagents, hooks, and MCP servers inside a repository:
| Surface | Google Antigravity (agy) | Claude Code (claude) | Codex CLI (codex) | Cursor (cursor) | OpenCode V2 (opencode) | VS Code / Copilot (code) |
| Instructions | AGENTS.md, GEMINI.md, .agents/rules/*.md | AGENTS.md (native; suppressed if CLAUDE.md exists without @AGENTS.md) | AGENTS.md (AGENTS.override.md wins; trusted projects) | AGENTS.md, .cursor/rules/*.mdc or *.md | AGENTS.md (walked from cwd to root; no CLAUDE.md fallback) | AGENTS.md (chat.useAgentsMdFile: true) |
| Project Skills | .agents/skills/<name>/SKILL.md | .claude/skills/<name>/SKILL.md (or symlinked to .agents/skills/) | .agents/skills/<name>/SKILL.md | .agents/skills/, .cursor/skills/, .claude/skills/ | .agents/skills/, .opencode/skills/, .claude/skills/ | .agents/skills/, .github/skills/ |
| Project Subagents | .agents/agents/<name>.md (agents/*/agent.md) | .claude/agents/<name>.md | .codex/agents/<name>.toml (recursive in trusted projects) | .cursor/agents/*.md, .claude/agents/*.md, .codex/agents/ | .opencode/agents/*.md or ctx.agent.transform in .opencode/plugins/*.js | .github/agents/*.agent.md, .claude/agents/*.md |
| Project Hooks | .agents/hooks.json (flat lifecycle array; nested tool matcher) | .claude/settings.json / .claude/settings.local.json (nested matchers) | .codex/hooks.json or [hooks] in .codex/config.toml (trusted projects) | .cursor/hooks.json (version: 1, camelCase events) | .opencode/plugins/*.{ts,js} (ctx.session.hook("context", ...)) | .claude/settings.json, .github/hooks/*.json |
| Project MCP Config | .agents/mcp_config.json (or ~/.gemini/antigravity/mcp_config.json) | .mcp.json (mcpServers at repo root) | .mcp.json or [mcp_servers.<name>] in .codex/config.toml | .cursor/mcp.json (mcpServers; ${workspaceFolder}) | opencode.json (mcp.servers.<name>) or ctx.mcp.transform | .vscode/mcp.json (servers object) |
Workflow
- Choose the Target Scope:
- Project-Local (
.agents/inside a repository): Used by/flow:setup,/flow:learn, and repository maintainers to store.agents/bundles/knowledge,.agents/skills/<domain>/domain and review skills,.agents/agents/<name>.mdsubagents,.codex/agents/<name>.tomlagents, and.agents/mcp_config.json/.mcp.jsonserver definitions. - Extension-Wide Plugin (Plugin Repository Root): Used when packaging reusable skills, subagents, hooks, rules, and MCP servers as an installable plugin across all six harnesses.
- Project-Local (
- Author Progressive-Disclosure Skills:
- Keep every
SKILL.mdconcise (<= 200lines and strictly< 24,000bytes so Google Antigravity never truncates the bottom of the file). - Start
descriptionwithUse when ...(<= 500characters) and avoid vague prefixes (Auto-activate,Produces,Expert knowledge,Comprehensive). - Put detailed schemas, checklists, and examples in
references/*.mdfiles linked fromSKILL.md.
- Keep every
- Author Compatible Subagents:
- Format Markdown subagents (
agents/<name>.mdor.agents/agents/<name>.md) withname,description,model: inherit,mainAgent: false,subagent: true,commandExecutionPolicy,skills: [...], andreadonly: true+ YAML listdisallowedToolsfor read-only reviewers. - Use top-level H1 (
#) section headings (# Role & Identity,# Responsibilities,# Verification & Constraints,# Output Contract) with###subsections so Antigravity splits sections into XML system-prompt blocks. - Pair Markdown subagents with
.codex/agents/<name>.tomlfor Codex CLI.
- Format Markdown subagents (
- Keep Runtime Hooks Zero-Dependency & Cross-Platform:
- Do not require
python3,node, orjqinSessionStartshell hooks (agyandcodexship as static native binaries). - Pair pure POSIX
sh+awk(hooks/<name>.sh) with native PowerShell (hooks/<name>.ps1,pwsh/ Windows PowerShell 5.1+) and"commandWindows"for Windows hosts, plus.opencode/plugins/<name>.jsin nativenode:fs/node:path.
- Do not require
- Validate Structural Parity:
- Run
/flow:validateto verifySKILL.mdbyte budgets, subagent frontmatter and H1 headings, hook schemas, and relative links.
- Run
Guardrails
- No Duplicate Surface Mirrors: Never maintain
plugins/<name>/mirrors, rootCLAUDE.mdfiles alongsideAGENTS.md(breaksclaude plugin validate --strictand double-loads withAGENTS.mdin Cursor),.github/agents/*.agent.mdcopies,.opencode/agents/*.mdcopies, orcommands/wrappers. - Strict
24 KBSKILL.mdCap: Never exceed24,000bytes in anySKILL.mdfile. - YAML List Tool Restrictions: Always format
toolsanddisallowedToolsas YAML lists (- Edit), never comma-separated strings (tools: Read, Grepfails YAML unmarshaling in Antigravity and silently drops the subagent). - Short MCP Server & Tool Names: Keep combined MCP tool names under
60characters (^[a-zA-Z0-9_-]+$) so Cursor (59-char cap) and Antigravity (64-char cap onmcp_<plugin>_<server>_<tool>) never drop or truncate tools.
References
- Skills, Subagents, Local
.agents/, & MCP Limits — How each harness loads.agents/folders, local MCP configs (.agents/mcp_config.json,.mcp.json,.cursor/mcp.json,.vscode/mcp.json,opencode.json), H1 subagent sections, and Antigravity's Pythonrun_workflowAPI. - Hooks & Runtime Portability — Project-local and plugin hook schemas (flat Antigravity lifecycle hooks vs. nested Claude/Codex matchers), stdout JSON keys, Cursor deduplication, and OpenCode V2
setup(ctx). - Manifests & Single-Root Packaging — Root layout and manifest schemas for
plugin.json,.claude-plugin/,.codex-plugin/,.cursor-plugin/,.agents/plugins/marketplace.json,package.json, and OpenCode V2.
Validation
- Confirm every
SKILL.mdhasnameanddescription(Use when ...,<= 500chars) and is< 24,000bytes. - Confirm every subagent in
agents/*.mdor.agents/agents/*.mdincludesmodel: inherit,mainAgent: false,subagent: true, H1 (#) section headings, and YAML listdisallowedToolson read-only agents. - Confirm all relative Markdown links resolve on disk.
Example
Invoke this skill when scaffolding project-local skills, subagents, hooks, or MCP configs under .agents/ during /flow:setup or /flow:learn, or when authoring an extension-wide multi-harness plugin.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

