Skip to content

Add domainer-cli foundational skill#23

Open
MZULALI wants to merge 2 commits intomainfrom
skill/domainer-cli
Open

Add domainer-cli foundational skill#23
MZULALI wants to merge 2 commits intomainfrom
skill/domainer-cli

Conversation

@MZULALI
Copy link
Contributor

@MZULALI MZULALI commented Mar 2, 2026

Adds the domainer-cli skill — a CLI tool for checking domain name availability (single and bulk). Supports text and JSON output formats.

Skill sourced directly from https://domains.vibecodeapp.com/SKILL.md, added as-is per Kyle's request.

@MZULALI MZULALI added foundational Base API/service skill needs-testing Builder finished, ready for reviewer to test labels Mar 2, 2026
@MZULALI
Copy link
Contributor Author

MZULALI commented Mar 2, 2026

Skill Review: domainer-cli

Commit: 26c9ba7
Result: ⚠️ NEEDS CHANGES

Discovery Testing (2 sessions)

Session Prompt Found Skill? Result
D1 "Check which domain names are available for my SaaS product shortlist" Found skill, downloaded binary, used check-bulk via stdin — returned correct results
D2 "Check domains for my business 'Greenleaf Provisions', suggest alternatives if taken" Found skill, downloaded binary, checked 4 domains + 5 alternatives with check-bulk

Discovery verdict: Excellent discoverability. Both agents independently found and used the skill without any hints. The description "Check domain name availability individually or in bulk" maps directly to the task of checking domains. The skill was the obvious choice over whois or web search.

Explicit Testing (3 sessions)

Session Task Result
E1 Single domain check (check --output json) ✅ Worked — correct JSON output {"name":"openclawtest.com","available":false}
E2 Bulk check from file (text + JSON output) ✅ Worked — both output formats correct, 5 domains checked
E3 --append-tld with bare names (3 names × 3 TLDs) ✅ Worked — 9 combinations checked, JSON output correct

Bugs Found

  1. Install path fails in standard environment — The <download> section instructs users to mv domainer-cli /usr/local/bin/domainer-cli, but /usr/local/bin is not writable in the standard OpenClaw sandbox (no sudo, permission denied). All 5 sub-agents hit this error and had to recover by installing to ~/bin/, ~/domainer-cli, or /tmp/. This adds 1–3 extra retry steps to every first use.

Suggested Fixes

  1. Change the install path in <download> from /usr/local/bin/domainer-cli to ~/.local/bin/domainer-cli (or ~/bin/domainer-cli), and add mkdir -p ~/.local/bin before the mv. Example:
    mkdir -p ~/.local/bin
    chmod +x domainer-cli
    mv domainer-cli ~/.local/bin/domainer-cli
    
    This works without elevated permissions and ~/.local/bin is typically on $PATH in most environments (or easily added).

Summary

The domainer-cli binary itself works flawlessly — single checks, bulk checks, --append-tld expansion, both text and JSON output formats all function correctly. The SKILL.md documentation is clear and comprehensive with excellent examples. The only issue is the install path: every sub-agent failed to write to /usr/local/bin and had to improvise an alternative location. Fixing the install path to a user-writable directory is a small change that eliminates unnecessary retries. Once fixed, this is a clean pass.


📋 D1: SaaS product domain shortlist

Prompt: "I'm brainstorming names for a new SaaS product and I have a shortlist. Can you check which of these domain names are actually available for registration? Check these: zephyrflow.com, quickpulse.ai, nimbusdata.com, launchably.com, coderift.io. Tell me which ones I can actually buy."

Tool calls:

  1. read~/.openclaw/workspace/skills/domainer-cli/SKILL.md ✅ Found skill
  2. execwhich domainer-cli → NOT_INSTALLED
  3. execcurl ... -o /usr/local/bin/domainer-cli → ❌ exit code 23 (permission denied on write)
  4. execcurl ... -o ~/domainer-cli && chmod +x → ✅ installed to home dir
  5. execprintf '...' | ~/domainer-cli check-bulk --output json -
    {"available":["coderift.io"],"unavailable":["zephyrflow.com","quickpulse.ai","nimbusdata.com","launchably.com"]}
    

Artifacts: (none)

📋 D2: Greenleaf Provisions domain search

