Help us improve
Share bugs, ideas, or general feedback.
From claude-skill-naming
This skill should be used when the user asks to "help me name this", "what should I call this", "naming suggestions", "help with naming", "give me a name for", or mentions difficulty naming a project, file, variable, function, class, module, component, API route, database table, or any other code artifact. Also triggers when the user says "命名" or "取名" or "怎么叫" in Chinese. Provides guided Q&A and curated name options to solve programmer naming problems.
npx claudepluginhub atompilot/claude-skill-naming --plugin claude-skill-namingHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-skill-naming:namingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Programmer naming problems — solved through focused Q&A and curated options. Default output language is **English** unless the user explicitly requests Chinese or another language.
Choosing meaningful, pronounceable names that reveal intent for functions, variables, classes, and modules.
Enforces precise naming for variables, functions, classes, files, and identifiers. Bans vague names like data/temp/result/info/handle/manager; promotes semantic accuracy and domain-specific terms via specificity ladder.
Suggests improved names for variables, functions, classes, files, DB tables, and API endpoints using language-specific conventions like camelCase or snake_case.
Share bugs, ideas, or general feedback.
Programmer naming problems — solved through focused Q&A and curated options. Default output language is English unless the user explicitly requests Chinese or another language.
Determine exactly what is being named. If not stated, ask one focused question:
"What are you naming? (e.g., project, variable, function, class, file, module, API route, database table)"
Common targets and their primary concerns:
| Target | Primary concern |
|---|---|
| Project / repo | Memorable, searchable, brand-friendly |
| npm / pip package | Unique in registry, concise, descriptive |
| Variable | Reveals intent, follows language convention |
| Function / method | Action verb, describes what it does |
| Class / interface / type | Noun, describes what it represents |
| File / directory | Matches contents, follows project convention |
| API route | REST-ful resource noun |
| Database table / column | snake_case, plural tables |
| CSS class / design token | BEM or utility convention |
| Feature flag / env var | ALL_CAPS, prefixed |
Ask the most important missing questions — max 3 questions per round, prioritizing:
Optional follow-ups when relevant:
getUserById → should new function follow get*ById pattern?)Do not ask all questions at once. Start with purpose + language, then follow up if needed.
Provide 4–6 name candidates organized into tiers:
## Naming Suggestions
**Recommended**
1. `bestName` — [why: concise, follows convention X, reveals intent Y]
2. `secondBest` — [why: alternative if first feels too long / too short]
**Also Consider**
3. `option3` — [trade-off: more explicit but verbose]
4. `option4` — [trade-off: shorter but slightly less clear]
**If you prefer [alternative style]**
5. `option5` — [e.g., if snake_case preferred over camelCase]
Rules for generating options:
references/naming-conventions.md)data, info, temp, util, manager as standalone wordsfetch, parse, validate, build, resolve)is, has, can, should prefixAfter presenting options:
❌ processData() → ✅ normalizeUserInput()
❌ handleStuff() → ✅ retryFailedPayment()
❌ temp → ✅ pendingOrderIds
Always apply the default convention for the language in use. When uncertain, ask. See references/naming-conventions.md for the full matrix.
When the user provides existing names from their codebase, match the pattern:
fetch* for data loading, don't suggest get*PascalCase, don't suggest kebab-caseUserService, a new service should follow *ServiceTarget: 1–3 words for variables/functions, 1–4 words for project names.
u, fn, x (meaningless)currentlySelectedUserProfileDataForDisplay (unwieldy)selectedUserProfileExtra checks for projects:
utils, helper, tools)date-fns (date functions), zod (validation)If the project serves Chinese users but codebase is English:
video-dl, display: 视频下载器 / VideoGrabberFor a new feature/module that requires naming at multiple levels (project + package + main class + main function):
Example output:
Naming scheme for your "video downloader" feature:
- Module / directory: `video-downloader/`
- Main class: `VideoDownloader`
- Main method: `download(url: string)`
- Config key: `videoDownloader.maxConcurrent`
- Feature flag: `FEATURE_VIDEO_DOWNLOADER`
When the user gives minimal context, use these as opening questions:
For any target:
"What does [it] do in one sentence? And what language / stack is this for?"
For a project name:
"What problem does this project solve? Who is the target user? Any vibe you're going for (serious tool, fun utility, enterprise)?"
For a variable or function:
"What value does it hold / what action does it perform? Paste the relevant code if possible."
For a file:
"What will this file contain? (component, service, utility, config, type definitions?)"
references/naming-conventions.md — Complete case styles, language defaults, and anti-patterns organized by target type (variables, functions, classes, files, database, API, CSS)