Reference documentation for the Agent Plugins v1.0.0 specification. Use when you need to understand plugin structure, plugin.json schema, SKILL.md format, mcp.json configuration, or environment variable expansion.
Reference documentation for the Agent Plugins v1.0.0 specification. Use when you need to understand plugin structure, plugin.json schema, SKILL.md format, mcp.json configuration, or environment variable expansion.
license
MIT
metadata
{"author":"Kiro Team","version":"1.0.0"}
Agent Plugins Specification Reference
Overview
Agent Plugins is an open, vendor-neutral specification (v1.0.0) maintained by a Technical Steering Committee including Amazon, Cursor, Microsoft, OpenAI, and Vercel. It defines a portable package format for Agent Skills and MCP servers that compatible clients can discover and load consistently.
A power built to the agent-plugins standard is portable across any conformant client.
$schema - Must be https://agent-plugins.org/schemas/1.0.0/plugin.schema.json
name - Lowercase, 1-64 chars, only a-z, 0-9, -, .. No consecutive -- or ... Must start/end alphanumeric.
Optional metadata fields:
version - Semantic Versioning recommended
description - Short description
author - Object with name, email, url (all optional strings)
homepage - Documentation URL
repository - Source repo URL
license - SPDX identifier recommended
keywords - Array of search/discovery tags
extensions - Client-specific data keyed by reverse-domain namespace
The schema defines a fixed set of top-level fields; unknown fields are reported and ignored but do not invalidate the manifest.
skills/ (Agent Skills)
Each immediate subdirectory of skills/ containing a SKILL.md file is one skill. Skills follow the Agent Skills specification. Clients do not recursively search deeper descendants.
SKILL.md Format
---
name: "my-skill"
description: "What this skill does. Use when the user needs X."
license: "MIT"
compatibility: "Works with Kiro, Claude Code, Cursor"
metadata:
author: "your-name"
version: "1.0.0"
---# My Skill## Overview
What this skill does and when to use it.
## Prerequisites Checklist- [ ] Requirement 1
- [ ] Requirement 2
## Step-by-Step Guide### 1. First Step
Instructions with code examples...
## Troubleshooting### Error: "common error"**Solution:** How to fix it.
Required frontmatter fields:
name - Lowercase with hyphens, 1-64 chars, must match directory name exactly
description - Max 1024 chars, start with verb, include when to use
$schema - Must be https://agent-plugins.org/schemas/1.0.0/mcp.schema.json
mcpServers - Object with named server entries
Server transport types:
stdio
Field
Type
Required
Description
type
"stdio"
Yes
Selects stdio transport
command
string
Yes
Single executable token (bare name or ./ relative)
args
string[]
No
Arguments passed to executable
env
object of strings
No
Environment variables (cannot contain PLUGIN_ROOT or PLUGIN_DATA keys)
cwd
string
No
Working directory (must start with ./, ${PLUGIN_ROOT}, or ${PLUGIN_DATA})
command must be a single token, not a shell command string
Bare names resolve via platform executable search
Plugin-relative paths (./bin/server) resolve against plugin root
When cwd is omitted, the plugin root is used
streamable-http
Field
Type
Required
Description
type
"streamable-http"
Yes
Selects Streamable HTTP transport
url
string
Yes
Absolute HTTP/HTTPS URL (HTTPS required for non-loopback)
headers
object of strings
No
Fixed HTTP headers (no secrets, no expansion)
sse (Legacy)
Field
Type
Required
Description
type
"sse"
Yes
Selects deprecated HTTP+SSE transport
url
string
Yes
Absolute HTTP/HTTPS URL
headers
object of strings
No
Fixed HTTP headers
Loading Rules
Invalid mcp.json (bad JSON, unsupported schema version, schema mismatch with plugin.json) disables MCP for that plugin but does not prevent other components from loading
Invalid individual server entries are skipped; other servers continue loading
Unsupported transport types are skipped
Connection failures are non-fatal to other components
Environment Variables and Placeholder Expansion
Clients provide two variables to stdio subprocesses:
Expansion does NOT apply to:command, url, header names/values, env keys
Expansion is single-pass, non-recursive. Unrecognized placeholder-like text remains literal. No other placeholder or environment-variable expansion is performed.
Use PLUGIN_ROOT for: referencing bundled scripts, binaries, config files that ship with the plugin.
Use PLUGIN_DATA for: installed dependencies, generated code, caches, persistent state that survives plugin updates.
Client Extensions
Client-specific behavior goes in reverse-domain namespaces. Agent Plugins assigns no portable semantics to extension data.