{"id":48047961,"url":"https://github.com/avigoldman/dibs","last_synced_at":"2026-04-04T14:19:14.884Z","repository":{"id":343067375,"uuid":"1176157975","full_name":"avigoldman/dibs","owner":"avigoldman","description":"Call dibs on a name — check availability across domains, social media, package registries, and trademarks.","archived":false,"fork":false,"pushed_at":"2026-03-08T20:15:06.000Z","size":332,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-08T21:35:30.282Z","etag":null,"topics":["availability","cli","developer-tools","domain","naming","npm","social-media","trademark","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avigoldman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-08T17:39:52.000Z","updated_at":"2026-03-08T20:15:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/avigoldman/dibs","commit_stats":null,"previous_names":["avigoldman/dibs"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/avigoldman/dibs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avigoldman%2Fdibs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avigoldman%2Fdibs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avigoldman%2Fdibs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avigoldman%2Fdibs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avigoldman","download_url":"https://codeload.github.com/avigoldman/dibs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avigoldman%2Fdibs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31402292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["availability","cli","developer-tools","domain","naming","npm","social-media","trademark","typescript"],"created_at":"2026-04-04T14:19:14.623Z","updated_at":"2026-04-04T14:19:14.864Z","avatar_url":"https://github.com/avigoldman.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dibs\n\nCall dibs on a name — check availability across domains, social media, package registries, and trademarks in one command.\n\n```\ndibs acme\n```\n\ndibs checks your name across 18+ platforms simultaneously and tells you what's available and what's taken. Optionally generate variants like `useacme`, `acmehq`, `acmedev` to find the best available version.\n\n## Install\n\n```sh\nnpm install -g calldibs\n```\n\nOr run directly:\n\n```sh\nnpx calldibs acme\n```\n\n## Quick Start\n\n```sh\n# Check a name on all platforms\ndibs acme\n\n# Pass a domain — extracts the name and ensures that TLD is checked\ndibs notion.so\n\n# Interactive mode — prompts for everything\ndibs\n\n# Also check variants (useacme, acmehq, etc.)\ndibs acme -v all\n\n# Only check specific variant patterns\ndibs acme -v hq,use,app\n\n# Check specific platforms only\ndibs acme -o github,npm,domain\n\n# Check specific TLDs only\ndibs acme -t com,ai,dev\n\n# Output as JSON\ndibs acme -f json\n\n# Export as CSV\ndibs acme -f csv \u003e report.csv\n```\n\n## Domain Input\n\nPass a full domain and dibs will do the right thing:\n\n```sh\ndibs notion.so\n```\n\n- Extracts the name (`notion`) and TLD (`.so`)\n- Formats the name per platform: `notionso` for social handles, `notion-so` for package registries\n- Ensures `.so` is always in the TLD check list\n- Skips variant generation (you're checking a specific brand)\n- `.com` is treated as a plain name — `example.com` just checks `example`\n\n## What It Checks\n\n| Category     | Platforms                                                                      | Flag IDs                                                                             |\n| ------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |\n| **Domains**  | WHOIS lookup for any TLD                                                       | `domain`                                                                             |\n| **Social**   | GitHub, X/Twitter, Instagram, LinkedIn, TikTok, YouTube, Reddit, Ghost         | `github`, `twitter`, `instagram`, `linkedin`, `tiktok`, `youtube`, `reddit`, `ghost` |\n| **Packages** | npm, npm org, PyPI, crates.io, RubyGems, Go (pkg.go.dev), Homebrew, Docker Hub | `npm`, `npm-org`, `pypi`, `crates`, `rubygems`, `go`, `homebrew`, `dockerhub`        |\n| **Legal**    | USPTO Trademark                                                                | `trademark`                                                                          |\n\n### Default TLDs\n\n`.com`, `.dev`, `.io`, `.ai`, `.co`, `.app`\n\nAny valid IANA TLD is supported (1,400+). Just pass whatever you need via `--tlds`.\n\n## Variants\n\nBy default, only the exact name is checked. Use `--variants` / `-v` to also check common alternatives and find the best available version for your brand. Variants are disabled when passing a domain as input.\n\n**Prefixes:** `use___`, `get___`, `try___`, `go___`, `hey___`, `my___`, `the___`, `with___`, `on___`, `by___`\n\n**Suffixes:** `___hq`, `___app`, `___dev`, `___io`, `___labs`, `___so`, `___inc`, `___co`, `___team`, `___run`, `___now`, `___ai`, `___sh`, `___cli`, `___api`, `___js`\n\n```sh\n# Check all variants\ndibs acme -v all\n\n# Check specific patterns only\ndibs acme -v hq,use,app\n```\n\nWith `-v all`, checking `acme` also checks `useacme`, `getacme`, `acmehq`, `acmeapp`, `acmedev`, and 21 more variants. Each is scored and ranked.\n\n## Scoring \u0026 Recommendations\n\nEach check result is one of three statuses:\n\n| Status      | Meaning                                                                    |\n| ----------- | -------------------------------------------------------------------------- |\n| `available` | The name is not taken on that platform                                     |\n| `taken`     | The name is already registered/in use                                      |\n| `error`     | The check failed (rate limit, timeout, etc.) — does not penalize the score |\n\nPlatforms are weighted by importance to a business:\n\n| Weight   | Platforms                                                |\n| -------- | -------------------------------------------------------- |\n| **15×**  | `.com` domain                                            |\n| **12×**  | USPTO Trademark                                          |\n| **8×**   | X / Twitter                                              |\n| **7×**   | Instagram, LinkedIn                                      |\n| **6×**   | GitHub, `.ai` domain                                     |\n| **5×**   | TikTok, YouTube, `.com`-adjacent domains                 |\n| **4×**   | Reddit, `.co`, `.app` domains                            |\n| **2-3×** | Package registries (npm, npm org, PyPI, crates.io, etc.) |\n| **2×**   | Ghost                                                    |\n\nThe weighted score produces a verdict:\n\n| Score | Verdict                                           |\n| ----- | ------------------------------------------------- |\n| ≥ 80% | 🎉 **Great** — widely available, grab it now      |\n| ≥ 60% | 👍 **Good** — solid choice with minor conflicts   |\n| ≥ 35% | 🤔 **Fair** — notable gaps, consider a variant    |\n| \u003c 35% | 👎 **Poor** — largely taken, try a different name |\n\n## Output Formats\n\n### Pretty (default)\n\nHuman-readable report with colors, progress bars, and grouped results:\n\n```sh\ndibs acme\n```\n\nShows a variant ranking table, detailed per-platform results for the best variant, and a recommendation with actionable details.\n\n### JSON\n\n```sh\ndibs acme -f json\n```\n\n```json\n{\n  \"recommendation\": {\n    \"verdict\": \"poor\",\n    \"summary\": \"\\\"acme\\\" is largely taken. Try a different name or variant.\",\n    \"details\": [\n      \"✗ .com domain is taken — consider a variant or alternative TLD\",\n      \"✗ Only 2/8 social handles available — branding will be inconsistent\",\n      \"◐ 5/8 package registries available\",\n      \"⚠ Possible USPTO trademark conflict — consult a lawyer before proceeding\"\n    ]\n  },\n  \"best\": {\n    \"name\": \"acme\",\n    \"pattern\": \"bare\",\n    \"score\": 28,\n    \"available\": 10,\n    \"taken\": 14,\n    \"errors\": 0,\n    \"total\": 24,\n    \"results\": [\n      {\n        \"platform\": \"Domain acme.com\",\n        \"status\": \"taken\",\n        \"url\": \"https://acme.com\",\n        \"message\": null\n      },\n      {\n        \"platform\": \"GitHub\",\n        \"status\": \"taken\",\n        \"url\": \"https://github.com/acme\",\n        \"message\": null\n      },\n      {\n        \"platform\": \"npm\",\n        \"status\": \"available\",\n        \"url\": \"https://www.npmjs.com/package/acme\",\n        \"message\": null\n      }\n    ]\n  },\n  \"variants\": [\n    {\n      \"name\": \"acme\",\n      \"pattern\": \"bare\",\n      \"score\": 28,\n      \"available\": 10,\n      \"taken\": 14,\n      \"errors\": 0,\n      \"total\": 24\n    }\n  ]\n}\n```\n\nPipe to `jq` for extraction:\n\n```sh\n# Get the best variant name\ndibs acme -f json | jq -r '.best.name'\n\n# List all available platforms for the best variant\ndibs acme -f json | jq '.best.results[] | select(.status == \"available\") | .platform'\n\n# Get all variant scores\ndibs acme -v all -f json | jq '.variants[] | {name, score}'\n```\n\n### CSV\n\n```sh\ndibs acme -f csv \u003e report.csv\n```\n\n```\nvariant,pattern,platform,status,url,message\nacme,bare,Domain acme.com,taken,https://acme.com,\nacme,bare,GitHub,taken,https://github.com/acme,\nacme,bare,npm,available,https://www.npmjs.com/package/acme,\n```\n\n## CLI Reference\n\n```\ndibs [OPTIONS] [NAME]\n```\n\n| Flag         | Short | Description                                                                           |\n| ------------ | ----- | ------------------------------------------------------------------------------------- |\n| `NAME`       |       | The name or domain to check (omit for interactive mode)                               |\n| `--only`     | `-o`  | Platforms to check (comma-separated)                                                  |\n| `--tlds`     | `-t`  | TLDs to check (comma-separated, e.g. `com,ai,dev`)                                    |\n| `--variants` | `-v`  | Enable variants: `all` for every pattern, or comma-separated list (e.g. `hq,use,app`) |\n| `--format`   | `-f`  | Output format: `pretty`, `json`, or `csv` (default: `pretty`)                         |\n| `--help`     | `-h`  | Show help with full documentation                                                     |\n| `--version`  |       | Show version number                                                                   |\n\n### Interactive Mode\n\nRun `dibs` with no arguments to enter interactive mode. You'll be prompted to:\n\n1. Enter the name\n2. Select which platforms to check\n3. Select which TLDs to check\n4. Choose whether to generate variants and which patterns to use\n\nYour selections are saved between sessions — next time you run `dibs`, your previous choices are pre-selected.\n\n### Non-Interactive Mode\n\nPass the name as a positional argument. All options can be set via flags. This is ideal for scripts, CI, and LLM tool use.\n\n```sh\n# Minimal — just check npm and GitHub for one name\ndibs myproject -o npm,github -f json\n\n# Full sweep with JSON output\ndibs myproject -f json\n\n# Full sweep with variants\ndibs myproject -v all -f json\n\n# Narrow check — just domains\ndibs myproject -o domain -t com,dev,ai,app -f json\n\n# Check a specific domain\ndibs open.ai -f json\n```\n\n## Error Handling\n\nEvery platform check is wrapped in error handling. If a check fails (network timeout, rate limit, service down), it returns `{ status: \"error\" }` with a message instead of crashing. Errors do **not** count against the score — they reduce the total possible score so your recommendation isn't unfairly penalized.\n\nThe CLI always exits with code 0 when given valid arguments, regardless of check failures.\n\n## How It Works\n\n1. **Input parsing** — if the input is a domain (e.g. `notion.so`), extracts the name and TLD, formats per platform\n2. **Name cleaning** — the input is lowercased and stripped to `[a-z0-9-]`\n3. **Variant generation** — prefixes and suffixes are applied to create alternatives (when `-v` is used, disabled for domain inputs)\n4. **Parallel checking** — all variants × all platforms are checked concurrently\n5. **Scoring** — each variant gets a weighted score based on platform importance\n6. **Recommendation** — variants are ranked by score, the best is highlighted with a verdict\n\n## Development\n\n```sh\ngit clone https://github.com/avigoldman/dibs\ncd dibs\nnpm install\n\n# Run in development\nnpm run dev\n\n# Type check\nnpx tsc --noEmit\n\n# Unit tests (114 tests, mocked, fast)\nnpm test\n\n# Integration tests (real network calls)\nnpm run test:integration\n\n# Build\nnpm run build\n\n# Link globally for local use\nnpm link\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favigoldman%2Fdibs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favigoldman%2Fdibs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favigoldman%2Fdibs/lists"}