# LLMHost.com → LLMHosts.com Rename Implementation Plan

> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.

**Goal:** Rename all references from LLMHost.com to LLMHosts.com across the entire codebase, GitHub repo, and supporting infrastructure while preserving the `llmhosts` pip package name.

**Architecture:** Three-pass find-and-replace strategy across ~100 files. Phase 1 handles the GitHub repo rename (1 API call). Phase 2 updates git config. Phases 3-8 handle file content changes grouped by category. Phase 9 renames the workspace file. Phase 10 commits and pushes. Folder rename is deferred to user action after the session.

**Tech Stack:** git, GitHub API (gh), sed/ruff for validation, pytest for regression testing

---

### Task 1: Rename GitHub Repo

**Files:**
- Modify: `.git/config` (git remote URL, updated by git command)

**Step 1: Verify current rate limit**

Run: `gh api rate_limit --jq '.rate.remaining'`
Expected: > 0

**Step 2: Rename the repo via API**

```bash
gh api -X PATCH repos/LookNoHandsMom/LLMHost.com -f name=LLMHosts.com
```

Expected: JSON response with `"name": "LLMHosts.com"` and `"full_name": "LookNoHandsMom/LLMHosts.com"`

**Step 3: Update git remote URL**

```bash
git remote set-url origin https://github.com/LookNoHandsMom/LLMHosts.com.git
```

**Step 4: Verify remote**

Run: `git remote -v`
Expected: Both lines show `https://github.com/LookNoHandsMom/LLMHosts.com.git`

**Step 5: Verify API access to new repo name**

Run: `gh api repos/LookNoHandsMom/LLMHosts.com --jq .full_name`
Expected: `LookNoHandsMom/LLMHosts.com`

---

### Task 2: Rename Core Project Files (CLAUDE.md, README, AGENTS, CONTEXT)

**Files:**
- Modify: `CLAUDE.md`
- Modify: `README.md`
- Modify: `AGENTS.md`
- Modify: `CONTEXT.md`
- Modify: `CONTRIBUTING.md`
- Modify: `SECURITY.md`
- Modify: `CODE_OF_CONDUCT.md`

**Step 1: Replace domain references**

In each file, replace all occurrences:
- `LLMHost.com` → `LLMHosts.com` (domain and repo name)
- `brendon@llmhost.com` → `brendon@llmhosts.com` (email)
- `LookNoHandsMom/LLMHost.com` → `LookNoHandsMom/LLMHosts.com` (repo)

