关于 Nameable
Nameable 用于检查项目名称在软件包注册表、目录、应用商店、GitHub 和域名中的可用性,适合开发者与 AI Agent。它按各平台规则判断,并为结果提供依据和可信度说明。
主要功能
- 01检查注册表、商店、目录和域名
- 02应用各注册表的命名规则
- 03显示结果依据与可信度
- 04比较多个候选名称
- 05提供 CLI、MCP 服务和 Claude Code 插件
适用场景
- 01发布前筛查项目名称
- 02比较不同渠道中的候选名称
- 03让 AI Agent 评估命名选项
MCP 相关
通过 stdio 向 MCP 客户端提供只读 `check_names` 工具,并返回结构化 JSON 可用性检查结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Nameable 会检查软件包注册表、GitHub、Agent 和编辑器目录、应用商店及域名中的名称,展示每项结论的依据,并说明结论的可信度。它可作为 CLI、AI Agent 的 MCP 服务运行,也可作为 Claude Code 插件运行;插件还会查找先前的类似项目,并建议保留哪个名称。
为什么
大多数可用性检查都会询问各注册表名称是否存在,并把“未找到”理解为可用。未找到只表示没有人占用完全相同的名称。注册表仍可能拒绝该名称:
| 名称 | 注册表 | 未找到? | 注册表的处理方式 |
|---|---|---|---|
f1ask | PyPI | 是 | 拒绝:与 flask 过于相似 |
first-one | npm | 是 | 拒绝:去掉标点后与 firstone 相同 |
golang | Homebrew | 是 | 已被占用:是 go 的别名 |
rust | crates.io | 是 | 拒绝:由 crates.io 保留 |
gh | crates.io | 是 | 拒绝,直到 2027 年:该 crate 最近被删除 |
providers | pub.dev | 是 | 拒绝:是 provider 的复数形式 |
rbconfig | RubyGems | 是 | 拒绝:由 RubyGems.org 保留 |
Coinbase.Core | NuGet | 是 | 拒绝:已由 NuGet 删除,但 ID 仍被占用 |
postgres | Docker Hub | 是 | 已被占用:是官方镜像 |
xn--ls8h.dev | 域名 | 是 | 无法注册:它是用 punycode 表示的表情符号 |
Nameable 会依据各注册表自身的规则进行检查,这些规则取自其源代码,并检查规则所需的列表:相似名称和保留名称、别名和旧名称、最近删除的名称以及未发布的软件包。无法检查某项规则时,结果会说明“可能可用”及其原因,而不会直接说“可用”。请求失败时结果为 unknown,绝不会视为可用。
在终端中使用
需要 Node.js 22 或更高版本。在项目目录(或其下直到仓库根目录的任意文件夹)中运行,它会根据项目文件自动选择项目发布渠道并进行检查:
- npm 使用
package.json(但如果没有name、设为私有,或是服务端或站点,即自行启动、提供服务或部署,且未声明任何要发布的内容,则不适用);有bin时也检查 Homebrew;如果包含engines.vscode,则检查 VS Code Marketplace 和 Open VSX,而非 npm - 检查用于描述 PyPI 软件包的
pyproject.toml、setup.py或setup.cfg;声明了脚本时也检查 Homebrew - crates.io 使用
Cargo.toml(但如果设置了publish = false,则不适用);构建二进制文件时也检查 Homebrew - RubyGems 使用
.gemspec,Packagist 使用composer.json(但项目除外),pub.dev 使用pubspec.yaml(但设置了publish_to: none时除外);NuGet 使用 .NET 项目或解决方案(但构建 Web 应用、函数、可执行文件或测试时,或无法打包时除外);Docker Hub 使用Dockerfile;包含可执行文件的Package.swift用于 Homebrew - 这些目录使用
.claude-plugin/、.cursor-plugin/和gemini-extension.json;JetBrains Marketplace 使用plugin.xml或 IntelliJ Gradle 插件;MCP Registry 和 Smithery 使用 MCP SDK 依赖项 - App Store 使用 Xcode 项目,Google Play 使用 Android 应用;Expo 或 Flutter 应用则两者都检查
- 在 npm、pnpm、Yarn、Lerna 或 Cargo 工作区根目录下,会按相同方式检查每个成员的渠道
始终检查 GitHub 和域名;对于未在这些平台发布的项目(例如 Rails 应用或 Go 库),只检查 GitHub 和域名(Go 命令还会检查 Homebrew)。在项目之外,则检查一组通用渠道:npm、PyPI、crates.io、Homebrew、GitHub 和域名。
npx nameable nameable --all --tlds com,dev,sh
Checking "nameable" on 23 channels
✗ npm taken Find out if a name is free everywhere it matters for …
✓ PyPI available
✓ crates.io available
✓ Homebrew available no homebrew-core formula or cask
✗ RubyGems taken A library that provides parsing and output of person …
✓ Packagist probably available no packages under this vendor; packages frozen for sp…
✓ pub.dev probably available no package with this name; moderated packages and res…
✓ NuGet probably available no package with this ID; reserved prefixes and the ty…
✓ Docker Hub probably available no user or organization; deactivated or reserved Dock…
✓ GitHub user/org probably available suspended, deleted or reserved accounts also look fre…
✓ MCP Registry probably available no server uses this name in the registry as of 2026-10…
✓ Smithery probably available no public servers; a namespace with none, or with onl…
✓ Claude plugins available not in the official marketplace
✓ Cursor plugins probably available not among Cursor's listed plugins; plugins in review …
✓ Gemini extensions probably available not in the Gemini CLI gallery; it lists only tagged G…
✓ VS Code Marketplace probably available no extension or publisher; removed extensions keep th…
✓ Open VSX probably available no namespace or similar one; namespaces without publi…
✓ JetBrains Marketplace probably available no plugin with this name or ID; unapproved and hidden…
✓ App Store probably available no app with this name in the US store; unreleased app…
✓ Google Play probably available no app with this title in search results of the US st…
✗ .com taken registered 1999-02-13, expires 2027-02-13
✓ .dev probably available not registered; a registry can still refuse premium o…
✓ .sh probably available not registered (whois); a registry can still refuse p…
npm https://www.npmjs.com/package/nameable
RubyGems https://rubygems.org/gems/nameable
.com https://lookup.icann.org/en/lookup?name=nameable.com
20 available (16 probably) · 3 taken
若干名称会显示一个网格供比较:
npx nameable twinsy dupefind fclones --only crates,homebrew,github,domain --tlds com,dev,sh
twinsy dupefind fclones
crates.io ✓ ✓ ✗
Homebrew ✓ ✓ ✗
GitHub user/org ✗ ✓* ✓*
.com ✗ ✗ ✓*
.dev ✓* ✓* ✓*
.sh ✓* ✓* ✓*
free 4/6 5/6 4/6
✓ available ↺ reclaimable ✗ taken ⊘ unavailable ? unknown * probably available
Check one name at a time for the details behind each mark.
| 选项 | |
|---|---|
--all | 检查所有渠道 |
--only <ids> | 要检查的渠道:npm、pypi、crates、homebrew、rubygems、packagist、pub、nuget、docker、github、mcp-registry、smithery、claude-plugins、cursor、gemini、vscode、open-vsx、jetbrains、app-store、google-play、domain(--tlds 中的所有 TLD)或 domain:<tld> |
--tlds <list> | 要检查的域名,支持任意 TLD,最多 20 个(默认值为 com,dev)。没有 RDAP 的 TLD(例如 .io、.sh 和 .de)会通过 whois 查询。使用 --only 时,请包含 domain |
--json | 输出 JSON;当输出目标不是终端时,也会默认使用此选项 |
--refresh | 重新下载注册表名称列表 |
--clear-cache | 删除缓存的名称列表 |
如果有可用的 GITHUB_TOKEN、GH_TOKEN 或 gh auth token,GitHub 检查会使用它们,以获得更高的速率限制。
与 AI Agent 搭配使用
Claude Code 插件
/plugin marketplace add minanyang/claude-plugins
/plugin install nameable@minanyang
然后询问一个名称,或运行 /nameable:check <names>。该技能会选择与你的项目相关的渠道进行检查,查找已有同类项目,并为每个候选名称给出结论:使用它、修改后使用(更换范围、其他 TLD 或其他 GitHub 所有者),或放弃它。
该插件自带 CLI 副本,并使用 Node.js 22 或更高版本运行。安装时,Claude Code 会从插件中的 npm 锁文件添加 CLI 的两个依赖项:zod 和 @modelcontextprotocol/server。
MCP 服务
npx -y nameable mcp 会通过 stdio 运行与 MCP 服务相同的检查。它只有一个只读工具 check_names
(names,以及可选的 channels、tlds 和 refresh),会将下方的 JSON作为结构化内容返回。
它已列入官方 MCP Registry,名称为
io.github.minanyang/nameable。
| 客户端 | 添加方式 |
|---|---|
| Claude Code | claude mcp add nameable -- npx -y nameable mcp |
| Codex | codex mcp add nameable -- npx -y nameable mcp |
| Gemini CLI | 添加到 ~/.gemini/settings.json:{ "mcpServers": { "nameable": { "command": "npx", "args": ["-y", "nameable", "mcp"] } } } |
| VS Code | code --add-mcp '{"name":"nameable","type":"stdio","command":"npx","args":["-y","nameable","mcp"]}' |
| Cursor | 添加到 .cursor/mcp.json 或 ~/.cursor/mcp.json:{ "mcpServers": { "nameable": { "command": "npx", "args": ["-y", "nameable", "mcp"] } } } |
答案的含义
| 状态 | 含义 |
|---|---|
available | 无人持有,且注册表会接受它 |
reclaimable | 曾有人持有,但已释放(未发布的 npm 包、已完全撤回的 gem);任何人都可以再次获取 |
taken | 有人持有;url 会显示持有者。对于名称不具有排他性的渠道(MCP Registry、Google Play、Gemini CLI gallery),表示另一个条目使用了它,且 note 会说明这不会妨碍你使用 |
unavailable | 无人确切持有它,但注册表会拒绝它:无效、已保留、过于相似,或删除后暂时被屏蔽 |
unknown | 没有可靠的答案:网络错误、速率限制或无法识别的回复。绝不能将其视为可用 |
available 答案会附带确定性等级。只有 PyPI、crates.io、Homebrew 和 Claude 插件能给出已确认的答案;
其他渠道都会隐藏部分公开信息,因此最多只能给出可能可用的答案。已确认表示已检查该注册表所有可依据公开数据核验的规则。
可能可用(表格中以 * 标示)表示有些规则无法核验,note 会说明原因:GitHub 会隐藏被暂停和保留的账号;npm 的相似名称规则无法检查所有拼写;注册表可能拒绝高级或保留域名;或者无法下载名称列表。PyPI 有两条规则依据的数据并未公开,因此即使是已确认的 PyPI 答案也无法涵盖这两条规则:管理员禁止使用的名称,以及与被隔离项目相似的名称。
| 渠道 | 除“未找到”之外的检查范围 |
|---|---|
| npm | npm 的名称规则和 Node.js 核心模块;忽略标点后相同的名称;未发布的包,以及取消发布后的 24 小时封锁期;无法检查所有相似拼写,而且缺失的作用域包可能是私有的,因此名称很可能可用 |
| PyPI | PEP 508 名称、标准库名称、相似名称(f1ask = flask)、没有任何版本发布或处于隔离期的项目 |
| crates.io | Cargo 的名称规则、保留名称、最近删除的名称;将 - 和 _ 视为相同 |
| Homebrew | Formula 名称规则、Formula 和 Cask 的别名及旧名称、homebrew-core 禁用的名称 |
| RubyGems | Gem 名称规则、忽略大小写后唯一的名称、保留名称、由其所有者暂时保留的撤回 Gem、忽略 - 和 _ 后与热门或近期 Gem 相同的名称 |
| Packagist | 作为供应商名称时的名称:供应商规则和保留的供应商,以及禁止与仅有一次编辑差异的供应商名称这一拼写错误规则;因垃圾信息被冻结的包会被隐藏,因此名称很可能可用 |
| pub.dev | Dart 名称规则和保留字、为 Dart 和 Flutter 团队保留的名称、相似名称(移除 _、复数形式、用 rn 代替 m);经过审核的包会被隐藏,因此名称很可能可用 |
| NuGet | ID 规则、未列出的包、NuGet 已删除但仍保留的 ID;保留前缀和拼写投机检查不公开,因此名称很可能可用 |
| Docker Hub | Docker ID 规则、用户和组织(包括只能通过重定向发现的用户和组织)、官方镜像;已停用的 ID 会被隐藏,因此名称很可能可用 |
| GitHub | 用户和组织;隐藏账号使名称很可能可用 |
| Domains | 通过 RDAP 或 whois 查询任意 TLD、国际化名称、注册局无法接受的标签 |
| MCP Registry | 在任意命名空间中,名称部分匹配的服务。匹配列表包含本项目每天从注册表 API 重新构建的所有服务(注册表自身的搜索需要 30 秒或更长时间);该处没有人拥有裸名称,因此匹配即表示冲突,且名称很可能可用 |
| Smithery | 命名空间规则;没有公开服务的命名空间也会显示为可用,因此名称很可能可用 |
| Cursor 插件 | Cursor 的市场;插件名称规则。数据未公开,因此名称很可能可用 |
| Gemini 扩展 | Gemini CLI 扩展库。名称不唯一,因此匹配仅表示用户会遇到另一个同名扩展 |
| VS Code Marketplace | 将名称作为扩展名称、显示名称和发布者名称检查,这些名称在该处均为唯一;已移除的扩展仍保留其名称,但会被隐藏,因此名称很可能可用 |
| Open VSX | 将名称作为命名空间检查:Open VSX 禁止使用与现有命名空间相差不足 20% 的名称,并规定只有经过验证的所有者才能使用 VS Code Marketplace 发布者名称;没有公开扩展的命名空间会被隐藏,因此名称很可能可用 |
| JetBrains Marketplace | 将名称作为插件 ID 和插件名称检查:JetBrains 禁止新名称使用的词语(plugin、IDEA、产品名称),以及唯一名称指南;未获批准的插件会被隐藏,因此名称很可能可用 |
| App Store | 在 iOS 和 macOS 搜索中,以美国商店为准,检查是否存在名称完全相同(忽略大小写和标点)的 App;对于中文、日文或韩文名称,也会检查对应商店;附加副标题或制作者名称的标题会报告为冲突,而不是禁止使用。名称在每种本地化版本中唯一,但未发布的 App 不可见,因此名称很可能可用 |
| Google Play | 在与 App Store 相同的商店中搜索是否存在标题完全相同的 App;附加副标题或制作者名称的标题也会报告为冲突。标题并不唯一,因此匹配表示冲突,而不是禁止使用,且名称很可能可用 |
| Claude 插件 | Anthropic 的官方市场;插件名称规则,以及 claude plugin validate 保留为 Anthropic 自有的名称 |
名称列表
有几项检查会与全局注册表列表进行比对:所有 PyPI 项目、所有 Homebrew 别名和旧名称、crates.io 每日数据库转储中的保留名称和最近删除的名称(按字节范围读取,在 2 GB 压缩包中仅读取不到 1 MB)、所有 pub.dev 软件包、所有 gem、所有 MCP 服务、所有 Open VSX 命名空间,以及 Cursor 市场和 Gemini CLI 展廊中的所有插件和扩展。每项列表会在检查首次需要时下载,总计约 25 MB,此后每天最多下载一次。它们会以压缩形式保存(约 12 MB),在 macOS 上保存到 ~/Library/Caches/nameable,在 Linux 上保存到 $XDG_CACHE_HOME/nameable,在 Windows 上保存到 %LOCALAPPDATA%\nameable\Cache,也可保存到 NAMEABLE_CACHE_DIR 指定的位置。
JSON
{
"schema": 1,
"reports": [
{
"name": "nameable",
"results": [
{
"channel": "npm",
"label": "npm",
"status": "taken",
"url": "https://www.npmjs.com/package/nameable",
"note": "..."
},
{
"channel": "domain:dev",
"label": ".dev",
"status": "available",
"certainty": "probable",
"url": "https://lookup.icann.org/en/lookup?name=nameable.dev",
"note": "..."
}
]
}
]
}
退出代码:0 每个名称在所有渠道上都可用或可重新注册 · 1 在某处已被占用或不可用 ·
2 没有名称被占用,但部分渠道无法检查,或无法清除缓存 · 64 用法错误。
语义化版本控制适用于命令和选项、退出代码、渠道 ID、check_names 工具及其输入、status 和 certainty 的 JSON 字段值、上述环境变量,以及支持的最低 Node.js 版本。次要版本可能会新增状态;遇到不认识的状态时,请将其视为 unknown。label 和 note 的措辞、meta 的内容,以及项目会选择哪些渠道,都可能在任何版本中更改;使用 --only 固定渠道。
计划中的渠道
Nameable 目前会检查 npm、PyPI、crates.io、Homebrew、RubyGems、Packagist、pub.dev、NuGet、Docker Hub、GitHub 用户和组织、MCP Registry、Smithery、Claude Code 官方插件市场、Cursor 市场、Gemini CLI 展廊、VS Code Marketplace、Open VSX、JetBrains Marketplace、App Store、Google Play 和域名。下表中的每个渠道都经过测试后才列出:查询某个名称时,会得到能区分名称已存在和名称不存在的答复。
| 组 | 渠道 |
|---|---|
| 社交账号 | X、YouTube、TikTok |
并非所有渠道都有官方 API。如果 Nameable 读取公开页面或未公开的接口,网站可随时更改页面或拦截请求:此类渠道的免费答复最多只能算作可能可用,而被拦截的请求会显示为 unknown。对于将部分规则保密的注册表也是如此,例如保留名称和拼写错误检查。
如果 Nameable 不检查某个与你的项目相关的渠道,Claude Code 技能会将其列为未检查,方便你自行查看。
它会发送什么
Nameable 没有自己的服务端,也不会收集遥测数据;不会向其作者发送任何内容。
- 一次检查会将名称发送给所检查的每个渠道对应的注册表、商店、目录或 RDAP/whois 服务;对于域名,还会发送该名称与每个 TLD 的组合。这些渠道列在答复的含义下方的表格中。
- **名称列表**来自这些注册表;MCP Registry 的列表则来自本项目每天在 GitHub 上重新生成的列表(
raw.githubusercontent.com/minanyang/nameable/data/mcp-servers.tsv)。这些列表会缓存在你的设备上。 - GitHub 请求会在可用时携带
GITHUB_TOKEN、GH_TOKEN或gh auth token,且只会发送到api.github.com。 - Claude Code 插件的技能还会让 Claude 使用已有工具(例如网页搜索)查找先前的相关成果。
许可证
Nameable 基于 MIT License 发布。
Nameable 名称和徽标不受 MIT License 保护。徽标图稿(docs/brand/ 和
plugins/nameable/.claude-plugin/icon.png)版权归 © 2026 Min-An Yang (minanyang) 所有,保留所有权利。分叉版本和衍生作品必须使用不同的名称和徽标;注明分叉版本“基于 Nameable”则没有问题。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。