This skill should be used when the user asks to "generate a slug", "rename files to kebab-case", "audit naming conventions", "clean up filenames", or "validate a name". Also triggers on mentions of slug generation, kebab-case, filename linting, registry audit, or naming patterns. Use this skill even if the user only has a single file to rename — the full naming protocol ensures consistency across the project. [EXPLICIT]
From jm-adknpx claudepluginhub javimontano/jm-adk-alfaThis skill is limited to using the following tools:
agents/guardian.mdagents/lead.mdagents/specialist.mdagents/support.mdevals/evals.jsonknowledge/body-of-knowledge.mdknowledge/knowledge-graph.mdprompts/meta.mdprompts/primary.mdprompts/variations/deep.mdprompts/variations/quick.mdreferences/domain-knowledge.mdtemplates/output.docx.mdtemplates/output.htmlEvery artifact should be findable via search, safe for URLs and filesystems, and self-describing. [EXPLICIT]
Input → Output [EXPLICIT]
"My New Component" → my-new-component
"api_client_FINAL.ts" → api-client-final.ts
" Hllo Wrld!! " → hello-world
Input → Output [EXPLICIT]
"My New Component v2" → my-new-component
"new-api-client-v3.ts" → api-client.ts
"old-dashboard-final.md" → dashboard.md
| Entity Type | Pattern | Example |
|---|---|---|
| Skill | kebab-case/ | naming-and-slugging/ |
| Workflow | verb-noun.md | create-component.md |
| Rule | R-kebab-case.md | R-no-console-log.md |
| Document | kebab-case.md | architecture-overview.md |
Names describe content, not status or version. Someone seeing the filename in a listing should immediately understand what's inside.
my-file-name). Reads well, URL-safe, works on all filesystems including case-sensitive.api-client.ts not new-api-client-v2-final.ts. Versions belong in git, not filenames.Determine if it's a skill, workflow, rule, document, or general file. Each type has a specific pattern (see table above). [EXPLICIT]
For detailed conventions per entity type, read references/naming-patterns.md. [EXPLICIT]
Basic slug (normalize characters):
python tools/slugger.py "My Raw Name Here"
# → my-raw-name-here
Clean name (normalize + strip versions/status):
python tools/slugger.py --clean "new-api-client-v2-final"
# → api-client
The --clean flag removes: version markers (v1, v2), status prefixes (new-, old-, final-, draft-, temp-, wip-), and trailing noise (final, copy). [EXPLICIT]
python tools/slugger.py --validate "my-component"
# → 'my-component' is valid.
python tools/slugger.py --validate "my_Bad_Name-v2"
# → Issues: uppercase, underscores, version marker → suggested: my-bad-name
Validation catches: uppercase, underscores, spaces, invalid characters, consecutive hyphens, version markers, status prefixes, excessive length. [EXPLICIT]
python tools/registry-linter.py /path/to/project
python tools/registry-linter.py /path/to/project --strict # warnings = errors
python tools/registry-linter.py /path/to/project --json # machine-readable
When encountered during any file operation, apply automatically: [EXPLICIT]
| Pattern Detected | Action |
|---|---|
| Underscore in filename | Replace with hyphen |
Version marker (v1, v2, final) | Remove; note version should be git tag |
| Uppercase letters | Convert to lowercase |
| More than 5 words | Abbreviate while preserving meaning |
Status prefix (new-, old-, draft-) | Remove the prefix |
| Consecutive hyphens | Collapse to single hyphen |
| Problem | Bad | Good | Why |
|---|---|---|---|
| Versioning | api-client-v2.ts | api-client.ts + git tag | Versions belong in VCS |
| Status markers | new-component.tsx | component.tsx | "New" is relative, temporary |
| Underscores | my_file_name.md | my-file-name.md | Kebab-case is web standard |
| Uppercase | MyComponent.tsx | my-component.tsx | Lowercase is universal, grep-friendly |
| Deep nesting | .../v1/drafts/file.md | .../file.md | Flat structures are navigable |
| Too long | user-authentication-service-handler.ts | auth-handler.ts | Aim for 2-4 words |
| Too cryptic | usr-auth-svc.ts | user-auth.ts | Descriptive, not abbreviated |
| Compound ext | component.test.tsx | Keep as-is | Compound extensions are semantic, not violations |
--clean flag is opinionated. It removes version markers because versions belong in git. If the user explicitly wants versions in filenames (e.g., API versioning: v1/routes.ts), respect that.API, HTML, CSS become api, html, css in slugs. Do not hyphenate individual letters (a-p-i is wrong).step-1, v2-migration are fine. Version markers (v2) are only stripped in --clean mode.caf becomes cafe, uber becomes uber..test.ts, .module.css, .stories.tsx are semantic. Do not treat the first dot as the extension boundary.git mv to preserve history. Never mv + git add for tracked files.Before delivering a naming recommendation or rename operation, confirm: [EXPLICIT]
new-, old-, draft-).test.ts, .module.css)references/naming-patterns.md — Detailed conventions per entity type, edge cases (acronyms, numbers, compound extensions), canonical slug algorithmAuthor: Javier Montaño | Last updated: 2026-03-12
Example invocations: [EXPLICIT]
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.