auto-naming
Improve code clarity by rejecting generic names like 'data' or 'result' in favor of domain-specific language.
Install
mkdir -p .claude/skills/auto-naming && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16975" && unzip -o skill.zip -d .claude/skills/auto-naming && rm skill.zipInstalls to .claude/skills/auto-naming
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Variable and function naming discipline: domain vocabulary over generic words, verb semantics, scope-proportional length, and the specific naming anti-patterns Claude defaults to. Corrects generic names, naming bankruptcy words, and inconsistent verb prefixes. Use when writing new code, naming variables/functions/types, or reviewing naming quality. Triggers: naming, name, rename, variable name, function name, refactor names, naming convention, domain language, ubiquitous language.Key capabilities
- →Name variables by their domain meaning
- →Use specific verbs for function semantics based on their implications
- →Adjust variable length based on scope
- →Phrase boolean names as yes/no questions in positive form
- →Use plural names for collections and qualified names for filtered collections
- →Avoid encoding types in variable names
How it works
This skill provides naming discipline guidelines, emphasizing domain vocabulary over generic terms, specific verb semantics for functions, and scope-proportional length for variables. It also identifies and corrects common naming anti-patterns.
Inputs & outputs
When to use auto-naming
- →Renaming variables
- →Refactoring function names
- →Applying naming conventions
About this skill
Naming — What Claude Gets Wrong
Your names are acceptable but rarely great. You default to naming things by their structural role (result, data, response) instead of their domain meaning. This skill fixes that.
The Core Rule
Name by what it IS in the domain, not what it IS in the code.
// You write:
let result = db.query(...).await?;
let data = response.json().await?;
let items = fetch_all().await?;
// Senior writes:
let sentinel_reports = db.query(...).await?;
let price_history = response.json().await?;
let pending_alerts = fetch_all().await?;
Generic Names You Default To — Stop Using These
| Generic | Name by domain meaning instead |
|---|---|
result | consensus_outcome, parsed_config, matched_users |
data | sentinel_report, price_candle, whale_transfer |
response | user_profile, alert_details (name by content, not transport) |
items / list | pending_jobs, active_sentinels, failed_evaluations |
value / val | threshold, confidence_score, strike_price |
temp / tmp | Name what it temporarily holds: unsorted_scores |
input / output | raw_html / parsed_tokens |
info | Merge into the noun: UserInfo → User or UserProfile |
Function Verb Semantics
Each verb implies different things about performance, side effects, and failure modes. Use the right one.
| Verb | Implies | Failure |
|---|---|---|
get | Cheap accessor, O(1), possibly cached | Infallible or panics |
fetch | Remote/external source, I/O, network | Returns Result, can fail |
find | Searches a collection, absence is normal | Returns Option |
load | Reads from storage, deserializes | Returns Result |
query | Structured lookup (SQL, API) | Returns collection |
compute / calculate | Derives via computation, no I/O | Usually infallible |
build / create | Constructs a new instance | Returns the new thing |
parse | Text/bytes → structured data | Returns Result |
resolve | Ambiguous reference → concrete value | Can fail |
ensure | Idempotent guarantee (create if missing) | Usually infallible |
validate | Checks correctness, no mutation | Returns bool or Result |
emit / send / dispatch | Pushes data outward | Fire-and-forget or Result |
Your specific failure: You use get, fetch, load, and retrieve interchangeably. get_user_from_database() should be fetch_user(). fetch_name() for a field accessor should be name() or get_name().
Scope-Proportional Length
Variables: Longer names for wider scopes.
- Loop body:
i,u,e— fine - Single function:
user,count,path— fine - Module/struct field:
active_subscription_count,unprocessed_reports— fully specific
Functions: Shorter names for wider scopes (inverse).
- Public API:
push,send,save,close - Private helper:
normalize_whale_alert_timestamp,calculate_weighted_consensus_score
Boolean Naming
Always phrase as a yes/no question that reads naturally in if:
| Prefix | Semantics | Example |
|---|---|---|
is_ | Current state | is_active, is_connected |
has_ | Possession | has_permission, has_children |
can_ | Capability | can_edit, can_retry |
should_ | Policy/recommendation | should_notify, should_escalate |
needs_ | Requirement | needs_review, needs_migration |
Always positive form. is_valid not is_not_valid. Negating a negative (!is_not_valid) is cognitive poison.
For function params: include_archived: bool reads better than is_archived: bool — name by what the caller is choosing.
Naming Bankruptcy Words — Never Use These for Classes/Modules
Manager, Handler, Processor, Service, Helper, Utils, Data, Info, Base, Common, Core, Engine, System
These words mean nothing. Name by what the thing actually does:
UserManager→UserRepository,UserAuthenticator,UserRegistrationDataProcessor→SentinelReportAggregator,WhaleAlertNormalizerUtils→ Break into specific modules:formatting,validation,parsing
Collection and Map Naming
- Plural for collections:
users,reports,alerts - Qualified when filtered:
active_users,pending_alerts - Maps by key-to-value:
price_by_symbol,reports_by_sentinel - Never:
map,dict,lookup,cacheas the full name
Domain Vocabulary
When a codebase has established terms, use them. Don't introduce synonyms.
- If the codebase says
sentinel, don't writecrawler - If it says
debate, don't writeanalysis - If it says
alert, don't writenotification
Grep the codebase for existing terminology before naming new things.
Naming Reveals Design Problems
If you can't name it, the design is wrong:
- Can't name without "And"? It does too much — split it
- Need "Manager"? Unclear responsibility — narrow the scope
- Two things with similar names? (
UserData/UserInfo) Duplicated concept — merge or differentiate - Named by implementation? (
string_array,filtered_list) Name by meaning:tags,active_subscriptions
Don't Encode Types in Names
# You write: # Senior writes:
user_dict = ... user = ...
config_map = ... config = ...
name_str = ... name = ...
items_list = ... items = ...
The type system handles types. Names handle meaning.
When not to use it
- →When naming things by their structural role like `result` or `data`
- →When using generic words like `Manager`, `Handler`, `Processor` for classes/modules
- →When using `get`, `fetch`, `load`, and `retrieve` interchangeably
Limitations
- →Does not support using generic names like `result`, `data`, `response`
- →Does not support using `Manager`, `Handler`, `Processor`, `Service`, `Helper`, `Utils` for classes/modules
- →Does not support encoding types in names like `user_dict` or `name_str`
How it compares
This skill offers a structured approach to naming that prioritizes domain meaning and code clarity, contrasting with a default approach that often results in generic or structurally-named identifiers.
Compared to similar skills
auto-naming side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| auto-naming (this skill) | 0 | 4mo | No flags | Intermediate |
| codex | 32 | 2mo | Review | Advanced |
| senior-fullstack | 35 | 8mo | Review | Intermediate |
| typescript-write | 30 | 2mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
codex
Lucklyric
Invoke Codex CLI for complex coding tasks requiring high reasoning capabilities. This skill should be invoked when users explicitly mention "Codex", request complex implementation challenges, advanced reasoning, or need high-reasoning model assistance. Automatically triggers on codex-related requests and supports session continuation for iterative development.
senior-fullstack
davila7
Comprehensive fullstack development skill for building complete web applications with React, Next.js, Node.js, GraphQL, and PostgreSQL. Includes project scaffolding, code quality analysis, architecture patterns, and complete tech stack guidance. Use when building new projects, analyzing code quality, implementing design patterns, or setting up development workflows.
typescript-write
metabase
Write TypeScript and JavaScript code following Metabase coding standards and best practices. Use when developing or refactoring TypeScript/JavaScript code.
codex-skill
feiskyer
Use when user asks to leverage codex, gpt-5, or gpt-5.1 to implement something (usually implement a plan or feature designed by Claude). Provides non-interactive automation mode for hands-off task execution without approval prompts.
subagent-driven-development
davila7
Use when executing implementation plans with independent tasks in the current session
at-dispatch-v2
pytorch
Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.