Skill naming conventions
Table of Contents
1. Summary
A name is what makes a catalogue selectable. An agent choosing among skills reads names before it reads anything else, so a predictable name is part of the attenuation the framework depends on rather than a matter of tidiness (Systems and levels).
Every Claude Code skill this project authors carries the compass-
prefix and is named after the thing we want to do — never after a role
(sprint-planner), an artefact (pr-manager), or the compass command the
skill happens to run. The domain prefix and the verb each come from a closed
register defined below. Before adding a skill, check this document and the
skills inventory: the name must
parse against both registers and must not duplicate an existing skill's
action.
2. Detail
2.1. Form
The compass- prefix marks a skill this project owns, and the second segment
says which regulatory function it offers. Five shapes exhaust the catalogue.
compass-helm the sticky mode compass-principle-<rule> stance, cited not run compass-method-<kind> a sequence of phases compass-<domain>-<verb>[-<object>] an action on a typed target compass-act, compass-act-all, compass-export dispatch
An action keeps the <domain>-<verb>[-<object>] form it has always had; the
prefix is the only addition. principle- and method- are second segments
rather than domains, because a principle names no artefact type and a method
spans several.
- kebab-case throughout; the name is the directory under
doc/llm/skills/, the deployed directory under.claude/skills/, and thename:frontmatter field — keep all three identical. - Named after the intent, not the mechanism: the user thinks "I want
to merge this PR", so the skill is
compass-pr-merge— regardless of whethercompass pr merge,gh, or anything else implements it. - The object is omitted only when the verb is unambiguous within the
domain (
compass-pr-merge).
2.2. Prefix register
| Prefix | Domain |
|---|---|
agile- |
stories, tasks, sprints, backlog, journal, fleet, bearings, hotfixes |
pr- |
pull-request lifecycle |
doc- |
recipes, knowledge, manual, memory, search across documents |
code- |
hand-written code: build, tests, review, investigation |
codegen- |
generated code: entities, components, schemas |
devops- |
environment, database, services, shell, site |
skill- |
the skills themselves (meta) |
code- vs codegen-: manual versus automatic. Writing a unit test
by hand is compass-code-add-tests; scaffolding an entity from a model
is compass-codegen-add-entity.
Every entry above is preceded by compass-, so the domain is the second
segment of an action's name: compass-pr-merge, compass-agile-start-task.
Two further second segments are reserved, and they take no domain:
| Segment | Names |
|---|---|
principle- |
A rule that is cited rather than run, offering the citation function |
method- |
A sequence of phases ending in a verified state, offering the sequencing function |
2.2.1. Which name shape offers which function
A name says what a thing does, so it also says which regulatory function it offers. The seven functions and their bearers, from Regulatory Functions:
| Function | The agent… | Named as |
|---|---|---|
| loading | consults it for what is so | knowledge, recipe, memory, System, manual |
| citation | cites it against a judgement | a principle- skill |
| sequencing | follows its phases | a method- skill, runbook |
| execution | runs it against a target | an action, recipe |
| declaration | states behaviour it can then check | specification, task, story |
| convening | convenes a deliberation over it | the Council's own /council |
| recording | writes state back against a lifecycle | task, story, sprint, capture, design |
A type may offer several: a recipe is both loaded for its command and executed for its script, which is why the classification is by function rather than by a hierarchy of kinds.
2.3. Verb register
| Verb | Meaning |
|---|---|
add- |
create the artefact, documents only — no side effects (no branch, no journal) |
start- |
pick up a unit of work: branch + STARTED + journal stamp |
close- |
end the bookkeeping: DONE, Result, story/sprint sync; cascades — closing a story's last task offers to close the story |
find- |
search or locate |
show- |
display state, change nothing |
run- |
execute something: builds, tests, shell sessions |
sync- |
reconcile local state with remote |
review- |
assess quality against criteria: sprints, PRs, components, skills |
update- |
bring an existing artefact in line with a change elsewhere |
open- |
run an opening ceremony (close predecessor, open successor) |
investigate- |
diagnose a failure to root cause |
brainstorm- |
explore a design through collaborative dialogue |
deploy- |
build an artefact and publish it to where it is consumed |
delete- |
retire an artefact and heal the graph: re-point incoming links, record disposition, purge deployed copies |
fix- |
repair a defect to a defined end state: drift elimination, template bugs, failing behaviour |
act- |
dispatch on a target: resolve its type, offer the operations its regulatory functions declare |
export- |
hand a result set to the artefact type that owns that shape |
| (bare) | rare domain verbs with no object, e.g. compass-pr-merge; also compass-helm, the mode |
add versus start is the create-versus-pick-up distinction. Creating a story
for backlog refinement must not create a branch; picking one up must.
2.4. Structural rules
- No roles. A skill is what we do, not who does it. Role skills are
dissolved into their constituent actions (e.g. agile product
owner →
compass-agile-refine-backlog,compass-agile-plan-sprint). - Reference-only skills, except principles. If the instructions contain no executable steps, it is usually knowledge wearing a skill costume: demote it to a knowledge doc and link it from the skills that act. The citation function is exempt. A principle is by definition a rule that is cited and never run, so requiring executable steps of it would forbid the whole function; it earns its place as a skill because a phase must be able to load it by name at the moment of judgement.
- Every skill declares its level.
#+level:is mandatory. It is what lets a declared System attenuate the catalogue, which is the whole mechanism by which a session sees a set small enough to choose from well. - One skill per runbook. Runbooks are skills' procedural twins; a generic runbook dispatcher hides the actions from discovery.
- Check before adding. A new skill name must parse against the two registers, and the skills inventory must be checked for an existing skill covering the same action. Extending a register is a deliberate act recorded in the decision log below.
2.5. The level register
#+level: carries one of these values. The level sets the default slice of
the catalogue a session sees; the full treatment is in
Systems and levels.
| Level | System | Horizon | Sees |
|---|---|---|---|
s1 |
Agent | Hours | Execution in full, sequencing, citation, declaration |
s2 |
Orchestrator | Days | Story and task actions, decomposition methods, deliberation |
s3 |
Sprint Planner | Weeks | Sprint and backlog actions, planning and review methods |
s3star |
Auditor | Continuous | Read-only and audit actions only |
s4 |
Version Planner | Months | Version and release actions, strategy deliberation |
s5 |
Identity Steward | Indefinite | Identity and backlog-fit actions, deliberation |
cross |
— | — | Applies at every level |
Attenuation is advisory at S1, S2, S3, S4 and S5: a default small enough to choose from well, which an agent may reach outside by saying so. It is binding at S3*, because an audit channel that can be talked into editing what it observes is not an audit channel.
2.6. Where a new thing goes
A name is only decidable once the artefact type is. This is the placement procedure from Regulatory Functions, reproduced where an author naming something will meet it. Take the first match.
- A durable fact about the domain goes to a knowledge document. If it is the entry point to a cluster, a structure note.
- An account of how one operation is performed here, with a runnable script, goes to a recipe. This is also where a method's missing effector goes.
- A correction that must not be repeated goes to a memory. Keep these scarce: each is paid for by every session.
- A rule that is cited rather than run goes to a principle.
- Intended behaviour that should be checkable goes to a specification.
- A sequence of phases ending in a verified state, not tied to one artefact type, goes to a method.
- A change to a generated artefact goes to its model or its template, never to the output.
- An operation on one artefact type goes to an action, at the pairing of type and verb. The action holds the judgement; the recipe holds the command.
- A contested judgement goes to deliberation, and its verdict is recorded against the work.
- A role a session or a delegate acts as goes to a System, tagged by level, stating what it must read first and what it may do.
- The argument for a change, spanning many tasks, goes to a design in the story's own folder rather than to the durable tree.
2.7. Decision log
| Decision | Rationale |
|---|---|
| Work-domain prefixes, not compass pillars | Pillars name the tool's internals; domains name the user's intent and survive tool changes |
| Closed prefix and verb registers | Discovery depends on predictability: type /agile- and see everything agile |
devops- for environment/operations |
env- was hard to find; ops- too cryptic; devops- is the term we reach for |
codegen- spelled out, not gen- |
gen- was the odd one out; codegen- is unambiguous against code- |
run- verb added |
Builds, tests, and shells are executions, not additions or starts |
show- verb added |
Read-only orientation actions (journal, fleet) need a side-effect-free verb |
close- cascades task→story |
A story only ever closes via its last task; a third close-work skill would overlap both |
| Roles dissolved, reference skills demoted | Keep the action namespace pure — that is what makes discovery work |
run-runbook deleted |
The new action skills map ~1:1 onto the runbook catalogue; a dispatcher adds a layer without adding capability |
review-, update-, open-, investigate-, brainstorm- added |
Surfaced by the audit of all 40 existing skills: review recurs across four skills; the others each name an action no existing verb covers without distortion |
write rejected |
compass-code-add-tests, not code-write-tests — add already means "create the artefact" |
deploy- added |
The build pillar's deploy_manual/skills/settings/site targets are publish actions, not plain runs |
delete- added |
Retiring a skill is a graph operation, learned when nine deletions broke the site build; the procedure deserves a verb and a skill (compass-skill-delete) |
fix- added |
The drift-elimination method needs the plain repair verb: add- (create), run- (execute), and update- (align with a change elsewhere) each name a different action, and remediation is the load-bearing action of the 12 per-component stories (compass-codegen-fix-drift) |
compass- prefix on every skill we own |
Ownership is the thing a reader needs at a glance, because an upstream skill is referenced and cannot be edited here. The prefix also separates our catalogue from every plugin's in one keystroke |
principle- and method- as second segments, not domains |
A principle names no artefact type and a method spans several, so neither parses as <domain>-<verb>. Making them segments keeps the action form untouched |
#+level: mandatory on every skill |
Attenuation is the mechanism that keeps the offered set small enough to choose well. An unlevelled skill is visible at every level, which defeats it |
| Citation function exempt from the reference-only rule | A principle is by definition cited and never run. Requiring executable steps of it would forbid the entire function; the exemption is narrow and names the one function it covers |
act- verb added |
Dispatch is late binding of verb to noun: the target is known and the operation is not. No existing verb names it, and find- and show- both promise to change nothing, which dispatch cannot |
export- verb added |
Handing a result set to the artefact type that owns that shape is neither a run- nor an add-; the destination type is chosen by the data |
helm as a bare name |
The mode is a posture, not an operation on a target, so it takes no domain and no object. compass-mode was rejected as accurate and forgettable |
Level values spelled s3star, not s3* |
The value is a filetag and a directory-safe token; * is neither |
| Further verbs land with the ported methods | The port has not run, so the verbs its steps need are not yet knowable. Each arrives with its own entry here rather than being guessed now |
compass-helm admitted as a bare noun |
A mode is a posture rather than an operation on a target, so it parses as neither <domain>-<verb> nor a reserved segment. compass-mode was rejected as accurate and forgettable; the register gains the noun rather than bending the verb rule around it |
| System preferred over function for the role a session adopts | The design's terminology table said function, which now collides with regulatory function. The architecture resolves it to System, and the glossary follows the architecture |
3. Upstream skills
The registers govern the skills this project authors. They do not govern skills it consumes from elsewhere.
An upstream skill keeps the name its authors gave it. It is referenced rather
than copied (The pstack
Collection), so there is no local artefact to rename, and renaming a
referenced skill would break the reference for no gain. A reader meeting
unslop or arena is meeting the upstream name deliberately.
Where an upstream skill is right in shape and wrong in local detail, the binding written for it is a skill this project authors, and it takes a name from the registers like any other.
4. See also
- Skills — the inventory this policy governs.
- compass-skill-add — enforces this policy when adding skills.
- Skill architecture — the index into the cluster this page belongs to.
- The pstack Collection — the upstream skills these registers do not govern.