Skills are the core Resource Kind in Skillset. Each Skill is a directory bundle with a mandatoryDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/org-quicko/skillset/llms.txt
Use this file to discover all available pages before exploring further.
SKILL.md at its root, optionally accompanied by supporting files — reference documents, code snippets, or configuration — that a coding agent loads together. This page covers the SKILL.md frontmatter schema, the publish and install workflow, how the Artifact is stored, and how the Lockfile tracks every installed copy.
What is a Skill?
A Skill is a directory whereSKILL.md is the source of truth. Its YAML frontmatter supplies the metadata the Registry indexes; everything below the frontmatter becomes the body displayed in the web interface and returned by GET /resources/{id}.
The Registry stores a Skill as an Artifact — one object in S3 per file, under a prefix keyed by the Resource’s id. When a client requests a download, the Registry assembles a zip on demand from those stored objects; no pre-built archive is ever stored.
SKILL.md frontmatter
SKILL.md must open with a YAML frontmatter block fenced by ---. Two frontmatter fields are required; four are optional. The content below the frontmatter fence (the body) is also required — a SKILL.md with no body is rejected.
Lowercase alphanumerics and hyphens; no leading, trailing, or doubled hyphen. Maximum 64 characters. Must match
SKILL_NAME_PATTERN: /^[a-z0-9]+(-[a-z0-9]+)*$/.A plain-text summary, 1–1024 characters. Shown in search results and the catalog listing.
Optional. A non-empty string identifying the Skill’s license (e.g.
MIT, Apache-2.0).Optional. A free-form note describing which agents or environments the Skill targets. Maximum 500 characters.
Optional. A flat mapping of string keys to string values for custom author-defined fields.
Optional. Declares which tools the Skill may access once loaded by an agent. The internal grammar is treated as experimental by the Agent Skills spec — only the type is validated, not the tool patterns.
allowed-tools (hyphenated in SKILL.md) is stored as allowed_tools (underscored) in the Registry and returned that way by the API. The CLI and web interface handle the translation automatically.Example SKILL.md
Publishing a Skill
Writers publish Skills from the CLI or the web interface. Both surfaces apply the same shared validation rules before anything reaches the server.Prepare the directory
Place
SKILL.md at the root of your directory. Add any supporting files (references, examples) alongside it. Hidden directories, node_modules, __pycache__, and OS cruft files are automatically excluded.Publish
Run
skillset publish from inside the directory, or pass a path explicitly. For a Skill hosted in a remote repository, pass the URL and the --name flag instead.Artifact limits
The shared validation rules enforce the following limits on every Skill’s files, checked locally before upload and again by the API:| Limit | Value |
|---|---|
| Maximum files | 1,000 entries |
| Maximum total size (uncompressed) | 25 MB |
| Maximum archive size (compressed) | 10 MB |
.. segment, a leading /, a backslash, or a null byte is rejected. Duplicate paths and symlinks are also refused.
Installing a Skill
skillset install downloads the Skill’s Artifact, writes the files to .agents/skills/<name>, and creates a symlink from the chosen agent’s own skills directory to that canonical location.
Installing from a URL clones the repository using your own git credentials — private repositories you can clone work without any Registry Integration or Connection. If you are logged in, the installed Skill is also submitted to the Registry as a Submission, pending Admin approval.
Install scope
By default,skillset install operates at project scope — the Skill is written relative to the current working directory. Pass --scope user to install to your home directory instead, making the Skill available to all projects.
The Lockfile
Every install records an entry inskillset-lock.json at the project root (or home directory for user scope). The Lockfile stores:
- The Resource’s
id - The Registry’s
updated_atat the time of install - A digest of the files written to disk
- The install timestamp
skillset list report one of four Statuses for each installed Skill:
| Status | Meaning |
|---|---|
current | Unchanged on disk; the Registry has not moved on |
outdated | The Registry’s updated_at has advanced since install |
modified | The files on disk no longer match the install digest |
missing | The Lockfile records a Skill whose directory is gone |
A Skill that is both edited locally and stale in the Registry reports
modified, not outdated — that is the state requiring a decision before update will proceed. Pass --force to overwrite local edits.Namespace resolution
A Skill’s Namespace isowner/repo when imported from a Git repository, and this Registry’s own host (e.g. skills.example.com) when published directly. Two Skills may share the same name as long as different Namespaces published them.
The CLI resolves a bare name to the only match, or to the one published directly to your Registry if there is a tie between that and an imported copy. Only a tie between two imported Skills from different parties forces you to qualify with --namespace.