# Domain Search

> Brand name generator + domain availability checker via whois. Trigger: /domain-search, 'domain search', 'brand name', 'find domain', '도메인 검색', '브랜드 네임', '도메인 찾아줘', 'ドメイン検索', 'ブランド名', 'ドメイン探して', '域名搜索', '品牌名', '找域名'

- Skill: `bluei98/domain-search` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add bluei98/domain-search`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bluei98/domain-search/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: bluei98 (https://skillmd.com/u/bluei98)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bluei98/domain-search

---


# Domain Search — Execution Skill

> 브랜드/사이트 설명을 입력받아 브랜드 네임을 제안하고, whois 기반으로 도메인 가용성을 실시간 체크합니다.

## WHEN TRIGGERED — EXECUTE IMMEDIATELY

**DO NOT just display documentation. EXECUTE immediately.**

### Pre-flight: Gmail 연동 체크 (--email 플래그 감지 시)

`--email` 플래그가 있으면, Phase 1 시작 전에 Gmail MCP 도구 사용 가능 여부를 확인한다:

1. `mcp__claude_ai_Gmail__gmail_get_profile` 도구를 호출하여 연동 상태 확인
2. **성공 시**: 이메일 주소 확인 → Phase 1 진행
3. **실패 시** (도구 없음 / 인증 오류 / MCP 미설정):
   - **현재 활성 로케일**(입력 언어 감지 결과, 없으면 `en`) 로 안내 메시지 출력 후 **중단**
   - 메시지는 `references/i18n.md` 의 `gmail_not_configured_title` + `gmail_not_configured_body` 를 사용
   - 예 (ko):
   ```
   ⚠️ Gmail 연동이 필요합니다.

   도메인 검색 결과를 이메일로 발송하려면 Gmail MCP 서버가 설정되어 있어야 합니다.

   설정 방법:
   1. Claude Code 설정에서 Gmail MCP 서버를 연동해주세요
   2. Google 계정 인증을 완료해주세요
   3. 연동 완료 후 다시 /domain-search 명령을 실행해주세요

   💡 이메일 없이 검색만 하려면 --email 플래그를 제거하고 다시 실행하세요.
   ```
   - 다른 로케일(en/ja/zh) 은 동일한 의미로 해당 언어 번역 사용 (3단계 설정 방법 + 💡 힌트 포함)
   - **도메인 검색을 진행하지 않는다** (Gmail 연동 실패 상태에서 검색을 진행하면 결과를 발송할 수 없어 사용자 의도와 불일치)

### Main Flow

1. Parse `$ARGUMENTS` for description and flags
2. If `--email` detected → Pre-flight Gmail check (위 참조)
3. If no arguments → call `AskUserQuestion` tool (활성 로케일에 맞춰 번역):
   ```
   어떤 브랜드/사이트의 도메인을 찾고 있나요?

   예시:
   1. "AI 기반 번역 서비스" — 서비스 설명으로 네이밍
   2. "반려동물 건강관리 앱 --style short" — 짧은 이름 스타일
   3. "프리랜서 매칭 플랫폼 --tld io,dev --email user@gmail.com" — 결과를 이메일로 발송
   4. 직접 입력
   ```
   - 로케일 감지 전이므로 초기 질문은 **시스템 감지 + 사용자 기존 대화 언어** 기준으로 번역 (`en` / `ko` / `ja` / `zh`)
   - 예시 텍스트의 브랜드 설명("AI 번역 서비스" 등)도 로케일에 맞게 자연스럽게 현지화
4. Extract brand description → Begin Phase 1 immediately (여기서부터 로케일 확정 후 i18n 치환 적용)

## Language Detection & Output Locale

### Output Locale 결정 (라벨/메시지 언어)

**라벨이 감지 언어로 나와야 하는 모든 출력** (결과 테이블, 이메일 본문/제목, 진행 메시지, 에러 메시지) 은 활성 `locale` 로 치환한다.

결정 순서:
1. `--locale <en|ko|ja|zh>` 플래그가 있으면 그 값 사용 (명시적 override)
2. 없으면 사용자 입력 언어 감지:
   - 한국어 → `locale = ko`
   - 일본어 → `locale = ja`
   - 중국어 간체/번체 → `locale = zh`
   - 그 외 (영어 및 기타) → `locale = en` (기본 fallback)
3. 감지 결과가 애매하면 `en` 사용

### 라벨 치환

모든 출력 템플릿은 `{i18n.KEY}` placeholder 를 사용한다. 실행 시:

1. `${SKILL_DIR}/references/i18n.md` 의 라벨 매핑 테이블 참조
2. 현재 `locale` 컬럼의 값으로 치환
3. 키가 누락되면 `en` 값으로 fallback + 경고 로그

**주의**: 브랜드명 생성 언어(`--lang`) 와 **출력 로케일**(`--locale`) 은 완전 별개:
- `--lang ko` → 한국어 의미/발음 기반 브랜드명 (출력 라벨은 감지 로케일)
- `--locale en` → 라벨은 영어 (브랜드명은 `--lang` 그대로)

예시:
- 한국 사용자가 "AI 번역 서비스 도메인 찾아줘" → locale=ko, naming_lang=en (기본)
- 영어 사용자가 "Find a domain for Japanese food delivery" → locale=en, naming_lang=en
- 일본 사용자가 "ドメイン検索 AI 翻訳" → locale=ja, naming_lang=en
- 명시: `/domain-search AI translation --locale ko` → locale=ko (override)

## Configuration Defaults

```yaml
count: 10                          # --count override
style: "mixed"                     # --style override
lang: "en"                         # --lang override (naming language)
locale: "auto"                     # --locale override (output labels)
                                   #   auto = detect; fallback en if not ko/ja/zh
default_tlds:
  - com
  - co.kr
  - kr
  - co.jp
  - jp
```

## Flag Parsing

Parse from `$ARGUMENTS`:

| Flag | Variable | Default |
|------|----------|---------|
| `--tld <list>` | `extra_tlds` | none (added to defaults) |
| `--count <n>` | `name_count` | 10 |
| `--style <type>` | `naming_style` | "mixed" |
| `--lang <ko\|en\|both>` | `naming_lang` | "en" |
| `--locale <en\|ko\|ja\|zh>` | `output_locale` | `auto` (감지 → 한/일/중 아니면 `en`) |
| `--email <address>` | `send_email` | none (미지정 시 이메일 미발송) |

---

## Phase 1: Requirements Analysis (요구사항 분석)

**EXECUTE these steps:**

### Step 1.1: Extract Brand Elements

From the user's description, identify:

```yaml
analysis:
  industry: "{업종/분야}"
  target_market: "{국가/지역/언어권}"
  core_value: "{브랜드 핵심 메시지}"
  competitors: "{유사 서비스 — 알려진 경우}"
  tone: "{전문적/친근한/혁신적/고급스러운}"
  keywords: ["{keyword1}", "{keyword2}", "{keyword3}"]
```

### Step 1.2: Determine Naming Strategy

Based on `--style` flag or auto-detect:

Reference: `${SKILL_DIR}/references/naming-strategies.md`

| Style | 특징 | 예시 |
|-------|------|------|
| `short` | 4-6자, 임팩트 | Uber, Zoom, Bolt |
| `compound` | 두 단어 조합 | YouTube, PayPal |
| `creative` | 신조어/변형 | Spotify, Flickr |
| `descriptive` | 서비스 직접 설명 | Booking, Indeed |
| `mixed` | 모든 스타일 혼합 | (기본값) |

### Step 1.3: Build TLD List

```
final_tlds = default_tlds + extra_tlds (from --tld flag)
```

Default: `com`, `co.kr`, `kr`, `co.jp`, `jp`

**OUTPUT to user**: Brief analysis summary (2-3 lines)

---

## Phase 2: Brand Name Generation (브랜드 네임 생성)

**EXECUTE these steps:**

### Step 2.1: Generate Names

Generate `{count}` brand names following these rules:

**Mandatory Rules**:
- 도메인 네임으로 적합 (특수문자 없음, 하이픈 최소화)
- 소문자 영문 기준
- 기존 유명 브랜드와 중복 회피
- 상표권 충돌 가능성 낮은 이름 우선
- 각 이름에 간단한 의미/유래 설명 포함

**Style-Specific Rules**:

Reference: `${SKILL_DIR}/references/naming-strategies.md` for detailed rules per style

**`--lang ko` 처리**:
- 한국어 발음 기반 로마자 표기
- 한국어에서 의미 있는 단어 조합
- 예: "하늘" → "haneul", "두리" → "duri"

**`--lang both` 처리**:
- 영어 이름 + 한국어 발음 기반 이름 혼합
- count의 절반씩 배분

### Step 2.2: Validate Names

각 이름 체크:
- [ ] 길이 적절 (3-15자)
- [ ] 발음 용이
- [ ] 부정적 의미 없음 (주요 언어권)
- [ ] 기존 유명 브랜드와 구별됨
- [ ] 도메인 형식 유효 (알파벳+숫자, 하이픈은 중간만)

**OUTPUT to user**: 생성된 이름 목록 (번호 + 이름 + 의미)

---

## Phase 3: Domain Availability Check (도메인 가용성 체크)

**EXECUTE these steps:**

### Step 3.1: Run Whois Check Script

Reference: `${SKILL_DIR}/references/whois-patterns.md` for TLD-specific parsing rules

> **⚠️ Korean Domain Gotcha**: `.kr`/`.co.kr` 판별 시 "등록되어 있지 않습니다"를 "등록일"보다 **반드시 먼저** 체크해야 합니다.
> "등록"이 두 문자열 모두에 포함되어 있으므로 순서가 바뀌면 AVAILABLE을 REGISTERED로 오판합니다.

Use the check script (recommended — rate limiting, retry 내장): `${SKILL_DIR}/scripts/check-domain.sh`

```bash
# 실행 방법
bash "${SKILL_DIR}/scripts/check-domain.sh" "name1,name2,name3" "com,co.kr,kr,co.jp,jp"
```

**OR** inline whois check if script unavailable:

```bash
check_domain() {
  local domain="$1"
  local tld="$2"
  local res
  res=$(timeout 10 whois "$domain" 2>&1)
  local ec=$?

  if [ $ec -ne 0 ] || echo "$res" | grep -qi "getaddrinfo.*not known\|connection refused"; then
    echo "UNKNOWN"
    return
  fi

  case "$tld" in
    co.kr|kr)
      if echo "$res" | grep -q "등록되어 있지 않습니다\|was not found"; then
        echo "AVAILABLE"
      elif echo "$res" | grep -qi "등록일\|Registered Date"; then
        echo "REGISTERED"
      else
        echo "UNKNOWN"
      fi
      ;;
    jp|co.jp)
      if echo "$res" | grep -q "No match!!"; then
        echo "AVAILABLE"
      elif echo "$res" | grep -qi "\[Domain Name\]"; then
        echo "REGISTERED"
      else
        echo "UNKNOWN"
      fi
      ;;
    com|net|org|info|biz)
      if echo "$res" | grep -qi "No match for"; then
        echo "AVAILABLE"
      elif echo "$res" | grep -qi "^[[:space:]]*Domain Name:"; then
        echo "REGISTERED"
      else
        echo "UNKNOWN"
      fi
      ;;
    app|dev)
      if echo "$res" | grep -qi "getaddrinfo.*not known"; then
        local dns_res
        dns_res=$(timeout 5 host "$domain" 2>&1)
        if echo "$dns_res" | grep -q "has address\|has IPv6"; then
          echo "REGISTERED"
        else
          echo "LIKELY_AVAILABLE"
        fi
      elif echo "$res" | grep -qi "Domain Name:"; then
        echo "REGISTERED"
      elif echo "$res" | grep -qi "NOT FOUND\|No match"; then
        echo "AVAILABLE"
      else
        echo "UNKNOWN"
      fi
      ;;
    *)
      if echo "$res" | grep -qi "No match\|NOT FOUND\|No entries found\|No Data Found\|Domain not found\|AVAILABLE\|is free"; then
        echo "AVAILABLE"
      elif echo "$res" | grep -qi "^[[:space:]]*Domain Name:\|Creation Date:\|Registered Date\|created:"; then
        echo "REGISTERED"
      else
        echo "UNKNOWN"
      fi
      ;;
  esac
}
```

### Step 3.2: Rate Limiting

```yaml
execution_rules:
  delay_between_queries: 1s     # whois 서버 부하 방지
  batch_size: 5                 # 5개 조회 후 2초 추가 대기
  timeout_per_query: 10s
  max_retries: 1                # 실패 시 1회 재시도
```

### Step 3.3: Collect Results

Build results matrix: `name × tld → status`

Status values:
- `AVAILABLE` → ✅
- `REGISTERED` → ❌
- `LIKELY_AVAILABLE` → ✅* (DNS fallback, .app/.dev)
- `UNKNOWN` → ⚠️

**OUTPUT to user**: Results table (Phase 4 format)

---

## Phase 4: Results & Recommendations (결과 출력)

### Step 4.1: Round 1 Results

```markdown
## Domain Search Results

### 브랜드 설명
> {사용자 입력 요약}

### 1차 제안

| # | 브랜드명 | 의미 | .com | .co.kr | .kr | .co.jp | .jp |
|---|---------|------|:----:|:------:|:---:|:------:|:---:|
| 1 | {name} | {meaning} | ✅/❌ | ✅/❌ | ✅/❌ | ✅/❌ | ✅/❌ |
```

### Step 4.2: Round 2 Trigger

```yaml
round_2_trigger:
  condition: "1라운드에서 .com 가용 이름이 2개 이하 (< 3개)"
  action: "더 독창적/신조어 이름 {count}개 추가 생성"
  strategy: "신조어, 언어 조합, 철자 변형 → .com 가용 확률 높임"
```

If triggered, repeat Phase 2-3 with `creative` style emphasis, then output:

```markdown
### 2차 제안 (독창적 이름 — .com 가용 중심)

| # | 브랜드명 | 의미 | .com | .co.kr | .kr | .co.jp | .jp |
|---|---------|------|:----:|:------:|:---:|:------:|:---:|
```

### Step 4.3: Top 3 Recommendations

Rank by scoring (9점 만점):
- `.com` 가용 (+3점)
- 주요 TLD 2개+ 가용 (+2점)
- 이름 길이 7자 이하 (+1점)
- 발음 용이성 (+1점)
- 의미 명확성 (+1점)
- 상표권 충돌 가능성 낮음 (+1점)

```markdown
### 추천 TOP 3
1. **{name}.com** — {추천 이유: 의미, 길이, TLD 가용성 종합}
2. **{name}.{tld}** — {추천 이유}
3. **{name}.{tld}** — {추천 이유}

✅ = 구매 가능 (Available)
❌ = 이미 등록됨 (Registered)
✅* = DNS 기반 가용 추정 (.app 등 whois 접근 불가 TLD)
⚠️ = 확인 불가 (Check Failed)
```

---

## Phase 5: Email Delivery (이메일 발송) ✉️

**조건**: `--email <address>` 플래그가 지정된 경우에만 실행

### Step 5.1: Build HTML Email

Phase 4의 결과 + Phase 6의 AI 비용 요약을 HTML 이메일로 변환한다.

Reference: `${SKILL_DIR}/assets/templates/email-template.md` for HTML structure

**이메일 구성**:
- **제목**: `{i18n.email_subject}` — `{summary}` 는 브랜드 설명 요약 (30자 이내 / 영어는 60자 이내). 활성 로케일에 맞춰 치환
- **형식**: `text/html` (contentType)
- **본문 구조**:
  1. 헤더: 제목 + 브랜드 설명 blockquote
  2. 분석 요약: 업종, 타겟, 톤
  3. 1차 제안 테이블 (HTML table with ✅/❌)
  4. 2차 제안 테이블 (Round 2 진행 시)
  5. 추천 TOP 3 (하이라이트 카드)
  6. **AI 비용 요약** (Phase 6 데이터)
  7. 범례 + 조회 시각 + 참고사항

**HTML 스타일링 규칙**:
```yaml
email_style:
  font: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif"
  max_width: "900px"
  table:
    border_collapse: collapse
    header_bg: "#f8fafc"
    border: "1px solid #e2e8f0"
    padding: "8px"
  highlight_row:
    bg: "#ecfdf5"  # .com 가용 이름 행에 적용
    bold: true
  top3_card:
    bg: "#f0fdf4"
    border: "1px solid #86efac"
    border_radius: "8px"
    padding: "16px"
  cost_section:
    bg: "#fefce8"  # 노란 배경
    border: "1px solid #fde047"
    border_radius: "8px"
    padding: "12px 16px"
  status_symbols:
    available: "✅"
    registered: "❌"
    likely: "✅*"
    unknown: "⚠️"
```

### Step 5.2: Create Draft & Send Email

**자동 발송 2단계**: 초안 생성 → Gmail API로 즉시 발송

#### Step 5.2.1: 초안 생성

`mcp__claude_ai_Gmail__gmail_create_draft` 도구로 이메일 초안을 생성한다:
- `to`: `--email` 플래그의 이메일 주소
- `subject`: `{i18n.email_subject}` (활성 로케일 기준, `{summary}` 치환)
- `body`: HTML 본문 (Phase 6 AI 비용 요약 포함)
- `contentType`: `text/html`

반환된 `draftId` 값을 기록한다.

#### Step 5.2.2: 자동 발송

> Gmail MCP에 `gmail_send_draft` 도구가 없으므로, Gmail REST API를 `curl`로 직접 호출하여 발송한다.

**발송 스크립트**:
```bash
# 1. Gmail MCP의 OAuth 토큰 추출
#    Claude Code의 Gmail MCP 연동은 OAuth2 토큰을 사용.
#    토큰 파일 위치: ~/.claude/mcp-tokens 또는 MCP 인증 캐시

# 2. Gmail API drafts.send 호출
curl -s -X POST \
  "https://gmail.googleapis.com/gmail/v1/users/me/drafts/send" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d "{\"id\": \"${DRAFT_ID}\"}"
```

**실행 절차**:
1. `gmail_create_draft` 호출 → `draftId` 획득
2. `gmail_get_profile` 응답의 인증 컨텍스트에서 access token 확인
3. 토큰을 사용하여 `curl`로 `drafts/send` API 호출
4. 응답 확인:
   - 성공 (200): 발송 완료
   - 실패: Fallback (Step 5.3)으로 전환

**⚠️ 토큰 접근 불가 시**: OAuth 토큰에 직접 접근할 수 없는 경우가 대부분이므로,
아래 **Fallback 전략**을 우선 사용한다:

#### 실제 권장 발송 방식 (Primary)

MCP 도구만으로는 자동 발송이 불가하므로, **초안 생성 후 사용자에게 원클릭 발송 링크를 제공**한다:

1. `gmail_create_draft` 호출 → `draftId`, Gmail 초안 URL 획득
2. 사용자에게 알림 (활성 로케일에 맞춰 번역, `{i18n.email_ready}` 참조):
   ```
   ✉️ 도메인 검색 결과 이메일이 준비되었습니다.      ← {i18n.email_ready}
   📬 받는 사람: {email_address}
   🔗 바로 발송하기: {gmail_draft_compose_link}
      ↑ 클릭 후 '보내기' 버튼만 누르면 발송됩니다.
   ```
   - 영어/일본어/중국어 로케일에서는 위 형식을 해당 언어로 번역해서 출력

### Step 5.3: Fallback

이메일 초안 생성 실패 시에도 Phase 4의 결과는 이미 대화에 출력되어 있으므로 데이터 손실 없음.
```
⚠️ 이메일 준비에 실패했습니다. 결과는 위 대화에서 확인하실 수 있습니다.
원인: {error_message}
```

---

## Phase 6: AI Cost Tracking (AI 비용 추적) 💰

**조건**: 항상 실행 (모든 Phase 완료 후)

### Step 6.1: Track AI Requests

스킬 실행 중 발생한 모든 AI 요청을 Phase별로 추적한다.

**추적 대상**:
```yaml
tracked_operations:
  phase_1_analysis:
    type: "요구사항 분석 + 키워드 추출"
    estimated_tokens:
      input: ~500
      output: ~300
  phase_2_naming:
    type: "브랜드 네임 생성 ({count}개)"
    estimated_tokens:
      input: ~800
      output: ~1500
  phase_2_round2:
    type: "2차 네임 생성 (Round 2 시에만)"
    estimated_tokens:
      input: ~600
      output: ~1200
    conditional: true
  phase_3_whois:
    type: "whois 결과 분석/판별"
    note: "whois 자체는 bash 명령어로 API 비용 없음"
    estimated_tokens:
      input: 0
      output: 0
  phase_4_scoring:
    type: "점수 산정 + TOP 3 추천 + 결과 정리"
    estimated_tokens:
      input: ~1000
      output: ~2000
  phase_5_email:
    type: "HTML 이메일 생성"
    estimated_tokens:
      input: ~1500
      output: ~3000
    conditional: true  # --email 시에만
  gmail_api:
    type: "Gmail MCP 호출 (get_profile, create_draft)"
    note: "MCP 도구 호출 — 토큰 비용 포함"
    estimated_tokens:
      input: ~200
      output: ~100
    conditional: true  # --email 시에만
```

### Step 6.2: Calculate Cost

**비용 산정 기준** (Claude API 기준, 2025년 가격):

```yaml
pricing:
  claude_opus:
    input: 15.00    # $/1M tokens
    output: 75.00   # $/1M tokens
  claude_sonnet:
    input: 3.00     # $/1M tokens
    output: 15.00   # $/1M tokens
  claude_haiku:
    input: 0.25     # $/1M tokens
    output: 1.25    # $/1M tokens
```

**비용 계산 공식**:
```
total_input_tokens = sum of all phase input tokens
total_output_tokens = sum of all phase output tokens
cost_input = total_input_tokens / 1,000,000 * price_per_1M_input
cost_output = total_output_tokens / 1,000,000 * price_per_1M_output
total_cost = cost_input + cost_output
```

**중요**: 이 스킬은 Claude Code 내에서 실행되므로 실제 별도 API 호출 비용이 발생하지 않을 수 있다.
"만약 API로 동일 작업을 수행했다면" 이라는 가정 하에 추정 비용을 계산하여 참고용으로 제공한다.

### Step 6.3: Output Cost Summary

Phase 4 결과 출력 후, 마지막에 비용 요약을 추가:

```markdown
---
### 💰 AI 비용 추정 (API 사용 시 예상 비용)

| Phase | 작업 | Input Tokens | Output Tokens | 비용 (USD) |
|-------|------|:------------:|:-------------:|:----------:|
| 1 | 요구사항 분석 | ~500 | ~300 | $0.03 |
| 2 | 네임 생성 (10개) | ~800 | ~1,500 | $0.12 |
| 2+ | 2차 네임 생성 | ~600 | ~1,200 | $0.10 |
| 4 | 점수/추천/결과 | ~1,000 | ~2,000 | $0.17 |
| 5 | 이메일 생성 | ~1,500 | ~3,000 | $0.25 |
| — | Gmail API 호출 | ~200 | ~100 | $0.01 |
| **합계** | | **~4,600** | **~8,100** | **$0.68** |

> 참고: Claude Sonnet 기준 추정치입니다. 실제 비용은 모델, 프롬프트 길이, 응답 복잡도에 따라 달라집니다.
> whois 조회는 bash 명령어로 실행되므로 AI 비용에 포함되지 않습니다.
```

### Step 6.4: Include in Email

`--email` 플래그 사용 시, 이메일 HTML에도 비용 요약 섹션을 포함한다:

```html
<!-- AI Cost Summary -->
<div style="background: #fefce8; border: 1px solid #fde047; border-radius: 8px; padding: 12px 16px; margin: 16px 0;">
<h3 style="margin-top: 0;">💰 AI 비용 추정 (API 사용 시)</h3>
<table style="border-collapse: collapse; width: 100%; font-size: 13px;">
<!-- cost table rows -->
</table>
<p style="font-size: 12px; color: #6b7280; margin-bottom: 0;">
Claude Sonnet 기준 추정치. whois 조회는 bash 명령어로 AI 비용 미포함.
</p>
</div>
```

---

## Error Handling

| Error | Recovery |
|-------|----------|
| whois timeout | 1회 재시도 → ⚠️ 표시 |
| whois rate limited | 5초 대기 후 재시도 |
| whois server down | ⚠️ 표시, DNS fallback 시도 |
| Unknown TLD | "해당 TLD 지원 불가" 안내 |
| All .com taken (Round 1) | Round 2 자동 트리거 |
| Gmail MCP 미설정 (--email) | 연동 안내 출력 후 **중단** (검색 미진행) |
| Gmail 인증 만료 (--email) | 재인증 안내 출력 후 **중단** |
| Gmail 초안 생성 실패 | 대화 내 결과 참조 안내 (Phase 4 출력 보존) |
| curl 자동 발송 실패 | 초안 유지 → 초안 링크로 수동 발송 안내 |
| OAuth 토큰 접근 불가 | 초안 생성만 수행 → 초안 링크 제공 |

Gmail Pre-flight 실패 감지 방법:
- `mcp__claude_ai_Gmail__gmail_get_profile` 호출 실패 → 도구 미등록 (MCP 미설정)
- 호출은 성공하나 인증 오류 응답 → 토큰 만료 (재인증 필요)
- 호출 성공 + 프로필 반환 → 정상 (Phase 1 진행)

## Tool Usage

| Tool | Purpose |
|------|---------|
| `Bash` | whois 조회, DNS lookup, 스크립트 실행 |
| `AskUserQuestion` | 인자 없을 때 설명 입력 요청 |
| `WebSearch` | (선택) 기존 브랜드 중복 확인 |
| `mcp__claude_ai_Gmail__gmail_get_profile` | (--email) Gmail 연동 상태 확인 |
| `mcp__claude_ai_Gmail__gmail_create_draft` | (--email) HTML 이메일 초안 생성 |

## Reference Files

- `${SKILL_DIR}/references/naming-strategies.md` — 네이밍 전략 상세 가이드
- `${SKILL_DIR}/references/whois-patterns.md` — TLD별 whois 응답 파싱 패턴
- `${SKILL_DIR}/references/ai-cost-reference.md` — AI 모델별 토큰 단가표

## Scripts

- `${SKILL_DIR}/scripts/check-domain.sh` — 도메인 가용성 체크 스크립트

## Boundaries

**Will:**
- 브랜드 설명 기반 창의적 네임 제안
- whois 실시간 도메인 가용성 확인
- 기본 5개 TLD + 사용자 추가 TLD 체크
- 최적 조합 추천 및 이유 설명
- AI 비용 추정 (API 사용 시 예상 비용) 제공
- 이메일 초안 생성 (--email 시)

**Won't:**
- 도메인 구매/등록 대행
- 상표권 법률 자문 (참고 의견만)
- whois 개인정보 조회/노출
- 도메인 가격 비교
- 이메일 직접 자동 발송 (Gmail MCP에 send 도구 미제공 — 초안 생성 + 원클릭 발송 링크)

