Thank you for your interest in contributing a skill to the AgentOS ecosystem! This guide walks you through the process of creating, testing, and submitting a new skill.
Skills are SKILL.md files — each containing YAML frontmatter (metadata) and a markdown body (instructions for the AI agent). They live inside the @framers/agentos-skills content package under registry/. The typed SDK that discovers and loads them lives in the sibling @framers/agentos-skills-registry package. There are no individual packages per skill.
Skills are organized into two tiers:
| Tier | Directory | Namespace | Maintained By | Verified |
|---|---|---|---|---|
| Curated | registry/curated/ |
wunderland |
Framers staff | Yes |
| Community | registry/community/ |
community |
Original author / community | No |
Curated skills ship pre-verified and are maintained by the Framers team. Community skills are submitted via pull request by anyone and are maintained by their authors.
Fork framerslab/agentos-skills-registry and clone it locally.
git clone https://github.com/<your-username>/agentos-skills-registry.git
cd agentos-skills-registryCreate a new directory under registry/community/ with your skill name. The directory name must be lowercase, use hyphens for separators, and match the name field in your frontmatter.
mkdir -p registry/community/my-skillCreate registry/community/my-skill/SKILL.md with two parts:
- YAML frontmatter between
---delimiters containing metadata - Markdown body containing instructions for the AI agent
The markdown body should be written in 2nd person ("You can...", "Use the...") because it is injected directly into an agent's system prompt.
Fill in all required fields. See the SKILL.md Format Reference below for the complete spec.
The body is the actual instructions the AI agent will follow. It should include:
- A heading with the skill name
- A description of what the skill enables the agent to do
- Step-by-step guidance for how the agent should use the skill
- An Examples section with concrete usage examples
- A Constraints section documenting limitations
npm run validate registry/community/my-skill/SKILL.md| Field | Type | Description |
|---|---|---|
name |
string | Skill identifier. Must match the directory name. Lowercase, hyphens only. |
version |
string | Semantic version (e.g., '1.0.0'). Quote it to avoid YAML parsing issues. |
description |
string | Short description, under 200 characters. |
author |
string | Your name or GitHub username. |
namespace |
string | Must be community for community submissions. |
category |
string | One of the valid categories listed below. |
tags |
array | At least one tag. Use lowercase, hyphenated strings. |
| Field | Type | Description |
|---|---|---|
requires_secrets |
array | Secret keys the skill needs (e.g., [service.token]). Use [] if none. |
requires_tools |
array | Tool names the skill depends on (e.g., [web-search]). Use [] if none. |
metadata.agentos.emoji |
string | Emoji icon for the skill in UIs. |
metadata.agentos.homepage |
string | URL to the skill's related service or docs. |
automation— Workflow automation, orchestration, repetitive task handlingcommunication— Chat, email, messaging platformscontent— Content planning, drafting, publishing pipelinescreative— Art, writing, design, generationdeveloper-tools— Code, repos, CI/CD, debuggingdevops— Operational tooling, monitoring, reliability checksinformation— Data lookup, search, knowledge retrievalinfrastructure— Infrastructure provisioning, hosting, deployment workflowsmarketing— SEO, campaigns, growth workflowsmedia— Audio, video, image, streamingproductivity— Note-taking, task management, organizationresearch— Multi-source investigation and synthesissecurity— Passwords, encryption, access controlsocial-automation— Social publishing, engagement, and channel management
Copy and paste this into registry/community/<your-skill>/SKILL.md:
---
name: my-skill
version: '1.0.0'
description: A short description of what this skill does (under 200 characters).
author: your-github-username
namespace: community
category: information
tags: [example, template]
requires_secrets: []
requires_tools: []
metadata:
agentos:
emoji: "\U0001F527"
homepage: https://example.com
---
# My Skill
You can use this skill to [describe what the agent can do]. When the user asks about [topic], you should [describe the agent's behavior].
Provide clear, structured responses. If the user's request is ambiguous, ask for clarification before proceeding.
## Examples
- "Example user query 1"
- "Example user query 2"
- "Example user query 3"
## Constraints
- Limitation or caveat 1.
- Limitation or caveat 2.
- Limitation or caveat 3.Run the validation script against your SKILL.md file:
npm run validate registry/community/my-skill/SKILL.mdThe validator checks:
- All required frontmatter fields are present
- Category is valid
- Description is under 200 characters
- Tags array has at least one entry
- Namespace is
communityorwunderland - Skill name matches the directory name
- Markdown body is not empty
- No obvious secrets or API keys are embedded in the file
Fix any reported issues before submitting your PR.
git checkout -b add-skill/my-skillgit add registry/community/my-skill/SKILL.md
git commit -m "feat: add my-skill community skill"git push origin add-skill/my-skillOpen a pull request against the main branch. The PR template will guide you through the checklist.
Before submitting, confirm:
- Skill is in
registry/community/<name>/SKILL.md - All required YAML fields are present
-
namespaceis set tocommunity - Category is one of the 8 valid categories
- Description is under 200 characters
- Markdown body includes usage instructions, Examples, and Constraints
- No secrets, API keys, or credentials are in the file
-
npm run validatepasses
- Quality: Is the skill well-written? Are instructions clear and actionable?
- No secrets: The file must not contain API keys, tokens, passwords, or credentials.
- Valid format: Frontmatter must parse correctly with all required fields.
- Usefulness: Does the skill provide value that is not already covered by an existing skill?
- Specificity: Is the scope well-defined? Skills should do one thing well.
Community skills can be promoted to the curated tier. Promotion criteria:
- Longevity — The skill has been in
registry/community/for at least 3 months. - Positive feedback — The skill has received positive user feedback or adoption.
- Maintained — The original author is responsive to issues and keeps the skill up to date.
- Staff review — A Framers team member reviews the skill for quality and completeness.
When a skill is promoted:
- It moves from
registry/community/<name>/toregistry/curated/<name>/. - The
namespacefield changes fromcommunitytowunderland. - The
verifiedflag is set totrueinregistry.json. - The Framers team assumes co-maintenance responsibility.
To nominate a community skill for promotion, open an issue titled "Promote: " with a brief justification.
This project follows the Contributor Covenant Code of Conduct. By participating, you agree to uphold this code. Please report unacceptable behavior to team@frame.dev.