Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions .github/workflows/scheduled-deploy.yml

This file was deleted.

14 changes: 9 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,13 @@ npm run check # validate + astro check (types)
3. **Write** — fill in the MDX body. House style and frontmatter reference:
`docs/CONTENT-AUTHORING.md`. Embed interactivity with `<Artifact slug="…" />` (no import
needed) and list every embedded slug in the `artifacts:` frontmatter array.
4. **Validate** — `npm run validate` must exit 0. It enforces taxonomy membership, path↔date
agreement, slug uniqueness, dangling references, and index freshness.
4. **Gate** — `npm run check && npm run build` must pass (this is the exact CI job:
`validate` + `astro check` types + `build`). `validate` enforces taxonomy membership,
path↔date agreement, slug uniqueness, dangling references, and index freshness. Run the
full gate, not just `validate` — a type error passes `validate` but fails CI.
5. **Commit & push** — commit the article *and* the regenerated `content/_index.json`
together. Conventions below.
together. Flip the PR ready and enable squash auto-merge; a green local gate means CI passes
and the PR merges itself (production auto-deploys on merge). Conventions below.

To **update** an existing article: edit in place, set `updatedDate`, run `npm run index`,
validate, commit. Never change a published article's `slug` (it's the URL).
Expand All @@ -57,8 +60,9 @@ validate, commit. Never change a published article's `slug` (it's the URL).
topic, add it there deliberately (id, label, description, hue) in its own commit — don't
free-type new topics in frontmatter. Prefer reusing existing topics; the taxonomy should
grow by ones, not tens.
- **Validation is the gate.** No commit that leaves `npm run validate` failing. CI runs it on
every push.
- **The CI gate is `npm run check && npm run build`.** No PR ships red. CI runs this exact job
on every push (`validate` + `astro check` + `build`); run it locally so a green PR merges
unattended.
- **Content runs touch content.** During article/artifact routines, do not modify
`src/layouts/`, `src/styles/`, `src/lib/`, or page templates. Design/feature work happens in
dedicated sessions, not content runs.
Expand Down
31 changes: 23 additions & 8 deletions docs/ROUTINES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@ playbooks. Each playbook assumes: clean checkout, `npm ci` done, work on the ses
3. `npm run new:article -- --title "…" --topics <ids> [--series <id> --series-order N]`
4. Write the body per `docs/CONTENT-AUTHORING.md`. Interlink at least one related existing
article when one exists. Embed an artifact if a concept genuinely benefits from one.
5. `npm run validate` → fix until green. `npm run build` if anything beyond pure content
changed.
6. Commit (`content: add article <slug>`) including `content/_index.json`; push.
5. `npm run check && npm run build` → fix until green. This is the **exact CI job**
(`validate` + `astro check` types + `build`); running only `validate` misses type errors
that fail CI and stall auto-merge.
6. Commit (`content: add article <slug>`) including `content/_index.json`; push. Flip ready and
enable squash auto-merge — see "Delivery & auto-merge" below.

## Playbook: new artifact (+ optional companion article)

Expand All @@ -39,10 +41,10 @@ playbooks. Each playbook assumes: clean checkout, `npm ci` done, work on the ses
interaction listed in `controls`, a keyboard path for SVG/DOM where natural; `data.json` +
`dataSource`/`dataAsOf` for data-backed pieces (the validator enforces provenance). Verify
Three.js/GSAP APIs via Context7.
4. **Verify it runs**: `npm run build` must pass; if a browser is available, load `/artifacts/<slug>`
and view it embedded in the article — confirm rendering, interaction, and zero console errors in
**portrait, landscape, and ⛶ fullscreen** (resize/rotate); nothing clipped, overflowing, or
overlapping.
4. **Verify it runs**: `npm run check && npm run build` must pass (full CI gate — types included);
if a browser is available, load `/artifacts/<slug>` and view it embedded in the article — confirm
rendering, interaction, and zero console errors in **portrait, landscape, and ⛶ fullscreen**
(resize/rotate); nothing clipped, overflowing, or overlapping.
5. Fill in `controls`, set `featured` judiciously. Validate, commit (`artifact: add <slug>`).

## Coordination between parallel routines
Expand Down Expand Up @@ -83,7 +85,20 @@ articles use — URLs depend on them.
- **Bi-weekly**: 1 new artifact, ideally paired with that week's article.
- **Monthly**: refresh pass over the 3–5 oldest articles in active topics; link-rot check on
`sources:` URLs.
- **On PR / push (CI)**: validation + build already enforced by `.github/workflows/ci.yml`.
- **On PR / push (CI)**: `npm run check` + `npm run build` enforced by `.github/workflows/ci.yml`.

## Delivery & auto-merge

Fire-and-forget: a green local gate means a green CI run, so let auto-merge do the work.

- Before flipping ready, re-fetch `origin/main`; if another content PR merged during your run,
rebase, re-run `npm run index`, and re-run `npm run check && npm run build` once.
- Flip the draft to ready and **enable squash auto-merge**. Because `npm run check && npm run
build` mirrors CI exactly, CI passes and the PR squash-merges on its own — **do not keep the
session alive watching CI**. Your finish line is "ready + auto-merge enabled on a gate-green PR".
- **Production auto-deploys on merge** and previews build per PR (Vercel is *not* a required
check). New content goes live shortly after merge; the PR preview URL is available for a final
visual check, but verify locally first.

## Failure etiquette

Expand Down
6 changes: 0 additions & 6 deletions vercel.json

This file was deleted.

Loading