Build + Deploy justinsforge.com Home Page: Handoff (2026-04-28)¶
You are an Opus worker spawned to build and deploy a distinctive landing page for justinsforge.com. This is Justin's domain for his self-hosted AI / agent fleet hub, the public face of "Forge" (his workspace, agent infrastructure, and the place where his automations live).
Goal¶
A clean, distinctive home page at https://justinsforge.com/ that:
- Sets the tone: this is Justin's personal command center / AI fleet, not a corporate site.
- Links out to the live surfaces of the forge that already exist (see "Existing surfaces" below).
- Reflects Justin's design preferences (see his other site at sites/justinkrystal.com/landing/index.html for reference, clean, modern, not generic AI-template).
- Uses the shared scaffold: sites/_shared/tokens.css, sites/_shared/header/, sites/_shared/footer/, sites/_shared/forge-include.js for consistency.
Existing site state¶
Path: sites/justinsforge.com/
sites/justinsforge.com/
├── demo-scaffold/ ← demo, not the home page (leave alone or repurpose)
│ ├── assets/
│ └── index.html
└── games/ ← live mini-games (draw, maze, puzzle) — link from home
├── draw.html
├── index.html
├── maze.html
└── puzzle.html
There is no landing/ directory yet, that's what you're building.
Existing surfaces to link / showcase¶
| URL | What it is |
|---|---|
https://mkdocs.justinsforge.com/ |
The forge knowledge base (MkDocs over Justin's memory/, system-map/, docs/, etc.) |
https://justinsforge.com/games/ |
The mini-games (draw, maze, puzzle), already live |
| (placeholder for future) | Dashboard, fleet status, anything else Justin wants featured |
Ask Justin what else to feature before locking the layout. Don't invent links to surfaces that don't exist.
Tech stack, use the existing scaffold¶
Read these first:
- [sites-playbook](https://mkdocs.justinsforge.com/docs/sites-playbook/) (or docs/sites-playbook.md)
- [asset-grabber-playbook](https://mkdocs.justinsforge.com/docs/asset-grabber-playbook/) (or docs/asset-grabber-playbook.md)
- sites/_shared/tokens.css, design tokens (colors, fonts, spacing)
- sites/_shared/header/ and sites/_shared/footer/, reusable nav + footer
- sites/justinkrystal.com/landing/index.html, closest reference for tone
Tooling:
- New page scaffold: scripts/sites/new-page.sh justinsforge.com landing --template single
- Preview: /preview-site justinsforge.com (gives Tailscale URL so Justin can preview on Venus / phone)
- Screenshot: /screenshot <url> for desktop + mobile checks
- Deploy: /deploy-site justinsforge.com, rsyncs sites/justinsforge.com/landing/ to media-server CT 102 at /mnt/storage/appdata/justinsforge-media/landing/. Cloudflare tunnel routes the apex domain to that container.
- For images / web assets: scripts/assets/run grab|search|optimize|catalog via the Playwright venv at ~/.forge-venvs/assets/.
Optional design helper: the frontend-design skill (invoke via /frontend-design) if you want a creative jumpstart that avoids generic AI-template aesthetics.
Deploy notes¶
- Justin's policy: never deploy without showing him a preview first. Run
/preview-site justinsforge.com, share the Tailscale URL, get a thumbs-up, then/deploy-site. - Once deployed, screenshot the live site at desktop + mobile to confirm.
- Cloudflare DNS + tunnel for
justinsforge.comapex is already wired (zone id2c415a6672c980b6451718886d12ace0). You shouldn't need to touch DNS, just deploy and the domain points at it. If routing isn't working post-deploy, checkpython3 scripts/cloudflare/cf.py ingressfor the tunnel state and ask Justin before changing tunnel config.
Style guidance (pulled from Justin's broader preferences)¶
- No em dashes anywhere in copy.
- No AI-giveaway phrases ("I'd love to", "wheelhouse", "in your wheelhouse", "exciting opportunity", etc.).
- Direct, modest tone. Justin is a builder, not a marketer.
- Tables and structure beat walls of text.
- Tasteful animation OK, but no "scroll-jacking" or hero-video-autoplay clichés.
What you're NOT doing¶
- Not touching MkDocs (
mkdocs.justinsforge.comis on its own subdomain and pipeline). - Not touching the games (already deployed at
/games/). - Not creating a CMS or backend, this is a static site.
- Not adding analytics, tracking pixels, or third-party fonts without asking.
First three actions¶
- Read the playbooks + the shared scaffold +
sites/justinkrystal.com/landing/index.htmlfor tone reference. - Ask Justin what surfaces he wants featured on the home page (mkdocs, games, anything else?). Propose a layout / sections list before writing HTML.
- Once Justin agrees on sections, scaffold
sites/justinsforge.com/landing/and iterate with/preview-siteuntil it's right.
Logging¶
Append a ## [Opus — forge-home] Session Checkpoint to memory/daily/2026-04-28.md every 4-5 exchanges. Sign with [Opus — forge-home].
Stop criteria¶
- Justin approves the live deployed page at
https://justinsforge.com/. - Or he says you're done.