Nameable

io.github.minanyang由 GitHub 帳號 minanyang 發布v2.3.0更新於 Nov 6, 2026

Check whether a name is free on package registries, app stores, agent directories and domains.

概覽

AI 產生的概覽

檢查專案名稱在套件註冊表、應用程式商店、外掛目錄、GitHub、台灣商標與網域上是否可用,並附上依據與確定程度。

可以做什麼
  • 在套件註冊表、GitHub 使用者與儲存庫、網域上檢查名稱
  • 在代理、編輯器與外掛目錄、應用程式商店及台灣商標中檢查名稱
  • 回傳每個管道的狀態(可用、可回收、已被占用、不可用、未知)以及確定程度和說明
  • 並排比較多個候選名稱,並重新下載或清除快取的註冊表名稱清單
適用情境
適合在為新的套件、應用程式、外掛、MCP 伺服器或網域命名時使用,確認名稱是否真的可用,而不只是搜尋不到。也適合在定名前比較幾個候選名稱。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js 22 或更新版本。不需帳號或 API 金鑰;GitHub 檢查可選用 GITHUB_TOKEN、GH_TOKEN 或 gh auth token 以提高速率上限。需要網路連線,註冊表名稱清單(約 25 MB,商標每部分約 2 MB)會快取在本機磁碟。
安裝前請注意
每次檢查都會把名稱(網域則連同各 TLD)傳送給所檢查的註冊表、商店、目錄或 RDAP/whois 伺服器;不會傳給作者,也沒有遙測。快取的名稱清單保存在本機。部分管道讀取公開頁面或未公開的端點,因此這些管道的答案僅為「可能」,請求被封鎖時會回報為未知。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Nameable,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Nameable icon]

Nameable

Is the name really free? Nameable checks every registry, store and domain your project needs.

[npm] [License: MIT] [Claude Code plugin]

English · 繁體中文

Nameable checks a name on package registries, GitHub, agent and editor directories, app stores and domains, shows the evidence behind every answer, and says how sure each answer is. It runs as a CLI, as an MCP server for AI agents, and as a Claude Code plugin that also looks for prior art and recommends which name to keep.

Why

Most availability checks ask each registry whether the name exists and read "not found" as free. Not found only means nobody holds that exact name. The registry may still refuse it:

NameRegistryNot found?What the registry does
f1askPyPIyesRefuses it: too similar to flask
first-onenpmyesRefuses it: same as firstone without punctuation
golangHomebrewyesAlready taken: an alias of go
rustcrates.ioyesRefuses it: reserved by crates.io
ghcrates.ioyesRefuses it until 2027: the crate was deleted recently
providerspub.devyesRefuses it: the plural of provider
rbconfigRubyGemsyesRefuses it: reserved by RubyGems.org
Coinbase.CoreNuGetyesRefuses it: deleted by NuGet, the ID still held
postgresDocker HubyesAlready taken: an official image
xn--ls8h.devdomainsyesCannot be registered: it is an emoji in punycode

Nameable applies each registry's own rules, taken from its source code, and checks the lists those rules need: similar and reserved names, aliases and old names, recently deleted names, unpublished packages. When a rule cannot be checked, the answer says "probably" and why, instead of "available". A failed request is unknown, never free.

Use it from the terminal

Requires Node.js 22 or later. Run it in your project (or any folder under it, up to the repository root) and it checks the channels the project ships on, picked from its files:

  • package.json for npm (unless it has no name, is private, or is a server or site: it starts, serves or deploys itself and declares nothing to publish), Homebrew when it has a bin; with engines.vscode, VS Code Marketplace and Open VSX instead of npm
  • pyproject.toml, setup.py or setup.cfg that describe a package for PyPI, Homebrew when they declare scripts
  • Cargo.toml for crates.io (unless publish = false), Homebrew when it builds a binary
  • a .gemspec for RubyGems, composer.json for Packagist (unless it is a project), pubspec.yaml for pub.dev (unless publish_to: none), a .NET project or solution for NuGet (unless it builds a web app, a function, an executable or tests, or is not packable), a Dockerfile for Docker Hub, a Package.swift with an executable for Homebrew
  • .claude-plugin/, .cursor-plugin/ and gemini-extension.json for those directories, a plugin.xml or the IntelliJ Gradle plugin for JetBrains Marketplace, an MCP SDK dependency for the MCP Registry and Smithery
  • an Xcode project for the App Store, an Android app for Google Play, and an Expo or Flutter app for both
  • at an npm, pnpm, Yarn, Lerna or Cargo workspace root, the channels of each member, read the same way

