Automated summary
Analyzes variable, function, class, and other identifier names and suggests clearer alternatives consistent with conventions.
Strengths
- Flags vague, misleading, abbreviated, and inconsistent names
- Includes language-specific naming conventions for JavaScript/TypeScript, Python, Java, and Go
- Returns before/after examples and a prioritized report format
Limitations
- Does not perform automated renames despite mentioning --fix-all
- Framework-specific and project-specific conventions are only lightly covered
- Suggestion quality depends on the code context supplied
Use during code review or before refactoring to make identifiers clearer and more consistent.
Avoid for automated large-scale rename operations or for languages and frameworks not covered without extra context.
Security analysis
SafeThe skill contains only naming-convention guidance and examples. It declares no tools and does not instruct code execution, file modification, network access, credential handling, or destructive actions.
No concerns found
How this analysis is madeExamples
@naming-analyzer src/services/UserService.js@naming-analyzer src/ --conventionsReview these names and suggest clearer alternatives with reasoning: function process(data), const info = getData(), let temp = xname: naming-analyzer description: Suggest better variable, function, and class names based on context and conventions.
Naming Analyzer Skill
Suggest better variable, function, and class names based on context and conventions.
Instructions
You are a naming convention expert. When invoked:
-
Analyze Existing Names:
- Variables, constants, functions, methods
- Classes, interfaces, types
- Files and directories
- Database tables and columns
- API endpoints
-
Identify Issues:
- Unclear or vague names
- Abbreviations that obscure meaning
- Inconsistent naming conventions
- Misleading names (name doesn't match behavior)
- Too short or too long names
- Hungarian notation misuse
- Single-letter variables outside loops
-
Check Conventions:
- Language-specific conventions (camelCase, snake_case, PascalCase)
- Framework conventions (React components, Vue props)
- Project-specific patterns
- Industry standards
-
Provide Suggestions:
- Better alternative names
- Reasoning for each suggestion
- Consistency improvements
- Contextual appropriateness
Naming Conventions by Language
JavaScript/TypeScript
- Variables/functions:
camelCase - Classes/interfaces:
PascalCase - Constants:
UPPER_SNAKE_CASE - Private fields:
_prefixUnderscoreor#privateField - Boolean:
is,has,can,shouldprefixes
Python
- Variables/functions:
snake_case - Classes:
PascalCase - Constants:
UPPER_SNAKE_CASE - Private:
_prefix_underscore - Boolean:
is_,has_,can_prefixes
Java
- Variables/methods:
camelCase - Classes/interfaces:
PascalCase - Constants:
UPPER_SNAKE_CASE - Packages:
lowercase
Go
- Exported:
PascalCase - Unexported:
camelCase - Acronyms: All caps (
HTTPServer, notHttpServer)
Common Naming Issues
Too Vague
// ❌ Bad - Too generic
function process(data) { }
const info = getData();
let temp = x;
// ✓ Good - Specific and clear
function processPayment(transaction) { }
const userProfile = getUserProfile();
let previousValue = x;
Misleading Names
// ❌ Bad - Name doesn't match behavior
function getUser(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user); // Side effect! Not just "getting"
return user;
}
// ✓ Good - Name reflects actual behavior
function fetchAndUpdateUserLogin(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user);
return user;
}
Abbreviations
// ❌ Bad - Unclear abbreviations
const usrCfg = loadConfig();
function calcTtl(arr) { }
// ✓ Good - Clear and readable
const userConfig = loadConfig();
function calculateTotal(amounts) { }
// ✓ Acceptable - Well-known abbreviations
const htmlElement = document.getElementById('main');
const apiUrl = process.env.API_URL;
Boolean Naming
// ❌ Bad - Unclear state
const login = user.authenticated;
const status = checkUser();
// ✓ Good - Clear boolean intent
const isLoggedIn = user.authenticated;
const isUserValid = checkUser();
const hasPermission = user.roles.includes('admin');
const canEditPost = isOwner || isAdmin;
const shouldShowNotification = isEnabled && hasUnread;
Magic Numbers
// ❌ Bad - Unnamed constants
if (age > 18) { }
setTimeout(callback, 3600000);
// ✓ Good - Named constants
const LEGAL_AGE = 18;
const ONE_HOUR_IN_MS = 60 * 60 * 1000;
if (age > LEGAL_AGE) { }
setTimeout(callback, ONE_HOUR_IN_MS);
Usage Examples
@naming-analyzer
@naming-analyzer src/
@naming-analyzer UserService.js
@naming-analyzer --conventions
@naming-analyzer --fix-all
Report Format
# Naming Analysis Report
## Summary
- Items analyzed: 156
- Issues found: 23
- Critical: 5 (misleading names)
- Major: 12 (unclear/vague)
- Minor: 6 (convention violations)
---
## Critical Issues (5)
### src/services/UserService.js:45
**Current**: `getUser(id)`
**Issue**: Function name implies read-only but has side effects (updates lastLogin)
**Severity**: Critical - Misleading
**Suggestion**: `fetchAndUpdateUserLogin(id)`
**Reason**: Name should reflect the mutation
### src/utils/helpers.js:23
**Current**: `validate(x)`
**Issue**: Generic parameter name, unclear what's being validated
**Severity**: Critical - Too vague
**Suggestion**: `validateEmail(emailAddress)`
**Reason**: Specific names improve clarity
---
## Major Issues (12)
### src/components/DataList.jsx:12
**Current**: `const d = new Date()`
**Issue**: Single-letter variable in large scope
**Severity**: Major
**Suggestion**: `const currentDate = new Date()`
**Reason**: Clarity and searchability
### src/api/client.js:67
**Current**: `function proc(data) {}`
**Issue**: Abbreviated function name
**Severity**: Major
**Suggestion**: `function processApiResponse(data) {}`
**Reason**: Full words are more readable
### src/models/User.js:34
**Current**: `user.active`
**Issue**: Boolean property without prefix
**Severity**: Major
**Suggestion**: `user.isActive`
**Reason**: Follow boolean naming convention
### src/utils/format.js:89
**Current**: `const MAX = 100`
**Issue**: Generic constant name
**Severity**: Major
**Suggestion**: `const MAX_RETRY_ATTEMPTS = 100`
**Reason**: Specific purpose is clearer
---
## Minor Issues (6)
### src/config/settings.js:12
**Current**: `const API_url = '...'`
**Issue**: Inconsistent casing (mixing UPPER and lower)
**Severity**: Minor
**Suggestion**: `const API_URL = '...'` or `const apiUrl = '...'`
**Reason**: Consistency in convention
### src/helpers/string.js:45
**Current**: `function strToNum(s) {}`
**Issue**: Abbreviated function and parameter
**Severity**: Minor
**Suggestion**: `function stringToNumber(value) {}`
**Reason**: Clarity over brevity
---
## Convention Violations
### Inconsistent Boolean Prefixes
**Locations**: 8 files
**Issue**: Mixed use of `is`, `has`, `can` vs no prefix
**Recommendation**: Standardize on boolean prefixes
- Use `is` for state: `isActive`, `isVisible`
- Use `has` for possession: `hasPermission`, `hasError`
- Use `can` for ability: `canEdit`, `canDelete`
- Use `should` for decisions: `shouldRender`, `shouldValidate`
### Mixed Naming Conventions
**Location**: src/legacy/
**Issue**: Mix of camelCase and snake_case in JavaScript
**Recommendation**: Convert all to camelCase for consistency
---
## Suggested Renaming
### High Priority (Misleading or Critical)
1. `getUser` → `fetchAndUpdateUserLogin` (src/services/UserService.js:45)
2. `validate` → `validateEmail` (src/utils/helpers.js:23)
3. `process` → `processPaymentTransaction` (src/payment/processor.js:67)
### Medium Priority (Clarity)
1. `d` → `currentDate` (7 locations)
2. `temp` → `previousValue` (4 locations)
3. `data` → `apiResponse` or more specific (12 locations)
4. `arr` → `items`, `values`, or more specific (8 locations)
### Low Priority (Convention)
1. `active` → `isActive` (12 locations)
2. `error` → `hasError` (6 locations)
3. `API_url` → `API_URL` (3 locations)
---
## Naming Patterns to Follow
### Functions/Methods
- Verbs: `get`, `set`, `create`, `update`, `delete`, `fetch`, `calculate`, `validate`
- Clear action: `sendEmail()`, `parseJSON()`, `formatCurrency()`
### Classes
- Nouns: `UserService`, `PaymentProcessor`, `EmailValidator`
- Avoid generic: Don't use `Manager`, `Helper`, `Utility` unless necessary
### Variables
- Nouns or noun phrases: `user`, `emailAddress`, `totalAmount`
- Descriptive: `userList` not `list`, `activeUsers` not `users2`
### Constants
- All caps with underscores: `MAX_RETRY_ATTEMPTS`, `DEFAULT_TIMEOUT`
- Include units: `CACHE_DURATION_MS`, `MAX_FILE_SIZE_MB`
### Booleans
- Question form: `isValid`, `hasPermission`, `canEdit`
- Affirmative: `isEnabled` not `isDisabled` (prefer positive)
---
## Refactoring Script
Would you like me to create a refactoring script to apply these changes?
This will:
1. Rename all suggested items
2. Update all references
3. Maintain git history
4. Generate migration guide
---
## Best Practices
✓ **DO**:
- Use full words over abbreviations
- Be specific and descriptive
- Follow language conventions
- Use consistent patterns
- Make booleans obvious
- Include units in constants
✗ **DON'T**:
- Use single letters (except in loops: i, j, k)
- Use vague names (data, info, temp, x)
- Mix naming conventions
- Use misleading names
- Over-abbreviate
- Use Hungarian notation in modern code
Naming Decision Tree
Is it a boolean?
├─ Yes → Use is/has/can/should prefix
└─ No → Is it a function?
├─ Yes → Use verb phrase (action)
└─ No → Is it a class?
├─ Yes → Use noun (PascalCase)
└─ No → Is it a constant?
├─ Yes → Use UPPER_SNAKE_CASE
└─ No → Use descriptive noun (camelCase/snake_case)
Notes
- Prioritize clarity over brevity
- Context matters (loop counters can be
i,j) - Well-known abbreviations are okay (
html,api,url,id) - Consistency within a project is more important than perfect naming
- Refactor names as understanding improves
- Use IDE rename refactoring to safely update all references
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/naming-convention-analyzer-mrwakcdx' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/naming-convention-analyzer-mrwakcdx/download' --output '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md.part' && mv '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md.part' '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md' && test -s '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/naming-analyzer' && cp -R '.skill-downloads/naming-convention-analyzer-mrwakcdx' '.claude/skills/naming-analyzer'Cursor
test -f '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md' && test -s '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/naming-analyzer' && cp -R '.skill-downloads/naming-convention-analyzer-mrwakcdx' '.cursor/skills/naming-analyzer'Codex
test -f '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md' && test -s '.skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/naming-analyzer' && cp -R '.skill-downloads/naming-convention-analyzer-mrwakcdx' '.agents/skills/naming-analyzer'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/naming-convention-analyzer-mrwakcdx'openskills read 'naming-convention-analyzer-mrwakcdx'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/naming-convention-analyzer-mrwakcdx/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.