For brand name references (in README, AGENTS, CONTEXT, CONTRIBUTING, SECURITY):
- `LLMHost` → `LLMHosts` (only where it's the brand name, NOT the package name `llmhosts`)

**Key rule:** Case-sensitive. `llmhosts` (lowercase, package name) must NEVER be changed. Only `LLMHost` (PascalCase, brand) changes to `LLMHosts`.

**Step 2: Verify no `llmhosts` (lowercase) was accidentally changed**

Run: `grep -n "llmhosts" CLAUDE.md README.md AGENTS.md CONTEXT.md`
Expected: Only the domain/email references (llmhosts.com) should match, never `pip install llmhostss` or `import llmhosts`.

**Step 3: Run tests to verify nothing is broken**

Run: `pytest tests/ -x -q`
Expected: All 301 tests pass (this is a content-only change, tests should be unaffected)

---

### Task 3: Rename pyproject.toml and Build Config

**Files:**
- Modify: `pyproject.toml`
- Modify: `.env.example`
- Modify: `.gitignore`

**Step 1: Update pyproject.toml URLs and metadata**

In `pyproject.toml`, replace:
- `LLMHost.com` → `LLMHosts.com` (in URLs, homepage, repository, changelog)
- `LookNoHandsMom/LLMHost.com` → `LookNoHandsMom/LLMHosts.com` (repo URL)

Do NOT change:
- `name = "llmhost"` (package name stays)
- Any `llmhosts` references in scripts, entry points, or package config

**Step 2: Update .env.example**

Replace any `LLMHost.com` → `LLMHosts.com` domain references.

**Step 3: Update .gitignore**

Replace any `LLMHost.com` → `LLMHosts.com` references.

**Step 4: Verify package build still works**

Run: `python -c "import llmhost; print(llmhost.__version__)"`
Expected: Prints version without error

---

### Task 4: Rename GitHub Config Files

**Files:**
- Modify: `.github/CODEOWNERS`
- Modify: `.github/FUNDING.yml`
- Modify: `.github/seed-issues.sh`
- Modify: `.github/ISSUE_TEMPLATE/config.yml`
- Modify: `.github/dependabot.yml` (check, may not need changes)

**Step 1: Update all .github/ files**

In each file, replace:
- `LLMHost.com` → `LLMHosts.com`
- `LookNoHandsMom/LLMHost.com` → `LookNoHandsMom/LLMHosts.com`
- `LLMHost` → `LLMHosts` (brand name only)

**Step 2: Verify YAML validity**

Run: `python -c "import yaml; yaml.safe_load(open('.github/ISSUE_TEMPLATE/config.yml'))"`
Expected: No error

---

### Task 5: Rename Tools Scripts

**Files:**
- Modify: `tools/github-cleanup.py`
- Modify: `tools/seed-github-issues.py`

**Step 1: Update REPO constants**

In both files, the `REPO` constant needs updating:
- `"repos/LookNoHandsMom/LLMHost.com"` → `"repos/LookNoHandsMom/LLMHosts.com"`

**Step 2: Update any other brand references**

Search each file for `LLMHost` and update to `LLMHosts` where it's a brand reference.

**Step 3: Verify scripts parse correctly**

Run: `python -c "import ast; ast.parse(open('tools/github-cleanup.py').read())"`
Run: `python -c "import ast; ast.parse(open('tools/seed-github-issues.py').read())"`
Expected: No error

---

### Task 6: Rename Hive State Files

**Files:**
- Modify: `.hive/config.yaml`
- Modify: `.hive/identity.md`
- Modify: `.hive/soul.md`
- Modify: `.hive/architecture.md`
- Modify: `.hive/capabilities.md`
- Modify: `.hive/constraints.md`
- Modify: `.hive/evolution-log.md`
- Modify: `.hive/memory/decisions.md`
- Modify: `.hive/memory/incidents.md`
- Modify: `.hive/memory/patterns.md`

**Step 1: Update all .hive/ files**

In each file, replace:
- `LLMHost.com` → `LLMHosts.com`
- `LookNoHandsMom/LLMHost.com` → `LookNoHandsMom/LLMHosts.com`
- `LLMHost` → `LLMHosts` (brand name references only)

**Step 2: Verify YAML validity for config**

Run: `python -c "import yaml; yaml.safe_load(open('.hive/config.yaml'))"`
Expected: No error

---

### Task 7: Rename Cursor Rules

**Files:**
- Modify: `.cursor/rules/project-context.mdc`
- Modify: `.cursor/rules/architecture-decisions.mdc`
- Modify: `.cursor/rules/coding-standards.mdc`
- Modify: `.cursor/rules/knowledge-sync.mdc`
- Modify: `.cursor/rules/sync-completeness.mdc`
- Modify: `.cursor/rules/evolution-mindset.mdc`
- Modify: `.cursor/rules/debate-protocol.mdc`

**Step 1: Update all .cursor/rules/ files**

In each file, replace:
- `LLMHost.com` → `LLMHosts.com`
- `LLMHost` → `LLMHosts` (brand name references)

---

### Task 8: Rename Docker and Deployment Files

**Files:**
- Modify: `docker-compose.yml`
- Modify: `docker-compose.prod.yml`
- Modify: `Dockerfile.dev`
- Modify: `.docker/entrypoint.sh`
- Modify: `contrib/Caddyfile`
- Modify: `contrib/llmhost.service`
- Modify: `docs/deployment/docker-production.md`
- Modify: `docs/deployment/vps-guide.md`

**Step 1: Update Docker and deployment files**

In each file, replace:
- `LLMHost.com` → `LLMHosts.com`
- `ghcr.io/looknohandsmom/llmhost.com` → `ghcr.io/looknohandsmom/llmhosts.com` (if present)
- `LLMHost` → `LLMHosts` (brand name in comments only)

Do NOT change:
- Container names using `llmhosts` (lowercase)
- Service names using `llmhosts`
- Package install commands (`pip install llmhosts`)

---

### Task 9: Rename Deferred Blocker Files

**Files:**
- Modify: `deferred/P0-github-account-flag.md`
- Modify: `deferred/P1-branch-protection.md`
- Modify: `deferred/P1-github-project-board.md`
- Modify: any other `deferred/*.md` files with references

**Step 1: Update all deferred/ files**

In each file, replace:
- `LLMHost.com` → `LLMHosts.com`
- `LookNoHandsMom/LLMHost.com` → `LookNoHandsMom/LLMHosts.com`

---

### Task 10: Rename Frontend Files

**Files:**
- Modify: `frontend/src/app/layout.tsx` (site title/metadata)
- Modify: `frontend/src/app/page.tsx` (landing page brand name + email)
- Modify: `frontend/src/app/pricing/page.tsx` (brand + email)
- Modify: `frontend/src/app/legal/privacy/page.tsx` (brand + email)
- Modify: `frontend/src/app/legal/terms/page.tsx` (brand + email)
- Modify: `frontend/src/app/auth/login/page.tsx` (brand)
- Modify: `frontend/src/app/auth/register/page.tsx` (brand)
- Modify: `frontend/src/app/docs/page.tsx` (brand)
- Modify: `frontend/src/app/dashboard/page.tsx` (brand)
- Modify: `frontend/src/app/dashboard/layout.tsx` (brand)
- Modify: `frontend/src/app/dashboard/settings/page.tsx` (brand)
- Modify: `frontend/src/app/dashboard/projections/page.tsx` (brand + variable names)
- Modify: `frontend/src/app/dashboard/achievements/page.tsx` (brand)
- Modify: `frontend/src/components/charts/projections-bar-chart.tsx` (variable names)
- Modify: `frontend/src/components/achievement-card.tsx` (brand)
- Modify: `frontend/src/lib/demo-data.ts` (brand)
- Modify: `frontend/src/lib/achievements.ts` (brand)

**Step 1: Update brand names in all frontend files**

In each file, replace:
- `LLMHost.com` → `LLMHosts.com` (domain)
- `LLMHost` → `LLMHosts` (brand name in strings, UI text, page titles)
- `brendon@llmhost.com` → `brendon@llmhosts.com` (email)
- `llmhost.com` → `llmhosts.com` (lowercase domain in URLs)

**Step 2: Update variable names in projections code**

In `frontend/src/app/dashboard/projections/page.tsx`:
- `withLLMHost` → `withLLMHosts`
- `withoutLLMHost` → `withoutLLMHosts`

In `frontend/src/components/charts/projections-bar-chart.tsx`:
- `withLLMHost` → `withLLMHosts` (type field + dataKey)
- `withoutLLMHost` → `withoutLLMHosts` (type field + dataKey)

**Step 3: Verify TypeScript compiles**

Run: `cd frontend && npx tsc --noEmit 2>&1 | head -20`
Expected: No errors (or only pre-existing errors unrelated to rename)

---

### Task 11: Rename Scaffolder Files

**Files:**
- Modify: `scaffolder/package.json`
- Modify: `scaffolder/src/templates.ts`
- Modify: `scaffolder/src/index.ts`

**Step 1: Update scaffolder references**

In each file, replace:
- `LLMHost` → `LLMHosts` (brand name in descriptions, comments, user-facing text)
- `llmhost.com` → `llmhosts.com` (domain in URLs like docs link)

Do NOT change:
- `create-llmhosts` (npm package name stays)
- `llmhosts` in config file names or import references

---

### Task 12: Rename Documentation Files (docs/)

**Files:**
- Modify: All files in `docs/` that contain `LLMHost.com` or `LLMHost` brand references
- This includes ~40 files across: `docs/tracker/`, `docs/roadmap/`, `docs/plans/`, `docs/architecture/`, `docs/knowledge-base/`, `docs/backlog/`, `docs/business/`, `docs/confidence-assessment/`, `docs/pre-dev-gate/`, `docs/debate/`, `docs/guides/`, `docs/feasibility-report/`

**Step 1: Update all docs/ files**

In each file, replace:
- `LLMHost.com` → `LLMHosts.com`
- `LookNoHandsMom/LLMHost.com` → `LookNoHandsMom/LLMHosts.com`
- `LLMHost` → `LLMHosts` (brand name)
- `brendon@llmhost.com` → `brendon@llmhosts.com` (email where present)
- `llmhost.com` → `llmhosts.com` (lowercase domain in URLs)

Do NOT change:
- `llmhosts` when it refers to the pip package or CLI command
- `pip install llmhosts` stays unchanged
- `llmhosts serve` stays unchanged
- Import references stay unchanged

---

### Task 13: Rename hive/__init__.py

**Files:**
- Modify: `hive/__init__.py`

**Step 1: Update any brand references**

Replace `LLMHost.com` → `LLMHosts.com` in docstrings or comments.
Do NOT change the module import path.

---

### Task 14: Rename Workspace File and Final Verification

**Files:**
- Rename: `LLMHost.com.code-workspace` → `LLMHosts.com.code-workspace`

**Step 1: Rename the workspace file**

```bash
mv LLMHost.com.code-workspace LLMHosts.com.code-workspace
```

**Step 2: Global verification — no stale LLMHost.com references remain**

Run: `grep -r "LLMHost\.com" --include="*.py" --include="*.md" --include="*.yaml" --include="*.yml" --include="*.toml" --include="*.tsx" --include="*.ts" --include="*.mdc" --include="*.json" --include="*.sh" . | grep -v ".git/" | grep -v "node_modules" | grep -v "__pycache__" | grep -v "rename-llmhosts" | grep -v ".jsonl" | head -20`

Expected: Zero matches (the only files with "LLMHost.com" should be the rename design/plan docs themselves, which we exclude).

**Step 3: Verify no broken Python imports**

Run: `python -c "import llmhost; print('OK')"`
Expected: `OK`

**Step 4: Run full test suite**

Run: `pytest tests/ -x -q`
Expected: All 301 tests pass

**Step 5: Lint check**

Run: `ruff check .`
Expected: Clean (or only pre-existing warnings)

---

### Task 15: Commit, Push, Sync Branches

**Step 1: Stage all changes**

```bash
git add -A
```

**Step 2: Review staged changes**

```bash
git diff --cached --stat
```

Expected: ~100+ files changed

**Step 3: Commit**

```bash
git commit -m "$(cat <<'EOF'
chore: rename LLMHost.com → LLMHosts.com across entire codebase

Full rename: domain, brand name, email, GitHub repo URL, Docker
image references. Pip package name 'llmhost' preserved unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"
```

**Step 4: Push to main**

```bash
git push origin main
```

**Step 5: Sync develop branch**

```bash
git checkout develop && git merge main && git push origin develop && git checkout main
```

**Step 6: Final verification**

```bash
gh api repos/LookNoHandsMom/LLMHosts.com --jq .full_name
```

Expected: `LookNoHandsMom/LLMHosts.com`

---

### Post-Session: Folder Rename (User Action)

The user renames the project folder after this session ends:

```bash
mv /home/dev/projects/LLMHost.com /home/dev/projects/LLMHosts.com
```

Claude Code memory path (`/home/dev/.claude/projects/-home-dev-projects-LLMHost-com/`) auto-regenerates as `/home/dev/.claude/projects/-home-dev-projects-LLMHosts-com/` on the next session. The old memory directory can optionally be copied to the new path to preserve history.
