Tab · Overview

Website

See every page, route, and endpoint with its actual status. Localhost dashboard tabs, hosted repoops.ai surfaces, marketing routes — all in one source-of-truth table. The surface-drift CI job fails the PR if a new public/*.htmlisn't listed here.

See it in motion

Where to find it

  • Localhost: http://localhost:4000/website.html?repo=<id>
  • On disk: .claude/brain/website.md
  • Tab registry: lib/canonical-tabs.mjs — the ground truth for which surfaces exist
  • Keyboard: K then website
  • Sidebar: Overview → Website

What it does for you

One table answers “is X shipped yet?”Pages, routes, and endpoints all carry an honest ✅ / 🚧 / ⏳ status. PRs flip the status in the same commit; the table never lies. Trust this row, not the README.
Catches orphan pages before they ship.Every public/*.html must appear here (the surface-driftCI job enforces it). A page that exists but isn't documented is a defect — caught at PR time, not in production.
The map between dashboard tabs and their docs.Each row links to the docs page for that surface. Click a row → land on its docs page → see what it does for you. Discovery is one click, not a grep.
Three invariants, all CI-enforced.(1) No dead tab — every source: "aggregator" tab resolves to its file. (2) No orphan surface — every public/*.html is a registered tab. (3) No undocumented tab — every aggregator tab is listed in this doc.

Configure

Nothing — it's a hand-curated markdown table. Edits flow through the standard PR process. The CI surface-drift job (scripts/brain-drift/surface-drift.sh) is the contract.

  • New tab: add a row + register in lib/canonical-tabs.mjs + create the public/*.html.
  • Status changes: flip 🚧 → ✅ in the same PR that ships the code.
  • Retiring a page: remove the row + remove the file + remove the registry entry.

Use it well

  1. Read the table before proposing a new page.

    If something close already exists, extend it. The dedup-check rule in CLAUDE.md is enforced here — a duplicate tab is a defect.
  2. Register the surface in three places, same PR.

    The HTML twin, lib/canonical-tabs.mjs, and this doc. The CI gate fails if any one is missing.
  3. Flip status atomically.

    When a feature lands, move its row to ✅ in the same PR. Status drift is a defect, not a cosmetic lag — the Features tab once showed shipped Phase-4 work as still-open and that's the bar.
  4. Cross-link to the docs page.

    Every row should link to the docs page for the surface. The docs are where the “what does this do for me” lives; the website table is the routing layer.

Examples

Adding a hosted route
Edit .claude/brain/website.md to add the row under the “Hosted” section; create the website/app/<route>/page.tsx; if it's an API, register in .claude/brain/api.md; run npm run sync-brain; commit everything together.
When CI says “orphan surface”
You shipped a public/*.html but forgot the registry. Either wire it into lib/canonical-tabs.mjs + this doc, or delete the file. The fix is mechanical — but the lesson is that the gate caught it before it shipped to users.

Read more