file-naminglisted
Install: claude install-skill samuhlo/ein-agent
# File Naming — kebab-case files, idiomatic code
Samuhlo's default for naming files and folders in production projects. Apply it whenever you **create or rename a file/folder**, scaffold a component, or refactor structure.
## Rule
| Layer | Convention | Example | Why |
| :--- | :--- | :--- | :--- |
| Files & folders | `kebab-case` | `user-profile.vue`, `auth-service.ts` | Safe across Linux, Git, URLs, CI/CD |
| Components / classes | `PascalCase` | `UserProfile`, `AuthService` | Language/framework convention |
| Variables / functions | `camelCase` | `userProfile`, `fetchUserProfile()` | Natural reading inside JS/TS |
The file is the armored transport box; the code inside is the real logic. They serve different functions, so they don't share a convention.
## Why it matters (not aesthetics)
It removes dumb breakage points between local → Git → CI → production.
- Locally (macOS/Windows) the filesystem is often case-insensitive: `HeaderNav.vue`, `headernav.vue` and `HEADERNAV.vue` can behave as the same file.
- Production is almost always Linux, which is case-sensitive: `HeaderNav.vue` ≠ `headerNav.vue`.
- Classic bug: rename a component changing only a letter's case, Git doesn't track it cleanly, it builds locally, then Vercel/CI fails with `File not found`.
kebab-case kills it at the root: all lowercase, all explicit, zero ambiguity between OSes.
## File-based routing (Nuxt / Next / Astro)
When the filename becomes a URL, naming stops being internal — it's public inte