npm run source:add -- \
--domain habits \
--source daily \
--label "Daily habits" \
--description "Small habit signals and streaks" \
--authorized-inputs "User-approved habit check-ins" \
--forbidden-inputs "Medical diagnoses, private journal text" \
--workflow daily-coreThe generator adds a catalog entry and a provider-neutral prompt. It defaults to the generic domain schema and creates a deterministic owned path.
- Review purpose, authorized inputs, forbidden inputs, cadence, freshness, role, and dependencies.
- Use the generic domain schema unless another worker or UI needs stable named fields outside the standard presentation contract.
- Add a synthetic example at
data/examples/<domain>/<source>/2026-08-24.json. - Demonstrate one success state and one meaningful stale, partial, failed, or empty state.
- Add the source ID to
config/instance.example.jsononly when it belongs in the default experience. - Add the source ID to a
config/workflows.jsonbundle only when it should share that workflow's cadence and publication transaction. - Run
npm run check. - Document setup, permissions, disabling, and removal.
Prefer composing an existing block. A new block is justified only when it enables a materially different interaction. It requires a schema version decision, strict size and URL constraints, a TypeScript type, safe renderer, accessibility behavior, light and dark styles, mobile review, synthetic fixture, tests, and LLM guidance.