.agents/skills/product-design/templates/design-spec.md
Date: YYYY-MM-DD Status: discovery | aligning | scoped | validated Scope: one sentence. Say what is out of scope too. Prototype: path, if any
Not what the surface shows — what the business has. For the concepts this surface touches:
Name the structural error(s) — something wrong regardless of taste. Not "it looks dated".
If you cannot name one, you do not have a diagnosis. You have an opinion.
Only the principles this diagnosis actually forced. Each with a rejected alternative attached — a principle with no rejected alternative is decoration.
Block by block. For each:
| Bucket | Capability | Meaning |
|---|---|---|
| ✅ Already modeled, already exposed | Rearranging what is there | |
| ⚠️ Already modeled, never exposed | Lower domain risk; validate implementation cost | |
| ❌ Not a concept in the business yet | Domain expansion; assess cost and risk explicitly |
Recommended coherent slice: explain how it completes the user's job. Does not, and why: every excluded item by name, with likely cost drivers.
Concepts the business does not have, which therefore cannot be designed around —
only proposed as domain changes. Bold them. These are not preferences
(P-06).
The T of SCLPT. One row per assumption that met the business model.
Schema: trace-schema.md.
"What is true" must be written in domain language. If you cannot state the fact without naming a table, it is probably not a product finding.
| Assumption | What is true | Model | Verdict | Pattern |
|---|---|---|---|---|
Coverage: which sources, roles, permissions, states and lifecycle paths were checked? What evidence was unavailable? Which claims remain low-confidence? If no new gap was found, state only that none was found in this inspected scope.
Pattern candidates: list candidates or “none”. Check each against canon.md; append only after review and authorization.
Only the ones that change the shape of the answer. Each with a recommendation and its reasoning. Not a list of everything unresolved.