Skip to content
Skill Authoring
Skill

/naming-analyzer

Suggest better variable, function, and class names based on context and conventions.

BOOST
From plugin
agent-toolkit
2.6k43 skills6 agents8 commands
Install
$ npx -y skills add softaworks/agent-toolkit --skill naming-analyzer --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/naming-analyzer

Context preview

The summary Claude sees to decide when to auto-load this skill.

Suggest better variable, function, and class names based on context and conventions.

SKILL.md

naming-analyzer.SKILL.md
name: 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:

1. **Analyze Existing Names**:

  • Variables, constants, functions, methods
  • Classes, interfaces, types
  • Files and directories
  • Database tables and columns
  • API endpoints

2. **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

3. **Check Conventions**:

  • Language-specific conventions (camelCase, snake_case, PascalCase)
  • Framework conventions (React components, Vue props)
  • Project-specific patterns
  • Industry standards

4. **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: `_prefixUnderscore` or `#privateField`
  • Boolean: `is`, `has`, `can`, `should` prefixes

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`, not `HttpServer`)

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 bool
Read more
Ships withagent-toolkit

Opinionated skills shared by @leonardocouy for improving daily work efficiency with Claude Code. Skills are packaged instructions and scripts that extend agent capabilities across development, documentation, planning, and professional workflows.

Get the whole plugin

Other skills on agent-toolkit.