Cross-platform, dependency-free domain availability checker — runs as a plugin in Claude Code, an extension in Gemini CLI, and a skill in Codex CLI / OpenCode, or as a plain Python CLI. Ask your coding agent "is example.com free?"
FAQ
domain-check is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes domain-check. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
$ npx -y skills add PleasePrompto/domain-check-skill --agent claude-code
Cross-platform, dependency-free domain availability checker — runs as a plugin in Claude Code, an extension in Gemini CLI, and a skill in Codex CLI / OpenCode, or as a plain Python CLI.
Ask your coding agent "is example.com free?" and get an evidence-backed answer with the registrar, expiration date, server IPs, and full SSL certificate inline — for any TLD on the planet, including GDPR-redacted ccTLDs like .de, .eu, .at, .ch, .es.


The
.derow legitimately has no expiry — DENIC redacts that field under GDPR. The skill says so explicitly instead of guessing.
Most domain-checker tools fail in one of three ways:
This skill solves all three:
.de the only reliable signal is an authoritative NS query against a.nic.de. For .com an RDAP no-object response is definitive. The skill picks the right strategy per TLD.pip install, no venv, no API tokens, no rate-limited free tier.asyncio.SKILL.md tells the agent when to invoke it (trigger phrases in EN + DE) and how to read the JSON output.Available / Taken / Reserved / Unclear with a 0.0–1.0 confidence score.de, .eu, .at, .ch, .es, .li, …This repo ships as both a Claude Code plugin and a Gemini CLI extension, with a manifest for each. The skill itself lives in skills/domain-check/.
Once the plugin is listed in the official marketplace, install with:
/plugin install domain-check
Until then (or for any custom install), add this repo as a marketplace and install from there:
/plugin marketplace add PleasePrompto/domain-check-skill
/plugin install domain-check@domain-check-skill
gemini extensions install https://github.com/PleasePrompto/domain-check-skill
The repo is tagged with the gemini-cli-extension topic, so it appears in the Gemini Extensions Gallery automatically after Google's daily crawl.
Codex doesn't have an official skill marketplace yet. Clone the repo and copy just the skill folder into your agent's skills directory:
git clone https://github.com/PleasePrompto/domain-check-skill.git /tmp/dc
cp -r /tmp/dc/skills/domain-check ~/.agents/skills/domain-check # Codex CLI
cp -r /tmp/dc/skills/domain-check ~/.config/opencode/skills/ # OpenCode
rm -rf /tmp/dc
To pin the skill to a single repository so the whole team gets it:
git submodule add https://github.com/PleasePrompto/domain-check-skill.git .claude/plugins/domain-check
Once installed, just talk to your agent. Triggers it recognises (English + German):
Or run the script directly from the skill directory:
cd skills/domain-check
python3 scripts/domain_check.py check example.com
python3 scripts/domain_check.py bulk example.com example.org example.net
python3 scripts/domain_check.py ssl example.com
python3 scripts/domain_check.py resolve https://example.com/path
python3 scripts/domain_check.py suggest graph --use-case ai_tool --count 20 --check
| Command | Purpose |
|---|---|
check <domain> | Single-domain check, JSON output with full evidence |
bulk <d1> <d2> … | Up to 8 in parallel; supports --file, --stdin, --format=ndjson|json|table |
ssl <hostname> [--port 443] | TLS-only inspection: issuer, SAN, validity, fingerprint, effective IP |
resolve <url|host> | Hostname → IPv4 + IPv6 + reverse DNS for the first 3 IPs |
suggest <seed> --use-case <type> | Generate scored, buyable domain candidates |
score <name> | Heuristic score breakdown for a single bare name |
Run any command with --help for full flags.
Every check fans out asynchronously to five sources at once:
┌──────────────────┐
│ tld_classifier │
│ GTLD / GDPR / │
│ OPEN / UNKNOWN │
└────────┬─────────┘
│
┌──────────────────┬───────────────┼──────────────────┬──────────────────┐
▼ ▼ ▼ ▼ ▼
┌─────────┐ ┌───────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ RDAP │ │ WHOIS │ │ AuthDNS │ │ DNS A/ │ │ TLS │
│ (ICANN) │ │ (port 43) │ │ (NS) │ │ AAAA │ │ Cert │
└────┬────┘ └─────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │ │
└──────────────────┴──────────────┴─────────────────┴──────────────────┘
▼
┌──────────────────┐
│ verdict │
│ Available / │
│ Taken / … │
│ + confidence │
└──────────────────┘
Whether a domain is free or taken depends on which sources are authoritative for that TLD:
.com, .net, .io, .ai, .app, .pro, .club, …) — RDAP is mandatory under ICANN. RDAP no-object = 100% available..de, .eu, .at, .ch, .es, .li, …) — registry redacts RDAP/WHOIS. An authoritative NS lookup against a.nic.de / x.dns.eu / etc. yields a binary answer: NS records = registered, NXDOMAIN = available.whois.iana.org and cached. If only disclaimers come back (no domain or registrar fields), the domain is treated heuristically as available.münchen.de) — auto-converted to Punycode (xn--mnchen-3ya.de)expiration_date: null plus an expiration_note explaining why (correct behaviour, not a bug).ch / .li / .es — registry WHOIS port 43 blocks anonymous IPs; the authoritative DNS NS lookup is the primary sourceThe skill doubles as a naming assistant. Ask "suggest names for an AI phone-bot startup" and it:
skills/domain-check/references/naming_guide.md — a guide covering length sweet spots, phonetics, naming patterns, TLD strategy, LLM-citability, and a hard don't list._lib/naming.py (length, syllables, plosive starts, alliteration, trademark / typo-squat checks).python3 scripts/domain_check.py suggest cloud --use-case indie_saas --check --check-top 5
Supported use cases: tech_startup, ai_tool, dach_service, indie_saas, creative, developer, ecommerce_de, consumer_app, open_source, agency_dach.
domain-check-skill/
├── README.md # You are here
├── LICENSE
├── images/ # Screenshots used in this README
├── .claude-plugin/plugin.json # Claude Code plugin manifest
├── gemini-extension.json # Gemini CLI extension manifest
└── skills/
└── domain-check/ # The actual skill
├── SKILL.md # Agent entry point (frontmatter + instructions)
├── references/
│ └── naming_guide.md # How to invent a great name
└── scripts/
├── domain_check.py # CLI entry, argparse subcommands
└── _lib/ # Importable Python package
├── tld_classifier.py # TLD → GTLD_FULL / CCTLD_DSGVO / CCTLD_OPEN / UNKNOWN
├── rdap.py # RDAP client + IANA bootstrap cache (24 h)
├── whois_client.py # WHOIS socket + 30+ TLD patterns + IANA fallback
├── auth_dns.py # Native UDP DNS resolver (RFC 1035)
├── presence.py # DNS A/AAAA, HTTP/HTTPS, TLS cert with CN/SAN match
├── verdict.py # Decision tree → Available/Taken + confidence
├── orchestrator.py # async fan-out + final report assembly
└── naming.py # Heuristic candidate scorer + generator patterns
Other skills can import the library directly:
from _lib.orchestrator import check_domain
report = await check_domain("example.com")
Zero install, zero dependencies, zero config. The entire skill runs on the Python ≥ 3.11 standard library — asyncio, socket, ssl, urllib, argparse, etc. The minimum version is required for dict | None syntax and asyncio.to_thread.
If you run an exotic Python build without the SSL module, only the ssl subcommand fails — everything else still works.
| Platform | Status | Notes |
|---|---|---|
| Linux | Tested | Primary dev platform |
| macOS | Tested | Same commands |
| Windows | Tested | Use python instead of python3 if needed |
| WSL2 | Tested | Treat as Linux |
| Docker | Works | python:3.11-slim is enough |
This skill follows the Agent Skills open standard. The same SKILL.md works in any compliant tool:
The skill is intentionally written to the lowest common denominator of the standard — only name and description in the frontmatter, all logic in plain Markdown plus Python scripts.
git clone https://github.com/PleasePrompto/domain-check-skill.git
cd domain-check-skill/skills/domain-check
python3 scripts/domain_check.py check example.com
python3 scripts/domain_check.py suggest lumen --use-case ai_tool --check --check-top 10
There's no test suite yet — contributions welcome.
_lib/tld_classifier.py in the right bucket (GTLD_FULL, CCTLD_DSGVO, CCTLD_OPEN)._lib/whois_client.py.auth_dns.py resolver should already handle it — just verify the registry NS list.Edit _lib/naming.py — patterns are simple Python functions returning candidate strings. The scoring heuristics live in the same file.
PRs welcome. Please:
pip install ever.whois / dig / host (those aren't on Windows).python3 scripts/domain_check.py check <a-bunch-of-tlds> from skills/domain-check/ before submitting.MIT — see LICENSE.
.claude-plugin/
plugin.json
.gitignore
gemini-extension.json
images/
Bulk_Check.png
Domain_Check.png
LICENSE
README.md
skills/
domain-check/
references/
naming_guide.md
scripts/
_lib/
__init__.py
auth_dns.py
naming.py
orchestrator.py
presence.py
rdap.py
tld_classifier.py
verdict.py
whois_client.py
domain_check.py
SKILL.md© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic