domain-check — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited domain-check (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
Single domain check showing verdict, registrar, expiry, nameservers, IPs and full SSL certificate
Bulk check across .com Available, .de Taken without expiry (GDPR-redacted), and .com Taken with full registrar and expiry
The .de row 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-checkUntil 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-skillgemini extensions install https://github.com/PleasePrompto/domain-check-skillThe 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/dcTo 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-checkOnce 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)The 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 5Supported 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 patternsOther 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 10There'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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.