agentsclimarketplace

Naming buddy

Skill YuAICode/ai-skills/skills/naming-buddy

35 个即用 Claude Code skill,每个都带离线测试 + skill-doctor 自校验 · 35 tested, self-linted Claude Code skills (中文优先)

Install
npx -y skills add YuAICode/ai-skills --skill naming-buddy

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

命名困难症救星。给一段逻辑/用途描述 + 语言 → 建议好的变量/函数/类/文件/常量/布尔名,中英对照解释。触发词:'/naming-buddy'、'帮我起个名字'、'这个变量叫什么好'、'给这个函数命名'、'命名建议'。

SKILL.md

8.4 KB, as published. Nobody here has run it

naming-buddy — 命名困难症救星

给一段逻辑/用途描述 + 目标语言,得到 3-5 个候选名、推荐理由、以及原名/坏味道诊断。 告别 datatempflaginfomanager——让名字直接说清意图。

何时触发

用户说:

  • /naming-buddy
  • 帮我起个名字
  • 这个变量叫什么好
  • 给这个函数命名
  • 命名建议
  • 这个名字好不好
  • xxx 这个名字有没有问题
  • 帮我看看这几个命名
  • 类名怎么起文件名叫什么常量名叫什么

工作流

第 1 步:搞清三件事

在给出任何候选名之前,必须先明确:

  1. 命名类型:变量 / 函数 / 类 / 接口 / 文件 / 包 / 常量 / 布尔 / 枚举 / 参数
  2. 目标语言:决定 case 惯例(camelCase / snake_case / PascalCase / kebab-case / UPPER_SNAKE_CASE)
  3. 职责描述:它做什么、存什么、代表什么——这是命名的根本依据

若用户没有提供语言或职责描述,先追问,不要凭空猜测。追问示例:

  • "请问是哪种语言?Go / Python / TypeScript / Java / Swift / Rust / Dart…?"
  • "能描述一下这个函数/变量的具体职责吗?它做什么事情?"
  • "它是个布尔值还是函数?读来还是写去?"

第 2 步:给 3-5 个候选名

按推荐度从高到低排列,格式:

候选名(按推荐度排):
1. <名字>  — <一句中文理由:为什么推荐,有什么优势>
2. <名字>  — <一句中文理由>
3. <名字>  — <一句中文理由>
[4. <名字>  — (适用特定场景时)]
[5. <名字>  — (适用特定场景时)]

给候选名的原则:

  • 第 1 名:最符合该语言惯例 + 意图最清晰的
  • 第 2-3 名:语义相近但侧重点不同(更简洁 / 更明确 / 更符合项目词汇表)
  • 第 4-5 名:适用于特定上下文(如有对应配对名、领域术语时)
  • 每个名字都附一句中文理由,说明为什么而不只是"这样更清晰"

第 3 步:坏味道诊断

若用户给出了原名,或候选时需要对比,主动指出以下坏味道:

坏味道类型典型例子问题所在
过于泛化datainforesultvalueitemobj什么都能叫这个,看不出业务含义
动作名词太泛managerhandlerprocessorutilhelperservice(滥用)掩盖真实职责
临时占位temptmpfoobarxxxtest2临时名字进了正式代码
布尔无前缀verifiedactiveloaded不加 is/has/can 容易误用为名词
匈牙利命名strNameboolFlagintCount类型信息放名字里,现代 IDE 已无必要
过度缩写usrCntrgetMsgCntcalcRcvdPkts三个月后连自己都看不懂
拼音混入yongHuzhanghao项目统一英文时不要用拼音
序号命名user1data2list3区分靠数字而不是语义
类型即名字userListnameStringcountInt名字里带类型后缀,通常多余
反义不对称getUser + removeUser 但本应对称 addUser + removeUser动词不一致破坏 API 可读性

第 4 步:附上语言惯例提示(如有必要)

若用户对 case 约定不熟悉,或给出的名字 case 不对,给一句提示:

惯例提示:<语言> 中 <命名类型> 用 <case 形式>。
示例:Go 中导出函数用 PascalCase(如 GetUser),内部函数用 camelCase(如 getUser)。

输出模板

## 命名建议

**命名类型:**<变量/函数/类/…>
**语言:**<目标语言>(惯例:<camelCase / snake_case / PascalCase / …>)
**职责:**<一句话复述理解,确认没有歧义>

