product-spec · git:20260827.0f63c54 · 2026-08-27 · sha256 d921c18cdb720eb4

product-spec git:20260827.0f63c54A

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

---
name: product-spec
description: "Use when an ambiguous product feature, new product boundary, named product fact source, or authorized product-document rebuild must become the smallest current implementation-ready specification; owns product decisions and terminal product artifacts, not shared domain-language/lifecycle conflicts, selected-source UI specification, or implementation."
---

# Product Specification

## Overview

Turn product ambiguity into the smallest repository-grounded specification that
can authorize one implementation slice. Own product behavior, scope, business
rules, user-visible states, acceptance, and explicitly authorized product-fact
writes. Keep technical design and source mutation with their existing owners.

Consume `urn:skills:product-request:v1`; the portable typed handoff is
`urn:skills:product-contract:v1`. Product Markdown
remains the human product-behavior authority; the handoff carries stable document,
decision, acceptance, and authority references without copying the document body or
claiming implementation or delivery state.

## Workflow

1. Read effective repository and host guidance, then inspect the requested scope,
   existing product facts, conventions, affected consumers, and `git status --short`
   before proposing a write.
2. Select exactly one public mode:
   - **Feature Spec** (default): specify one feature and include only the user-visible
     states, data effects, dependencies, and acceptance needed for that slice.
   - **Foundation Spec**: use only for a new product, new product line, or explicit
     redefinition of the product boundary.
   - **Artifact Update**: update only an existing, explicitly named product fact
     source after write authorization.
   When an existing Foundation Spec already fixes the product boundary and passes
   its applicable Ready gate, preserve it. For a requested downstream implementation,
   select the smallest source-proven feature gap and write only its Feature Spec;
   do not reopen product positioning without contradictory evidence.
3. Apply the product scope gate before synthesis. Distinguish several surfaces of one
   connected feature from several independent features with different user jobs,
   behavior, rules, or acceptance. Keep one Feature Spec for the former. For the
   latter, produce one short product index and maintain one independently ready fact
   slice per confirmed feature; never default home, tasks, contacts, and profile into
   one omnibus Feature Spec.
4. Clarify internally before synthesis. Search discoverable repository facts first.
   When the conversation or request package already contains every material product
   decision for the selected slice, synthesize the Feature Spec directly from that
   context; do not re-interview the user for decisions already given. Activate the
   decision pressure test only when a material decision is genuinely missing.
   When Axure is a named product source, load
   [references/prototype-evidence.md](references/prototype-evidence.md), consume a
   coverage-ledger handoff from `ops-browser`, and keep prototype coverage separate
   from product readiness.
   When material product decisions remain, load
   [references/decision-pressure-test.md](references/decision-pressure-test.md) and
   resolve only the target slices' load-bearing decision tree. Do not expose
   Discovery or grilling as a public mode and do not implement.
5. Classify material statements as Confirmed, Assumption, Open Question, Rejected,
   or Deferred. Never silently convert an assumption into product behavior. When a
   fact materially changes scope, user outcome, data risk, or acceptance, trace it to
   the affected slice and observable acceptance consequence without defining a
   technical interface.
6. Produce one main feature or foundation document by default, or a short index plus
   slice documents for a proven multi-feature request. Follow repository convention
   first; use the fallback locations in `references/documentation-boundaries.md` only
   when no equivalent exists and the user explicitly authorizes the write.
7. Apply **Ready for `<implementation slice>`** to every product slice. Block only
   that slice when a missing decision
   could change user behavior, business rules, permission or security boundaries,
   failure semantics, or acceptance results. For each blocked slice, name the
   decision category that blocks it (user behavior, business rule,
   permission/security, failure semantics, or acceptance) so the blocker is
   machine-checkable and the resolving owner is unambiguous. Separate a
   product-decision blocker (a missing user or business choice) from an
   environment or preflight validation blocker (a build, install, or toolchain
   gap that prevents running the oracle); do not collapse either into `Ready`.
   This verdict is the Product behavior/readiness axis only. It neither proves nor
   upgrades UI readiness; when a UI lane applies, implementation requires its own
   `ui-spec` verdict for the same slice.
8. Hand off only the unresolved owner that must act now: deep cross-context domain
   work to `domain-modeling`, shared visual-system contracts to `ui-spec`, source
   changes to the matching `dev-*`, and review to `repo-review` when requested.
   Keep Product Markdown as the behavior, failure, and acceptance authority. Product
   may describe the current terminal user outcome and business rules, but must not
   author page composition, visual semantics, component interfaces, API/DTO details,
   or source paths. Markdown is the default durable artifact; create a structured
   companion only when a named owner, producer, non-LLM consumer, semantic version,
   executable validator, drift policy, and retirement rule already exist.
