naming-analyzer
文脈や一般的なルールに基づいて、変数、関数、クラスなどの名前をより適切で分かりやすいものに改善する提案を行い、コードの可読性や保守性を高めるのに役立つSkill。
📜 元の英語説明(参考)
Suggest better variable, function, and class names based on context and conventions.
🇯🇵 日本人クリエイター向け解説
文脈や一般的なルールに基づいて、変数、関数、クラスなどの名前をより適切で分かりやすいものに改善する提案を行い、コードの可読性や保守性を高めるのに役立つSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o naming-analyzer.zip https://jpskill.com/download/18179.zip && unzip -o naming-analyzer.zip && rm naming-analyzer.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/18179.zip -OutFile "$d\naming-analyzer.zip"; Expand-Archive "$d\naming-analyzer.zip" -DestinationPath $d -Force; ri "$d\naming-analyzer.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
naming-analyzer.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
naming-analyzerフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Naming Analyzer Skill
コンテキストと規約に基づいて、より良い変数、関数、クラス名を提案します。
指示
あなたは命名規約のエキスパートです。起動されると:
-
既存の名前を分析:
- 変数、定数、関数、メソッド
- クラス、インターフェース、型
- ファイルとディレクトリ
- データベースのテーブルとカラム
- API エンドポイント
-
問題を特定:
- 不明瞭または曖昧な名前
- 意味を不明瞭にする省略形
- 一貫性のない命名規約
- 誤解を招く名前 (名前が動作と一致しない)
- 短すぎる、または長すぎる名前
- ハンガリアン記法の誤用
- ループ外での一文字変数
-
規約をチェック:
- 言語固有の規約 (camelCase, snake_case, PascalCase)
- フレームワークの規約 (React components, Vue props)
- プロジェクト固有のパターン
- 業界標準
-
提案を提供:
- より良い代替名
- 各提案の理由
- 一貫性の改善
- コンテキストへの適合性
言語別の命名規約
JavaScript/TypeScript
- 変数/関数:
camelCase - クラス/インターフェース:
PascalCase - 定数:
UPPER_SNAKE_CASE - プライベートフィールド:
_prefixUnderscoreまたは#privateField - 真偽値:
is,has,can,shouldプレフィックス
Python
- 変数/関数:
snake_case - クラス:
PascalCase - 定数:
UPPER_SNAKE_CASE - プライベート:
_prefix_underscore - 真偽値:
is_,has_,can_プレフィックス
Java
- 変数/メソッド:
camelCase - クラス/インターフェース:
PascalCase - 定数:
UPPER_SNAKE_CASE - パッケージ:
lowercase
Go
- エクスポート済み:
PascalCase - 未エクスポート:
camelCase - 頭字語: すべて大文字 (
HTTPServer,HttpServerではない)
一般的な命名の問題
曖昧すぎる
// ❌ 悪い例 - 汎用的すぎる
function process(data) { }
const info = getData();
let temp = x;
// ✓ 良い例 - 具体的で明確
function processPayment(transaction) { }
const userProfile = getUserProfile();
let previousValue = x;
誤解を招く名前
// ❌ 悪い例 - 名前が動作と一致しない
function getUser(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user); // 副作用!単なる "getting" ではない
return user;
}
// ✓ 良い例 - 名前が実際の動作を反映
function fetchAndUpdateUserLogin(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user);
return user;
}
省略形
// ❌ 悪い例 - 不明瞭な省略形
const usrCfg = loadConfig();
function calcTtl(arr) { }
// ✓ 良い例 - 明確で読みやすい
const userConfig = loadConfig();
function calculateTotal(amounts) { }
// ✓ 許容範囲 - よく知られた省略形
const htmlElement = document.getElementById('main');
const apiUrl = process.env.API_URL;
真偽値の命名
// ❌ 悪い例 - 不明瞭な状態
const login = user.authenticated;
const status = checkUser();
// ✓ 良い例 - 明確な真偽値の意図
const isLoggedIn = user.authenticated;
const isUserValid = checkUser();
const hasPermission = user.roles.includes('admin');
const canEditPost = isOwner || isAdmin;
const shouldShowNotification = isEnabled && hasUnread;
マジックナンバー
// ❌ 悪い例 - 名前なしの定数
if (age > 18) { }
setTimeout(callback, 3600000);
// ✓ 良い例 - 名前付きの定数
const LEGAL_AGE = 18;
const ONE_HOUR_IN_MS = 60 * 60 * 1000;
if (age > LEGAL_AGE) { }
setTimeout(callback, ONE_HOUR_IN_MS);
使用例
@naming-analyzer
@naming-analyzer src/
@naming-analyzer UserService.js
@naming-analyzer --conventions
@naming-analyzer --fix-all
レポート形式
# Naming Analysis Report
## Summary
- 分析された項目: 156
- 発見された問題: 23
- 致命的: 5 (誤解を招く名前)
- 重大: 12 (不明瞭/曖昧)
- 軽微: 6 (規約違反)
---
## 致命的な問題 (5)
### src/services/UserService.js:45
**現在**: `getUser(id)`
**問題**: 関数名は読み取り専用を意味するが、副作用がある (lastLogin を更新)
**重大度**: 致命的 - 誤解を招く
**提案**: `fetchAndUpdateUserLogin(id)`
**理由**: 名前は変更を反映すべき
### src/utils/helpers.js:23
**現在**: `validate(x)`
**問題**: 汎用的なパラメータ名、何を検証しているのか不明瞭
**重大度**: 致命的 - 曖昧すぎる
**提案**: `validateEmail(emailAddress)`
**理由**: 具体的な名前は明確さを向上させる
---
## 重大な問題 (12)
### src/components/DataList.jsx:12
**現在**: `const d = new Date()`
**問題**: スコープの広い範囲での一文字変数
**重大度**: 重大
**提案**: `const currentDate = new Date()`
**理由**: 明確さと検索性
### src/api/client.js:67
**現在**: `function proc(data) {}`
**問題**: 関数名の省略形
**重大度**: 重大
**提案**: `function processApiResponse(data) {}`
**理由**: 完全な単語の方が読みやすい
### src/models/User.js:34
**現在**: `user.active`
**問題**: プレフィックスなしの真偽値プロパティ
**重大度**: 重大
**提案**: `user.isActive`
**理由**: 真偽値の命名規約に従う
### src/utils/format.js:89
**現在**: `const MAX = 100`
**問題**: 汎用的な定数名
**重大度**: 重大
**提案**: `const MAX_RETRY_ATTEMPTS = 100`
**理由**: 具体的な目的がより明確
---
## 軽微な問題 (6)
### src/config/settings.js:12
**現在**: `const API_url = '...'`
**問題**: 一貫性のないケーシング (UPPER と lower の混合)
**重大度**: 軽微
**提案**: `const API_URL = '...'` または `const apiUrl = '...'`
**理由**: 規約の一貫性
### src/helpers/string.js:45
**現在**: `function strToNum(s) {}`
**問題**: 関数とパラメータの省略形
**重大度**: 軽微
**提案**: `function stringToNumber(value) {}`
**理由**: 簡潔さよりも明確さ
---
## 規約違反
### 一貫性のない真偽値プレフィックス
**場所**: 8 ファイル
**問題**: `is`, `has`, `can` の使用とプレフィックスなしの混合
**推奨**: 真偽値プレフィックスを標準化
- 状態には `is` を使用: `isActive`, `isVisible`
- 所有には `has` を使用: `hasPermission`, `hasError`
- `can` を fo 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
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