Thank you for your interest in contributing! This guide explains how to create, test, and submit AI agent skills to this repository.
- Creating a New Skill
- SKILL.md Manifest Format
- Naming Conventions
- Quality Expectations
- Testing Locally
- Submitting a Pull Request
- PR Checklist
Each skill is a directory under skills/ containing at minimum a SKILL.md file:
skills/
└── your-skill-name/
├── SKILL.md # Required: manifest + instructions
└── ... (optional files) # Templates, scripts, reference materials
- Fork this repository
- Create a new directory:
skills/your-skill-name/ - Add a
SKILL.mdfile with valid frontmatter and instructions - Test the skill locally (see Testing Locally)
- Open a pull request
Every SKILL.md file MUST begin with YAML frontmatter followed by Markdown instructions.
---
name: docker-expert
description: >
Advanced Docker containerization guidance for multi-stage builds, image
hardening, and Compose workflows. Use when working with `Dockerfile`,
`docker-compose.yml`, containerization, or image optimization.
---
## When to Use
- Creating or reviewing a `Dockerfile`
- Hardening a container image
- Troubleshooting Compose setup---
name: pdf-processing
description: >
Extract PDF text, fill forms, and merge files. Use when handling PDFs,
document extraction, or PDF form workflows.
license: Apache-2.0
metadata:
author: example-org
version: "1.0"
---| Field | Required | Description |
|---|---|---|
name |
Yes | Kebab-case identifier. Must match the directory name exactly. |
description |
Yes | What the skill does and when to use it. Put activation cues here. |
license |
No | License name or reference to a bundled license file. |
compatibility |
No | Environment requirements, if the skill has any. |
metadata |
No | Additional string metadata such as author or version. |
allowed-tools |
No | Space-delimited list of pre-approved tools. Experimental. |
Do not add non-standard top-level fields such as version or triggers. If you want version
metadata, put it under metadata. If you want to describe activation cues, include them directly in
description.
nameMUST be kebab-case (lowercase letters, numbers, and hyphens only)nameMUST match the parent directory name exactlynameMUST NOT contain path separators, dots, or special charactersnameMUST NOT start or end with a hyphen or contain consecutive hyphensdescriptionMUST be non-empty and describe both the capability and when to use it- Content after frontmatter MUST be non-empty and substantive
Skill names follow these conventions:
- Format:
kebab-case— lowercase letters, numbers, and hyphens only - Descriptive: The name should clearly indicate what the skill covers
- Technology-specific: Include the technology or domain name when applicable
| Name | Why It Works |
|---|---|
docker-expert |
Technology + expertise level |
github-actions |
Specific technology |
rust-async-patterns |
Language + specific topic |
sql-optimization-patterns |
Domain + specific focus |
core-web-vitals |
Well-known industry term |
| Name | Issue |
|---|---|
docker |
Too generic |
my-awesome-skill |
Not descriptive |
Docker_Expert |
Wrong case (use kebab-case) |
skill.docker |
No dots allowed |
Every skill submitted to this repository must meet these standards:
-
Useful content — The skill must provide actionable instructions that genuinely help an AI agent perform a specific task better. No placeholder text or vague guidance.
-
Strong description — The
descriptionshould carry the activation cues. Be specific about user intent and nearby phrases, without making the skill so broad that it activates everywhere. -
Focused instructions — Keep
SKILL.mdconcise and action-oriented. Prefer the core workflow, defaults, and gotchas over long background material. -
Well-structured Markdown — Use headings, lists, code blocks, and tables to organize content. Make it scannable.
-
Progressive disclosure — Keep the main
SKILL.mdunder 500 lines when possible. Move detailed reference material toreferences/,assets/, orscripts/, and tell the agent when to load those files. -
No sensitive data — Do not include API keys, credentials, personal information, or proprietary code in skill content.
-
Accurate information — Technical guidance must be correct and up-to-date. Cite sources when referencing specific standards (e.g., WCAG 2.1).
Before submitting, test your skill to ensure it works correctly:
Use the reference validator:
skills-ref validate skills/your-skill-nameIf you do not have skills-ref installed yet, this repository can bootstrap a pinned local copy for
you:
./scripts/install-skills-ref.shVerify:
namematches the directory namedescriptionis present and includes activation cues- Optional fields use official top-level names
- Content after frontmatter is substantive
# Install from your local clone
agentsync skill install your-skill-name --source /path/to/your/agents-skills/clone
# Or symlink for quick iteration
ln -s /path/to/agents-skills/skills/your-skill-name ~/.config/opencode/skills/your-skill-nameOpen your AI coding assistant and test that the skill:
- Activates when prompts match the cues in
description - Provides relevant and accurate guidance
- Does not activate in unrelated contexts
The CI pipeline will run the same validation on your PR. You can run it locally:
./scripts/validate-skills.shUse Lefthook to catch issues before pushing:
brew install lefthook
lefthook install- Valid manifest — Frontmatter is well-formed with all required fields
- Name consistency — Directory name matches the
namefield in frontmatter - Content quality — Instructions are substantive, accurate, and well-organized
- Description quality —
descriptionclearly communicates both the capability and when the skill should activate - No conflicts — Skill does not duplicate an existing skill's purpose
- Clean PR — One skill per PR (unless related), clear description
Use conventional commit format:
feat: add terraform skill— for new skillsfix: refine docker-expert description— for skill fixesdocs: improve contributing guide— for documentation changes
Before submitting, confirm:
- Skill directory is under
skills/with a kebab-case name -
SKILL.mdhas valid YAML frontmatter with official fields only -
namein frontmatter matches the directory name exactly -
descriptionis a clear summary of what the skill does and when to use it - Content after frontmatter is substantive (not placeholder text)
- Main
SKILL.mdstays concise; detailed material is moved to referenced files when needed -
skills-ref validate skills/your-skill-namepasses - Tested locally — skill installs and activates correctly
- No sensitive data (API keys, credentials, personal info)
- No duplicate of an existing skill's purpose