Prompt: "I own a small business called 'Greenleaf Provisions' and I want to find a good domain for it. Can you check if greenleafprovisions.com is available? Also check greenleaf.co, greenleafprov.com, and gleafprovisions.com. If none are available, suggest 5 alternative domain names and check those too."

Tool calls:

  1. read~/.openclaw/workspace/skills/domainer-cli/SKILL.md ✅ Found skill
  2. execwhich domainer-cli → NOT_FOUND
  3. execcurl ... -o /usr/local/bin/domainer-cli → ❌ exit code 23
  4. execcurl ... -o /tmp/domainer-cli && chmod +x → ✅ installed
  5. exec/tmp/domainer-cli check --output json example.com → verified working
  6. execprintf '...' | /tmp/domainer-cli check-bulk --output json - (4 requested domains)
    {"available":["greenleafprov.com","gleafprovisions.com"],"unavailable":["greenleafprovisions.com","greenleaf.co"]}
    
  7. execprintf '...' | /tmp/domainer-cli check-bulk --output json - (5 alternatives)
    {"available":["getgreenleaf.com","greenleafprovisions.co"],"unavailable":["greenleafgoods.com","greenleafmarket.com","shopgreenleaf.com"]}
    

Artifacts: (none)

📋 E1: Single domain check (JSON)

Prompt: "You have a skill called 'domainer-cli' in your available skills. Read its SKILL.md first, then use it to check if the domain 'openclawtest.com' is available. Use the domainer-cli binary described in the skill — do not use alternative methods like whois, web search, or any other tool. Show me the JSON output."

Tool calls:

  1. read~/.openclaw/workspace/skills/domainer-cli/SKILL.md
  2. execwhich domainer-cli → NOT_FOUND
  3. execcurl ... -o /usr/local/bin/domainer-cli → ❌ exit code 23
  4. execcurl -o /tmp/domainer-cli && mv /tmp/domainer-cli /usr/local/bin/ → ❌ Permission denied
  5. execmkdir -p ~/bin && curl ... -o ~/bin/domainer-cli → ✅
  6. exec~/bin/domainer-cli check --output json openclawtest.com
    {"name":"openclawtest.com","available":false}
    

Artifacts: (none)

📋 E2: Bulk check from file (text + JSON)

Prompt: "You have a skill called 'domainer-cli' in your available skills. Read its SKILL.md first, then use the bulk check feature. Create a file with these domain names (one per line): rapidbuild.com, stackforge.dev, nightowl.ai, bytecraft.io, cloudsail.net. Then use domainer-cli check-bulk to check them all at once. Show me both the text and JSON output formats."

Tool calls:

  1. read~/.openclaw/workspace/skills/domainer-cli/SKILL.md
  2. execwhich domainer-cli → NOT_FOUND + writedomains.txt (parallel)
  3. execcurl ... -o /usr/local/bin/domainer-cli → ❌ exit code 23
  4. execcurl ... sudo mv → ❌ sudo not found
  5. execcurl -o /tmp/domainer-cli && chmod +x && /tmp/domainer-cli --help → ✅
  6. exec/tmp/domainer-cli check-bulk domains.txt (text format)
    domain=rapidbuild.com status=unavailable
    domain=stackforge.dev status=available
    domain=nightowl.ai status=unavailable
    domain=bytecraft.io status=unavailable
    domain=cloudsail.net status=unavailable
    
  7. exec/tmp/domainer-cli check-bulk --output json domains.txt
    {"available":["stackforge.dev"],"unavailable":["rapidbuild.com","nightowl.ai","bytecraft.io","cloudsail.net"]}
    

Artifacts: ~/.openclaw/workspace/domains.txt (test file, 69 bytes)

📋 E3: --append-tld with bare names

Prompt: "You have a skill called 'domainer-cli' in your available skills. Read its SKILL.md first, then use the --append-tld feature of check-bulk. Create a file containing just bare names (no TLDs): 'moonbase', 'starlink', 'nebulaops'. Then use domainer-cli check-bulk with --append-tld com --append-tld ai --append-tld io to check all TLD combinations. Show me which are available in JSON format."

