Naming conventions for Claude Code plugin components -- plugins (tier prefixes: kb-*, dx-*, int-*), skills, commands, agents, argument hints, and descriptions. Use when creating, renaming, or auditing any plugin component to ensure correct naming patterns, description quality, and context budget optimization.
From cortex-engineeringnpx claudepluginhub nathanvale/side-quest-marketplace --plugin cortex-engineeringThis skill uses the workspace's default tool permissions.
references/argument-hints.mdreferences/budget-strategy.mdreferences/description-writing.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Orchestrates subagents to execute phased plans: deploys for implementation, verification, anti-pattern checks, code quality review, and commits only after passing checks.
Knowledge base for naming Claude Code plugin components correctly. Names serve humans (typing, recall), descriptions serve Claude (routing, auto-discovery), and each component type has a natural part of speech.
Every component type has a natural part of speech. Consistency within a type creates a predictable mental model.
| Entity | Case | Part of Speech | Length | Examples |
|---|---|---|---|---|
| Plugin (core) | kebab-case | Noun/noun-compound | 1-3 words | cortex-engineering, git-workflow |
| Plugin (knowledge bank) | kb- + kebab-case | Prefix + tool noun | 2-3 words | kb-mpe, kb-obsidian, kb-tailwind |
| Plugin (dev experience) | dx- + kebab-case | Prefix + tool noun | 2-3 words | dx-biome, dx-eslint |
| Plugin (integration) | int- + kebab-case | Prefix + service noun | 2-3 words | int-firecrawl, int-rclone |
| Skill (action) | kebab-case | Verb or verb-phrase | 1-3 words | research, deploy-staging |
| Skill (knowledge) | kebab-case | Noun or noun-compound | 1-3 words | api-conventions, frontmatter |
| Command | kebab-case | Verb (imperative) | 1-2 words | deploy, fix-issue |
| Agent | kebab-case | Role-noun | 1-3 words | debugger, code-reviewer |
| argument-hint | POSIX brackets | Descriptive noun | <30 chars | <topic>, [format] |
Plugins use a tier prefix to signal their lifecycle and purpose. Pick the tier first -- it determines the name prefix.
| Tier | Prefix | When to use | Skill pattern |
|---|---|---|---|
| Core | none | Foundational workflow plugins (skills, commands, agents, hooks) | Mixed action + knowledge skills |
| Knowledge bank | kb- | Reference knowledge for a specific tool or framework | Single user-invocable: false skill with routing table hub |
| Developer experience | dx- | Dev tooling (linters, formatters, test runners) | May have hooks and commands |
| Integration | int- | External service wrappers (APIs, CLIs, cloud services) | May have MCP tools |
The tier prefix is part of the published plugin name and is an API contract (renaming = semver-major). For kb-* plugins, the skill name is the tool noun without the prefix -- e.g., plugin kb-mpe has skill mpe, making the fully qualified name kb-mpe:mpe.
| Pattern | When to use | Examples |
|---|---|---|
| verb-noun | Action skills/commands (dominant) | fix-issue, explain-code, deploy-staging |
| noun-noun | Reference/knowledge content | api-conventions, legacy-system-context |
| single verb | High-frequency universal actions | simplify, batch, deploy |
| adjective-noun | Specialized variants | deep-research, safe-reader |
| platform-task | Domain-scoped tools | youtube-research, spam-check |
disable-model-invocation: true): optimize for human recall -- verb-noun, memorable, typableRule 1: Never repeat the plugin name in component names.
The namespace already provides scope. cortex-engineering:frontmatter not cortex-engineering:cortex-engineering-frontmatter.
Rule 2: Match skill names to their command counterparts.
If /research delegates to a skill, the skill should also be named research, not producing-research-documents.
Rule 3: Use the description for AI routing, not the name. The name is for humans (typing, remembering). The description is for Claude (routing, auto-discovery). Don't try to make the name do both jobs.
Rule 4: Maintain part-of-speech consistency within a type. Commands should all be verbs. Agents should all be role-nouns. Knowledge skills should all be nouns. Action skills should all be verbs.
Rule 5: Treat published names as API contracts.
Plugin names are in marketplace.json. Skill names become /slash-commands. Agent names appear in permission rules. Renaming any of these is a semver-major change.
| Anti-Pattern | Why It Fails | Fix |
|---|---|---|
Overly generic: check, process | Too broad, fails both recall and discovery | Add domain context: spam-check |
Ambiguous siblings: update vs upgrade | Users can't remember which is which | Use distinct verbs with clear boundaries |
Plugin name repeated: cortex:cortex-research | Namespace stuttering | Drop prefix: cortex:research |
| Abbreviation conflicts | Prefix collision in autocomplete | Use full, distinctive words |
Too long: code-review-and-security-analysis-agent | Untypable, exceeds mental model | 1-3 words max |
Missing domain context: check vs spam-check | Ambiguous across workflows | Front-load the domain |
Use role-nouns, not action-verbs. Agents are persistent entities with identity.
code-reviewer, debugger, beat-reporter, formatterreview-code (verb-object -- that's a task), reviewing (gerund -- ambiguous)The builder-validator pattern is the dominant architectural naming idiom. The names map directly to enforced tool restrictions. Naming is enforcement.
name vs Directory NameWhen the name field differs from the directory name, the name field wins for /slash-command invocation. Keep them matching for maximum predictability. The description handles the verbose explanation.
~/.claude/skills/): broader names, cross-project relevance.claude/skills/): more specialized, project context baked inplugin:skill, so the skill name itself can be shortername field directly becomes the /slash-command invocationFor detailed guidance on specific topics:
Full research document: docs/research/2026-03-01-naming-conventions-claude-code-plugins.md