Naming Skill
SkillFiles & storageUse this whenever a new file/folder is created or renamed in this Vue project, when reviewing a module for consistency, or when the right path for a file is unclear. Also triggers on "what should I name this?", "is this file named correctly?", "audit module naming". Enforces kebab-case folders, dot-prefixed `{module}.{name}.{type}.vue|js` files, multi-entity rules, singular vs plural for views, and the layered structure UI → Store → API.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Naming Skill skill
What this skill tells your AI
The instructions your AI receives, as published by pierreb-devkit/vue in .claude/skills/naming/SKILL.md and read by ahel’s review.
Audit or apply the project's file and folder naming conventions.
Conventions
Folders
| Location | Case | Example |
|---|---|---|
| Top-level src dirs | kebab-case | src/lib/, src/modules/ |
| Module dirs | kebab-case | modules/home/, modules/user-settings/ |
| Module sub-dirs | fixed names | components/, views/, stores/, router/, tests/ |
| Component utils | components/utils/ | components/utils/ |
Files
| Type | Pattern | Example |
|---|---|---|
| Component | {module}.{name}.component.vue | home.hero.component.vue |
| View | {module}.{name}.view.vue | auth.signin.view.vue |
| Store | {module}.store.js | tasks.store.js |
| Router | {module}.router.js | users.router.js |
| Unit Test | {target}.unit.tests.js | home.store.unit.tests.js |
| E2E Test | {target}.e2e.tests.js | auth.signup.e2e.tests.js |
| Service | {name}.js | axios.js |
| Helper | {name}.js | tools.js |
| Plugin | {name}.js | vuetify.js |
| Config | {name}.js or index.js | development.js |
Multi-entity modules
When a module contains multiple entities (e.g., billing with subscription), components and views add an entity segment after the module prefix. Stores keep the simple {module}.store.js pattern (one store per module).
| Correct | Wrong |
|---|---|
billing.pricingCard.component.vue | PricingCard.component.vue |
billing.plans.view.vue | plans.view.vue |
billing.store.js | subscription.store.js |
Pattern (components/views): {module}.{entity}[.{name}].{type}.{ext}
Case conventions in code
| Context | Convention | Example |
|---|---|---|
| Variable / function | lowerCamelCase | useHomeStore, paginationRequest |
| Component name (JS) | PascalCase | HomeHeroComponent |
| Store export | use{Module}Store | useTasksStore |
| Constant / env key | UPPER_SNAKE_CASE | MY_MODULE_KEY |
Rules
-
Dot-notation prefix: always prefix with the module name separated by dots
home.hero.component.vuenothero.component.vuetasks.store.jsnotstore.js
-
Semantic suffix: always add the type suffix
.component.vuefor reusable components.view.vuefor page-level views.store.jsfor Pinia stores.router.jsfor route definitions.unit.tests.jsfor unit tests,.e2e.tests.jsfor E2E tests
-
Singular vs plural: follow the module's data semantics
- List of items → plural:
tasks.view.vue,users.view.vue - Single item → singular:
task.view.vue,user.view.vue
- List of items → plural:
-
Utility sub-components: place in
components/utils/and keep the module prefixcomponents/utils/home.blur.background.component.vue
-
Shared code: files in
src/lib/use simple kebab-case, no module prefixsrc/lib/helpers/tools.js,src/lib/plugins/vuetify.js
Applying names
Derive name as: module prefix (kebab-case) + . + semantic name + . + type suffix. Place in the correct sub-directory (components/, views/, stores/, router/, tests/). When auditing, check each file against the tables above and report violations.
Signals
- GitHub stars
- 20
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
naming-pierreb-devkit- Source
- github.com/pierreb-devkit/vue