Naming Skill

SkillFiles & storage

Use 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.

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

LocationCaseExample
Top-level src dirskebab-casesrc/lib/, src/modules/
Module dirskebab-casemodules/home/, modules/user-settings/
Module sub-dirsfixed namescomponents/, views/, stores/, router/, tests/
Component utilscomponents/utils/components/utils/

Files

TypePatternExample
Component{module}.{name}.component.vuehome.hero.component.vue
View{module}.{name}.view.vueauth.signin.view.vue
Store{module}.store.jstasks.store.js
Router{module}.router.jsusers.router.js
Unit Test{target}.unit.tests.jshome.store.unit.tests.js
E2E Test{target}.e2e.tests.jsauth.signup.e2e.tests.js
Service{name}.jsaxios.js
Helper{name}.jstools.js
Plugin{name}.jsvuetify.js
Config{name}.js or index.jsdevelopment.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).

CorrectWrong
billing.pricingCard.component.vuePricingCard.component.vue
billing.plans.view.vueplans.view.vue
billing.store.jssubscription.store.js

Pattern (components/views): {module}.{entity}[.{name}].{type}.{ext}

Case conventions in code

ContextConventionExample
Variable / functionlowerCamelCaseuseHomeStore, paginationRequest
Component name (JS)PascalCaseHomeHeroComponent
Store exportuse{Module}StoreuseTasksStore
Constant / env keyUPPER_SNAKE_CASEMY_MODULE_KEY

Rules

  1. Dot-notation prefix: always prefix with the module name separated by dots

    • home.hero.component.vue not hero.component.vue
    • tasks.store.js not store.js
  2. Semantic suffix: always add the type suffix

    • .component.vue for reusable components
    • .view.vue for page-level views
    • .store.js for Pinia stores
    • .router.js for route definitions
    • .unit.tests.js for unit tests, .e2e.tests.js for E2E tests
  3. 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
  4. Utility sub-components: place in components/utils/ and keep the module prefix

    • components/utils/home.blur.background.component.vue
  5. Shared code: files in src/lib/ use simple kebab-case, no module prefix

    • src/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