diff --git a/.claude/skills/build-bundle/SKILL.md b/.claude/skills/build-bundle/SKILL.md index 2b8a1d1..f56c499 100644 --- a/.claude/skills/build-bundle/SKILL.md +++ b/.claude/skills/build-bundle/SKILL.md @@ -46,6 +46,8 @@ A bundle must contain **at least 2 items that have a hero image** (`hero.` 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." + ### 2. Confirm the cluster **Autonomous mode skips this step** — apply the bar yourself, write, and put the cluster rationale in the log entry instead. Otherwise, show the proposed cluster(s) before writing anything. The exact format depends on which path step 1 took. diff --git a/.claude/skills/build-review/SKILL.md b/.claude/skills/build-review/SKILL.md index 27dff74..5b9b074 100644 --- a/.claude/skills/build-review/SKILL.md +++ b/.claude/skills/build-review/SKILL.md @@ -30,6 +30,8 @@ Parse frontmatter. Note: `name`, `subtitle`, `link`, `linkText`, `amazonLink`, ` If `promotedTo` is already set, abort: "This find has already been promoted to ." +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. + ### 2. Pick a hero asset Look at the external link and pick a hero — a screenshot, demo gif, or product photo from the maker's site. The find's own `hero.` is a valid fallback, but prefer a richer asset from the source when one exists (finds often carry low-res OG cards). diff --git a/.claude/skills/cluster-bundles/SKILL.md b/.claude/skills/cluster-bundles/SKILL.md index bee5d93..b0f1c21 100644 --- a/.claude/skills/cluster-bundles/SKILL.md +++ b/.claude/skills/cluster-bundles/SKILL.md @@ -35,6 +35,8 @@ 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. + 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. ### 3. Overlap rules diff --git a/.claude/skills/daily-finds/SKILL.md b/.claude/skills/daily-finds/SKILL.md index 4ba6674..25c35a0 100644 --- a/.claude/skills/daily-finds/SKILL.md +++ b/.claude/skills/daily-finds/SKILL.md @@ -24,6 +24,8 @@ 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. + Crucially: do **not** filter by "is it the best of the day." Capture broadly. Selection happens in the shortlist step, and editorial treatment later. ## Procedure diff --git a/CLAUDE.md b/CLAUDE.md index 531ec27..959abbc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,6 +14,7 @@ Unattended runs never pause for confirmation — they publish, log to `daily-fin ## Conventions that bite +- **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 (May–July 2026) stay published and keep their existing bundle spots, but they're ineligible for anything new. - Review heroes are auto-discovered from `src/content/reviews//hero.` (`src/lib/hero.ts` glob) — name the file `hero.*`; no registration. - The homepage "pick of the day" is `src/data/pick.json` (`{"hero": ""}`); falls back to the latest review. - Find slugs are globally unique although folders are date-bucketed; URLs stay flat at `/find//`.