[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4CTBG5RGAXVPRAGW2MWAC":3,"skill-same:01M6C4CTBG5RGAXVPRAGW2MWAC":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":12,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M6C4CTBG5RGAXVPRAGW2MWAC","domain-search",null,"Check domain name availability accurately across TLDs using registry RDAP APIs and registry whois. Use when the user asks to check, find, brainstorm, or verify domain names, or asks whether a domain is available, for sale, or expiring.","codecast-sh\u002Fcodecast","codecast-sh","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F248798196?v=4","01M6C4A0X9D10K5VATDQRDCE36","codecast.sh","01M6C4A11M3RRJVEJQDCSZZTNR",49,"MIT","https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fdomain-search\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"search","domain search","domain","registry","whois","verify","brainstorm","find","check","user","use","across","name","availability","for","when","2026-11-10 10:12:30",false,"---\nname: domain-search\ndescription: Check domain name availability accurately across TLDs using registry RDAP APIs and registry whois. Use when the user asks to check, find, brainstorm, or verify domain names, or asks whether a domain is available, for sale, or expiring.\n---\n\n# Domain search\n\nCheck availability against registry data, never against parsed whois text alone. Report only verified results, and say which method verified each one.\n\n## The one rule that prevents false positives\n\nEvery check method must pass a control: a domain you know is registered on the same TLD, through the same route. If the control does not read as \"taken\", the route is broken and its results are worthless. A broken route returns the same answer as \"available\" (example failures: rdap.org returns 404 for vine.co, greenhouse.io, and notion.so — all registered). Never report a domain as available from a route with no passing control.\n\nGrepping `whois` output for \"no match\" is the classic trap: registrar boilerplate and rate limit text match those patterns. It once reported showtell.com as available when it had been registered since 1995.\n\n## Method\n\n1. **RDAP first.** RDAP is the registries' official JSON API. HTTP 200 = registered, 404 = available (on a validated route). Prefer direct registry endpoints over the rdap.org proxy, which is slow and misroutes some TLDs.\n2. **Find the endpoint** in the IANA bootstrap: `curl -s https:\u002F\u002Fdata.iana.org\u002Frdap\u002Fdns.json` maps each TLD to its server. A TLD absent from the file has no RDAP; use registry whois.\n3. **Registry whois fallback** for TLDs without RDAP. Find the server with `whois -h whois.iana.org \u003Ctld>` (the `refer:` line), then `whois -h \u003Cserver> \u003Cdomain>`. \"Domain Name:\" present = taken. Still needs a control.\n4. **DNS as a fast signal**: `dig +short NS \u003Cdomain>` — nameservers present proves registered (absence proves nothing). Parking nameservers (afternic, sedo, bodis, parkingcrew) mean the domain is listed for sale on the aftermarket.\n\n## Known endpoints and quirks\n\n| Registry | TLDs | Endpoint | Quirks |\n|---|---|---|---|\n| Verisign | .com .net | `https:\u002F\u002Frdap.verisign.com\u002Fcom\u002Fv1\u002Fdomain\u002FX` (swap com→net) | Reliable, fast |\n| Google | .app .dev .page .new | `https:\u002F\u002Fpubapi.registry.google\u002Frdap\u002Fdomain\u002FX` | Aggressive rate limits — sleep 5s or more between queries; 429 means retry slower, not \"taken\" |\n| Identity Digital | .ai .studio .video .show .live .media .tools .pub .wtf and many ngTLDs | `https:\u002F\u002Frdap.identitydigital.services\u002Frdap\u002Fdomain\u002FX` | Reliable |\n| No RDAP | .io .sh .so | `whois -h whois.nic.io` \u002F `whois.nic.sh` \u002F `whois.nic.so` | rdap.org silently 404s these — never use it for them |\n| .co | .co | `whois -h whois.registry.co` | Not whois.nic.co; rdap.org misroutes .co |\n\nDistinguish HTTP codes: 404 = available, 200 = taken, 429 = rate limited (retry slowly), 000 = connection failed. Only 404 on a validated route means available.\n\nHelper: `scripts\u002Fcheck-domains.sh domain1.com domain2.app ...` implements routing, controls, and pacing.\n\n## Beyond yes\u002Fno\n\nFor an interesting taken domain, pull the full RDAP record (registration events, status):\n\n- **Old registration + no real site** — possibly a dormant owner worth approaching.\n- **Expiry date near** — the owner may lapse. After expiry: ~30 days grace, then ~30 days redemption, then the drop. Suggest a backorder (DropCatch, SnapNames) as the cheap play versus buying at the ask.\n- **Parked at a marketplace** (see DNS signal above) — it has an asking price; check the marketplace.\n\n## Honest reporting\n\n- Available does not mean cheap: registries tier dictionary words as premium and the price shows only at registrar checkout. Say so when recommending a dictionary word domain.\n- If a batch was cut short by rate limits or timeouts, list the unchecked names — do not let a partial sweep read as a full one.\n- Results are a snapshot; domains get registered every minute. Date the findings.\n","# Domain search\n\nCheck availability against registry data, never against parsed whois text alone. Report only verified results, and say which method verified each one.\n\n## The one rule that prevents false positives\n\nEvery check method must pass a control: a domain you know is registered on the same TLD, through the same route. If the control does not read as \"taken\", the route is broken and its results are worthless. A broken route returns the same answer as \"available\" (example failures: rdap.org returns 404 for vine.co, greenhouse.io, and notion.so — all registered). Never report a domain as available from a route with no passing control.\n\nGrepping `whois` output for \"no match\" is the classic trap: registrar boilerplate and rate limit text match those patterns. It once reported showtell.com as available when it had been registered since 1995.\n\n## Method\n\n1. **RDAP first.** RDAP is the registries' official JSON API. HTTP 200 = registered, 404 = available (on a validated route). Prefer direct registry endpoints over the rdap.org proxy, which is slow and misroutes some TLDs.\n2. **Find the endpoint** in the IANA bootstrap: `curl -s https:\u002F\u002Fdata.iana.org\u002Frdap\u002Fdns.json` maps each TLD to its server. A TLD absent from the file has no RDAP; use registry whois.\n3. **Registry whois fallback** for TLDs without RDAP. Find the server with `whois -h whois.iana.org \u003Ctld>` (the `refer:` line), then `whois -h \u003Cserver> \u003Cdomain>`. \"Domain Name:\" present = taken. Still needs a control.\n4. **DNS as a fast signal**: `dig +short NS \u003Cdomain>` — nameservers present proves registered (absence proves nothing). Parking nameservers (afternic, sedo, bodis, parkingcrew) mean the domain is listed for sale on the aftermarket.\n\n## Known endpoints and quirks\n\n| Registry | TLDs | Endpoint | Quirks |\n|---|---|---|---|\n| Verisign | .com .net | `https:\u002F\u002Frdap.verisign.com\u002Fcom\u002Fv1\u002Fdomain\u002FX` (swap com→net) | Reliable, fast |\n| Google | .app .dev .page .new | `https:\u002F\u002Fpubapi.registry.google\u002Frdap\u002Fdomain\u002FX` | Aggressive rate limits — sleep 5s or more between queries; 429 means retry slower, not \"taken\" |\n| Identity Digital | .ai .studio .video .show .live .media .tools .pub .wtf and many ngTLDs | `https:\u002F\u002Frdap.identitydigital.services\u002Frdap\u002Fdomain\u002FX` | Reliable |\n| No RDAP | .io .sh .so | `whois -h whois.nic.io` \u002F `whois.nic.sh` \u002F `whois.nic.so` | rdap.org silently 404s these — never use it for them |\n| .co | .co | `whois -h whois.registry.co` | Not whois.nic.co; rdap.org misroutes .co |\n\nDistinguish HTTP codes: 404 = available, 200 = taken, 429 = rate limited (retry slowly), 000 = connection failed. Only 404 on a validated route means available.\n\nHelper: `scripts\u002Fcheck-domains.sh domain1.com domain2.app ...` implements routing, controls, and pacing.\n\n## Beyond yes\u002Fno\n\nFor an interesting taken domain, pull the full RDAP record (registration events, status):\n\n- **Old registration + no real site** — possibly a dormant owner worth approaching.\n- **Expiry date near** — the owner may lapse. After expiry: ~30 days grace, then ~30 days redemption, then the drop. Suggest a backorder (DropCatch, SnapNames) as the cheap play versus buying at the ask.\n- **Parked at a marketplace** (see DNS signal above) — it has an asking price; check the marketplace.\n\n## Honest reporting\n\n- Available does not mean cheap: registries tier dictionary words as premium and the price shows only at registrar checkout. Say so when recommending a dictionary word domain.\n- If a batch was cut short by rate limits or timeouts, list the unchecked names — do not let a partial sweep read as a full one.\n- Results are a snapshot; domains get registered every minute. Date the findings.\n",{"name":5,"description":7},"main","4f2367cc51fa8b9b25afe4ec8ce91c2dd39208ae","packages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fdomain-search",6,"https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast","https:\u002F\u002Fcodecast.sh","https:\u002F\u002Fgithub.com\u002Fcodecast-sh","Making software a team sport","2026-11-15 03:29:42",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add codecast-sh\u002Fcodecast --skill domain-search",{"tool":55,"command":56},"bunx","bunx skills add codecast-sh\u002Fcodecast --skill domain-search",{"tool":58,"command":59},"pnpm","pnpm dlx skills add codecast-sh\u002Fcodecast --skill domain-search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fdomain-search\u002FSKILL.md",true,[63],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"scripts\u002Fcheck-domains.sh","SCRIPT","脚本",3538,"https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fdomain-search\u002Fscripts\u002Fcheck-domains.sh",[70,82,100,124,131,138],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":35},"01M6C4DCX5TKER170ESW6C64V2","something-else-entirely","A skill whose frontmatter name disagrees with its directory name.","https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fwrong-name\u002FSKILL.md",[],[77,78,79,31,80,81],"something else","something else entirely","directory","with","frontmatter",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":93,"publishedAt":35},"01M6C4DAFDKVVPTBS94VNW32S1","unknown-field","Carries a field that is in neither the spec's six nor Claude Code's list.","https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Funknown-field\u002FSKILL.md",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[94,95,96,97,98,99],"unknown","unknown field","spec","code","list","neither",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":114,"publishedAt":35},"01M6C4D7N185HPGR0YPVKVX4KY","remotion-best-practices","Best practices for Remotion - Video creation in React","https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fremotion-best-practices\u002FSKILL.md",[106,111],{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":112,"categoryName":113,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000016","图像与多媒体",[115,116,117,118,119,120,121,122,123,33],"best practices","remotion best practices","Remotion","react","Video","Animation","Composition","remotion, video, react, animation, composition","creation",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":35},"01M6C4D530ZPR6CBNSJ4GE4M3Z","overlength","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Foverlength\u002FSKILL.md",[],[126],{"skillNo":132,"name":133,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":35},"01M6C4D2TM5QDSPN2JWR50WDNJ","no-frontmatter","https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fno-frontmatter\u002FSKILL.md",[],[137,81],"no frontmatter",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":151,"publishedAt":35},"01M6C4CZQCGATTA7K5SA6D18MD","improve","Survey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models\u002Fagents to execute. Strictly read-only on source code — never implements, fixes, or refactors anything itself. Use when asked to audit a codebase, find improvement opportunities (bugs, security, performance, test coverage, tech debt, migrations, DX), suggest features or where to take the project next (roadmap, product direction), or generate handoff plans for another agent to implement.","https:\u002F\u002Fgithub.com\u002Fcodecast-sh\u002Fcodecast\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Fcapabilities\u002F__fixtures__\u002Fmanifests\u002Fskills\u002Fimprove\u002FSKILL.md",[144,147,148],{"categoryNo":145,"categoryName":146,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},{"categoryNo":149,"categoryName":150,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000031","产品经理",[140,34,29,152,153,154,97,155,156,157,26,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174],"implement","test","generate","product","produce","audit","read","coverage","execute","tech debt","senior","survey","never","only","roadmap","test coverage","advisor","next","self","project next","project","direction","performance"]