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

Installs 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.
485 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

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

You give it
Code with generic or inconsistent variable and function names
You get back
Refactored code with domain-meaningful, scope-proportional, and semantically correct names

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

GenericName by domain meaning instead
resultconsensus_outcome, parsed_config, matched_users
datasentinel_report, price_candle, whale_transfer
responseuser_profile, alert_details (name by content, not transport)
items / listpending_jobs, active_sentinels, failed_evaluations
value / valthreshold, confidence_score, strike_price
temp / tmpName what it temporarily holds: unsorted_scores
input / outputraw_html / parsed_tokens
infoMerge into the noun: UserInfoUser or UserProfile

Function Verb Semantics

Each verb implies different things about performance, side effects, and failure modes. Use the right one.

VerbImpliesFailure
getCheap accessor, O(1), possibly cachedInfallible or panics
fetchRemote/external source, I/O, networkReturns Result, can fail
findSearches a collection, absence is normalReturns Option
loadReads from storage, deserializesReturns Result
queryStructured lookup (SQL, API)Returns collection
compute / calculateDerives via computation, no I/OUsually infallible
build / createConstructs a new instanceReturns the new thing
parseText/bytes → structured dataReturns Result
resolveAmbiguous reference → concrete valueCan fail
ensureIdempotent guarantee (create if missing)Usually infallible
validateChecks correctness, no mutationReturns bool or Result
emit / send / dispatchPushes data outwardFire-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:

PrefixSemanticsExample
is_Current stateis_active, is_connected
has_Possessionhas_permission, has_children
can_Capabilitycan_edit, can_retry
should_Policy/recommendationshould_notify, should_escalate
needs_Requirementneeds_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:

  • UserManagerUserRepository, UserAuthenticator, UserRegistration
  • DataProcessorSentinelReportAggregator, WhaleAlertNormalizer
  • Utils → 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, cache as the full name

Domain Vocabulary

When a codebase has established terms, use them. Don't introduce synonyms.

  • If the codebase says sentinel, don't write crawler
  • If it says debate, don't write analysis
  • If it says alert, don't write notification

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.

SkillInstallsUpdatedSafetyDifficulty
auto-naming (this skill)04moNo flagsIntermediate
codex322moReviewAdvanced
senior-fullstack358moReviewIntermediate
typescript-write302moReviewAdvanced

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.

32238

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.

35110

typescript-write

metabase

Write TypeScript and JavaScript code following Metabase coding standards and best practices. Use when developing or refactoring TypeScript/JavaScript code.

30114

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.

12110

subagent-driven-development

davila7

Use when executing implementation plans with independent tasks in the current session

1493

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.

591

Search skills

Search the agent skills registry