Format Spec
Every kit includes a kit.json manifest that describes its contents, metadata, and dependencies.
kit.json Schema
{
"name": "my-kit", // lowercase alphanumeric + hyphens
"type": "command-kit", // see Kit Types below
"version": "1.0.0", // semver
"description": "Short description (max 200 chars)",
"author": "github-username",
"tags": ["tag1", "tag2"],
"files": { ... }, // file manifest (varies by type)
"dependencies": ["other-kit"] // optional
}Kit Types
| Type | Description | Required Files |
|---|---|---|
command | Single slash command | command.md |
rule | Single .mdc rule | *.mdc file |
skill | Domain knowledge | SKILL.md |
agent | Subagent definition | agent.md |
hook | Hook scripts | hooks.json + *.sh |
command-kit | Command + skill + agent + hooks | command.md |
rule-kit | Rules + scripts + linter + hooks | At least one .mdc |
File Manifest
The files field maps categories to filenames. Values can be a single string or an array of strings.
// Command kit
"files": {
"command": "command.md",
"skill": "SKILL.md",
"agent": "agent.md",
"hooks": ["hooks/verify-feature.sh"]
}
// Rule kit
"files": {
"rules": ["architecture.mdc", "components.mdc", "..."],
"scripts": ["add-route.sh"],
"linter": "eslint.config.mjs",
"hooks": ["hooks/format-on-edit.sh", "hooks/lint-on-stop.sh"]
}Naming Conventions
- Names must be lowercase alphanumeric with hyphens:
my-kit-name - Names must be globally unique across the registry
- Use descriptive names that indicate the kit's purpose
- Versions follow semver:
MAJOR.MINOR.PATCH
Frontmatter Requirements
Skills and agents require YAML frontmatter with name and description fields:
---
name: my-skill
description: When and how to use this skill
---