安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add luongnv89/skills --skill brand-name-checker Check product and brand names for conflicts across trademarks, domains, social handles, and package registries. Returns a risk level and Proceed/Modify/Abandon recommendation. Skip for name brainstorming, logo design, or trademark filings.
2
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add luongnv89/skills --skill brand-name-checker name: brand-name-checker
description: Check product and brand names for conflicts across trademarks, domains, social handles, and package registries. Returns a risk level and Proceed/Modify/Abandon recommendation. Skip for name brainstorming, logo design, or trademark filings.
license: MIT
effort: max
metadata:
version: 1.4.2
author: "Luong NGUYEN <luongnv89@gmail.com>"Check product and brand names for conflicts across trademarks, domains, social media, and package registries (npm, PyPI, Homebrew, apt).
Use this skill before adopting a product or brand name. To stay within the agent's context budget, lean sections (templates, examples) live in references/*.md and per-source workers live in agents/*.md — only the orchestrator instructions are inlined here.
This skill uses parallel subagents to handle 13+ sequential web fetches across independent sources. Pattern: B (Parallel Workers) + D (Research+Synthesis).
| Agent | Role | Output |
|---|---|---|
| social-checker | Search 6 platforms (Twitter, Instagram, GitHub, LinkedIn, TikTok, Discord) in parallel | JSON: per-platform availability status |
| registry-checker | Check npm, PyPI, Homebrew, apt availability with owner info | JSON: per-registry status and owner details |
| domain-checker | Check .com, .io, .app, .co, regional TLDs availability | JSON: per-TLD registration status |
| trademark-checker | Search WIPO, EUIPO, INPI trademark databases | JSON: conflict analysis per database |
| synthesizer | Apply risk matrix and produce final recommendation | Markdown + JSON: Risk level, verdict, alternatives |
Speedup: ~4x faster than sequential approach (13+ web fetches parallelized into 2-3 waves).
Before executing:
Before creating/updating/deleting files in an existing repository, sync the current branch with remote. See references/repo-sync.md for the exact git fetch / git pull --rebase commands and stash recovery flow.
Name to analyze provided in $ARGUMENTS. If empty, ask user for the name.
Optionally check for prd.md in project to understand product context.
Early-Exit Rule applies (see Subagent Architecture above): an exact social handle taken on any of the 6 platforms skips Steps 2-4 straight to Step 6 (Recommendation) with an "Abandon" verdict.
Use WebSearch to check handles on:
"@[NAME]" site:twitter.com OR site:x.com"@[NAME]" site:instagram.com"[NAME]" site:github.com/[NAME]"[NAME]" site:linkedin.com/company"@[NAME]" site:tiktok.com"[NAME]" site:discord.comIf exact handle taken (Early-Exit Rule): Return NEGATIVE: Exact social handle taken (@platform) and STOP. Suggest different name.
Package registries are first-come-first-served namespaces. Unlike GitHub (which allows duplicate project names), registries enforce unique names — once someone claims "your-name" on PyPI or npm, you cannot publish under that name. This makes registry checks urgent: if the name is taken on a registry you plan to publish to, you either need a different name or a naming variant (e.g., prefix/suffix).
Use WebFetch to check these registries directly:
| Registry | Check URL | Taken if... |
|---|---|---|
| npm | https://registry.npmjs.org/[NAME] | Returns JSON with package data (not a 404) |
| PyPI | https://pypi.org/pypi/[NAME]/json | Returns JSON with package data (not a 404) |
| Homebrew | https://formulae.brew.sh/api/formula/[NAME].json | Returns JSON (not a 404) |
| apt | Search: "[NAME]" site:packages.debian.org OR site:packages.ubuntu.com | Package listing found |
For each registry, report:
name-js, py-name) — worth notingIf the name is taken on any target registry, flag it prominently and suggest variants (e.g., name-cli, name-py, name-lib, prefixed with org scope like @org/name for npm). If target registry intent is missing or unverifiable, record it as unknown rather than treating every registry as clear.
Use WebSearch to check:
.com (highest priority).io, .app, .co.eu, .frSearch: site:[NAME].com and "[NAME].com" domain availability
Status:
Use WebSearch for trademark databases:
| Database | Search Query |
|---|---|
| WIPO | "[NAME]" site:branddb.wipo.int |
| EUIPO | "[NAME]" site:euipo.europa.eu |
| INPI (France) | "[NAME]" site:inpi.fr |
Focus on Nice Classes 9, 35, 42 (software/technology). Note if marks are live or expired.
This section is the single authority for qualitative risk policy. The synthesizer must read and follow this section rather than inventing a second matrix. Classify each source result as confirmed, clear, or unknown/unverifiable. Upstream worker labels and severity fields are evidence only; re-check their underlying facts and do not blindly trust numeric severity.
#### Qualitative risk matrix
Risk precedence is High > Moderate > Low. Select the highest matching trigger; never average findings. "Multiple handles" means two or more confirmed non-exact handle collisions on distinct platforms.
| Risk level | Highest matching trigger |
|---|---|
| High | Exact social handle collision on any of the 6 platforms (the Early-Exit Rule); two or more confirmed non-exact social handle collisions; a confirmed collision on any target registry; an active .com in the same industry; an active trademark conflict in Nice Classes 9, 35, 42; a well-known-brand/typosquat conflict; or the existing elevated trademark-collision risk for a very short name. |
| Moderate | No High trigger, but one confirmed non-exact social handle collision; a different-industry active .com; a similar trademark; a confirmed collision on a non-target registry; or any unknown/unverifiable check or target intent. |
| Low | Every required check and target intent is explicitly verified, with no High or Moderate trigger and no unknown result; .com is verified available or parked. |
Unknown policy: if checks or target intent are missing or unverifiable and there is no known High finding, use provisional Moderate + Modify pending verification. Unknown is not a confirmed collision and never Low clearance. An existing High finding remains High. No averaging or mitigation reduces High. Checks skipped by the Early-Exit Rule remain skipped, not cleared.
The exact-handle Early-Exit Rule is unchanged: an exact handle collision on any of the 6 platforms immediately returns an Abandon recommendation and skips the remaining checks. Report those checks as skipped, not clear.
#### Recommendation semantics
Follow the recommendation semantics above and the registration order in Final Action.
Return this compact text report. Replace bracketed fields with observed evidence only; use Unknown when a check is unverifiable and Skipped (not cleared) for checks omitted by the Early-Exit Rule. The RISK line must state the highest matching trigger and its policy rationale, not only the level.
SOCIAL: [Clear | NEGATIVE: reason | Unknown: reason]
REGISTRY: npm ([status]) | PyPI ([status]) | Homebrew ([status]) | apt ([status])
DOMAIN: .com ([status]) | .io ([status]) | .app ([status])
TM: WIPO ([status]) | EUIPO ([status]) | INPI ([status])
SKIPPED: [sources, if any; skipped is not cleared]
RISK: [Low | Moderate | High] - [highest matching trigger, evidence, and policy rationale]
RECOMMEND: [Proceed | Modify | Abandon] - [reason and checked or unverified alternatives]
If prd.md found, add:
Name Fit Assessment:
Alternative Suggestions:
| Name | Rationale | Quick Risk |
|---|---|---|
| Name1 | Why it fits | Availability |
| Name2 | Why it fits | Availability |
| Name3 | Why it fits | Availability |
After each major step, emit a status report. The general template, plus per-step examples (Social, Registry, Domain, Trademark, Risk, Recommendation), live in references/step-reports.md. Adapt check names to what the step actually validates; use √ for pass, × for fail.
For check "acme-flow" where no hard conflicts surface but .com is parked:
SOCIAL: Clear
REGISTRY: npm (available) | PyPI (available) | Homebrew (available) | apt (available)
DOMAIN: .com (taken) | .io (available) | .app (available)
TM: WIPO (clear) | EUIPO (clear) | INPI (clear)
RISK: Moderate - .com held by unrelated parked page; socials and registries clear
RECOMMEND: Proceed - pair the .io domain with the clear social handles
my tool → my-tool) before all checks; report both the original and normalized forms.