Ecosystem awareness for AI agent plugin systems — Claude Code, Cursor, agentskills.io standard, AAIF. Auto-loaded into agents writing skills, agents, or plugin manifests so output targets the correct schema and platform. Describes plugin.json schemas, SKILL.md portability constraints, cross-vendor differences, and self-update instructions when ecosystem changes occur.
84
Quality
76%
Does it follow best practices?
Impact
100%
1.47xAverage score across 3 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./plugins/plugin-creator/skills/agent-plugin-ecosystem/SKILL.mdThis skill provides verified ecosystem facts for agents writing plugin manifests, skill files, and agent files. When loaded, use it to produce output that targets the correct schema and platform — and to avoid writing files that silently fail validation on a different vendor.
Two production plugin bundle systems exist as of 2026-02-26. They share near-identical schemas.
.claude-plugin/plugin.jsonname (kebab-case only)skills, agents, commands, hooks, mcpServers, lspServers, outputStylesagents must be an array of individual file paths — not a directory string./.cursor-plugin/plugin.json.mdc files), Skills (SKILL.md), Agents, Commands, Hooks, MCP ServersKey difference between the two: Cursor has Rules (.mdc files); Claude Code does not. Otherwise the schemas are near-identical.
The SKILL.md format is a cross-vendor open standard. Confirmed adopters as of 2026-02-26: Claude Code, Cursor, VS Code Copilot (v1.109, January 2026), Gemini CLI, OpenAI Codex, LM-Kit.NET.
Portable frontmatter fields (all vendors): name, description, license, compatibility, metadata, allowed-tools
Claude Code-only extensions (other vendors ignore these fields): argument-hint, model, context, agent, user-invocable, disable-model-invocation, hooks
Critical portability gap — allowed-tools delimiter:
allowed-tools: Read Grep Globallowed-tools: Read, Grep, GlobA skill using space-delimited allowed-tools is cross-vendor portable. A skill using comma-delimited is Claude Code-specific. When writing a skill intended for multiple platforms, use the space-delimited form.
Spec URL: https://agentskills.io/specification
The Agentic AI Foundation (AAIF) — launched December 2026 under the Linux Foundation — stewards MCP (tool connectivity) and AGENTS.md (project instructions). Founding members include Anthropic, OpenAI, Google, Microsoft, AWS, Bloomberg, and Cloudflare.
AAIF does NOT yet steward a plugin bundle standard. Claude Code and Cursor schemas converged independently. The next likely venue for plugin bundle standardization is the MCP Dev Summit (April 2-3, 2026, NYC).
No unified plugin bundle standard exists as of 2026-02-26. Write to the platform-specific schema for the target system. Write to agentskills.io portable fields when targeting multiple vendors.
AAIF site: https://aaif.io/
OpenCode supports two mechanisms for attaching MCP servers to a skill. Both are specific to the OpenCode runtime — other vendors ignore these fields.
mcp: frontmatter fieldA skill can declare MCP servers directly in SKILL.md frontmatter under the mcp: key. Each entry names a server and provides its launch configuration.
stdio server (process-based):
---
name: my-skill
description: Does something
mcp:
server-name:
command: npx
args: ["-y", "some-mcp-package"]
env:
KEY: value
---HTTP server (SSE-based):
mcp:
server-name:
url: https://mcp.example.com/sse
headers:
Authorization: "Bearer token"mcp.json sidecar fileAn alternative to frontmatter: place an mcp.json file next to SKILL.md in the same directory.
{ "mcpServers": { "server-name": { "command": "npx", "args": ["-y", "pkg"] } } }Precedence: mcp.json takes precedence over frontmatter mcp: if both are present.
MCP servers declared via either mechanism use idle-timeout pooling:
sessionID:skillName:serverNameThe mcp: frontmatter key is an OpenCode extension. Claude Code and Cursor do not define this field — they ignore it. AmpCode compatibility with inline mcp: frontmatter is unverified. When writing skills targeting multiple platforms, the mcp: block is silently inert outside OpenCode.
The plugin_validator.py FM009 guard treats mcp: as an ecosystem-owned key and skips rewriting its sub-keys (e.g., command: npx -y server) to avoid corrupting OpenCode skill definitions.
SOURCE: oh-my-opencode source /src/features/opencode-skill-loader/skill-mcp-config.ts, https://github.com/code-yeongyu/oh-my-opencode (accessed 2026-03-06).
flowchart TD
Start([Writing a plugin file]) --> Q1{What platform?}
Q1 -->|Claude Code only| CC[Use .claude-plugin/plugin.json<br>agents field = array of file paths<br>name required kebab-case<br>comma-delimited allowed-tools]
Q1 -->|Cursor only| CU[Use .cursor-plugin/plugin.json<br>Same schema as Claude Code<br>Rules use .mdc files]
Q1 -->|Both or portable| Both[Use agentskills.io portable fields only<br>space-delimited allowed-tools<br>Avoid Claude Code-only frontmatter]
CC --> Val[Validate: claude plugin validate path]
CU --> Val2[Validate per Cursor spec]
Both --> Val3[Check against agentskills.io spec]When making changes that affect ecosystem facts — new vendor adopters, schema changes, new fields, updated spec URLs — update this file and cite the source URL and access date inline.
Reference URLs to monitor for changes:
SOURCE: Research conducted 2026-02-26. Cursor plugin launch date from https://cursor.com/changelog (2026-02-17). AAIF membership from https://aaif.io/ (2026-02-26). agentskills.io adopter list from https://agentskills.io/specification (2026-02-26).
5667e97
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.