pipeline: consolidate content rules into EDITORIAL.md — the charter is now the source of truth; CLAUDE.md/TEAM.md/skills point to it

This commit is contained in:
2026-07-16 17:39:23 -04:00
parent b145520cb3
commit 3af5185ae9
8 changed files with 20 additions and 17 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ A bundle must contain **at least 2 items that have a hero image** (`hero.<ext>`
Re-use is allowed — a find can appear in multiple bundles under different themes. But by default, prefer surfacing **unbundled** finds first; only reach for re-uses when the theme genuinely calls for them.
**Ineligible: tobacco- and alcohol-related finds.** The site no longer promotes either; a few legacy finds (wine, whisky, cocktail, bar items) predate the rule and stay published, but they must never be selected into a new bundle — not as expansion, not in the weekly catch, not even if the user's seed theme seems to invite them (flag it instead). Don't count them as "unbundled finds awaiting a home."
**Ineligible: tobacco- and alcohol-related finds.** The site no longer promotes either; a few legacy finds (wine, whisky, cocktail, bar items) predate the rule and stay published, but they must never be selected into a new bundle — not as expansion, not in the weekly catch, not even if the user's seed theme seems to invite them (flag it instead). Don't count them as "unbundled finds awaiting a home." (Restates `EDITORIAL.md` "Content rules" — the charter is the source of truth.)
### 2. Confirm the cluster
+1 -1
View File
@@ -30,7 +30,7 @@ Parse frontmatter. Note: `name`, `subtitle`, `link`, `linkText`, `amazonLink`, `
If `promotedTo` is already set, abort: "This find has already been promoted to <slug>."
If the find is tobacco- or alcohol-related (wine, whisky, cocktail, bar, smoking items — a few legacy finds predate the exclusion), abort: the site no longer promotes either, so these never graduate to reviews, even on explicit slug argument — explain why instead.
If the find is tobacco- or alcohol-related (wine, whisky, cocktail, bar, smoking items — a few legacy finds predate the exclusion), abort: the site no longer promotes either, so these never graduate to reviews, even on explicit slug argument — explain why instead. (Restates `EDITORIAL.md` "Content rules" — the charter is the source of truth.)
### 2. Pick a hero asset
+1 -1
View File
@@ -35,7 +35,7 @@ Aim for 4-7 clusters. Each cluster should:
If a cluster can't meet the hero floor, **hold it back** rather than pad it with misfits or write it thin — record it as deferred (theme + items + which lack heroes) and revisit when enough hero-bearing finds emerge.
**Ineligible: tobacco- and alcohol-related finds.** Legacy finds of this kind (wine, whisky, cocktail, bar items) stay published but must never be clustered into a new bundle. Exclude them from the pool up front and list them as "ineligible (alcohol/tobacco)" rather than uncovered.
**Ineligible: tobacco- and alcohol-related finds.** Legacy finds of this kind (wine, whisky, cocktail, bar items) stay published but must never be clustered into a new bundle. Exclude them from the pool up front and list them as "ineligible (alcohol/tobacco)" rather than uncovered. (Restates `EDITORIAL.md` "Content rules" — the charter is the source of truth.)
Coverage check: after partitioning, every find should appear in at least one cluster (existing or new). If a find genuinely fits no theme, leave it uncovered and report it — don't pad a cluster with a misfit. Finds left homeless only because their cluster was deferred for the hero floor count as covered-pending — list them under the deferred cluster, not as uncovered.
+1 -1
View File
@@ -24,7 +24,7 @@ Invoke from inside the `unique.rzen.dev` repo.
A find qualifies if and only if it is **(a)** delightful, unusual, or distinctive in a way the audience would care about *and* **(b)** usable daily (relax to "memorable for a visitor" for travel). Drop generic mass-market items, ad-copy listicles, speculative / not-yet-shipping products, self-promo, and anything not traceable to a real currently-buyable / currently-visitable thing.
**Hard exclusion — no tobacco or alcohol.** The site does not promote either in any form. Drop any item whose point is consuming, preparing, serving, storing, or celebrating alcohol or tobacco: spirits, wine, beer, cocktail kits, barware, decanters, wine openers, home-bar and whisky gear; cigars, pipes, vapes, ashtrays, smoking accessories. This is categorical — no exception for beautiful design, craftsmanship, or gift appeal, and it overrides every other signal. Borderline cases (dual-use glassware, non-alcoholic "spirits", brewery-adjacent merch) get skipped too: when in doubt, skip.
**Hard exclusion — no tobacco or alcohol.** The site does not promote either in any form. Drop any item whose point is consuming, preparing, serving, storing, or celebrating alcohol or tobacco: spirits, wine, beer, cocktail kits, barware, decanters, wine openers, home-bar and whisky gear; cigars, pipes, vapes, ashtrays, smoking accessories. This is categorical — no exception for beautiful design, craftsmanship, or gift appeal, and it overrides every other signal. Borderline cases (dual-use glassware, non-alcoholic "spirits", brewery-adjacent merch) get skipped too: when in doubt, skip. (Restates `EDITORIAL.md` "Content rules" — the charter is the source of truth.)
Crucially: do **not** filter by "is it the best of the day." Capture broadly. Selection happens in the shortlist step, and editorial treatment later.
+1 -1
View File
@@ -56,7 +56,7 @@ Enforce `EDITORIAL.md` (the voice charter: concise, to the point, inspiring deli
Make an explicit pick decision **every run** — the pick is a daily editorial call, not a side effect of publishing reviews:
- **The pick must be uncontroversial — it's the front page.** The homepage hero greets every visitor out of context, so keep it broadly, unmistakably benign. Never pick anything that could read as endorsing or depicting harm: weapons or anything that cuts, burns, or explodes; anything dangerous or injury-prone; how-to's for any of that; horror or disturbing media; or anything that could be taken as a call to negative action. (A knife is a bad pick.) Such items can still be finds and reviews — they just never get the hero. If your strongest candidate trips this, take the strongest one that doesn't, and note the swap in the digest.
- **No camping gear in the hero.** Camper trailers and other camping equipment never take the pick — they stay eligible as finds and (occasionally) reviews, just not the front page. If the strongest candidate is camping gear, take the strongest one that isn't.
- **No camping gear in the hero.** Camper trailers and other camping equipment never take the pick — they stay eligible as finds and (occasionally) reviews, just not the front page. If the strongest candidate is camping gear, take the strongest one that isn't. (Both hero rules restate `EDITORIAL.md` "Content rules" — the charter is the source of truth.)
- Candidates: reviews graduated this run plus the existing review pool.
- "Strongest" = best hero visual + broadest audience appeal; when torn, the one whose virtue is most immediately legible from the tile.
- New reviews usually win (freshness matters on a daily site), but a weak new review must not displace a strong current hero.
+1 -4
View File
@@ -14,10 +14,7 @@ Unattended runs never pause for confirmation — they publish, log to `daily-fin
## Conventions that bite
- **`EDITORIAL.md` is the voice charter** — concise, to the point, inspiring delight (through specificity, never ad copy); word budgets per copy type. All audience-facing prose follows it; the pipeline runs a fresh-eyes copy-edit stage over each day's new copy.
- **No tobacco or alcohol content** — hard editorial exclusion at every stage: never captured as finds, never selected into new bundles, never graduated to reviews. A few legacy alcohol finds (MayJuly 2026) stay published and keep their existing bundle spots, but they're ineligible for anything new.
- **No camping equipment as pick of the day** — camper trailers and other camping gear are fine as finds and occasional reviews, but never take the homepage hero.
- **Editorial rules are forward-looking** — what's published stays published; new exclusions apply only to future picks/finds/bundles/reviews, never to retroactive edits or unpublishing.
- **`EDITORIAL.md` is the editorial charter** — the voice (concise, to the point, inspiring delight through specificity, never ad copy; word budgets per copy type) *and* the canonical content rules (no tobacco/alcohol anywhere; no camping gear or harm-adjacent items as pick of the day; rules apply forward only — published stays published). All audience-facing prose and every selection stage follow it; the pipeline runs a fresh-eyes copy-edit stage over each day's new copy. Skills restate the rules for their stage, but the charter wins on drift.
- Review heroes are auto-discovered from `src/content/reviews/<slug>/hero.<ext>` (`src/lib/hero.ts` glob) — name the file `hero.*`; no registration.
- The homepage "pick of the day" is `src/data/pick.json` (`{"hero": "<review-slug>"}`); falls back to the latest review.
- Find slugs are globally unique although folders are date-bucketed; URLs stay flat at `/find/<slug>/`.
+11 -2
View File
@@ -1,6 +1,6 @@
# Editorial voice charter
# Editorial charter
The standard for every audience-facing word on unique.rzen.dev — find bodies, review bodies, bundle blurbs and intros, subtitles, descriptions. Skills reference this file; the pipeline's copy-edit pass enforces it.
The standard for every audience-facing word on unique.rzen.dev — find bodies, review bodies, bundle blurbs and intros, subtitles, descriptions — and the canonical home of the content rules that bind what gets published at all. Skills reference this file; the pipeline's copy-edit pass enforces the voice, and each pipeline stage enforces the content rules that apply to it.
## The voice in one line
@@ -15,6 +15,15 @@ Concise, to the point, and above all **inspiring delight**.
5. **Honest beats glossy.** Limitations stated plainly; corrections from fact-checking called out when they're interesting. Trust is the site's only currency.
6. **The forward test.** Before publishing, ask: would a friend forward this to another friend with "look at this"? If not, find the detail that would make them — or cut deeper.
## Content rules
Voice governs how we say it; these govern what we publish. Skills restate the rule that applies to their stage, but this list is the source of truth — when they drift, this file wins.
1. **No tobacco or alcohol** — categorical, at every stage: never captured as finds, never selected into new bundles, never graduated to reviews. No exception for beautiful design, craftsmanship, or gift appeal; borderline cases (dual-use glassware, non-alcoholic "spirits", brewery-adjacent merch) get skipped too. A few legacy alcohol finds (MayJuly 2026) stay published and keep their bundle spots but are ineligible for anything new.
2. **Front-page safety** — the pick of the day is the front page and must be broadly, unmistakably benign. Never anything that could read as endorsing or depicting harm: weapons or anything that cuts, burns, or explodes; anything dangerous or injury-prone; how-to's for any of that; horror or disturbing media. Such items can still be finds and reviews — they just never get the hero.
3. **No camping gear in the hero** — camper trailers and other camping equipment never take the pick of the day. Fine as finds, occasional as reviews, never the front page.
4. **Rules look forward** — what's published is published. A new rule governs future picks, finds, bundles, and reviews only; it never triggers retroactive edits or unpublishing.
## Word budgets
| Copy | Budget |
+3 -6
View File
@@ -24,13 +24,10 @@ Each role's prompt is its skill file — the canonical, version-controlled text.
## House rules (bind every role)
1. **`EDITORIAL.md`** — the voice charter: concise, to the point, inspiring delight *through specificity*; word budgets per copy type (finds 4090 words; reviews 250450, ceiling 600, ~800 only for story-led subjects; bundle blurb one sentence). Budgets are ceilings, not targets.
2. **No tobacco or alcohol content** — categorical, at every stage: never captured, never bundled, never graduated. Legacy alcohol finds (MayJuly 2026) stay published but are ineligible for anything new.
1. **`EDITORIAL.md` — the editorial charter, voice half**: concise, to the point, inspiring delight *through specificity*; word budgets per copy type (finds 4090 words; reviews 250450, ceiling 600, ~800 only for story-led subjects; bundle blurb one sentence). Budgets are ceilings, not targets.
2. **`EDITORIAL.md` — content rules half**: no tobacco/alcohol at any stage; front-page safety and no camping gear for the pick of the day; rules apply forward only (published stays published). The charter's "Content rules" section is the source of truth; skill restatements defer to it.
3. **Hero floor** — a bundle ships with ≥2 hero-bearing items (aim ~4; more for 78-item grids). Under-floor themes are held and logged, except the weekly catch, which widens instead of holding.
4. **Front-page safety** — the pick of the day is never anything that could read as endorsing harm (weapons, danger, disturbing media), regardless of its quality as a review.
5. **No camping gear in the hero** — camper trailers and other camping equipment never take pick of the day; fine as finds, occasional as reviews.
6. **Editorial rules look forward** — published content stays published; new exclusions govern future picks, finds, bundles, and reviews only, never retroactive edits.
7. **Repo conventions** — see `CLAUDE.md` ("Conventions that bite"): topics vocabulary, source name matching, Amazon link canonical form, slug uniqueness.
4. **Repo conventions** — see `CLAUDE.md` ("Conventions that bite"): topics vocabulary, source name matching, Amazon link canonical form, slug uniqueness.
## The copy editor's brief