| title |
|---|
Agent Skills List |
- Author(s): @ignatov
Add a mechanism for agents to advertise available Agent Skills to clients. Skills are reusable, composable capabilities that agents can expose, allowing clients to discover what an agent can do beyond basic prompting. This RFD proposes:
- A canonical
AvailableSkilltype describing skill schema aligned with the Agent Skills Specification - An
AvailableSkillsUpdatesession notification for streaming skill availability to clients
Currently, the ACP protocol provides AvailableCommand and AvailableCommandsUpdate for agents to advertise executable commands. However, commands are designed for user-invoked actions within a session (e.g., /create_plan, /research_codebase), not for describing higher-level agent capabilities that:
- Have licensing or compatibility requirements
- Need pre-approved tool access for security
- Represent modular, composable functionality
- Require rich metadata for discovery and filtering
This creates several problems:
- Limited capability discovery - Clients cannot understand what specialized skills an agent offers
- No licensing visibility - Users cannot see license terms for specific agent capabilities
- Missing compatibility info - No way to indicate if a skill requires specific environments, network access, or system packages
- Security blind spots - No pre-declaration of tools a skill might use, making trust decisions difficult
- Poor extensibility - Commands lack a metadata mechanism for custom integrations
Add a new AvailableSkill type and AvailableSkillsUpdate notification following the existing pattern for AvailableCommand and AvailableCommandsUpdate. The schema aligns with the Agent Skills Specification.
| Field | Required | Constraints |
|---|---|---|
name |
Yes | Max 64 characters. Lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen. No consecutive hyphens. |
description |
Yes | Max 1024 characters. Non-empty. Describes what the skill does and when to use it. |
license |
No | License name or reference to a bundled license file (e.g., MIT, Apache-2.0, ./licenses/my-license.txt). |
compatibility |
No | Max 500 characters. Indicates environment requirements (intended product, system packages, network access, etc.). |
metadata |
No | Arbitrary string key-value mapping for additional properties. |
allowedTools |
No | Array of pre-approved tools the skill may use (Experimental). |
---
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents.
license: Apache-2.0
metadata:
author: example-org
version: "1.0"
---The AvailableSkillsUpdate notification allows agents to stream skill availability during a session:
{
"jsonrpc": "2.0",
"method": "session/update",
"params": {
"sessionId": "sess_abc123",
"sessionUpdate": "available_skills_update",
"availableSkills": [
{
"name": "code-review",
"description": "Performs automated code review on staged changes..."
},
{
"name": "test-generator",
"description": "Generates unit tests for the specified code...",
"allowedTools": ["Bash", "Read", "Write"]
}
]
}
}Once this feature exists:
- Rich skill discovery - Clients can browse available skills with detailed metadata, enabling better agent selection and capability understanding
- License compliance - Organizations can filter or highlight skills based on licensing requirements
- Environment matching - Clients can warn users when skills may not work in their environment (e.g., missing git, no network access)
- Security pre-approval - Users can review and pre-approve tool access for skills, reducing permission fatigue
- Extensible integrations - The
metadatafield enables custom integrations without protocol changes - Skill marketplaces - Future tooling could aggregate skills across agents for discovery and comparison
Clients could implement:
- Skill browser/selector UI
- Automatic environment compatibility checking
- License filtering for enterprise compliance
- Skill-based agent recommendations
-
Add
AvailableSkilltype to schema:name: Required string with validation pattern^[a-z0-9]([a-z0-9-]*[a-z0-9])?$, max 64 charsdescription: Required string, max 1024 chars, minLength 1license: Optional stringcompatibility: Optional string, max 500 charsallowedTools: Optional array of strings_meta: Standard extensibility field, we can put metadata from the skills spec
-
Add
AvailableSkillsUpdatetype:availableSkills: Required array ofAvailableSkill_meta: Standard extensibility field
-
Update
SessionUpdateenum to includeavailable_skills_updatevariant
- Update Rust SDK (
src/):- Add
AvailableSkillstruct with serde validation - Add
AvailableSkillsUpdatestruct - Update
SessionUpdateenum
- Add
- Update protocol documentation:
- Document the new types
- Provide usage examples
- Link to Agent Skills Specification for skill authoring guidance
- 2025-01-10: Initial draft proposal