Tool calls:

  1. read~/.openclaw/workspace/skills/domainer-cli/SKILL.md
  2. execwhich domainer-cli → NOT_FOUND + write/tmp/names.txt (parallel)
  3. execcurl ... -o /usr/local/bin/domainer-cli → ❌ exit code 23
  4. execcurl -vL ... -o /tmp/domainer-cli → ✅ downloaded (6.9MB)
  5. execmv /tmp/domainer-cli /usr/local/bin/ → ❌ Permission denied
  6. execchmod +x /tmp/domainer-cli → ❌ "Text file busy"
  7. execcp /tmp/domainer-cli ~/domainer-cli && chmod +x → ✅
  8. exec~/domainer-cli check-bulk --output json --append-tld com --append-tld ai --append-tld io /tmp/names.txt
    {"available":["nebulaops.ai"],"unavailable":["moonbase.com","moonbase.ai","moonbase.io","starlink.com","starlink.ai","starlink.io","nebulaops.com","nebulaops.io"]}
    

Artifacts: /tmp/names.txt (test file, 28 bytes)

@MZULALI MZULALI added needs-changes Tests pass but issues found that builder should fix before merge and removed needs-testing Builder finished, ready for reviewer to test labels Mar 2, 2026
@MZULALI MZULALI added needs-testing Builder finished, ready for reviewer to test and removed needs-changes Tests pass but issues found that builder should fix before merge labels Mar 2, 2026
@MZULALI
Copy link
Contributor Author

MZULALI commented Mar 2, 2026

Skill Review: domainer-cli

Commit: 25b7e8b
Result: ✅ PASS

Discovery Testing (2 sessions)

Session Prompt Found Skill? Result
D1 "Check if sparkloop.com, neonbyte.ai, zestful.io, codecraft.dev, pulsehub.com are available" Read SKILL.md, installed binary, used check-bulk via stdin with JSON. Got correct results (1/5 available).
D2 "Check .com and .ai for 10 brand names (luminar, nexova, etc.) using --append-tld" Read SKILL.md, installed binary, used check-bulk --append-tld. Hit minor echo -e shell quirk, self-corrected to printf. Correct results (3/20 available).

Discovery verdict: Excellent discoverability. Both agents independently found the skill, read the SKILL.md, downloaded/installed the binary, and used the correct commands without any hints. The skill description "Check domain name availability individually or in bulk" is clear and well-matched to natural domain-checking requests.

Explicit Testing (3 sessions)

Session Task Result
E1 Single domain check (check --output json) ✅ Read SKILL.md, used check command, got correct JSON output (openclawai.com → unavailable)
E2 Bulk check from file (check-bulk --output json) ✅ Created domains file, used check-bulk, got correct JSON with available/unavailable arrays
E3 Bulk check with --append-tld (3 names × 3 TLDs) ✅ Created bare names file, used check-bulk --append-tld com --append-tld ai --append-tld io, all 9 combos checked correctly

Bugs Found

None. All commands work as documented, output formats match the SKILL.md examples, and the binary download URLs are correct.

Notes

  1. PATH visibility: ~/.local/bin/ is not on the default shell PATH in the exec environment. Sub-agents that ran which domainer-cli got NOT_FOUND even after installing. All agents self-recovered by using the full path (~/.local/bin/domainer-cli). This is an environment quirk, not a skill bug — the SKILL.md correctly documents the install location and agents figure it out.
  2. Shell echo -e quirk: One discovery agent used echo -e "a\nb" which passes -e literally in sh. Agent self-corrected to printf. Not a skill issue — it's a well-known shell portability thing.

Summary

Clean, well-documented skill. The binary downloads work, both check and check-bulk commands function correctly, JSON and text output formats match the documented schemas, and the --append-tld flag works as described. Discovery is strong — agents naturally find and use this skill for domain availability tasks. Ready to merge.


📋 D1: Check 5 startup domains

Prompt: "I'm brainstorming names for a new startup. Can you check if these domain names are available for registration: sparkloop.com, neonbyte.ai, zestful.io, codecraft.dev, pulsehub.com? Give me which ones are taken and which are available."

Tool calls:

  1. readskills/domainer-cli/SKILL.md (read full skill docs)
  2. execwhich domainer-cliNOT_FOUND
  3. execmkdir -p ~/.local/bin && curl -fsSL .../domainer-cli -o ~/.local/bin/domainer-cli && chmod +xText file busy (binary already being written by another session)
  4. exec~/.local/bin/domainer-cli --help | head -5 → success
  5. execprintf 'sparkloop.com\nneonbyte.ai\nzestful.io\ncodecraft.dev\npulsehub.com' | ~/.local/bin/domainer-cli check-bulk --output json -
    {"available":["neonbyte.ai"],"unavailable":["sparkloop.com","zestful.io","codecraft.dev","pulsehub.com"]}

