Claude Plugins Naming Conventions: Kebab-Case Standards for the Community Repository
Claude plugins use lowercase, hyphen-separated (kebab-case) identifiers for repository folders, manifest files, and skill definitions to ensure unique, readable naming across the marketplace.
The anthropics/claude-plugins-community repository enforces strict Claude plugins naming conventions to maintain consistency across the ecosystem. These standards govern how plugins are structured, registered, and referenced, ensuring Claude's tooling can reliably discover and install community contributions.
Repository Folder Naming Conventions
All plugin directories in the repository root must use kebab-case—lowercase letters separated by hyphens—to identify the plugin's purpose. This creates URL-friendly paths that match the plugin's canonical identifier.
Examining the source code reveals this pattern consistently applied across published plugins:
quickdesign- A concise, single-word identifier for the QuickDesign plugintestdino- Another single-word example following lowercase conventionstres-finance-plugin- A multi-word identifier using hyphens to separate terms
These folder names serve as the foundation for all other naming references within the plugin's configuration files.
Plugin Manifest Configuration
The .claude-plugin/plugin.json file defines the machine-readable identity of your plugin. Located at the root of each plugin folder, this file must declare a name field that exactly matches the repository folder name.
The plugin.json Name Field
According to the source code in /quickdesign/.claude-plugin/plugin.json and /testdino/.claude-plugin/plugin.json, the name value must replicate the kebab-case repository folder name precisely. This creates a bidirectional link between the filesystem structure and the plugin's metadata.
{
"name": "my-awesome-plugin",
"version": "0.1.0",
"description": "A short description of what the plugin does.",
"icon": "./icon.svg",
"author": {
"name": "Your Name",
"url": "https://your-website.example"
},
"homepage": "https://github.com/your-org/my-awesome-plugin",
"repository": "https://github.com/your-org/my-awesome-plugin",
"license": "MIT",
"keywords": ["ai", "productivity"]
}
Semantic Versioning Requirements
The version field must follow semantic versioning (MAJOR.MINOR.PATCH). As shown in the community repository examples, versions like 0.1.0 indicate initial development, while subsequent updates increment the appropriate segment to signal breaking changes (MAJOR), new features (MINOR), or patches (PATCH).
Skill Identifier Conventions
Individual skills within a plugin define their identifiers in SKILL.md front-matter. The name key must follow the same kebab-case pattern as the parent plugin to maintain unique marketplace identifiers and prevent collisions.
The TRES Finance plugin demonstrates this standard in files like /tres-finance-plugin/skills/tres-rollup-rules/SKILL.md and /tres-finance-plugin/skills/tres-erp-rule-suggestions/SKILL.md, where skill names use formats like tres-rollup-rules and tres-erp-rule-suggestions.
---
name: my-awesome-skill
description: >
A concise description of the skill's purpose and when it should be triggered.
compatibility: "Requires My Awesome MCP connector"
---
This naming strategy ensures that skill IDs remain unique across the entire marketplace while clearly indicating their parent plugin origin.
Marketplace Registration Standards
The root /.claude-plugin/marketplace.json file maintains the global registry of all published plugins. Each plugin appears under the unified claude-community namespace using its kebab-case identifier as the primary key.
When adding your plugin to the marketplace manifest, use the exact identifier from your repository folder:
{
"plugins": [
{
"name": "my-awesome-plugin",
"displayName": "My Awesome Plugin",
"description": "Provides awesome AI-assisted capabilities.",
"owner": "your-org",
"version": "0.1.0"
}
],
"renames": {}
}
This global registry enforces uniqueness—no two plugins can share the same kebab-case name within the claude-community namespace.
Human-Readable vs. Machine-Readable Names
While technical identifiers use kebab-case for URL safety and parsing reliability, user-facing fields support title-case readability. The author.name and description fields in plugin.json should use natural language formatting for display in UI interfaces, while the core name field remains strictly kebab-case. This separation ensures that filesystem paths, API references, and user interfaces all receive appropriately formatted text.
Summary
- Repository folders must use kebab-case (e.g.,
tres-finance-plugin) to create filesystem-compatible identifiers - The
.claude-plugin/plugin.jsonnamefield must exactly match the repository folder name to maintain consistency - Semantic versioning (
MAJOR.MINOR.PATCH) is required for theversionfield in all plugin manifests - Skill definitions in
SKILL.mdfront-matter must use kebab-casenamekeys to ensure unique identifiers across the marketplace - The root
/.claude-plugin/marketplace.jsonregisters plugins under theclaude-communitynamespace using their kebab-case identifiers as canonical keys
Frequently Asked Questions
What case style should I use for my Claude plugin repository name?
Use kebab-case (lowercase with hyphens) for all repository folder names, plugin identifiers, and skill names. The anthropics/claude-plugins-community repository demonstrates this convention through examples like quickdesign, testdino, and tres-finance-plugin, ensuring that all plugins follow a predictable, URL-friendly naming pattern.
How do I format the version number in my plugin.json file?
Follow semantic versioning standards with the format MAJOR.MINOR.PATCH (e.g., 0.1.0). As implemented in the community repository's plugin manifests, the version field in .claude-plugin/plugin.json must use this three-part numeric structure to communicate compatibility and update significance to Claude's plugin management system.
Can I use spaces or camelCase in skill identifiers?
No. The SKILL.md front-matter requires the name field to use kebab-case without spaces or capital letters. For example, the TRES Finance plugin uses identifiers like tres-rollup-rules in /tres-finance-plugin/skills/tres-rollup-rules/SKILL.md to maintain compatibility with Claude's referencing system and ensure consistency with the parent plugin's naming convention.
Where is the global list of published Claude plugins maintained?
The canonical list resides in /.claude-plugin/marketplace.json at the repository root. This JSON file maps kebab-case plugin names (such as quickdesign or tres-finance-plugin) to their metadata under the unified claude-community namespace, functioning as the single source of truth for plugin discovery and installation.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →