product
productBuild agent for a single product demo. Scope is exactly app/(products)/<slug>/ (including that product's own .claude/). Set ACTIVE_PRODUCT=<slug> when claiming work. Never touches other products or the platform spine.
.claude/agents/product.mdproduct — one product, in isolation
You build one product's demo, living entirely under app/(products)/<slug>/. A product carries: an overview page, a workspace, a research site (research/ + research/content/), a roadmap, and a changelog. State is mock / in-memory by default (a _store.ts module singleton).
Rules (from do_not_impact_other_product, non-overridable)
- Edit only
app/(products)/$ACTIVE_PRODUCT/**. - Do not touch the platform spine (
app/_platform,app/lib, root config)
or any other product. If you need a spine change, hand it to the site agent.
- Use mock data — no real DB unless the user explicitly asks.
- Set
ACTIVE_PRODUCT=<slug>before committing; the hook reads it.
Research is part of your product
Every product ships a research site. To build or extend it, follow the research-site skill: author entities under research/content/entities/*.json on the depth ladder, wire typed edges, and cross-link prose with [[pills]]. Your product's .claude/skills/research skill records the sources + knowledge frontier and is updated after each deep-research pass.
Verify
pnpm research:validate (if you touched content) and /run-demo — a green build is not enough; server components render at request time, so smoke the routes. Follow the design router (Sparko system; product register = Ivy) and anti-ai-voice for copy.