Internal Project Hub
INTERNAL USE ONLY
No unsaved changes
ADD PROJECT
Fill in below, hit Push. The page rewrites itself on GitHub and is live in ~30 seconds.
Match the GitHub repo name where possible.
HOW THIS HUB WORKS
Self-editing. No separate tool, no deploy step.

ADDING A PROJECT

  • Fill in the Add Project form above
  • Pick an existing section or create a new one with "+ New Section"
  • Hit Push to Hub
  • The page rewrites its own code on GitHub
  • Refresh after ~30 seconds — tile is live

GITHUB PAT — ONE-TIME SETUP

  • Go to github.com/settings/tokens
  • Generate new token (classic)
  • Tick repo scope only
  • Paste into the PAT field and hit Save Token
  • Stored in your browser only — never shared with anyone except GitHub directly

CLAUDE TRIGGER PHRASES

Attach a file and use these phrases to tell Claude where it goes:

HUB/PLAYBOOK HUB/TOOLS HUB/WORKING HUB/LANDER HUB/INTERNAL

e.g. "Push this [file] to HUB/PLAYBOOK"

HOW SELF-EDITING WORKS

  • All hub data lives in a JSON registry block inside this file
  • On submit, the page fetches itself from GitHub
  • It finds the registry block, updates the JSON, and pushes the file back
  • GitHub Pages auto-rebuilds in ~30 seconds
  • No backend, no Make.com, no separate deploy needed

STATUS LABELS

  • Each tile has a clickable status label (bottom right)
  • Grey = Draft
  • Amber = Ready
  • Green = Complete
  • Click the label on any tile to cycle through statuses
  • Changes save to GitHub via Push to Hub

FLAGS & COMMENTS

  • Use the ⋯ menu on any tile to flag it or add a comment
  • Flagged tiles show a 🚩 and a red tint — easy to spot at a glance
  • Comments appear as an italic note below the slug
  • Both are stored in the registry and pushed to GitHub
  • Changes are local until you push a new tile or manually push

REGISTRY STRUCTURE

The embedded JSON follows this format:

{ "id": "sec-01",
  "title": "Section",
  "tiles": [{
    "name": "Project",
    "url": "https://...",
    "emoji": "🚀",
    "tag": "playbook",
    "slug": "repo-name",
    "status": "draft",
    "flagged": false,
    "comment": ""
  }]
}