For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
Goal: Organize the website into stable public pages and archived labs while redesigning the homepage in a sparse Patrick Collison-inspired style.
Architecture: Preserve existing public URLs through root-level redirect stubs, move experimental assets into topic folders under labs/, and keep canonical site pages at the root for GitHub Pages compatibility. Add a dependency-light publishing harness that checks asset inventory, redirects, internal links, required GitHub Pages files, and optional Jekyll build health.
Tech Stack: GitHub Pages/Jekyll, static HTML/Markdown, vanilla JavaScript, Python stdlib validation.
The repo has 84 site-relevant assets excluding .git internals:
CNAMEFunctional clusters:
assets//
README.md
_config.yml
CNAME
bookshelf.md
quotes.md
thought-snippets.html
assets/
data/
images/
js/
docs/
plans/
specs/
qa/
labs/
bias/
calendar/
kismet/
name-layout/
time-viz/
pdfs/
scripts/
tests/
Root URLs for moved prototypes remain valid via lightweight redirect pages:
bias-*.html -> labs/bias/bias-*.htmlcalendar-widget*.html -> labs/calendar/calendar-widget*.htmlkismet-*.html -> labs/kismet/kismet-*.htmltime-viz-*.html and 2025-12-18_*time-visualization_research.html -> labs/time-viz/...name-layout-prototypes.html -> labs/name-layout/name-layout-prototypes.htmlcognitive-biases.html remains at the root as a public index page unless a later pass chooses to promote labs/bias/index.html.
Files:
tests/test_site_harness.pyscripts/site_harness.pyStep 1: Write failing tests
Create tests that expect the harness module to:
.git, _site, .cache, and other generated directories._config.yml, README.md, and CNAME.Step 2: Run tests to verify failure
Run: python3 -m unittest tests/test_site_harness.py -v
Expected: fail because scripts.site_harness does not exist.
Step 3: Implement minimal harness
Implement scripts/site_harness.py with:
iter_site_files(root)classify_assets(paths)extract_local_links(text)validate_site(root)Step 4: Run tests to verify pass
Run: python3 -m unittest tests/test_site_harness.py -v
Expected: all tests pass.
Files:
labs/bias/labs/calendar/labs/kismet/labs/name-layout/labs/time-viz/Step 1: Move files in topic batches
Use a script to move only files in the approved mapping. Do not move canonical pages, PDFs, images, or JavaScript assets in this batch.
Step 2: Generate redirect stubs
Each root stub should include:
<!doctype html><meta charset="utf-8"><meta http-equiv="refresh" content="0; url=...">Step 3: Repair relative links inside moved files
Update moved pages as needed:
../../cognitive-biases.html.../../assets/....Step 4: Run harness
Run: python3 scripts/site_harness.py
Expected: zero errors.
Files:
README.mdpdfs/cv_xly_web.pdf, quotes.md, bookshelf.md, thought-snippets.html, cognitive-biases.html, labs/Step 1: Replace heavy homepage presentation
Remove the neural animation-forward homepage and replace it with a sparse text index:
Step 2: Keep behavior low-risk
Do not add external CSS dependencies. Keep styling inline and tiny because GitHub Pages currently renders README.md directly.
Step 3: Run harness
Run: python3 scripts/site_harness.py
Expected: zero errors.
Files:
labs/index.htmlStep 1: Create a plain labs landing page
List:
Step 2: Run harness
Run: python3 scripts/site_harness.py
Expected: zero errors.
Files:
SITE.mddocs/specs/ and docs/qa/ only if doing so does not hide active user docs unexpectedly.Step 1: Update structure documentation
Document the new canonical pages, labs folders, redirect strategy, and publishing harness.
Step 2: Run harness
Run: python3 scripts/site_harness.py
Expected: zero errors.
Run:
python3 -m unittest tests/test_site_harness.py -v
python3 scripts/site_harness.py
If Ruby/Jekyll tooling is available locally, also run one of:
bundle exec jekyll build
jekyll build
If unavailable, the harness must report that the Jekyll build was skipped rather than failed.