Skip to content

Authoring skills

A skill is a directory containing SKILL.md: YAML frontmatter plus markdown instructions.

---
name: reviewing-migrations
description: Use when reviewing database migration PRs — checks reversibility, locks, and backfill safety.
---
<required>
Read the migration files before commenting...
</required>

The contract (enforced by nori-lint):

Rule Constraint
name required, ≤64 chars, lowercase-kebab-case
description required, ≤1024 chars — this is what agents use to decide relevance
<required> block present
length ≤150 lines total

nori-lint ships 12 deterministic rules plus 10 LLM-judged quality rules (duplicate sections, first-person voice, obvious instructions, unexplained URLs…). Run it before publishing.

A skillset bundles skills with instructions and more, described by nori.json (name and version required):

my-skillset/
├── nori.json # name, version, dependencies, requiredEnv
├── AGENTS.md # instructions installed into the agent
├── skills/<name>/SKILL.md
├── subagents/
├── slashcommands/
└── mcp/<server>.json # canonical MCP config, translated per agent

Create with sks new, adopt an existing folder with sks register, or develop against a git checkout with sks link <path> (symlinks the skillset into your library; unlink removes it).

Terminal window
sks external owner/repo@skill-name --skillset my-skillset

Clones shallowly, discovers SKILL.md files, and records provenance (source URL, ref, timestamp) in nori.json.

this page as markdown: /skillsets/guides/authoring.md· index for agents: /llms.txt