Thank you for your interest in contributing to the Kilo Marketplace! This guide will help you add new skills that benefit the entire community.
- Ensure your skill is based on a real use case, not a hypothetical scenario.
- Search existing skills to avoid duplicates.
- If possible, attribute the use case to the original person or source.
All skills must:
- Solve a real problem - Based on actual usage, not theoretical applications.
- Be well-documented - Include clear instructions, examples, and use cases.
- Be accessible - Written for non-technical users when possible.
- Include examples - Show practical, real-world usage.
- Be tested - Verify the skill works in Kilo Code
- Be safe - Confirm before destructive operations.
Create a new folder with your skill name (use lowercase and hyphens):
skills/
└──skill-name/
└── SKILL.md
Use this template for your skill:
---
name: skill-name
description: One-sentence description of what this skill does and when to use it.
---
# Skill Name
Detailed description of the skill and what it helps users accomplish.
## When to Use This Skill
- Bullet point use case 1
- Bullet point use case 2
- Bullet point use case 3
## What This Skill Does
1. **Capability 1**: Description
2. **Capability 2**: Description
3. **Capability 3**: Description
## How to Use
### Basic UsageSimple example prompt
### Advanced Usage
More complex example prompt with options
## Example
**User**: "Example prompt"
**Output**:
Show what the skill produces
**Inspired by:** [Attribution to original source, if applicable]
## Tips
- Tip 1
- Tip 2
- Tip 3
## Common Use Cases
- Use case 1
- Use case 2
- Use case 3
The Kilo Marketplace does not host the source code for contributed skills directly. Instead, the marketplace acts as an index that references skills hosted in external repositories. This design allows skill authors to:
- Maintain ownership — you control your skill's repository and can update it at any time
- Iterate independently — push fixes and improvements without waiting for marketplace PRs
- Keep licensing clear — your repository is the canonical source with its own license
- Create a public GitHub repository for your skill (or a repository containing multiple skills).
- Add a
SKILL.mdfile with the standard frontmatter (name,description, etc.). - Submit a PR to this marketplace that adds your skill using the
add-remote-skilltooling (see below). The script automatically pulls in your skill and adds themetadata.sourcereference to the frontmatter.
The marketplace periodically syncs with source repositories to pull in updates, so you don't need to submit a new PR every time you change your skill.
Every contributed skill in the marketplace must have a metadata.source section in its YAML frontmatter. This tells the marketplace where the canonical source lives. You don't need to add this yourself — the add-remote-skill script (see below) adds it automatically when importing your skill. But for reference, here's what it looks like:
---
name: my-skill
description: >-
A clear description of what this skill does and when to use it.
metadata:
category: development
author: your-github-username
suggest_for:
filename:
- "*.component.ts"
source:
repository: https://github.com/yourname/your-skill-repo
path: path/to/skill
license_path: LICENSE
commit: 0123456789abcdef0123456789abcdef01234567
---| Field | Required | Description |
|---|---|---|
metadata.suggest_for.filename |
No | Non-empty list of patterns that make this skill highly probable from the filename alone; prefer distinctive forms such as "*.component.ts" and omit broad patterns such as "*.ts" |
metadata.suggest_for.vscode_extension |
No | Non-empty list of VS Code extension objects (name + id) that strongly indicate this skill is relevant, such as { name: "Jupyter", id: "ms-toolsai.jupyter" } |
requirements |
No | Direct skill, VS Code extension, and MCP dependencies; see Marketplace Requirements |
metadata.source.repository |
Yes (for contributed skills) | URL to the GitHub repository containing your skill |
metadata.source.path |
Yes (for contributed skills) | Path within the repository to the skill directory |
metadata.source.license_path |
Yes (for contributed skills) | Path to the LICENSE file in the source repo |
metadata.source.commit |
Yes (for new imports and updates) | Full 40-character Git SHA of the imported upstream revision; managed by marketplace tooling |
Suggestion patterns are intentionally not exhaustive. A format being supported as input or output is not enough to add it: for example, a generic Markdown or audio file does not imply a writing or meeting-analysis task. Likewise, only list a VS Code extension when its installation strongly indicates the exact skill is relevant. A suggest_for object must contain at least one of filename or vscode_extension.
Here are some existing skills in the marketplace and how they reference their source repositories:
Angular Component (from analogjs/angular-skills):
---
name: angular-component
description: Create modern Angular standalone components following v20+ best practices...
metadata:
category: development
source:
repository: 'https://github.com/analogjs/angular-skills'
path: skills/angular-component
license_path: LICENSE
---Frontend Design (from anthropics/skills):
---
name: frontend-design
description: Create distinctive, production-grade frontend interfaces...
metadata:
category: development
source:
repository: 'https://github.com/anthropics/skills'
path: skills/frontend-design
license_path: skills/frontend-design/LICENSE.txt
---Create Pull Request (from cline/cline):
---
name: create-pull-request
description: Create a GitHub pull request following project conventions...
metadata:
category: development
source:
repository: 'https://github.com/cline/cline'
path: .cline/skills/create-pull-request
license_path: LICENSE
---Once your skill is hosted in its own repository, use the add-remote-skill script to add it:
npx tsx bin/add-remote-skill.ts https://github.com/yourname/your-repo/tree/main/path/to/skillThis script will:
- Clone only the skill directory from your repository
- Copy it into
skills/<skill-name>/ - Update the SKILL.md frontmatter with the correct
metadata.sourcefields
Then submit a PR with the result.
Note: Skills submitted without a valid
metadata.sourcereferencing an external repository will not be accepted unless they are official Kilo skills.
- Fork the repository
- Create a branch:
git checkout -b add-skill-name - Host your skill in your own public GitHub repository (see above)
- Run
npx tsx bin/add-remote-skill.ts <github-url-to-your-skill>to add it - Commit your changes:
git commit -m "Add [Skill Name] skill" - Push to your fork:
git push origin add-skill-name - Open a Pull Request
Your PR should:
- Title: "Add [Skill Name] skill"
- Description: Explain the real-world use case and include:
- What problem it solves
- Who uses this workflow
- Attribution/inspiration source
- Example of how it's used
- Be respectful and constructive
- Credit original sources and inspirations
- Focus on practical, helpful skills
- Write clear, accessible documentation
- Test your skills before submitting
Open an issue if you have questions about contributing or need help structuring your skill.
When adding a skill based on someone's workflow or use case, include proper attribution:
**Inspired by:** [Person Name]'s workflowor
**Credit:** Based on [Company/Team]'s processExamples:
- Inspired by: Dan Shipper's meeting analysis workflow
- Inspired by: Teresa Torres's content research process
- Credit: Based on Notion's documentation workflow
Agent, skill, and MCP definitions may declare machine-readable dependencies with an optional top-level requirements field:
requirements:
skills:
- jupyter-notebook
vscode_extensions:
- name: Jupyter
id: ms-toolsai.jupyter
mcps:
- jupyterThe supported subgroups are exactly skills, vscode_extensions, and mcps. Each subgroup that is present must be a non-empty list, and every listed item is a direct required dependency; alternative or OR groups are not supported. Omit requirements entirely when the resource has no machine-readable dependencies.
Skill values must be exact marketplace skill IDs, and MCP values must match the id in the resource's MCP.yaml. Both are checked during marketplace generation. A skill cannot require itself, and an MCP cannot require itself. Dependencies between multiple resources are not expanded or checked for cycles. Each VS Code extension requires a human-readable name and a non-empty extension identifier in id. Authored values and list ordering are preserved without normalization, sorting, or deduplication.
Declare requirements at the top level of agents/<id>/AGENT_DEFINITION.md, skills/<id>/SKILL.md, or mcps/<id>/MCP.yaml. Generated agent requirements are emitted as items[].content.requirements so installation retains them. Generated skill and MCP requirements remain at items[].requirements, because skill content is a download URL and MCP content is runtime configuration.
Keep setup instructions that cannot be resolved to marketplace skills, MCPs, or VS Code extensions in prerequisites.
MCP (Model Context Protocol) servers extend Kilo Code's capabilities by connecting to external tools and services.
All contributed MCP servers must:
- Provide real value - Connect to useful external services or tools
- Be well-documented - Include clear setup instructions and prerequisites
- Handle authentication securely - Use environment variables for sensitive data
- Include multiple installation options - When possible, provide NPX, Docker, and other methods
Create a new folder with your MCP server name (use lowercase and hyphens):
mcps/
└── service-name/
└── MCP.yaml
The MCP.yaml file should contain:
id: service-name
name: Service Name
description: Brief description of what this MCP server provides
author: author-name
url: https://github.com/org/repo
category: development
suggest_for:
filename:
- "*.i64"
prerequisites:
- Required software or accounts
content:
- name: NPX
prerequisites:
- Node.js
content: |
{
"command": "npx",
"args": ["-y", "@package/mcp-server"],
"env": {
"API_KEY": "{{API_KEY}}"
}
}
parameters:
- name: API Key
key: API_KEY
placeholder: your_api_key_here| Property | Required | Description |
|---|---|---|
id |
Yes | Unique identifier (kebab-case) |
name |
Yes | Display name for the MCP server |
description |
Yes | Clear description of capabilities |
author |
Yes | Author or organization name |
url |
Yes | Link to the MCP server repository |
category |
Yes | Primary category: business, data, development, observability, productivity, search, or web-automation |
suggest_for.filename |
No | Non-empty list of patterns that make this MCP server highly probable from the filename alone; prefer proprietary formats such as "*.i64" and omit broad patterns such as "*.php" |
suggest_for.vscode_extension |
No | Non-empty list of VS Code extension objects (name + id) that strongly indicate this MCP server is relevant, such as { name: "Jupyter", id: "ms-toolsai.jupyter" } |
requirements |
No | Direct skill, VS Code extension, and MCP dependencies; see Marketplace Requirements |
prerequisites |
No | Required software or accounts |
content |
Yes | Installation configuration(s) |
parameters |
No | User-configurable parameters |
Choose the single category that best represents how users will discover the MCP. Categories are broad navigation groups, not a list of every capability:
business- Finance, payments, contracts, and other specialized business operationsdata- Databases, storage, data engineering, and persistent knowledgedevelopment- Code, repositories, developer platforms, and software toolingobservability- Logs, errors, telemetry, and application or infrastructure monitoringproductivity- Projects, workflows, collaboration, communication, and office toolssearch- Web, documentation, knowledge, and other information retrievalweb-automation- Browser control, testing, scraping, and web content extraction
Propose a new category only when several MCPs share a distinct primary purpose that does not fit an existing category.
Suggestion patterns are intentionally not exhaustive. Do not list every format an MCP can open; add only filenames or VS Code extensions that strongly identify that exact MCP, such as "*.ipynb" or { name: "Jupyter", id: "ms-toolsai.jupyter" }. A suggest_for object must contain at least one of filename or vscode_extension.
STDIO Transport (Local):
content: |
{
"command": "npx",
"args": ["-y", "@package/mcp-server"],
"env": {
"API_KEY": "{{API_KEY}}"
}
}Streamable HTTP Transport (Remote):
content: |
{
"type": "streamable-http",
"url": "https://your-server-url.com/mcp",
"headers": {
"Authorization": "Bearer {{API_TOKEN}}"
}
}Provide multiple ways to install when possible:
content:
- name: NPX
prerequisites:
- Node.js
content: |
{
"command": "npx",
"args": ["-y", "@package/mcp-server"]
}
- name: Docker
prerequisites:
- Docker
content: |
{
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/server"]
}
- name: UVX
prerequisites:
- Python and uv
content: |
{
"command": "uvx",
"args": ["mcp-server-package"]
}Define user-configurable parameters:
parameters:
- name: API Key
key: API_KEY
placeholder: your_api_key_here
- name: Optional Setting
key: OPTIONAL_SETTING
placeholder: default_value
optional: trueExample Service (mcps/example-service/MCP.yaml):
id: example-service
name: Example Service
description: Enables AI assistants to interact with Example Service API for data retrieval and automation.
author: example-org
url: https://github.com/example-org/example-mcp
category: business
prerequisites:
- Example Service account
content:
- name: NPX
prerequisites:
- Node.js
content: |
{
"command": "npx",
"args": ["-y", "@example/mcp-server"],
"env": {
"EXAMPLE_API_KEY": "{{EXAMPLE_API_KEY}}"
}
}
- name: Docker
prerequisites:
- Docker
content: |
{
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "EXAMPLE_API_KEY", "example/mcp-server"],
"env": {
"EXAMPLE_API_KEY": "{{EXAMPLE_API_KEY}}"
}
}
parameters:
- name: Example API Key
key: EXAMPLE_API_KEY
placeholder: your_example_api_keyOpen an issue if you have questions about contributing or need help structuring your skill, agent, or MCP server.
Thank you for contributing to Kilo Marketplace!