9. Preview product-document changes before writing unless the user explicitly
   requested implementation of the document edit. Validate repository-defined checks;
   run the repository's existing documentation checks when present. Do not require a
   project-local schema or validator merely to make Product Markdown machine-readable;
   structural checks do not validate product truth, readiness, or acceptance quality.
10. For an authorized documentation rebuild, make every durable product artifact a
    current terminal contract: reconcile indexes and slices, remove superseded
    decisions and task-time validation narratives, repair links, and let Git retain
    formal history. Put local reviews, handoffs, captures, and environment snapshots
    under a verified ignored `.codex/` location; publish time-bound status only when
    a named team consumer and revalidation owner require it.
11. When a compatible Repository Asset Graph is available, resolve existing product
    authority and consumer asset IDs, check duplicate active authority claims, and
    include only stable refs in the typed handoff. A missing graph capability is
    `CAPABILITY_MISSING` for graph-backed completeness, not permission to invent IDs;
    specification may continue from native authorities with that boundary explicit.
12. When Forgeway delivery integration is active, bind the specification invocation
    to its immutable Run input refs and input PackageManifest/basis. After an
    authorized artifact write, let the package producer create the result
    PackageManifest and attach the product-contract result as an Observation. This
    owner does not create a review or DeliveryReceipt and never derives a completion
    level from `Ready`.

## Do Not Use For

- Simple task decomposition, technical planning, or acceptance checks when product
  behavior is already decided; use host planning and repository instructions.
- Pure activity requests with no verifiable product outcome ("keep improving the
  dashboard", "make progress on X"); reroute to host planning or demand one
  verifiable slice before producing a product artifact.
- Source implementation with a usable approved requirement; use the matching
  implementation owner (`dev-*` in this catalog or another available host owner).
- Business language, shared lifecycle, invariants, complex state machines, or
  multiple bounded contexts as the primary object; use `domain-modeling`.
- Selected-source UI specifications, shared tokens, component semantics, visual
  profiles, or `ui-spec` ownership; use `ui-spec`.
- Repository mapping or component inventory; use `repo-map`.
- Reviewing an existing change basis; use `repo-review`.

## Hard Rules

- Preserve repository product-document conventions and unrelated local changes.
- Write only explicitly authorized product artifacts. Do not edit source, stage,
  commit, push, create PRs, run implementation, or claim runtime verification.
- Do not require every implementation task to pass through this Skill.
- Do not invent users, rules, metrics, permissions, UI states, compatibility, or
  failure behavior. Keep unresolved material decisions visible.
- Do not infer complete product behavior from prototype screenshots, visited page
  titles, static export alone, or an interaction set whose coverage is unknown.
- Do not duplicate colors, typography, component choices, token values, or page
  geometry. Link the applicable `ui-spec` contract and keep only product behavior,
  user-visible meaning, and acceptance here.
- Do not define technical interfaces. Cite a verified existing dependency, owner, or
  interface fact only when it is necessary to make the implementation handoff
  unambiguous; route current topology mapping to `repo-map` and new technical design
  to host planning.
- Treat static checks as structure evidence only. Mark behavior, workflow, runtime,
  and consumer claims `Not verified` until directly evidenced.
- Do not use edit, approval, or validation dates as document versions. Retain a date
  only when the date itself changes product behavior, eligibility, rollout, or
  acceptance. Do not create YAML/JSON sidecars merely for AI convenience; require a
  named owner, producer, non-LLM consumer, semantic version, executable validator,
  drift policy, and retirement rule, otherwise keep Markdown as the single durable
  authority.

## Output Contract

Report capability `product.contract.specify`, typed result schema and reference, mode,
Run/input/result PackageManifest references when integration is active, repository
evidence and convention used, product scope classification,
shared index and slice artifact paths or preview-only result, Confirmed/Assumption/Open/Rejected/Deferred
decisions, user flows and failure states, scope/non-goals, user-visible UI/data
effects that are actually applicable, acceptance criteria, one Ready verdict and
blockers per slice,
conditional artifacts created or skipped, handoffs, validation, and every `Not found`
or `Not verified` gap. For a prototype source, also report fixed source identity,
coverage verdict/totals, conflicts, and affected slices. When the user explicitly requests an independent external
challenge or primary-source research, hand one fixed question/basis to
`ask-ai`; never send implicitly.

## References

- See [references/usage.md](references/usage.md) for routing and mode examples.
- See [references/workflow.md](references/workflow.md) for clarification and Ready gates.
- See [references/decision-pressure-test.md](references/decision-pressure-test.md)
  when evidence leaves material product decisions unresolved or the user explicitly
  requests a product stress test.
- See [references/template.md](references/template.md) for progressive document templates.
- See [references/documentation-boundaries.md](references/documentation-boundaries.md) for artifact ownership and fallback locations.
- Read [references/prototype-evidence.md](references/prototype-evidence.md) when Axure supplies product facts.
- See [references/eval-cases.md](references/eval-cases.md) for trigger and quality evals.