naming-review
Skill0 starsChanged 10 days agoMITView on GitHub
Review names in code for consistency and clarity - language naming conventions (camelCase/snake_case/PascalCase), meaningless names (data, tmp, foo), misleading names (isX that isn't a bool, getX with side effects), unclear abbreviations, synonyms for the same concept and mixed naming schemes. Suggests better names but never renames anything. Use when asked to review/check naming, variable names, identifiers or "are my names good", in any language.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Jinbae10/skillstheir own version, first seen Jul 7, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Jinbae10/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository28 other files it gives its agents.
- accessibility-auditSkill
- api-design-reviewSkill
- architecture-reviewSkill
- complexity-checkSkill
- concurrency-reviewSkill
- config-reviewSkill
- cpp-google-styleSkill
- csharp-google-styleSkill
- dead-code-finderSkill
- dependency-auditSkill
- doc-comment-auditSkill
- error-handling-reviewSkill
- full-reviewSkill
- java-google-styleSkill
- logging-reviewSkill
- markdown-readme-google-styleSkill
- owasp-security-reviewSkill
- performance-reviewSkill
- privacy-reviewSkill
- python-google-styleSkill
- regex-reviewSkill
- repo-hygieneSkill
- review-without-fixingSkill
- secrets-scanSkill
- shell-google-styleSkill
- sql-reviewSkill
- test-coverage-reviewSkill
- todo-auditSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 55
Every finding has a concrete location and a concrete suggestion.
- Distinctive: line 60
Do not change code. Apply renames only when the user explicitly asks for it.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Naming review
Review only: report findings with a suggested name, never rename anything unless the user explicitly asks. Renaming public API breaks callers; say so whenever a finding concerns a public/exported name.
Scope
Check the files/directories the user names, otherwise the whole repo. Skip .git/, build output, vendor/, node_modules/, .venv/, generated code, and names dictated by external APIs, frameworks, file formats or databases (e.g. JSON fields, ORM columns, overridden methods) - report those only as info if they leak deep into the code.
Steps
- Detect languages and any naming config (
.editorconfignaming rules, Checkstyle, ESLintnaming-convention, ruffN, pylint, clang-tidyreadability-identifier-naming). The project config wins over language defaults. - Build a short glossary of the domain terms used in the code (types, modules, comments, README). Use it to find synonyms (NM5) and misleading names (NM3).
- Go through declarations (types, functions, parameters, fields, constants, files) and the most-used local variables.
- Report (format below).
Language conventions (defaults when the project has none)
| Language | Types | Functions/methods | Variables/params | Constants |
| Java, Kotlin | PascalCase | camelCase | camelCase | UPPER_SNAKE |
| C# | PascalCase (interfaces IName) | PascalCase | camelCase, private fields _camelCase | PascalCase |
| C++ (Google) | PascalCase | PascalCase | snake_case, members snake_case_ | kPascalCase |
| Python | PascalCase | snake_case | snake_case | UPPER_SNAKE |
| JS / TS | PascalCase | camelCase | camelCase | UPPER_SNAKE or camelCase |
| Go | PascalCase exported, camelCase internal | same | short camelCase | PascalCase/camelCase |
| Rust | PascalCase | snake_case | snake_case | UPPER_SNAKE |
| GDScript | PascalCase | snake_case | snake_case | UPPER_SNAKE |
| Shell | – | snake_case | snake_case | UPPER_SNAKE |
Rules
- NM1 warning: violates the language/project convention (table above)
- NM2 warning: meaningless name:
data,info,obj,thing,stuff,tmp,temp,val,foo,bar,test1,result2,doIt,handle,process,manager/helper/utilclasses with mixed responsibilities; single letters outside short loops/lambdas (i,j,k,x/yfor coordinates,efor exceptions are fine) - NM3 error: misleading name:
is/has/can/shouldprefix on something that isn't a booleanget/find/calculatethat changes state, does I/O or is expensive without saying so- singular name for a collection, plural for a single item;
list/arrayin the name of a set/map - name describes something other than what the code does (
validateUserthat also saves it) - wrong unit or missing unit (
timeout = 30- seconds or ms? →timeoutSeconds)
- NM4 warning: unclear abbreviation (
calcTtlAmt,usrMgr,cfgPrsr); common ones are fine (id,url,http,db,io,min/max,config,args) - NM5 warning: several names for the same concept (
fetchUser/getCustomer/loadClientfor one entity;remove/deletemixed) or one name for different concepts - NM6 info: mixed naming schemes in one project or file (
snake_caseandcamelCasefunctions side by side) - NM7 warning: type or scope encoded in the name (Hungarian
strName,iCount,m_in languages that don't use it,IFoooutside C#/TS conventions,fooListwhen the type already says it) - NM8 warning: negated booleans (
isNotEnabled,disableLogging = false) - double negations in conditions - NM9 info: name length doesn't fit the scope (long-lived global named
t; local loop index namedcurrentIterationIndexCounter) - NM10 warning: shadows a builtin or an outer name (
list,id,str,type,inputin Python;name/eventglobals in JS; parameter hiding a field withoutthis.) - NM11 info: file/module name doesn't match its main content (
utils.pywith only date logic →date_utils.py)
Report
In the user's language, grouped by file:
path/to/file:line - error|warning|info - <ID> <rule> - `oldName` → `suggestedName` - <why it is a problem>- Every finding has a concrete location and a concrete suggestion. Mark uncertain ones as "possible" (e.g. NM3 when you can't see all usages).
- Mark public/exported names with "(public API - renaming breaks callers)".
- Bulk hits with one root cause (e.g. a whole module in the wrong case style): report once with count and 2-3 samples.
- NM5 findings: list all variants found with locations and propose one term for the glossary.
- End with a summary: findings per severity, the proposed glossary of domain terms, then the 3 most important things to fix first.
- Do not change code. Apply renames only when the user explicitly asks for it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

