Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Site Naming

ASecurity

This skill should be used when the user asks for help naming a site, product, project, startup, or personal brand — or needs to find an available domain. Trigger phrases: "find me a domain", "name my project", "what should I call", "available domains for", "domain for my portfolio", "I have an idea, find me a name". Also triggers when the user describes a project idea and mentions needing a web presence.

2 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentsgobashgitapi

Works with

cliapi

Security Analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned 9/19/2026

$npx -y skills add neotherapper/claude-plugins --skill site-naming --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Site Naming?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Site Naming
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/neotherapper-site-naming/badge)](https://www.skillsdirectory.com/skills/neotherapper-site-naming)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: site-naming
description: >
  This skill should be used when the user asks for help naming a site, product,
  project, startup, or personal brand — or needs to find an available domain.
  Trigger phrases: "find me a domain", "name my project", "what should I call",
  "available domains for", "domain for my portfolio", "I have an idea, find me a name".
  Also triggers when the user describes a project idea and mentions needing a web presence.
license: MIT
metadata:
  version: "0.3.0"
  author: Georgios Pilitsoglou
---

# Site Naming

Help users discover, evaluate, and shortlist available domain names through a structured brand interview, direction round, targeted generation, and live availability + pricing checks.

**Announce at start:** "I'm using the site-naming skill to find the right domain name."

## Checklist

You MUST create a TodoWrite task for each item and complete them in order:

1. Session orientation + project/personal brand detection (Phase 1)
2. Brand interview — 7 questions, one per message (Phase 1)
3. Direction Round — 18 samples, archetype selection (Phase 2)
4. Deep Generation — 15–20 names across selected archetypes (Phase 3)
5. Availability + pricing check with API gate (Phase 4)
6. Results with Source column + conditional Spotlight (Phase 5)
7. Write names.md to project directory (Phase 5)
8. Feedback loop — Wave 2 / Wave 3 / Track B (Phase 6)
9. Post-shortlist checklist (Phase 7)

<HARD-GATE>
In the standard project flow, do NOT generate any name candidates until all 7 interview questions have been answered and the brand profile is locked. This applies regardless of how specific or obvious the project description seems. **Exception — Personal Branding Flow:** when personal-brand signals are detected (Phase 1), follow the documented Personal Branding Flow fast path, which generates and checks name patterns *before* the interview and then offers the standard interview for additional options. The gate above governs only the standard flow; no other shortcut around the interview is permitted.
</HARD-GATE>

## Red Flags — STOP

| Thought | Correct action |
|---------|----------------|
| "The description is clear, I can skip some questions" | Ask all 7 questions, one per message |
| "Let me suggest a few names while the interview runs" | Complete the interview first — then generate |
| "I already know what they want" | Complete the interview first — answers affect archetype weights |
| "This is a personal brand — skip the interview" | Run the personal brand flow, then offer the interview |
| "The user seems impatient, I'll generate early" | Complete the interview first — the wave will be more accurate |
| "I can skip the Direction Round for obvious cases" | Always run Direction Round — it calibrates before expensive generation |

---

## Phase 1: Orient + Interview

### Session Orientation

Check whether `names.md` exists in the current working directory.

**If it exists**, read it and output a session brief before doing anything else:

```
Previous session: [project description from names.md header]
Brand profile: Tone=[X] | Direction=[Y] | Mode=[Z] | Length=[W]
Shortlisted: [name1], [name2], [name3]
Options:
  1. Continue — run Wave 2 or refine shortlist
  2. Start fresh — new interview, new wave
  3. Track B — all previous picks were taken; run fallback strategies
```

Wait for the user's choice before continuing.

- If they choose (1) **Continue**: load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/brand-interview.md` and `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md` now — both are needed for Wave 2/3 weighting. Then skip to Phase 6.
- If they choose (2) **Start fresh**: proceed with Project File Detection below.
- If they choose (3) **Track B**: load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md` now, then follow the Track B section. Skip to Phase 6.

**If names.md does not exist**, proceed immediately to Project File Detection.

### Project File Detection

Check for any of these files in the current working directory:
`README.md`, `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`

If found, offer once: "I noticed you have project files here — want me to read them to better understand what you're building before we start?"

If accepted, read the file(s). Extract: project name, description, key features, target audience. Use this context to pre-fill Q1 of the brand interview.

### Personal Brand Detection

Before running the standard interview, scan the user's description for personal brand signals:
- Keywords: "portfolio", "freelance", "personal site", "personal website", "my name", "my website", "my work", "consulting"
- Pattern: a human first/last name as the primary subject

If signals are detected, load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/brand-interview.md` and follow the **Personal Branding Flow** section in that file. Generate and check name patterns from that section, present results, then offer to continue to the standard interview for additional options.

- If user accepts → proceed to Brand Interview (skip Q1 re-entry; use the detected name as Q1 answer)
- If user declines → proceed to Phase 4 to check availability of the personal brand names generated above, then Phase 5 (results), then write names.md

If no signals, proceed to Brand Interview.

### Brand Interview

Load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/brand-interview.md` now.

Ask the 7 questions from that file **one per message**. Wait for each answer before asking the next. Never ask multiple questions in a single message.

After Q7, output a summary before proceeding:

```
Brand profile locked:
- Building: [Q1 answer]
- Tone: [A/B/C label]
- Direction: [A/B label]
- Mode: [A/B/C label]
- Length: [A/B label]
- Constraints: [Q6 answer or "none"]
- Vocabulary: [Q7 answer or "none"]
```

**Hard gate:** Do NOT proceed to Phase 2 until all 7 questions are answered and brand profile is locked.

---

## Phase 2: Direction Round

**Purpose:** Calibrate direction before weighted generation. Show the user what each archetype looks like for their project. Collect resonance signal. Gate deep generation on explicit selection.

### How it works

1. Load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md`. Generate 2 name candidates per archetype, UNWEIGHTED (equal representation). 8 archetypes × 2 = 16 names. Append 2 wildcards (cross-archetype combinations). Total: 18 candidates. Do NOT check availability yet.

2. Present as a compact table, one archetype per section:

```
## Direction Round — which of these feels closest?

**Short & Punchy**         `kredex` · `devlum`
**Descriptive**            `coderank.dev` · `devprofile.io`
**Abstract/Brandable**     `ranqova` · `veltrix`
**Playful/Clever**         `forkfame` · `codewitch`
**Domain Hacks**           `cod.er` · `build.rs`
**Compound/Mashup**        `gitpulse` · `stackmark`
**Thematic TLD Play**      `dev.so` · `code.run`
**Suffix Family**          `coderdex` · `devissimo`
─────────────────────────────────────────
**Wildcards**              `primo.dev` · `lexos.dev`

Which direction resonates — or is there a word from any domain you want to explore?
```

3. Present exactly 3 response options (numbered, no prose):
   ```
   1. Pick archetypes (e.g. "1, 3, 5")
   2. Give me a seed word to explore
   3. None of these — show me different samples
   ```

4. **Rejection loop:** Track `rejectionCount`. On option 3, increment counter and regenerate Phase 2 with fresh samples from the same archetypes. After 3 consecutive rejections, force a pivot: "Let's try a different approach — give me 2 words you find interesting from any domain (a place, a brand, a concept)." Use those words as seed vocabulary for Deep Generation; proceed to Phase 3.

5. **Archetype cap:** Maximum 3 archetypes may be selected. If user selects more, respond: "Let's keep it focused — pick your top 3."

**Hard gate:** Do NOT proceed to Phase 3 until user has either (a) selected at least one archetype, (b) provided a seed word, or (c) triggered the forced seed-word pivot after 3 rejections.

**Reference files to load:** `generation-archetypes.md` (before generating samples)

---

## Phase 3: Deep Generation

Load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md` now (if not already loaded from Phase 2).

Apply the weighting rules from `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/brand-interview.md` against the brand profile. Generate **15–20 name candidates** across selected archetypes (max 3) + any seed vocabulary from Q7/pivot.

Load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/tld-catalog.md` now. (Archetypes 5 and 7 require it regardless of Mode; loading it unconditionally at this step avoids mid-generation gaps.)

**Suffix Family:** If selected, generate the full suffix family exploration block (see `generation-archetypes.md` Suffix Family section): one `-dex` cluster, one `-issimo` cluster, one ccTLD hack cluster — 3–4 names each.

Generate the full candidate list before any availability check. **No availability check yet.**

---

## Phase 4: Availability Check

**API Gate explanation runs HERE** — the user has names in front of them, so the explanation lands with context. Output before running scripts:

```
Before checking these [N] names — I'll use whichever API tier is configured:
- Cloudflare API → confirmed availability + pricing in real-time (best accuracy)
- Porkbun API → confirmed availability, good for .io (Cloudflare doesn't support .io)
- whois fallback → less reliable; .dev domains often show no DNS even when registered

Checking credentials now…
```

Check environment variables before running scripts:

```bash
[[ -n "$CF_API_TOKEN" ]] && echo "CF_API_TOKEN: set" || echo "CF_API_TOKEN: not set"
[[ -n "$CF_ACCOUNT_ID" ]] && echo "CF_ACCOUNT_ID: set" || echo "CF_ACCOUNT_ID: not set"
[[ -n "$PORKBUN_API_KEY" ]] && echo "PORKBUN_API_KEY: set" || echo "PORKBUN_API_KEY: not set"
[[ -n "$PORKBUN_SECRET" ]] && echo "PORKBUN_SECRET: set" || echo "PORKBUN_SECRET: not set"
```

- Both `CF_API_TOKEN` and `CF_ACCOUNT_ID` set → Tier 1 (Cloudflare)
- Both `PORKBUN_API_KEY` and `PORKBUN_SECRET` set → Tier 2 (Porkbun)
- Neither set → load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/api-setup.md`, show setup instructions, then proceed with Tier 3 (whois fallback)

Execute availability check (batch into groups of ≤20 if more than 20 candidates):

```bash
${CLAUDE_PLUGIN_ROOT}/skills/site-naming/scripts/check-domains.sh domain1.com domain2.io ... domainN.dev
```

Execute pricing lookup (always runs, no auth needed):

```bash
${CLAUDE_PLUGIN_ROOT}/skills/site-naming/scripts/get-prices.sh com io dev app co xyz icu
```

Parse check-domains.sh output (one line per domain):
- `available <domain> <price>` → ✅
- `taken <domain> na` → ❌
- `redemption <domain> na` → ⚠️ (recently expired, elevated price at recovery)
- `unknown <domain> na` → ❓

---

## Phase 5: Results

Load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/registrar-routing.md` now.

Format results using this structure — note the **Source column** (new). Emit the Top Picks block first, then one table per selected archetype (every candidate appears in its archetype's table, with taken shown as ❌):

```
## Wave [N] Results — [one-line project description]

**Top Picks**
✅ [name].[tld]   $[price]/yr  — [one-sentence rationale]
   [[Registrar] →]([registration_url])

### [Archetype Name]
| Name | Domain | Status | Price | Source |
|------|--------|--------|-------|--------|
| [name] | [domain.tld] | ✅/❌/⚠️/❓ | $[price]/yr | CF/Porkbun/whois/DNS |

### [Next Archetype Name]
| Name | Domain | Status | Price | Source |
|------|--------|--------|-------|--------|
| ... |
```

Source values: `CF` / `Porkbun` / `whois` / `DNS`

Show ⚠️ redemption domains with a note: "recently expired — may cost $80+ to recover at auction".

Generate registration links from registrar-routing.md for each ✅ domain.

### Conditional Spotlight

After the results table, compute a 6-point framework score for each ✅ candidate:

1. **Short enough to be a hashtag** — max 2 syllables ideally (Twitter, Slack, Figma) → 1 point
2. **The "click" moment** — a small insight when name meets product → 1 point
3. **Works in possession** — "my [Name]" sounds natural → 1 point
4. **Creates a social sharing sentence** — "Just checked my [Name] profile" works as a tweet → 1 point
5. **Unique enough to own search** — invented or rare word → 1 point
6. **Satisfying to say aloud** — rhythm, hard consonants, satisfying ending → 1 point

If any candidate scores ≥ 4, output a `---` separator and a deep single-name analysis for the highest-scoring candidate (if tied, pick the shortest domain):

- **The tweet:** exact tweet text a user would send
- **The question that spreads it:** the question people ask that spreads the brand
- **Product fit:** how name maps to the product's core mechanic
- **Cultural resonance:** gaming/dev culture or other community connection
- **The Notion pattern:** how it fits the repurposed-word brand archetype
- **SEO ownership:** why this name wins search
- **Works in every context:** "Check their X" / "my X card" / "I'm on X" / "According to X..."

### Write names.md

Write `names.md` to the current working directory:

```markdown
# Name Shortlist — [project description]
_Generated: [YYYY-MM-DD] | Mode: [mode] | Tone: [tone] | Direction: [direction]_

## Shortlisted
| Name | Price/yr | Status | Source | Rationale |
|------|----------|--------|--------|-----------|
| [name] | $[price] | ✅ available | [CF/Porkbun/whois] | [rationale from conversation] |

## Considered / Taken
| Name | Status | Source | Alternative |
|------|--------|--------|-------------|
| [name] | ❌ taken | [source] | [alternative if known] |
| [name] | ⚠️ redemption | [source] | recently expired — elevated price |

## Brand Interview
- Building: [Q1]
- Tone: [Q2 answer]
- Direction: [Q3 answer]
- Mode: [Q4 answer]
- Length: [Q5 answer]
- Constraints: [Q6 answer]
- Vocabulary: [Q7 answer]
```

Populate Shortlisted with the top 3–5 available names. Populate the Rationale column with the verbatim "Why" string from the conversation output.

### Closing Prompt (HARD REQUIREMENT)

This prompt MUST always appear after results — it is the Wave 2 trigger:

```
[N] of [Y] checked available. Want to go deeper on any of these, or start Wave 2?
```

---

## Phase 6: Wave 2+

Present wave output. Wait for the user's response.

**User selects specific names:** Add them to the Shortlisted table in names.md.

**User requests Wave 2:** Load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md` and `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/brand-interview.md` (needed for weighting rules after context compaction). Generate 20+ new candidates refined toward preferences stated ("more like X", "avoid Y"). Repeat Phases 3–5. No candidate from Wave 2 may repeat a Wave 1 name.

**User requests Wave 3 / "check more TLDs" / "deep scan":** Output a scope warning first:

```
Wave 3 will scan 1,441+ TLDs for your top 5 base words — this may take several minutes. Proceed?
```

Wait for confirmation. Then load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md` and follow the **Wave 3** section. Apply all 10 techniques exhaustively to every synonym of the core concept.

**All top picks are taken:** Load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md` and follow the **Track B** section. Run the 4 fallback strategies in order: close variations → synonym exploration → creative reconstruction → domain hacks. Stop as soon as 5+ available options are found. If all 4 strategies complete with fewer than 5 available, show what was found and offer: "Want to broaden constraints, or start fresh with a different direction?"

---

## Phase 7: Post-Shortlist

After the user confirms their final shortlist, load `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/post-shortlist.md`. Work through each section in order: pronunciation test, social handle check, trademark check, registration strategy, names.md update. Report findings after each section before proceeding to the next.

---

## Reference Files

| File | Load when |
|------|-----------|
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/brand-interview.md` | Before Q1 (Phase 1), personal brand flow (Phase 1), or Wave 2 (Phase 6 — context compaction safeguard) |
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/generation-archetypes.md` | Before Direction Round (Phase 2), Deep Generation (Phase 3), Wave 3, or Track B |
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/tld-catalog.md` | Before Deep Generation (Phase 3) — always; archetypes 5 and 7 require it regardless of Mode |
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/registrar-routing.md` | When formatting results (Phase 5) |
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/api-setup.md` | When no API env vars detected (Phase 4) |
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/references/post-shortlist.md` | After user confirms final shortlist (Phase 7) |

## Scripts

| Script | Purpose |
|--------|---------|
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/scripts/check-domains.sh` | 3-tier checker: CF → Porkbun → whois (.io routes to Porkbun automatically) |
| `${CLAUDE_PLUGIN_ROOT}/skills/site-naming/scripts/get-prices.sh` | Porkbun no-auth TLD pricing, always runs |

Both scripts must be executable: `chmod +x ${CLAUDE_PLUGIN_ROOT}/skills/site-naming/scripts/*.sh`

## Example

See `examples/example-session.md` for a complete run: developer productivity SaaS → 7-question interview → Direction Round → Deep Generation → results with Spotlight → final names.md.

Attribution

neotherapperneotherapper
View sourceSee grades on GitHubMore from neotherapper →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1087401 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

697551 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →