product · git:20260716.2ff3bc2 · 2026-07-16 · sha256 0db4ffc5d76efcb5

product git:20260716.2ff3bc2A

Immutable. This exact content is served forever at /api/v1/blob/0db4ffc5d76efcb5.

---
name: product
description: 'Create or refine PRODUCT.md while separating evidence, aspiration, users, value, and non-goals. Triggers: "product", "create PRODUCT.md", "product boundary".'
practices: [lean-startup, ddd-bounded-context]
hexagonal_role: domain
consumes: []
produces: [PRODUCT.md]
context_rel:
- kind: supplier-to
  with: plan
skill_api_version: 1
user-invocable: true
metadata:
  tier: product
  dependencies: []
  capabilities: [shape_product_boundary]
  effects: [write_product_document]
  canonical_status: canonical
  disposition: keep_specialist
output_contract: PRODUCT.md
---

# Product

Create or refine a product contract with the user's authority.

The contract works because it forces every claim into evidence or labeled
aspiration; if a reader cannot tell which is which, the document has failed.

1. Inspect existing product, README, goals, release, and evidence sources.
2. Ask only for decisions that cannot be grounded safely from those sources.
3. State mission, users, pains, value, differentiation, non-goals, proven facts,
   assumptions, evidence gaps, and success signals.
4. Label aspiration and measurement honestly.
5. Preserve an existing PRODUCT.md unless the user authorizes replacement.
6. Return the document to the caller; Plan may use it as intent context.

Named failure mode — **aspiration laundering**: an unproven hope written in the
proven-facts section; once laundered, every downstream plan inherits a false
premise.

Anti-pattern: rewriting a healthy PRODUCT.md wholesale because the session has
fresh opinions. Corrective: refine only the sections the user asked to change
and preserve the rest byte-for-byte.

Product does not select work, invoke a loop, repair itself, validate itself, or
choose delivery.