GitHub accounts and repositories and domains are always checked; a project that ships on none of these, such as a Rails app or a Go library, gets only those (and Homebrew for a Go command). Outside a project it checks a general set: npm, PyPI, crates.io, Homebrew, GitHub and domains.

sh
npx nameable nameable --all --tlds com,dev,sh
Checking "nameable" on 25 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…  ✗ GitHub repository     taken              clash, not a block: dwightwatson/nameable (★30, pushe…  ✓ 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…  ✓ Trademarks (TW)       probably available no Taiwan trademark uses exactly this name as of 2026…  ✗ .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  GitHub repository  https://github.com/dwightwatson/nameable  .com               https://lookup.icann.org/en/lookup?name=nameable.com
  21 available (17 probably) · 4 taken

Several names show a grid to compare them:

sh
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.
Option
--allCheck every channel
--only <ids>Channels to check: npm, pypi, crates, homebrew, rubygems, packagist, pub, nuget, docker, github, github-repo, mcp-registry, smithery, claude-plugins, cursor, gemini, vscode, open-vsx, jetbrains, app-store, google-play, trademark-tw, domain (every TLD in --tlds) or domain:<tld>
--tlds <list>Domains to check, any TLD, at most 20 (default com,dev). TLDs without RDAP, such as .io, .sh and .de, go through whois. With --only, include domain
--jsonPrint JSON; also the default when the output is not a terminal
--refreshDownload the registry name lists again
--clear-cacheDelete the cached name lists

GitHub checks use GITHUB_TOKEN, GH_TOKEN or gh auth token when one is available, for a higher rate limit.

Use it with AI agents

Claude Code plugin

/plugin marketplace add minanyang/claude-plugins/plugin install nameable@minanyang

Then ask for a name, or run /nameable:check <names>. The skill picks the channels that matter for your project, checks them, looks for projects that already do the same thing, and gives a verdict for each candidate: use it, use it with changes (a scope, another TLD, another GitHub owner), or drop it.

The plugin carries its own copy of the CLI and runs it with Node.js 22 or later. When it installs, Claude Code adds the CLI's two dependencies, zod and @modelcontextprotocol/server, from the npm lockfile in the plugin.

MCP server

npx -y nameable mcp runs the same checks as an MCP server over stdio. It has one read-only tool, check_names (names, and optionally channels, tlds and refresh), which returns the JSON below as structured content. It is listed on the official MCP Registry as io.github.minanyang/nameable.

ClientAdd it with
Claude Codeclaude mcp add nameable -- npx -y nameable mcp
Codexcodex mcp add nameable -- npx -y nameable mcp
Gemini CLIAdd to ~/.gemini/settings.json: { "mcpServers": { "nameable": { "command": "npx", "args": ["-y", "nameable", "mcp"] } } }
VS Codecode --add-mcp '{"name":"nameable","type":"stdio","command":"npx","args":["-y","nameable","mcp"]}'
CursorAdd to .cursor/mcp.json or ~/.cursor/mcp.json: { "mcpServers": { "nameable": { "command": "npx", "args": ["-y", "nameable", "mcp"] } } }

What the answers mean

StatusMeaning
availableNobody holds it and the registry would accept it
reclaimableIt was held but released (an unpublished npm package, a fully yanked gem); anyone can take it again
takenSomeone holds it; url shows who. Where names are not exclusive (MCP Registry, Google Play, Gemini CLI gallery, trademarks), another entry uses it and note says it does not block yours
unavailableNobody holds it exactly, but the registry would refuse it: invalid, reserved, too similar, or blocked for now after a deletion
unknownNo trustworthy answer: a network error, a rate limit, an unrecognized reply. Never treat it as free

An available answer carries a certainty. Only PyPI, crates.io, Homebrew and Claude plugins can answer confirmed; every other channel keeps something out of public view, so its free answer is probable at most. Confirmed means every rule of that registry that public data allows was checked. Probable (* in the grid) means one could not be, and note says which: GitHub hides suspended and reserved accounts, npm's similar-name rule cannot be checked for every spelling, registries can refuse premium or reserved domains, or a name list could not be downloaded. Two PyPI rules rest on data PyPI does not publish, so even a confirmed PyPI answer cannot cover them: names its admins prohibited, and names similar to a quarantined project.

ChannelChecked beyond "not found"
npmnpm's name rules and Node.js core modules, names equal without punctuation, unpublished packages and the 24-hour block after an unpublish; similar spellings cannot all be checked, and a missing scoped package may be private, so a free answer is probable
PyPIPEP 508 names, standard library names, similar names (f1ask = flask), projects with no releases or in quarantine
crates.ioCargo's name rules, reserved names, recently deleted names, - and _ as one
HomebrewFormula name rules, aliases and old names of formulae and casks, names homebrew-core disallows
RubyGemsGem name rules, names unique ignoring case, reserved names, yanked gems held for their owners, names equal to a popular or recent gem without - and _
PackagistThe name as a vendor: vendor rules and reserved vendors, and the typo rule against vendors one edit away; packages frozen for spam are hidden, so a free answer is probable
pub.devDart name rules and reserved words, names kept for the Dart and Flutter teams, similar names (_ dropped, plurals, rn for m); moderated packages are hidden, so a free answer is probable
NuGetID rules, unlisted packages, IDs NuGet deleted but still holds; reserved prefixes and the typosquatting check are private, so a free answer is probable
Docker HubDocker ID rules, users and organizations (including ones only a redirect reveals), official images; deactivated IDs are hidden, so a free answer is probable
GitHubUsers and organizations; hidden accounts make a free answer probable
GitHub repositoriesRepositories named exactly the name, ignoring case, among the first 100 results of GitHub's search, most recently active first; a name is unique only within an account, so a match is a clash, not a block, and since search covers neither forks nor results past the first 100, a free answer is probable
DomainsAny TLD through RDAP or whois, internationalized names, labels registries cannot accept
MCP RegistryServers whose name part matches, in any namespace, from a list of every server this project rebuilds daily from the registry API (its own search takes 30 seconds or more); nobody owns a bare name there, so a match is a clash and a free answer is probable
SmitheryNamespace rules; a namespace with no public servers also looks free, so a free answer is probable
Cursor pluginsCursor's marketplace; plugin name rules. Undocumented data, so a free answer is probable
Gemini extensionsThe Gemini CLI gallery. Names are not unique there, so a match only means users will meet another extension by that name
VS Code MarketplaceThe name as an extension name, display name and publisher, all unique there; removed extensions keep their names but are hidden, so a free answer is probable
Open VSXThe name as a namespace: Open VSX's rule against namespaces within 20% of an existing one, and its rule that only a verified owner may use a VS Code Marketplace publisher's name; namespaces without public extensions are hidden, so a free answer is probable
JetBrains MarketplaceThe name as a plugin ID and plugin name: the words JetBrains refuses in new names (plugin, IDEA, product names), and the unique-name guideline; unapproved plugins are hidden, so a free answer is probable
App StoreAn app with exactly this name (ignoring case and punctuation) in iOS and macOS search, in the US store and, for Chinese, Japanese or Korean names, those stores too; a title that adds a subtitle or its maker is reported as a clash, not a block. Names are unique per localization, but unreleased apps are invisible, so a free answer is probable
Google PlayAn app with exactly this title in search, in the same stores as the App Store; a title that adds a subtitle or its maker is reported as a clash too. Titles are not unique, so a match is a clash, not a block, and a free answer is probable
Claude pluginsAnthropic's official marketplace; plugin name rules and the names claude plugin validate reserves as Anthropic's own
Trademarks (TW)Marks registered with Taiwan's Intellectual Property Office and in force, expired less than six months ago (still renewable), or applied for in the last three years, compared by the words in the mark ignoring case, width and punctuation. A mark limits a name only for goods and services like its own, so a match is a clash, not a block; marks that look or sound alike are not checked, so a free answer is probable

Name lists

Several checks compare against registry-wide lists: every PyPI project, every Homebrew alias and old name, the reserved and recently deleted names in crates.io's daily database dump (read by byte range, under 1 MB of a 2 GB archive), every pub.dev package, every gem, every MCP server, every Open VSX namespace, and every plugin and extension in Cursor's marketplace and the Gemini CLI gallery. Each is downloaded the first time a check needs it, about 25 MB in all, and at most once a day after that. The Taiwan trademark list is split in 16 parts by name, and a check downloads only the part its name is in, about 2 MB each. This project rebuilds it twice a month from the Taiwan Intellectual Property Office's open data (Open Government Data License, version 1.0), like the MCP Registry list it rebuilds daily, and leaves out who owns each mark. They are kept compressed (about 12 MB) in ~/Library/Caches/nameable on macOS, $XDG_CACHE_HOME/nameable on Linux, %LOCALAPPDATA%\nameable\Cache on Windows, or NAMEABLE_CACHE_DIR.

JSON

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": "..."        }      ]    }  ]}

Exit codes: 0 every channel is available or reclaimable for every name · 1 taken or unavailable somewhere · 2 nothing taken, but some channels could not be checked, or the cache could not be cleared · 64 usage error.

Semantic versioning covers the commands and options, the exit codes, the channel IDs, the check_names tool and its inputs, the JSON fields with the values of status and certainty, the environment variables above, and the oldest Node.js version supported. A minor release may add a status; read one you do not know as unknown. The wording of label and note, what meta holds, and which channels are picked from a project can change in any release; pass --only to fix the channels.

Planned channels

Nameable checks npm, PyPI, crates.io, Homebrew, RubyGems, Packagist, pub.dev, NuGet, Docker Hub, GitHub users, organizations and repositories, the MCP Registry, Smithery, Claude Code's official plugin marketplace, Cursor's marketplace, the Gemini CLI gallery, VS Code Marketplace, Open VSX, JetBrains Marketplace, the App Store, Google Play, Taiwan trademarks, and domains today. Each channel below was tested before it was listed: a request about a name gets an answer that tells an existing name apart from a missing one.

GroupChannels
Social handlesX, YouTube, TikTok
TrademarksUSPTO (US)

Not every channel has an official API. Where Nameable reads a public page or an undocumented endpoint, the site can change it or block requests at any time: a free answer there is probable at most, and a blocked request is unknown. The same goes for registries that keep part of their rules private, such as reserved names and typo checks.

When a channel Nameable does not check matters for your project, the Claude Code skill lists it as not checked, so you can look yourself.

What it sends

Nameable has no server of its own and no telemetry; nothing goes to its author.

  • A check sends the name, and for domains the name with each TLD, to the registry, store, directory or RDAP/whois server of each channel checked, the ones in the table under What the answers mean.
  • Name lists come from those registries, and the MCP Registry's and the Taiwan trademarks' from the lists this project rebuilds on GitHub (raw.githubusercontent.com/minanyang/nameable/data/). They are cached on your machine.
  • GitHub requests carry GITHUB_TOKEN, GH_TOKEN or the gh auth token when one is available, and go only to api.github.com.
  • The Claude Code plugin's skill also asks Claude to look for prior art with the tools it already has, such as web search.

License

Nameable is released under the MIT License.

The Nameable name and logo are not covered by the MIT License. The logo artwork (docs/brand/ and plugins/nameable/.claude-plugin/icon.png) is © 2026 Min-An Yang (minanyang), all rights reserved. Forks and derivative works must use a different name and logo; saying a fork is "based on Nameable" is fine.

來源:README.md,提交 c1d9a40

工具

1

check_names

Check name availability

Check whether names are free on package registries, GitHub, agent and editor directories, app stores, Taiwan trademarks and domains. Each result has a status: - available: nobody holds it and the registry would accept it. certainty "confirmed" means every rule that public data allows was checked; "probable" means one could not be, and note says which. - reclaimable: held before but released; it can be taken again. - taken: someone holds it; url shows who. Where names are not exclusive (MCP Registry, Google Play, Gemini CLI gallery, GitHub repositories, trademarks) it means another entry uses the name, and note says it does not block a new one. - unavailable: nobody holds it exactly, but the registry would refuse it (invalid, reserved, too similar to an existing name, or blocked for now after a deletion); note says why. - unknown: no trustworthy answer (network error, rate limit). Never treat it as free. Pick only the channels that matter for the project instead of checking everything.

輸入參數tldsnames必填refreshchannels

版本歷史

3
  1. v2.3.0最新Nov 5, 2026
  2. v2.2.0Nov 5, 2026
  3. v2.1.1Oct 29, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分