**候选名(按推荐度排):**
1. `<名字>`  — <理由>
2. `<名字>`  — <理由>
3. `<名字>`  — <理由>
[4. `<名字>`  — <理由,适用场景>]
[5. `<名字>`  — <理由,适用场景>]

**坏味道诊断:**
[若原名存在问题]
- 原名 `<xxx>` 的问题:<具体说明为什么不好>
[若无明显问题]
- 原名无明显坏味道。

**惯例提示:**<若用户的 case 不符合语言惯例时给出;若无问题则省略>

命名惯例速查表

语言变量函数/方法类/类型常量文件名
GocamelCasecamelCase(内) / PascalCase(导出)PascalCase全大写 MAX_SIZE 或包级 camelCasesnake_case.go
Pythonsnake_casesnake_casePascalCaseUPPER_SNAKE_CASEsnake_case.py
TypeScript / JScamelCasecamelCasePascalCaseUPPER_SNAKE_CASEkebab-case.ts / PascalCase.tsx
JavacamelCasecamelCasePascalCaseUPPER_SNAKE_CASEPascalCase.java
KotlincamelCasecamelCasePascalCaseUPPER_SNAKE_CASEPascalCase.kt
Rustsnake_casesnake_casePascalCaseUPPER_SNAKE_CASEsnake_case.rs
SwiftcamelCasecamelCasePascalCaselowerCamelCasePascalCase.swift
Dart / FluttercamelCasecamelCasePascalCaselowerCamelCasesnake_case.dart
C#camelCase(私有) / PascalCase(公有)PascalCasePascalCasePascalCase / UPPER_SNAKE_CASEPascalCase.cs
Rubysnake_casesnake_casePascalCaseUPPER_SNAKE_CASEsnake_case.rb
CSS / HTMLkebab-casekebab-case.css
Shell / Bashsnake_casesnake_caseUPPER_SNAKE_CASEsnake-case.sh

布尔命名专项:

语言推荐前缀示例
Gois / has / can / shouldisActivehasPermission
Pythonis_ / has_ / can_is_verifiedhas_children
TypeScript/JSis / has / can / shouldisLoadingcanSubmit
Java/Kotlinis / has / canisEnabledhasError
Swift/Dartis / has / canisSelectedcanEdit

坏味道清单

过于泛化的词(见到要警惕):

data  info  result  value  item  obj  object  entity  record
temp  tmp   buf     flag   state status  content  payload
manager  handler  processor  util  utils  helper  service(滥用)

布尔命名常见错误:

  • verified → 应为 isVerified
  • active → 应为 isActive
  • loaded → 应为 isLoaded
  • error → 用于布尔时应为 hasError

函数/方法命名动词推荐:

动作推荐动词避免
取数据getfetchloadfindqueryretrieve(太正式)、obtain
检查/判断ishascancheckvalidateverify(常与"核验"混)
创建createbuildmakenewinitgenerate(通常指生成内容,非对象)
转换tofromconverttransformmapparsechange
更新updatesetapplypatchmodifyedit(通常是 UI 层用词)
删除deleteremoveclearpurgedestroy(过于强烈,慎用)
发送sendpublishdispatchemitpushdo(完全不说明意图)

硬规则

  1. 意图优先:名字表达"这东西是什么 / 做什么",不表达"它的类型是什么"。
  2. 遵循语言惯例:camelCase / snake_case 等不能混用,Go 导出用 PascalCase 不能省。
  3. 布尔必须有前缀:is/has/can/should 等;不加前缀的布尔容易被误当名词使用。
  4. 不臆造领域术语:不确定业务含义时先问,不随便编造词汇。
  5. 长度适中:
    • 过短:缩写到看不懂(usrCntrmsgCnt)→ 展开
    • 过长:超过 3-4 个单词的驼峰通常可以缩减(getUserByIdFromDatabasefindUser)
  6. 项目词汇表一致:若项目里用 user 就不要用 account;用 create 就不要对称写 add
  7. 不做任何写操作:只给建议;不修改文件、不执行命令、不推送代码。

边界

  • 纯 Claude 驱动,无需 bin 脚本或外部工具。
  • 只做命名建议,不做代码重构;若需要批量重命名,提示用 IDE 重构功能。
  • 不对框架专有命名(如 Django Model 字段、React Hook 前缀 use)做语言级规则覆盖——框架惯例优先。
  • 若项目有既有命名规范文档(如 Google Style Guide、项目 CONTRIBUTING.md),告知 Claude 后以该规范为准。

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.