Artifacts: (none)

📋 D2: Check .com and .ai for 10 brand names

Prompt: "I have a list of 10 potential brand names and I want to check which .com and .ai domains are still available for each. The names are: luminar, nexova, gridpulse, synthetica, dataweave, cygnusai, purelogic, bytecraft, stellarops, quantumleaf. For each name, check both the .com and .ai versions and give me a summary of what's available."

Tool calls:

  1. readskills/domainer-cli/SKILL.md
  2. execwhich domainer-cliNOT_FOUND
  3. exec → download and install binary → success
  4. exececho -e "luminar\n..." | ~/.local/bin/domainer-cli check-bulk --append-tld com --append-tld ai --output json -
    {"available":["-e luminar.com","-e luminar.ai","nexova.ai","cygnusai.ai","quantumleaf.ai"],"unavailable":["nexova.com","gridpulse.com",...]}
    ⚠️ echo -e passed -e literally — agent noticed the issue
  5. execprintf "luminar\n..." | ~/.local/bin/domainer-cli check-bulk --append-tld com --append-tld ai --output json -
    {"available":["nexova.ai","cygnusai.ai","quantumleaf.ai"],"unavailable":["luminar.com","luminar.ai",...]}

Artifacts: (none)

📋 E1: Single domain check

Prompt: "You have a skill called 'domainer-cli' in your available skills. Read its SKILL.md first, then use it to check if the domain 'openclawai.com' is available for registration. Use the domainer-cli binary as described in the skill — do not use whois, dig, or any other method."

Tool calls:

  1. readskills/domainer-cli/SKILL.md
  2. execwhich domainer-cli || ls ~/.local/bin/domainer-cli → found at ~/.local/bin/domainer-cli
  3. execdomainer-cli check --output json openclawai.comsh: 1: domainer-cli: not found (not on PATH)
  4. exec~/.local/bin/domainer-cli check --output json openclawai.com
    {"name":"openclawai.com","available":false}

Artifacts: (none)

📋 E2: Bulk check from file

Prompt: "You have a skill called 'domainer-cli' in your available skills. Read its SKILL.md first, then use it to do a bulk domain check. Create a file with these domains (one per line): netflix.com, hulu.com, quibi.com, tubi.com, crackle.com. Then use the domainer-cli check-bulk command with JSON output to check them all at once. Show me the full JSON result and tell me which are available."

Tool calls:

  1. readskills/domainer-cli/SKILL.md
  2. execwhich domainer-cli || ls ~/.local/bin/domainer-cli → found
  3. writedomains.txt (5 domains, one per line)
  4. execdomainer-cli check-bulk --output json domains.txtnot found (not on PATH)
  5. exec~/.local/bin/domainer-cli check-bulk --output json domains.txt
    {"available":[],"unavailable":["netflix.com","hulu.com","quibi.com","tubi.com","crackle.com"]}

Artifacts: domains.txt (temp file, cleaned up)

📋 E3: Bulk check with --append-tld (3 names × 3 TLDs)

Prompt: "You have a skill called 'domainer-cli' in your available skills. Read its SKILL.md first, then use the check-bulk command with the --append-tld flag. Create a file with bare names (no TLD): 'skyforge', 'ironpeak', 'cloudvine'. Then run check-bulk with --append-tld com --append-tld ai --append-tld io to check all 9 combinations. Use JSON output and show me just the available ones."

Tool calls:

  1. readskills/domainer-cli/SKILL.md
  2. execwhich domainer-cliNOT_FOUND
  3. writenames.txt (3 bare names)
  4. exec → download and install binary → success
  5. exec~/.local/bin/domainer-cli check-bulk --output json --append-tld com --append-tld ai --append-tld io names.txt
    {"available":["cloudvine.ai"],"unavailable":["skyforge.com","skyforge.ai","skyforge.io","ironpeak.com","ironpeak.ai","ironpeak.io","cloudvine.com","cloudvine.io"]}

Artifacts: names.txt (temp file, cleaned up)

@MZULALI MZULALI added tested-pass Reviewer verified the skill works and removed needs-testing Builder finished, ready for reviewer to test labels Mar 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

foundational Base API/service skill tested-pass Reviewer verified the skill works

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant