agentskills-io
Provides templates, documentation, and runnable helper scripts for creating and validating Agent Skills. Contains executable shell commands (e.g., uvx --from git+https://github.com/agentskills/agentskills#subdirectory=skills-ref) and scripts that modify files such as plugins/${plugin}/.claude-plugin/plugin.json, enabling local execution and external network fetches.
Agent Skills (agentskills.io)
Create portable skills for AI agents. Works with Claude Code, Cursor, GitHub Copilot, OpenAI integrations, VS Code (symlinks enable sharing across tools).
Resources
- Specification: https://agentskills.io/specification | Validator: https://github.com/agentskills/agentskills
Structure
skill-name/
├── SKILL.md # Required (frontmatter + instructions, <5000 tokens activation)
├── scripts/ # Optional: executable code
├── references/ # Optional: detailed docs
└── assets/ # Optional: templates, static files
Rules: Dir name = frontmatter name:. Only 3 subdirs. SKILL.md <500 lines. ~100 tokens for discovery (name+desc).
Frontmatter
Required
name: 1-64 chars, lowercase alphanumeric-hyphens (^[a-z0-9]+(-[a-z0-9]+)*$)description: 1-1024 chars, include "Use when..." (discovery budget: ~100 tokens)
Optional
license: SPDX identifier (Apache-2.0, MIT) |compatibility: Environment reqs (<500 chars)metadata: Key-value pairs (author, version, tags) |allowed-tools: Space-delimited tool list
Validation
# Install permanently (vs ephemeral uvx)
uv tool install git+https://github.com/agentskills/agentskills#subdirectory=skills-ref
# Or use uvx for one-shot validation
uvx --from git+https://github.com/agentskills/agentskills#subdirectory=skills-ref skills-ref validate ./skill
| Command | Description |
|---|---|
skills-ref validate <path> | Check structure, frontmatter, token budgets |
skills-ref read-properties <path> | Extract metadata |
skills-ref to-prompt <path> | Generate prompt format |
Writing Rules
- Imperative language: "Check:
command" not "You might want to..." - Concrete examples with expected output; handle common errors with solutions
- Progressive disclosure: core in SKILL.md (<5000 tokens), details in references/
Common Errors
| Error | Fix |
|---|---|
| Invalid name | Lowercase alphanumeric-hyphens only |
| Missing description | Add description: field with "Use when..." |
| Description too long | <1024 chars, move details to body |
| Invalid YAML | Check indentation, quote special chars |
| Missing SKILL.md | Filename must be exactly SKILL.md |
| Dir name mismatch | Directory name must match name: field |
Quick Workflow
- Create:
mkdir skill-name && touch skill-name/SKILL.md - Add frontmatter (name, description with "Use when...")
- Write instructions (bullets, not prose); validate:
skills-ref validate ./skill-name - Test with AI agent, iterate; add LICENSE, push to repository
Plugin Structure (Claude Code)
plugin-name/
├── .claude-plugin/plugin.json
├── README.md, LICENSE, CHANGELOG.md # CHANGELOG.md tracks versions
├── skills/skill-name/SKILL.md
├── agents/ # Optional: subagents (.md files)
└── examples/ # Optional: full demo projects
Distinctions: Plugin examples/ = runnable projects. Skill assets/ = static resources only.
Batch Validation & Versioning
bash scripts/validate-skills-repo.sh # Validate all skills in repo
bash scripts/bump-changed-plugins.sh # Auto-bump only changed plugins (semver)
Minimal Example
---
name: example-skill
description: Brief description. Use when doing X.
---
# Example Skill
## Prerequisites
- Required tools
## Instructions
1. First step: `command`
2. Second step with example
## Troubleshooting
**Error**: Message → **Fix**: Solution
Symlink Sharing
Share skills across Claude Code, Cursor, VS Code: ln -s /path/to/skills ~/.cursor/skills
References
- specification.md - Full YAML schema, token budgets
- examples.md - Complete examples across platforms
- validation.md - Error troubleshooting
- best-practices.md - Advanced patterns, symlink setup