packaging
Skill1 starsChanged 6 months agoMITView on GitHub
Version: 1.0 Status: Draft (M008/P06) A skill file is a thin, runtime-agnostic discovery surface for one orchestrator command. It tells a host runtime (Claude Code, Codex, Cursor, or any future tool that enumerates skills from disk) what the command is called, what namespace it belongs to, when to use it, and where the canonical behavior definition lives. The format is deliberately open: it is a plain Markdown file with a small YAML frontmatter block. No proprietary schema, no runtime-specific extensions.…
2 other projects use a version of this.
Adopted by
Most recently taken up by
- ekala-project/ekala-claude-skillstheir own version, first seen Oct 13, 2026
- lorena-bordonaba-pau/youtube-agenttheir own version, first seen Oct 13, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- lorena-bordonaba-pau/youtube-agent★ 2same name
- ekala-project/ekala-claude-skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- AGENTS.mdAGENTS.md
- scripts/AGENTS.mdAGENTS.md
- tests/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 27
Every skill file begins with a YAML frontmatter block delimited by --- lines.
- Very specific: line 99
When packaging/bundle/manifest.yml is absent (for example, during development before the bundle is assembled), downstream tools SHOULD …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
SKILL.md — Open Skill File Specification
Version: 1.0 Status: Draft (M008/P06)
Purpose
A skill file is a thin, runtime-agnostic discovery surface for one orchestrator command. It tells a host runtime (Claude Code, Codex, Cursor, or any future tool that enumerates skills from disk) what the command is called, what namespace it belongs to, when to use it, and where the canonical behavior definition lives.
The format is deliberately open: it is a plain Markdown file with a small YAML frontmatter block. No proprietary schema, no runtime-specific extensions. A third party can produce compatible skill files for any tool without coordinating with this project. Conversely, this project's skill files can be consumed by any runtime that agrees to read the same frontmatter keys.
Skill files are not the source of truth. They point back to
commands/<cmd>.md, which remains the single canonical behavior document.
This keeps the skill bundle small, avoids duplication, and lets downstream
runtimes decide how much of the command document to materialize locally.
Frontmatter Schema
Every skill file begins with a YAML frontmatter block delimited by ---
lines. The following keys are defined for schema_version: "1.0":
| Key | Type | Required | Description |
schema_version | string | yes | Literal "1.0" for this revision. |
type | string | yes | Literal "skill". |
name | string | yes | Human-readable label, e.g. orchestrator:evaluate. |
namespace | string | yes | Fixed literal orchestrator for this project. |
description | string | yes | One-sentence trigger hint shown to the agent when routing decisions happen. |
runtime_compatibility | list | yes | Any non-empty subset of claude-code, codex, cursor. |
command_file | string | yes | Repo-relative path back to the canonical commands/<cmd>.md document. |
Future schema revisions may add optional keys; consumers MUST ignore unknown
keys rather than erroring. Required keys above are stable for 1.0.
The literal YAML keys that MUST appear in every skill file are therefore:
schema_version:, type:, name:, namespace:, description:,
runtime_compatibility:, and command_file:.
Name and Namespace
The namespace key establishes a flat prefix that runtimes use to disambiguate
skills from multiple providers. For this project the value is always
orchestrator. The name key always takes the form orchestrator:<cmd> where
<cmd> matches the basename (without extension) of the command_file.
The orchestrator:* namespace mapping is documented further in
scripts/state/namespace-aliases.sh, which runtimes use at install time to
translate between the namespaced label and any legacy speckit.orchestrator.*
aliases that predate this format.
Body Conventions
The body of a skill file is deliberately thin — typically 3 to 6 lines. It MUST contain:
- A level-1 Markdown heading matching the
namefield. - A short paragraph noting that canonical behavior lives in the referenced
command_file, with a Markdown link pointing at it. - A one-line note that the skill file is a pure discovery surface for runtimes that enumerate skills from disk.
The body MUST NOT duplicate content from the command document. If a runtime
needs the full behavior specification, it follows the link. This single-source
convention lets commands/<cmd>.md evolve without forcing skill regeneration
for prose-only edits, while still flagging real contract drift via the
generate-skills.sh --check helper.
Discovery Conventions
Runtimes enumerate skills from well-known directories. The canonical locations this project's installers target are:
| Runtime | Scope | Location |
claude-code | user-level | $HOME/.claude/commands/orchestrator-<cmd>.md |
codex | user-level | $HOME/.codex/skills/orchestrator-<cmd>.md |
cursor | project-level | <project>/.cursor/rules/orchestrator-<cmd>.md |
File basenames always use the hyphen form orchestrator-<cmd>.md regardless
of the colon form used inside name:. The colon form is reserved for in-memory
labels; the hyphen form is reserved for filesystem paths (which cannot contain
colons on every platform).
Versioning
Individual skill files do not carry a version: key. Instead, they inherit
the bundle version from packaging/bundle/manifest.yml via its top-level
version: field. Installers surface the bundle version to the runtime so a
skill can report which release it belongs to.
When packaging/bundle/manifest.yml is absent (for example, during
development before the bundle is assembled), downstream tools SHOULD treat
the effective version as the fallback literal 0.3.0-dev.
Regeneration
The file set under packaging/skills/orchestrator-*.md is produced
mechanically from commands/*.md by scripts/packaging/generate-skills.sh.
Running the generator with no arguments rewrites the skill files; running it
with --check re-generates into a temp directory and exits non-zero if the
output differs from the committed files. Drift detection is how we keep the
thin discovery surface honest against the canonical command documents.
Rationale
Thin, frontmatter-only skill files minimize payload size for runtimes that load all discovered skills eagerly, while the open schema means this project does not have to ship a custom loader for every host. The single-source convention (skills point at commands) also means bug fixes and behavior refinements land in exactly one place and flow through regeneration to every runtime surface automatically.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

