pipeline: autonomous operation — shortlist stage, auto modes, daily-pipeline orchestrator
- daily-finds: feed-first fetch strategy (fetch: feed + feedUrl), cadence-aware scanning, new score-and-shortlist stage (shortlist: true, up to 12/day, top 1-3 flagged as review candidates), Amazon affiliate lookup for shortlisted physical products, and authority to apply mechanical sources.json maintenance (skip dead sources, demote dormant ones, record working fetch paths) instead of logging recommendations nobody executes. - build-bundle: auto mode (no confirmation gate when unattended) and a 'weekly' date-based catch mode so shortlisted finds never sit invisible for weeks. - cluster-bundles: auto mode. - build-review: hero.ts registration step removed (heroes auto-discovered from hero.<ext>); mandatory fact-check against the product's own site in auto mode; amazonLink carry-through; auto mode publishes and logs instead of pausing twice for approval. - New daily-pipeline skill: capture → bundle → reviews → pick of the day → build → commit → push → digest, with granular per-stage commits. This is the entrypoint for scheduled runs. - Project CLAUDE.md documenting the pipeline and its foot-gun conventions.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: build-bundle
|
||||
description: Draft a 'bundle' (themed editorial roundup of finds) for unique.rzen.dev. Selects find items from src/content/find/, groups them under a theme, and writes a new file at src/content/bundles/. Use when the user runs /build-bundle, asks to "draft today's bundle", "build a roundup", "make a bundle", or "make a catch".
|
||||
description: Draft a 'bundle' (themed editorial roundup of finds) for unique.rzen.dev. Selects find items from src/content/find/, groups them under a theme, and writes a new file at src/content/bundles/. Supports 'auto' (unattended, no confirmation) and 'weekly' (date-based catch of unbundled shortlist finds) modes. Use when the user runs /build-bundle, asks to "draft today's bundle", "build a roundup", "make a bundle", or "make a catch".
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
@@ -10,6 +10,12 @@ Author one editorial bundle (collection: `bundles`) that references existing fin
|
||||
|
||||
Invoke from inside the `unique.rzen.dev` repo.
|
||||
|
||||
## Modes
|
||||
|
||||
- **Interactive (default when a user is present)**: propose the cluster, wait for sign-off (step 2), then write.
|
||||
- **Autonomous (`auto` argument, or when running unattended — e.g. invoked by `/daily-pipeline`, a scheduled run, or any headless session)**: skip the confirmation gate. Apply the same quality bar, write directly, and record the would-have-been proposal in the log so the user can veto after the fact. Prefer the *tighter* theme when torn — an unattended run should err conservative.
|
||||
- **Weekly catch (`weekly` argument)**: a date-based safety valve, not a themed bundle. Collect every `shortlist: true` find from the last 7 days that appears in **no** existing bundle's `items[]`; if fewer than 3, widen to all unbundled finds from the window. Title: "The week's catch — <Month D–D>". Blurb names the week, not a theme. Cap at 8 by shortlist rank. If nothing qualifies, do nothing and report that. Purpose: no shortlisted find stays invisible for weeks awaiting a theme (finds are only reachable through bundles).
|
||||
|
||||
## Inputs
|
||||
|
||||
- `src/content/find/<year>/<month>/<slug>/index.mdx` — the available pool of finds (folders are nested by date but slugs are globally unique; recurse with `find src/content/find -name index.mdx` or rely on the `find` content collection's id which is the leaf slug).
|
||||
@@ -31,13 +37,13 @@ Invoke from inside the `unique.rzen.dev` repo.
|
||||
|
||||
- **If the user provided a theme phrase only:** scan all finds, surface the 8–12 that best fit the theme.
|
||||
|
||||
- **If neither:** scan recent (last ~14 days) finds that are not yet referenced by any existing bundle. From the unbundled pool, propose 1–3 thematic clusters of 5–10 finds each, with a candidate theme phrase per cluster.
|
||||
- **If neither:** scan recent (last ~14 days) finds that are not yet referenced by any existing bundle, weighting `shortlist: true` finds first. From the unbundled pool, propose 1–3 thematic clusters of 5–10 finds each, with a candidate theme phrase per cluster. (In autonomous mode: pick the single strongest cluster and write it.)
|
||||
|
||||
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.
|
||||
|
||||
### 2. Confirm the cluster
|
||||
|
||||
Always show the proposed cluster(s) before writing anything. The exact format depends on which path step 1 took.
|
||||
**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.
|
||||
|
||||
**Seed mode** (slugs given) — split the seed from the expansion so the user can see what the inferred theme pulled in:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user