Reusable skills
Write a procedure once as a skill and Claude Code loads it automatically whenever your request matches, no slash command, same steps every time.
A skill is a folder with an instructions file
Every time you ask Claude Code to review a pull request, write a commit message, or run a specific kind of analysis, you are describing a repeatable procedure. A skill makes that procedure permanent: you write it out once in a plain text file, place it in a folder Claude Code knows to look in, and Claude reads and follows it automatically every time a matching request comes in.
The folder structure is straightforward. A skill typically lives in the .claude/skills/ folder of your project (or a global skills location in your home directory). Each skill is its own subfolder. Inside that subfolder there is at minimum one file, typically SKILL.md, that contains the instructions: the skill's purpose, its trigger description, the steps it should follow, and any output format rules.
Think of a skill as a standing procedure stored in writing. The Commit Message skill in Armory's registry, for example, is a SKILL.md that tells Claude exactly how to read a staged diff, what format to use, how long the subject line should be, and what the body should explain. You install it once; every commit message session follows the same discipline without you re-explaining it.
Which skill fires?
Each skill has a description. Claude Code reads the request and checks whether it matches any skill's description. Pick a request to see which skill activates, and what gets loaded into context.
commit-message
Generates a conventional commit message from a git diff or staged changes.
code-review
Reviews staged changes for code quality, bugs, and style issues.
How a skill gets loaded
Each skill has a description field in its instructions file, a sentence or two that says when this skill applies. When you send a request, Claude Code matches your phrasing against the descriptions of all installed skills. If a match is found, that skill's full instructions are loaded into the context alongside your request, and Claude follows them.
The match is semantic, not keyword-based. A skill described as "use this when writing or drafting a commit message" will fire when you say "can you draft a commit for these changes," even though none of those exact words overlap. The model understands intent.
If no skill matches, Claude handles the request using only its general knowledge and whatever context is already loaded, CLAUDE.md, open files, conversation history. Skills layer on top; they do not replace Claude's base behaviour.
Question 1 of 4
What does a Claude Code skill consist of, at its core?