Skill template
A copy-and-edit starting point for writing a new Claude Code skill, covering SKILL.md frontmatter, description wording, and progressive disclosure.
Install it
As a plugin
/plugin marketplace add KensioSoftware/kensio.ai/plugin install skill-template@kensioclaude plugin marketplace add KensioSoftware/kensio.aiclaude plugin install skill-template@kensioAs an npm package
npm install @kensio/skill-templateWhat it does
Skill Template
A starting point for adding a new skill to this repo. Copy the structure below, replace the placeholders, then run the validation scripts.
Layout
Every skill lives in its own self-contained plugin folder:
plugins/<skill-name>/├── package.json # npm package: @kensio/<skill-name>├── .claude-plugin/│ └── plugin.json # name, version, description, author└── skills/ └── <skill-name>/ └── SKILL.mdA plugin folder must be self-contained. Never reference files outside it with ../ — plugins are copied, zipped, and installed standalone, so those paths will not resolve.
Steps
- Create
plugins/<skill-name>/following the layout above. - Copy
package.jsonfrom an existing plugin; setnameto@kensio/<skill-name>and therepository.directorytoplugins/<skill-name>. - Copy
.claude-plugin/plugin.json; setnameanddescription. - Set the
versionin both files to whatever the other plugins currently carry. Versions move in lockstep across the whole repo, and the release workflow is what changes them — never pick a new number by hand. - Write
skills/<skill-name>/SKILL.md(see frontmatter below). - Add an entry to
.claude-plugin/marketplace.jsonwith a matchingname, asourceof"./plugins/<skill-name>", and a description. - Run
pnpm check.
SKILL.md frontmatter
---name: <skill-name>description: <what it does, then when to use it — include the words and phrases a user would actually type>---namemust be kebab-case and match the containing directory.descriptionis the only thing Claude sees when deciding whether to load the skill, so it carries the whole triggering burden. State what the skill does, then when to use it, in third person. Concrete trigger phrases beat abstract summaries.- Optional frontmatter worth knowing:
allowed-tools(restrict the tools the skill may use) anddisable-model-invocation: true(user-invocable only, via/<skill-name>).
Writing the body
Keep SKILL.md short and imperative — it is instructions for Claude, not documentation for a human. Push detail into sibling files (reference.md, examples/) and link to them, so the body stays cheap to load and the details are read only when needed.
Releasing
There is nothing to do. Merging to main releases, and the version comes from the pull request title: fix: for a patch, feat: for a minor, feat!: or a BREAKING CHANGE footer for a major. A docs: or chore: title releases nothing.
Every plugin is set to the new version together, so a released version means the same commit wherever it was installed from.