product-spec 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +28 -16
  3. package/assets/claude/commands/product-spec-align.md +9 -5
  4. package/assets/claude/commands/product-spec-domain.md +4 -2
  5. package/assets/claude/commands/product-spec-faq.md +8 -6
  6. package/assets/claude/commands/product-spec-narrative.md +36 -0
  7. package/assets/claude/commands/product-spec-press.md +8 -3
  8. package/assets/claude/commands/product-spec-roadmap.md +35 -0
  9. package/assets/codex/commands/product-spec-align.md +16 -1
  10. package/assets/codex/commands/product-spec-domain.md +12 -0
  11. package/assets/codex/commands/product-spec-faq.md +18 -4
  12. package/assets/codex/commands/product-spec-narrative.md +34 -0
  13. package/assets/codex/commands/product-spec-press.md +18 -1
  14. package/assets/codex/commands/product-spec-roadmap.md +34 -0
  15. package/assets/product/templates/current-truth-template.md +48 -0
  16. package/assets/product/templates/domain-template.md +21 -1
  17. package/assets/product/templates/faq-template.md +20 -2
  18. package/assets/product/templates/history/current-truth-history-template.md +5 -0
  19. package/assets/product/templates/history/domain-history-template.md +5 -0
  20. package/assets/product/templates/history/faq-history-template.md +5 -0
  21. package/assets/product/templates/history/narrative-history-template.md +5 -0
  22. package/assets/product/templates/history/press-history-template.md +5 -0
  23. package/assets/product/templates/history/roadmap-history-template.md +5 -0
  24. package/assets/product/templates/narrative-template.md +49 -0
  25. package/assets/product/templates/press-template.md +24 -3
  26. package/assets/product/templates/requirements-template.md +3 -32
  27. package/assets/product/templates/roadmap-template.md +49 -0
  28. package/dist/adapters/claude.js +1 -1
  29. package/dist/adapters/claude.js.map +1 -1
  30. package/dist/adapters/codex.js +1 -1
  31. package/dist/adapters/codex.js.map +1 -1
  32. package/dist/core/assets/registry.js +31 -7
  33. package/dist/core/assets/registry.js.map +1 -1
  34. package/dist/core/orchestration/add.js +4 -1
  35. package/dist/core/orchestration/add.js.map +1 -1
  36. package/dist/core/orchestration/check.js +1 -1
  37. package/dist/core/orchestration/check.js.map +1 -1
  38. package/dist/core/orchestration/doctor.js +2 -1
  39. package/dist/core/orchestration/doctor.js.map +1 -1
  40. package/dist/core/orchestration/shared-assets.js +2 -1
  41. package/dist/core/orchestration/shared-assets.js.map +1 -1
  42. package/dist/core/state/manifest.js +1 -1
  43. package/dist/core/state/manifest.js.map +1 -1
  44. package/dist/types/index.d.ts +1 -1
  45. package/package.json +9 -1
package/CHANGELOG.md CHANGED
@@ -4,8 +4,26 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.4.0] - 2026-03-30
8
+
9
+ ### Added
10
+
11
+ - New `/product-spec-narrative` and `/product-spec-roadmap` assistant commands for both Claude Code and Codex
12
+ - New `.product` templates for `narrative`, `roadmap`, and `current-truth`
13
+ - Companion history templates under `.product/history/` for the FRFAQ document set
14
+
15
+ ### Changed
16
+
17
+ - Expanded the canonical workflow to `domain -> press -> faq -> narrative -> roadmap -> speckit* -> align -> current-truth`
18
+ - Replaced the live `requirements` concept with `current-truth.md` as the maintained current-state product specification
19
+ - Redesigned the existing FRFAQ templates around a shared decision-oriented structure with companion history documents
20
+ - Updated install, health-check, and doctor guidance to reflect the expanded workflow and asset bundle
21
+
22
+ ## [0.3.0] - 2026-03-29
23
+
7
24
  ### Changed
8
25
 
26
+ - Prepared the `v0.3.0` release to validate a clean GitHub Actions release cycle end to end
9
27
  - Renamed the published package, CLI, assistant command prefix, and managed manifest path to `product-spec`
10
28
  - Updated current-facing documentation, CLI help text, and packaged assistant assets to use `product-spec`
11
29
  - Updated current-facing repository guidance to use the `product-spec` name consistently
package/README.md CHANGED
@@ -1,8 +1,13 @@
1
1
  # product-spec
2
2
 
3
- The product management counterpart to [spec-kit](https://github.com/github/spec-kit). product-spec brings product management disciplines to spec-driven development, following Amazon's Working Backwards (PR/FAQ) methodology.
3
+ [![CI Passing](https://github.com/ehud-am/product-spec/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/ehud-am/product-spec/actions/workflows/ci.yml)
4
+ [![npm release](https://img.shields.io/npm/v/product-spec)](https://www.npmjs.com/package/product-spec)
5
+ [![node release](https://img.shields.io/node/v/product-spec)](https://www.npmjs.com/package/product-spec)
6
+ [![License](https://img.shields.io/npm/l/product-spec)](./LICENSE)
4
7
 
5
- While spec-kit handles engineering specifications, product-spec handles the product narrative: the domain context, press releases, FAQs, and requirements that define what you're building and why before spec-kit defines how.
8
+ The product management counterpart to [spec-kit](https://github.com/github/spec-kit). product-spec brings product management disciplines to spec-driven development, following Amazon's Working Backwards methodology from domain context through current product truth.
9
+
10
+ While spec-kit handles engineering specifications, product-spec handles the product narrative: domain context, press releases, FAQs, durable narrative, roadmap, and current truth that define what you're building, why it matters, and what is actually true once engineering work is aligned.
6
11
 
7
12
  ## Installation
8
13
 
@@ -74,50 +79,57 @@ After adding an integration, use the installed slash commands inside the assista
74
79
  ```text
75
80
  /product-spec-domain ...
76
81
  /product-spec-press ...
82
+ /product-spec-narrative ...
83
+ /product-spec-roadmap ...
77
84
  /product-spec-faq
78
85
  /product-spec-align
79
86
  ```
80
87
 
81
88
  | Target | Command directory | Slash commands |
82
89
  |--------|-------------------|----------------|
83
- | Claude Code | `.claude/commands/` | `/product-spec-domain`, `/product-spec-press`, `/product-spec-faq`, `/product-spec-align` |
84
- | Codex | `.Codex/commands/` | `/product-spec-domain`, `/product-spec-press`, `/product-spec-faq`, `/product-spec-align` |
90
+ | Claude Code | `.claude/commands/` | `/product-spec-domain`, `/product-spec-press`, `/product-spec-faq`, `/product-spec-narrative`, `/product-spec-roadmap`, `/product-spec-align` |
91
+ | Codex | `.Codex/commands/` | `/product-spec-domain`, `/product-spec-press`, `/product-spec-faq`, `/product-spec-narrative`, `/product-spec-roadmap`, `/product-spec-align` |
85
92
 
86
93
  ## How It Works
87
94
 
88
- product-spec creates a `.product/` folder in your project that maintains a living, cumulative view of the product across releases. Each document grows over time, telling the full story of the project from its first release to the one currently under development.
95
+ product-spec creates a `.product/` folder in your project that maintains a living view of the product across releases. Primary documents stay focused on the current state of thinking, while companion history documents preserve notable changes over time.
89
96
 
90
97
  ### Documents
91
98
 
92
99
  | File | Purpose |
93
100
  |------|---------|
94
101
  | `.product/domain.md` | Industry context, target users, terminology, competitive landscape |
95
- | `.product/press.md` | Press releases for every release, upcoming first and historical below |
96
- | `.product/faq.md` | External and internal FAQs for every release, upcoming first and historical below |
97
- | `.product/requirements.md` | Release-independent, complete view of all product use cases and capabilities |
102
+ | `.product/press.md` | Current press release and customer-facing promise |
103
+ | `.product/faq.md` | Current external and internal FAQs that challenge the promise |
104
+ | `.product/narrative.md` | Durable internal story: customer, tension, future state, and principles |
105
+ | `.product/roadmap.md` | Forward-looking sequencing of bets, phases, and dependencies |
106
+ | `.product/current-truth.md` | Maintained current-state product specification grounded by alignment |
107
+ | `.product/history/*.md` | Companion history files for key product artifacts |
98
108
 
99
109
  ### Workflow
100
110
 
101
111
  ```text
102
- /product-spec-domain --> /product-spec-press --> /product-spec-faq --> /speckit.specify --> /product-spec-align
103
- (context) (promise) (challenge) (engineer) (reconcile)
112
+ /product-spec-domain --> /product-spec-press --> /product-spec-faq --> /product-spec-narrative --> /product-spec-roadmap --> /speckit.specify --> /product-spec-align
113
+ (context) (promise) (challenge) (story) (bets) (engineer) (reconcile)
104
114
  ```
105
115
 
106
116
  1. `/product-spec-domain` establishes the domain context: who the users are, what problem matters, and who the alternatives are.
107
117
  2. `/product-spec-press` writes a press release as if the next release has already shipped.
108
118
  3. `/product-spec-faq` challenges the press release with hard questions from customers and stakeholders.
109
- 4. `/speckit.specify` hands off to spec-kit for engineering specifications.
110
- 5. `/product-spec-align` reconciles product docs with the final engineering scope.
119
+ 4. `/product-spec-narrative` turns the promise and challenge into a durable internal product story.
120
+ 5. `/product-spec-roadmap` sequences future bets and dependencies without replacing current truth.
121
+ 6. `/speckit.specify` hands off the next bet to spec-kit for engineering specifications.
122
+ 7. `/product-spec-align` reconciles product docs with the evolving engineering scope and maintains `.product/current-truth.md`.
111
123
 
112
124
  ## Key Concepts
113
125
 
114
- ### Cumulative Documents
126
+ ### Current Truth
115
127
 
116
- Unlike traditional release notes, product-spec documents are cumulative. The press release file contains all press releases ever written for the project, with the upcoming release at the top and historical releases below. The same applies to FAQs.
128
+ `current-truth.md` is the maintained answer to "what is actually true in the product today?" It is updated by alignment work and should stay distinct from the future-facing roadmap.
117
129
 
118
- ### `requirements.md` as the Product Spec
130
+ ### Companion History
119
131
 
120
- While `press.md` and `faq.md` are organized by release, `requirements.md` is organized by functional area. It is the release-independent, always-current answer to "what does this product do?"
132
+ Primary product docs stay focused on the current state. Companion files under `.product/history/` preserve important prior decisions, revisions, and reasoning.
121
133
 
122
134
  ### Working Backwards
123
135
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Reconcile the .product folder with changes made in .specify specs — update press, faq, and requirements.
2
+ description: Reconcile the .product folder with changes made in .specify specs — update product-facing docs and maintain current truth.
3
3
  handoffs:
4
4
  - label: Update Press Release
5
5
  agent: product-spec-press
@@ -10,6 +10,9 @@ handoffs:
10
10
  - label: Update Domain
11
11
  agent: product-spec-domain
12
12
  prompt: Update domain knowledge based on what we learned during alignment
13
+ - label: Refine Roadmap
14
+ agent: product-spec-roadmap
15
+ prompt: Update the roadmap based on what alignment reveals about current truth and future bets
13
16
  ---
14
17
 
15
18
  ## User Input
@@ -26,12 +29,13 @@ You are reconciling the product documents in `.product/` with the engineering sp
26
29
 
27
30
  ### Pre-Execution
28
31
 
29
- 1. Load `.product/domain.md`, `.product/press.md`, `.product/faq.md`, and `.product/requirements.md` when present.
32
+ 1. Load `.product/domain.md`, `.product/press.md`, `.product/faq.md`, `.product/narrative.md`, `.product/roadmap.md`, and `.product/current-truth.md` when present.
30
33
  2. Discover all `spec.md` files under `.specify/`.
31
- 3. Use `.product/templates/requirements-template.md` if `requirements.md` does not yet exist.
34
+ 3. Use `.product/templates/current-truth-template.md` if `current-truth.md` does not yet exist.
32
35
 
33
36
  ### Execution Flow
34
37
 
35
38
  1. Compare press release promises against the actual engineering specs.
36
- 2. Update FAQs and requirements to reflect reality.
37
- 3. Preserve historical product narrative and produce an alignment report.
39
+ 2. Update product-facing docs where needed, but treat `current-truth.md` as the canonical maintained statement of what is actually true in the product today.
40
+ 3. Keep `roadmap.md` forward-looking and avoid letting roadmap intent overwrite current truth.
41
+ 4. Preserve historical product narrative through companion history documents and produce an alignment report with grounded claims, drift, and missed opportunities.
@@ -24,9 +24,11 @@ You are creating or updating the domain knowledge document at `.product/domain.m
24
24
  2. **Check for existing domain doc**: Read `.product/domain.md` if it exists.
25
25
  - If it exists and has content beyond the template, this is an **update** — preserve existing content and merge new information.
26
26
  - If it does not exist, load `.product/templates/domain-template.md` as the starting structure.
27
+ 3. **Load related artifacts when present**: Read `.product/press.md`, `.product/faq.md`, `.product/narrative.md`, and `.product/current-truth.md` when they exist so the domain stays aligned with the rest of the product record.
27
28
 
28
29
  ### Execution Flow
29
30
 
30
31
  1. **Parse user input**: The text after `/product-spec-domain` is the domain context the user wants to capture.
31
- 2. Create or update `.product/domain.md` using the same quality checks and guidelines as the existing product-spec domain workflow.
32
- 3. Suggest `/product-spec-press` as the next step when appropriate.
32
+ 2. Create or update `.product/domain.md` using the domain template's shared structure for current context, assumptions, key decisions, related artifacts, and references to companion history.
33
+ 3. Preserve useful current-state content and direct older historical material into the companion history document when appropriate.
34
+ 4. Suggest `/product-spec-press` as the next step when appropriate.
@@ -4,9 +4,9 @@ handoffs:
4
4
  - label: Update Press Release
5
5
  agent: product-spec-press
6
6
  prompt: Update the press release based on what we learned from the FAQs
7
- - label: Build Specification
8
- agent: speckit.specify
9
- prompt: Create a technical spec for the next feature. I want to build...
7
+ - label: Build Narrative
8
+ agent: product-spec-narrative
9
+ prompt: Create the durable product narrative from the domain, press release, and FAQs
10
10
  ---
11
11
 
12
12
  ## User Input
@@ -25,10 +25,12 @@ You are creating or updating the FAQ document at `.product/faq.md`.
25
25
 
26
26
  1. Ensure `.product/` exists.
27
27
  2. Load `.product/domain.md` and `.product/press.md` when available.
28
- 3. If `.product/faq.md` is missing, start from `.product/templates/faq-template.md`.
28
+ 3. Load `.product/narrative.md`, `.product/roadmap.md`, and `.product/current-truth.md` when available so the FAQ work stays consistent with the rest of the product record.
29
+ 4. If `.product/faq.md` is missing, start from `.product/templates/faq-template.md`.
29
30
 
30
31
  ### Execution Flow
31
32
 
32
33
  1. The text after `/product-spec-faq` describes what to generate or update.
33
- 2. Produce external and internal FAQs that challenge the current press release honestly.
34
- 3. Preserve historical FAQ sections and suggest `/speckit.specify` when the feature is ready for engineering.
34
+ 2. Produce external and internal FAQs that challenge the current press release honestly, using the template's shared assumptions, key decisions, and related artifacts structure.
35
+ 3. Keep the main FAQ document focused on the current release or product state and direct detailed historical changes to the FAQ history companion when appropriate.
36
+ 4. Suggest `/product-spec-narrative` when the product story is ready to be synthesized, or `/speckit.specify` only after narrative and roadmap are sufficiently clear.
@@ -0,0 +1,36 @@
1
+ ---
2
+ description: Create or update the durable product narrative that connects domain context, the press release, and the FAQs.
3
+ handoffs:
4
+ - label: Build Roadmap
5
+ agent: product-spec-roadmap
6
+ prompt: Turn this narrative into an outcome-oriented roadmap
7
+ - label: Update FAQs
8
+ agent: product-spec-faq
9
+ prompt: Refine the FAQs using what we learned in the narrative
10
+ ---
11
+
12
+ ## User Input
13
+
14
+ ```text
15
+ $ARGUMENTS
16
+ ```
17
+
18
+ You **MUST** consider the user input before proceeding (if not empty).
19
+
20
+ ## Outline
21
+
22
+ You are creating or updating the durable narrative document at `.product/narrative.md`.
23
+
24
+ ### Pre-Execution
25
+
26
+ 1. Ensure `.product/` exists.
27
+ 2. Load `.product/domain.md`, `.product/press.md`, and `.product/faq.md` when available.
28
+ 3. Load `.product/roadmap.md` and `.product/current-truth.md` when present so the narrative stays grounded.
29
+ 4. If `.product/narrative.md` does not exist, start from `.product/templates/narrative-template.md`.
30
+
31
+ ### Execution Flow
32
+
33
+ 1. Use the supplied input plus the available product artifacts to explain the customer, the problem, the future state, and the product promise in a durable way.
34
+ 2. Write or update `.product/narrative.md` using the shared structure for assumptions, key decisions, related artifacts, and companion history references.
35
+ 3. Keep the main narrative focused on the current strategic story and move historical detail into the companion history document when appropriate.
36
+ 4. Suggest `/product-spec-roadmap` as the next step when the story is ready to be sequenced into bets.
@@ -4,6 +4,9 @@ handoffs:
4
4
  - label: Write FAQs
5
5
  agent: product-spec-faq
6
6
  prompt: Write the FAQs that challenge this press release
7
+ - label: Build Narrative
8
+ agent: product-spec-narrative
9
+ prompt: Turn this press release and FAQ work into a durable product narrative
7
10
  ---
8
11
 
9
12
  ## User Input
@@ -22,10 +25,12 @@ You are creating or updating the press release document at `.product/press.md`.
22
25
 
23
26
  1. Ensure `.product/` exists.
24
27
  2. Load `.product/domain.md` if it exists.
25
- 3. Read `.product/press.md` if it exists; otherwise use `.product/templates/press-template.md`.
28
+ 3. Load `.product/faq.md`, `.product/narrative.md`, and `.product/current-truth.md` when present to keep the current press release aligned with the broader product record.
29
+ 4. Read `.product/press.md` if it exists; otherwise use `.product/templates/press-template.md`.
26
30
 
27
31
  ### Execution Flow
28
32
 
29
33
  1. The text after `/product-spec-press` describes what to write.
30
- 2. Create or update the current upcoming press release using Amazon's Working Backwards format.
31
- 3. Preserve historical entries and suggest `/product-spec-faq` when appropriate.
34
+ 2. Create or update the current upcoming press release using Amazon's Working Backwards format and the template's shared assumptions, key decisions, and related artifacts structure.
35
+ 3. Keep the main press document focused on the active current-state narrative and direct detailed historical changes to the press history companion when appropriate.
36
+ 4. Suggest `/product-spec-faq` when the press release is ready to be challenged, and `/product-spec-narrative` when the promise is ready to become a durable internal story.
@@ -0,0 +1,35 @@
1
+ ---
2
+ description: Create or update the forward-looking roadmap that sequences customer outcomes and bets.
3
+ handoffs:
4
+ - label: Build Specification
5
+ agent: speckit.specify
6
+ prompt: Create a technical spec for the next roadmap bet. I want to build...
7
+ - label: Update Narrative
8
+ agent: product-spec-narrative
9
+ prompt: Refine the narrative based on roadmap changes
10
+ ---
11
+
12
+ ## User Input
13
+
14
+ ```text
15
+ $ARGUMENTS
16
+ ```
17
+
18
+ You **MUST** consider the user input before proceeding (if not empty).
19
+
20
+ ## Outline
21
+
22
+ You are creating or updating the roadmap document at `.product/roadmap.md`.
23
+
24
+ ### Pre-Execution
25
+
26
+ 1. Ensure `.product/` exists.
27
+ 2. Load `.product/narrative.md`, `.product/faq.md`, `.product/current-truth.md`, and any relevant specs when available.
28
+ 3. If `.product/roadmap.md` does not exist, start from `.product/templates/roadmap-template.md`.
29
+
30
+ ### Execution Flow
31
+
32
+ 1. Use the narrative and supporting artifacts to organize work into phased customer outcomes, committed bets, exploratory work, and deferred opportunities.
33
+ 2. Write or update `.product/roadmap.md` using the shared structure for assumptions, key decisions, related artifacts, and companion history references.
34
+ 3. Keep the roadmap future-facing and do not let it replace the current-state role of `current-truth.md`.
35
+ 4. Suggest `/speckit.specify` when the next bet is ready for engineering specification.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Reconcile the .product folder with changes made in .specify specs — update press, faq, and requirements.
2
+ description: Reconcile the .product folder with changes made in .specify specs — update product-facing docs and maintain current truth.
3
3
  handoffs:
4
4
  - label: Update Press Release
5
5
  agent: product-spec-press
@@ -10,6 +10,9 @@ handoffs:
10
10
  - label: Update Domain
11
11
  agent: product-spec-domain
12
12
  prompt: Update domain knowledge based on what we learned during alignment
13
+ - label: Refine Roadmap
14
+ agent: product-spec-roadmap
15
+ prompt: Update the roadmap based on alignment findings and the current truth
13
16
  ---
14
17
 
15
18
  ## User Input
@@ -23,3 +26,15 @@ You **MUST** consider the user input before proceeding (if not empty).
23
26
  ## Outline
24
27
 
25
28
  You are reconciling `.product/` with `.specify/` specs so product-facing documents stay aligned with the engineering scope.
29
+
30
+ ### Pre-Execution
31
+
32
+ 1. Load `.product/domain.md`, `.product/press.md`, `.product/faq.md`, `.product/narrative.md`, `.product/roadmap.md`, and `.product/current-truth.md` when present.
33
+ 2. Discover relevant engineering specs and implementation outputs.
34
+ 3. Use `.product/templates/current-truth-template.md` if `current-truth.md` does not yet exist.
35
+
36
+ ### Execution Flow
37
+
38
+ 1. Compare promised product language with implemented or specified reality.
39
+ 2. Update `current-truth.md` as the canonical current-state product specification.
40
+ 3. Adjust related docs as needed without collapsing roadmap intent into current truth.
@@ -17,3 +17,15 @@ You **MUST** consider the user input before proceeding (if not empty).
17
17
  ## Outline
18
18
 
19
19
  You are creating or updating the domain knowledge document at `.product/domain.md`. This document captures the industry context, problem space, target users, terminology, and competitive landscape that inform all product decisions.
20
+
21
+ ### Pre-Execution
22
+
23
+ 1. Ensure `.product/` exists.
24
+ 2. Read `.product/domain.md` if it exists; otherwise start from `.product/templates/domain-template.md`.
25
+ 3. Load `.product/press.md`, `.product/faq.md`, `.product/narrative.md`, and `.product/current-truth.md` when present.
26
+
27
+ ### Execution Flow
28
+
29
+ 1. Use the user input as new market or customer context.
30
+ 2. Update `.product/domain.md` with current context, assumptions, key decisions, related artifacts, and companion history references.
31
+ 3. Preserve still-valid current-state content and suggest `/product-spec-press` as the next step.
@@ -4,9 +4,9 @@ handoffs:
4
4
  - label: Update Press Release
5
5
  agent: product-spec-press
6
6
  prompt: Update the press release based on what we learned from the FAQs
7
- - label: Build Specification
8
- agent: speckit.specify
9
- prompt: Create a technical spec for the next feature. I want to build...
7
+ - label: Build Narrative
8
+ agent: product-spec-narrative
9
+ prompt: Create the durable product narrative from the domain, press release, and FAQs
10
10
  ---
11
11
 
12
12
  ## User Input
@@ -19,4 +19,18 @@ You **MUST** consider the user input before proceeding (if not empty).
19
19
 
20
20
  ## Outline
21
21
 
22
- You are creating or updating the FAQ document at `.product/faq.md`, generating honest external and internal questions that stress-test the current press release.
22
+ You are creating or updating the FAQ document at `.product/faq.md`.
23
+
24
+ ### Pre-Execution
25
+
26
+ 1. Ensure `.product/` exists.
27
+ 2. Load `.product/domain.md` and `.product/press.md` when available.
28
+ 3. Load `.product/narrative.md`, `.product/roadmap.md`, and `.product/current-truth.md` when available so the FAQ work stays consistent with the rest of the product record.
29
+ 4. If `.product/faq.md` is missing, start from `.product/templates/faq-template.md`.
30
+
31
+ ### Execution Flow
32
+
33
+ 1. The text after `/product-spec-faq` describes what to generate or update.
34
+ 2. Produce external and internal FAQs that challenge the current press release honestly, using the template's shared assumptions, key decisions, and related artifacts structure.
35
+ 3. Keep the main FAQ document focused on the current release or product state and direct detailed historical changes to the FAQ history companion when appropriate.
36
+ 4. Suggest `/product-spec-narrative` when the product story is ready to be synthesized, or `/speckit.specify` only after narrative and roadmap are sufficiently clear.
@@ -0,0 +1,34 @@
1
+ ---
2
+ description: Create or update the durable product narrative that connects domain context, the press release, and the FAQs.
3
+ handoffs:
4
+ - label: Build Roadmap
5
+ agent: product-spec-roadmap
6
+ prompt: Turn this narrative into an outcome-oriented roadmap
7
+ - label: Update FAQs
8
+ agent: product-spec-faq
9
+ prompt: Refine the FAQs using what we learned in the narrative
10
+ ---
11
+
12
+ ## User Input
13
+
14
+ ```text
15
+ $ARGUMENTS
16
+ ```
17
+
18
+ You **MUST** consider the user input before proceeding (if not empty).
19
+
20
+ ## Outline
21
+
22
+ You are creating or updating the durable product narrative at `.product/narrative.md`.
23
+
24
+ ### Pre-Execution
25
+
26
+ 1. Ensure `.product/` exists.
27
+ 2. Load `.product/domain.md`, `.product/press.md`, `.product/faq.md`, `.product/roadmap.md`, and `.product/current-truth.md` when available.
28
+ 3. If `.product/narrative.md` is missing, start from `.product/templates/narrative-template.md`.
29
+
30
+ ### Execution Flow
31
+
32
+ 1. Synthesize the available product artifacts into a durable internal story.
33
+ 2. Update `.product/narrative.md` with current context, assumptions, key decisions, related artifacts, and history references.
34
+ 3. Suggest `/product-spec-roadmap` when the narrative is ready to become a roadmap.
@@ -4,6 +4,9 @@ handoffs:
4
4
  - label: Write FAQs
5
5
  agent: product-spec-faq
6
6
  prompt: Write the FAQs that challenge this press release
7
+ - label: Build Narrative
8
+ agent: product-spec-narrative
9
+ prompt: Turn this press release and FAQ work into a durable product narrative
7
10
  ---
8
11
 
9
12
  ## User Input
@@ -16,4 +19,18 @@ You **MUST** consider the user input before proceeding (if not empty).
16
19
 
17
20
  ## Outline
18
21
 
19
- You are creating or updating the press release document at `.product/press.md`, preserving historical entries and writing from the customer's point of view.
22
+ You are creating or updating the press release document at `.product/press.md`.
23
+
24
+ ### Pre-Execution
25
+
26
+ 1. Ensure `.product/` exists.
27
+ 2. Load `.product/domain.md` if it exists.
28
+ 3. Load `.product/faq.md`, `.product/narrative.md`, and `.product/current-truth.md` when present to keep the current press release aligned with the broader product record.
29
+ 4. Read `.product/press.md` if it exists; otherwise use `.product/templates/press-template.md`.
30
+
31
+ ### Execution Flow
32
+
33
+ 1. The text after `/product-spec-press` describes what to write.
34
+ 2. Create or update the current upcoming press release using Amazon's Working Backwards format and the template's shared assumptions, key decisions, and related artifacts structure.
35
+ 3. Keep the main press document focused on the active current-state narrative and direct detailed historical changes to the press history companion when appropriate.
36
+ 4. Suggest `/product-spec-faq` when the press release is ready to be challenged, and `/product-spec-narrative` when the promise is ready to become a durable internal story.
@@ -0,0 +1,34 @@
1
+ ---
2
+ description: Create or update the forward-looking roadmap that sequences customer outcomes and bets.
3
+ handoffs:
4
+ - label: Build Specification
5
+ agent: speckit.specify
6
+ prompt: Create a technical spec for the next roadmap bet. I want to build...
7
+ - label: Update Narrative
8
+ agent: product-spec-narrative
9
+ prompt: Refine the narrative based on roadmap changes
10
+ ---
11
+
12
+ ## User Input
13
+
14
+ ```text
15
+ $ARGUMENTS
16
+ ```
17
+
18
+ You **MUST** consider the user input before proceeding (if not empty).
19
+
20
+ ## Outline
21
+
22
+ You are creating or updating the roadmap document at `.product/roadmap.md`.
23
+
24
+ ### Pre-Execution
25
+
26
+ 1. Ensure `.product/` exists.
27
+ 2. Load `.product/narrative.md`, `.product/faq.md`, `.product/current-truth.md`, and relevant specs when available.
28
+ 3. If `.product/roadmap.md` is missing, start from `.product/templates/roadmap-template.md`.
29
+
30
+ ### Execution Flow
31
+
32
+ 1. Turn the narrative into phased, outcome-oriented bets.
33
+ 2. Update `.product/roadmap.md` with assumptions, key decisions, related artifacts, and history references.
34
+ 3. Keep the roadmap future-facing and suggest `/speckit.specify` when the next bet is ready.
@@ -0,0 +1,48 @@
1
+ # Current Truth: [PROJECT_NAME]
2
+
3
+ **Last Updated**: [DATE]
4
+ **Companion History**: [.product/history/current-truth-history.md](.product/history/current-truth-history.md)
5
+
6
+ ## Product Summary
7
+
8
+ [2-3 sentences describing what is currently true of the product today.]
9
+
10
+ ## Active Capabilities
11
+
12
+ | Capability | Who It Serves | Current State | Source |
13
+ |------------|---------------|---------------|--------|
14
+ | [Capability] | [User or team] | [Shipped / Supported / Partial] | [Spec, release, or alignment source] |
15
+
16
+ ## Known Boundaries
17
+
18
+ - [Important limitation that is currently true]
19
+ - [Important behavior that is intentionally not supported today]
20
+
21
+ ## Source Specs and Evidence
22
+
23
+ - [Spec or engineering artifact that supports a current truth]
24
+ - [Alignment note or release artifact that confirms current behavior]
25
+
26
+ ## Recent Alignment Notes
27
+
28
+ - [What changed in the current truth during the latest reconciliation]
29
+ - [What was clarified or corrected]
30
+
31
+ ## Assumptions
32
+
33
+ - [Assumption used while reconciling current product truth]
34
+ - [Assumption that should be revisited when implementation changes]
35
+
36
+ ## Key Decisions
37
+
38
+ | Decision | Why It Matters | Current Direction |
39
+ |----------|----------------|-------------------|
40
+ | [Decision] | [Why it shapes the current-state view] | [Current choice] |
41
+
42
+ ## Related Artifacts
43
+
44
+ - [Domain](../domain.md)
45
+ - [Press Release](../press.md)
46
+ - [FAQ](../faq.md)
47
+ - [Narrative](../narrative.md)
48
+ - [Roadmap](../roadmap.md)
@@ -1,6 +1,7 @@
1
1
  # Domain Knowledge: [PROJECT_NAME]
2
2
 
3
3
  **Last Updated**: [DATE]
4
+ **Companion History**: [.product/history/domain-history.md](.product/history/domain-history.md)
4
5
 
5
6
  ## Industry Context
6
7
 
@@ -47,6 +48,25 @@
47
48
  - [How success is measured in this domain — e.g., adoption rate, time-to-value, retention]
48
49
  - [Industry benchmarks or standards to aim for]
49
50
 
51
+ ## Assumptions
52
+
53
+ - [Assumption about the market, buyer, or environment that currently informs product choices]
54
+ - [Assumption that should be revisited if customer behavior or competitive conditions change]
55
+
56
+ ## Key Decisions
57
+
58
+ | Decision | Why It Matters | Current Direction |
59
+ |----------|----------------|-------------------|
60
+ | [Decision] | [Why it shapes product thinking] | [What is currently true] |
61
+
62
+ ## Related Artifacts
63
+
64
+ - [Press Release](../press.md)
65
+ - [FAQ](../faq.md)
66
+ - [Narrative](../narrative.md)
67
+ - [Roadmap](../roadmap.md)
68
+ - [Current Truth](../current-truth.md)
69
+
50
70
  ## Open Questions
51
71
 
52
- - [Unresolved domain questions that may affect product direction]
72
+ - [Unresolved domain question that may affect future product direction]
@@ -1,8 +1,7 @@
1
1
  # Frequently Asked Questions: [PROJECT_NAME]
2
2
 
3
3
  **Last Updated**: [DATE]
4
-
5
- ---
4
+ **Companion History**: [.product/history/faq-history.md](.product/history/faq-history.md)
6
5
 
7
6
  ## [RELEASE_NAME] — [TARGET_DATE] *(upcoming)*
8
7
 
@@ -36,3 +35,22 @@ A: [Identify dependencies, risks, and mitigation strategies.]
36
35
 
37
36
  **Q: [Question about timeline or resources]**
38
37
  A: [Honest assessment of what it takes to deliver.]
38
+
39
+ ## Assumptions
40
+
41
+ - [Assumption about customer expectations or stakeholder constraints]
42
+ - [Assumption worth validating during roadmap or specification work]
43
+
44
+ ## Key Decisions
45
+
46
+ | Decision | Why It Matters | Current Direction |
47
+ |----------|----------------|-------------------|
48
+ | [Decision] | [Why it shapes the answers you are willing to stand behind] | [Current answer] |
49
+
50
+ ## Related Artifacts
51
+
52
+ - [Domain](../domain.md)
53
+ - [Press Release](../press.md)
54
+ - [Narrative](../narrative.md)
55
+ - [Roadmap](../roadmap.md)
56
+ - [Current Truth](../current-truth.md)
@@ -0,0 +1,5 @@
1
+ # Current Truth History: [PROJECT_NAME]
2
+
3
+ | Date | Change | Why It Changed | Evidence |
4
+ |------|--------|----------------|----------|
5
+ | [DATE] | [Summary of current-truth update] | [Reason] | [Spec or alignment source] |
@@ -0,0 +1,5 @@
1
+ # Domain History: [PROJECT_NAME]
2
+
3
+ | Date | Change | Why It Changed | Source |
4
+ |------|--------|----------------|--------|
5
+ | [DATE] | [Summary of domain update] | [Reason] | [Artifact or insight] |
@@ -0,0 +1,5 @@
1
+ # FAQ History: [PROJECT_NAME]
2
+
3
+ | Date | Change | Why It Changed | Source |
4
+ |------|--------|----------------|--------|
5
+ | [DATE] | [Summary of FAQ update] | [Reason] | [Artifact or insight] |
@@ -0,0 +1,5 @@
1
+ # Narrative History: [PROJECT_NAME]
2
+
3
+ | Date | Change | Why It Changed | Source |
4
+ |------|--------|----------------|--------|
5
+ | [DATE] | [Summary of narrative update] | [Reason] | [Artifact or insight] |
@@ -0,0 +1,5 @@
1
+ # Press History: [PROJECT_NAME]
2
+
3
+ | Date | Release | Change | Why It Changed |
4
+ |------|---------|--------|----------------|
5
+ | [DATE] | [Release] | [Summary of press update] | [Reason] |
@@ -0,0 +1,5 @@
1
+ # Roadmap History: [PROJECT_NAME]
2
+
3
+ | Date | Change | Why It Changed | Source |
4
+ |------|--------|----------------|--------|
5
+ | [DATE] | [Summary of roadmap change] | [Reason] | [Artifact or insight] |
@@ -0,0 +1,49 @@
1
+ # Product Narrative: [PROJECT_NAME]
2
+
3
+ **Last Updated**: [DATE]
4
+ **Companion History**: [.product/history/narrative-history.md](.product/history/narrative-history.md)
5
+
6
+ ## Customer
7
+
8
+ [Who is the primary customer or user this story is for? What situation are they in?]
9
+
10
+ ## Core Tension
11
+
12
+ [What painful or high-stakes problem keeps showing up for this customer? Why does it matter now?]
13
+
14
+ ## Future State
15
+
16
+ [What changed future are you trying to create for the customer? Describe it in customer terms.]
17
+
18
+ ## Product Promise
19
+
20
+ [What promise is the product making if it succeeds?]
21
+
22
+ ## Guiding Principles
23
+
24
+ - [Principle that should influence roadmap tradeoffs]
25
+ - [Principle that should remain true across releases]
26
+
27
+ ## Non-Goals
28
+
29
+ - [What this product or initiative is explicitly not trying to do]
30
+ - [What tempting adjacent area is out of scope for now]
31
+
32
+ ## Assumptions
33
+
34
+ - [Important assumption behind the narrative]
35
+ - [Assumption that could change the story if proven wrong]
36
+
37
+ ## Key Decisions
38
+
39
+ | Decision | Why It Matters | Current Direction |
40
+ |----------|----------------|-------------------|
41
+ | [Decision] | [Why it shapes the product story] | [Current choice] |
42
+
43
+ ## Related Artifacts
44
+
45
+ - [Domain](../domain.md)
46
+ - [Press Release](../press.md)
47
+ - [FAQ](../faq.md)
48
+ - [Roadmap](../roadmap.md)
49
+ - [Current Truth](../current-truth.md)
@@ -1,11 +1,13 @@
1
1
  # Press Releases: [PROJECT_NAME]
2
2
 
3
+ **Last Updated**: [DATE]
4
+ **Companion History**: [.product/history/press-history.md](.product/history/press-history.md)
5
+
3
6
  <!--
4
- This document contains all press releases for this project, ordered reverse-chronologically.
7
+ Keep the main document focused on the active upcoming or current press release.
8
+ Use the companion history file for deeper archival notes and superseded drafts.
5
9
  -->
6
10
 
7
- ---
8
-
9
11
  ## [RELEASE_NAME] — [TARGET_DATE] *(upcoming)*
10
12
 
11
13
  **[CITY, STATE]** — [One-sentence opening that names the customer segment and the key benefit they now have. This is the hook.]
@@ -24,3 +26,22 @@
24
26
  - **[Benefit 1]**: [One sentence explaining the customer value]
25
27
  - **[Benefit 2]**: [One sentence explaining the customer value]
26
28
  - **[Benefit 3]**: [One sentence explaining the customer value]
29
+
30
+ ## Assumptions
31
+
32
+ - [Assumption about customer need, urgency, or launch context]
33
+ - [Assumption that should be revisited during FAQ or alignment]
34
+
35
+ ## Key Decisions
36
+
37
+ | Decision | Why It Matters | Current Direction |
38
+ |----------|----------------|-------------------|
39
+ | [Decision] | [Why it shapes the press release promise] | [Current choice] |
40
+
41
+ ## Related Artifacts
42
+
43
+ - [Domain](../domain.md)
44
+ - [FAQ](../faq.md)
45
+ - [Narrative](../narrative.md)
46
+ - [Roadmap](../roadmap.md)
47
+ - [Current Truth](../current-truth.md)
@@ -1,34 +1,5 @@
1
- # Product Requirements: [PROJECT_NAME]
1
+ # Legacy Notice: requirements-template
2
2
 
3
- **Last Updated**: [DATE]
3
+ This template has been superseded by `current-truth-template.md`.
4
4
 
5
- ## Product Overview
6
-
7
- [2-3 sentences describing what the product does, who it's for, and the core value proposition.]
8
-
9
- ## Use Cases
10
-
11
- ### UC-001: [Use Case Name]
12
-
13
- - **Actor**: [Who performs this]
14
- - **Goal**: [What they want to accomplish]
15
- - **Description**: [How the product supports this goal, end to end]
16
- - **Status**: [Complete | Partial | Planned]
17
-
18
- ## Functional Summary
19
-
20
- ### [Functional Area 1]
21
-
22
- | Capability | Description | Status |
23
- |-----------|-------------|--------|
24
- | [Capability] | [What it does from the user's perspective] | [Shipped / In Progress / Planned] |
25
-
26
- ## Cross-Cutting Concerns
27
-
28
- - **[Concern]**: [How it's handled across the product]
29
-
30
- ## Changelog
31
-
32
- | Date | Change | Source |
33
- |------|--------|--------|
34
- | [DATE] | [What changed in this document] | [Which spec or release triggered the update] |
5
+ Use `.product/current-truth.md` as the living current-state product specification maintained by alignment work. Keep future sequencing and prioritization in `.product/roadmap.md`.
@@ -0,0 +1,49 @@
1
+ # Product Roadmap: [PROJECT_NAME]
2
+
3
+ **Last Updated**: [DATE]
4
+ **Companion History**: [.product/history/roadmap-history.md](.product/history/roadmap-history.md)
5
+
6
+ ## Roadmap Summary
7
+
8
+ [2-3 sentences describing what customer outcomes the roadmap is pursuing and why now.]
9
+
10
+ ## Committed Bets
11
+
12
+ | Initiative | Customer Outcome | Phase | Confidence | Dependencies |
13
+ |------------|------------------|-------|------------|--------------|
14
+ | [Initiative] | [Outcome] | [Now / Next] | [High / Medium / Low] | [Dependency] |
15
+
16
+ ## Exploratory Work
17
+
18
+ | Initiative | Question Being Explored | Confidence | Trigger for Commitment |
19
+ |------------|--------------------------|------------|------------------------|
20
+ | [Initiative] | [Unknown to resolve] | [Medium / Low] | [What would make this real] |
21
+
22
+ ## Deferred Opportunities
23
+
24
+ | Opportunity | Why Deferred | Revisit Signal |
25
+ |-------------|--------------|----------------|
26
+ | [Opportunity] | [Why now is not the time] | [What would prompt reconsideration] |
27
+
28
+ ## Sequencing Rationale
29
+
30
+ - [Why this order makes sense for customer value]
31
+ - [Key tradeoff or dependency influencing the sequence]
32
+
33
+ ## Assumptions
34
+
35
+ - [Assumption behind roadmap sequencing]
36
+ - [Assumption that could reorder priorities]
37
+
38
+ ## Key Decisions
39
+
40
+ | Decision | Why It Matters | Current Direction |
41
+ |----------|----------------|-------------------|
42
+ | [Decision] | [Why it shapes prioritization] | [Current choice] |
43
+
44
+ ## Related Artifacts
45
+
46
+ - [Narrative](../narrative.md)
47
+ - [FAQ](../faq.md)
48
+ - [Current Truth](../current-truth.md)
49
+ - [Engineering Specs](../../specs/)
@@ -7,7 +7,7 @@ async function describeHealthIssues(context) {
7
7
  issues.push({
8
8
  code: "CLAUDE_MISSING_FILE",
9
9
  severity: "error",
10
- message: `Missing Claude Code asset ${asset.targetPath}`,
10
+ message: `Missing Claude Code workflow asset ${asset.targetPath}`,
11
11
  path: asset.targetPath
12
12
  });
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEpE,KAAK,UAAU,oBAAoB,CAAC,OAA6B;IAC/D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,6BAA6B,KAAK,CAAC,UAAU,EAAE;gBACxD,IAAI,EAAE,KAAK,CAAC,UAAU;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,GAAG,EAAE,QAAQ;IACb,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,kBAAkB;IAC9B,oBAAoB,CAAC,QAAgB;QACnC,OAAO,oBAAoB,QAAQ,EAAE,CAAC;IACxC,CAAC;IACD,oBAAoB;CACrB,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEpE,KAAK,UAAU,oBAAoB,CAAC,OAA6B;IAC/D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,sCAAsC,KAAK,CAAC,UAAU,EAAE;gBACjE,IAAI,EAAE,KAAK,CAAC,UAAU;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,GAAG,EAAE,QAAQ;IACb,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,kBAAkB;IAC9B,oBAAoB,CAAC,QAAgB;QACnC,OAAO,oBAAoB,QAAQ,EAAE,CAAC;IACxC,CAAC;IACD,oBAAoB;CACrB,CAAC"}
@@ -7,7 +7,7 @@ async function describeHealthIssues(context) {
7
7
  issues.push({
8
8
  code: "CODEX_MISSING_FILE",
9
9
  severity: "error",
10
- message: `Missing Codex asset ${asset.targetPath}`,
10
+ message: `Missing Codex workflow asset ${asset.targetPath}`,
11
11
  path: asset.targetPath
12
12
  });
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEpE,KAAK,UAAU,oBAAoB,CAAC,OAA6B;IAC/D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,uBAAuB,KAAK,CAAC,UAAU,EAAE;gBAClD,IAAI,EAAE,KAAK,CAAC,UAAU;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C,GAAG,EAAE,OAAO;IACZ,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,iBAAiB;IAC7B,oBAAoB,CAAC,QAAgB;QACnC,OAAO,mBAAmB,QAAQ,EAAE,CAAC;IACvC,CAAC;IACD,oBAAoB;CACrB,CAAC"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEpE,KAAK,UAAU,oBAAoB,CAAC,OAA6B;IAC/D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,gCAAgC,KAAK,CAAC,UAAU,EAAE;gBAC3D,IAAI,EAAE,KAAK,CAAC,UAAU;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C,GAAG,EAAE,OAAO;IACZ,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,iBAAiB;IAC7B,oBAAoB,CAAC,QAAgB;QACnC,OAAO,mBAAmB,QAAQ,EAAE,CAAC;IACvC,CAAC;IACD,oBAAoB;CACrB,CAAC"}
@@ -1,9 +1,26 @@
1
- const assistantCommands = ["product-spec-domain.md", "product-spec-press.md", "product-spec-faq.md", "product-spec-align.md"];
1
+ const assistantCommands = [
2
+ "product-spec-domain.md",
3
+ "product-spec-press.md",
4
+ "product-spec-faq.md",
5
+ "product-spec-narrative.md",
6
+ "product-spec-roadmap.md",
7
+ "product-spec-align.md"
8
+ ];
2
9
  const sharedTemplates = [
3
10
  "domain-template.md",
4
11
  "press-template.md",
5
12
  "faq-template.md",
6
- "requirements-template.md"
13
+ "narrative-template.md",
14
+ "roadmap-template.md",
15
+ "current-truth-template.md"
16
+ ];
17
+ const historyTemplates = [
18
+ "domain-history-template.md",
19
+ "press-history-template.md",
20
+ "faq-history-template.md",
21
+ "narrative-history-template.md",
22
+ "roadmap-history-template.md",
23
+ "current-truth-history-template.md"
7
24
  ];
8
25
  function buildAssistantAssets(target, commandDir) {
9
26
  return assistantCommands.map((fileName) => ({
@@ -15,13 +32,20 @@ function buildAssistantAssets(target, commandDir) {
15
32
  }));
16
33
  }
17
34
  function buildSharedAssets() {
18
- return sharedTemplates.map((fileName) => ({
35
+ const primaryAssets = sharedTemplates.map((fileName) => buildSharedAsset(fileName, "product-template"));
36
+ const historyAssets = historyTemplates.map((fileName) => buildSharedAsset(fileName, "product-history-template", "history"));
37
+ return [...primaryAssets, ...historyAssets];
38
+ }
39
+ function buildSharedAsset(fileName, category, subdir) {
40
+ const relativeDir = subdir ? `assets/product/templates/${subdir}` : "assets/product/templates";
41
+ const targetDir = subdir ? `.product/templates/${subdir}` : ".product/templates";
42
+ return {
19
43
  id: `shared/${fileName.replace(/\.md$/, "")}`,
20
- category: "product-template",
44
+ category,
21
45
  target: "shared",
22
- sourcePath: `assets/product/templates/${fileName}`,
23
- targetPath: `.product/templates/${fileName}`
24
- }));
46
+ sourcePath: `${relativeDir}/${fileName}`,
47
+ targetPath: `${targetDir}/${fileName}`
48
+ };
25
49
  }
26
50
  export const assistantAssetRegistry = {
27
51
  claude: buildAssistantAssets("claude", ".claude/commands"),
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/assets/registry.ts"],"names":[],"mappings":"AAUA,MAAM,iBAAiB,GAAG,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;AAC9H,MAAM,eAAe,GAAG;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,0BAA0B;CAC3B,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAAuB,EAAE,UAAkB;IACvE,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1C,EAAE,EAAE,GAAG,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;QAChD,QAAQ,EAAE,mBAAmB;QAC7B,MAAM;QACN,UAAU,EAAE,UAAU,MAAM,aAAa,QAAQ,EAAE;QACnD,UAAU,EAAE,GAAG,UAAU,IAAI,QAAQ,EAAE;KACxC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxC,EAAE,EAAE,UAAU,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;QAC7C,QAAQ,EAAE,kBAAkB;QAC5B,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,4BAA4B,QAAQ,EAAE;QAClD,UAAU,EAAE,sBAAsB,QAAQ,EAAE;KAC7C,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAA+C;IAChF,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAC1D,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,EAAE,CAAC;AAEvD,MAAM,UAAU,yBAAyB,CAAC,MAAuB;IAC/D,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/assets/registry.ts"],"names":[],"mappings":"AAUA,MAAM,iBAAiB,GAAG;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,qBAAqB;IACrB,2BAA2B;IAC3B,yBAAyB;IACzB,uBAAuB;CACxB,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,uBAAuB;IACvB,qBAAqB;IACrB,2BAA2B;CAC5B,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,4BAA4B;IAC5B,2BAA2B;IAC3B,yBAAyB;IACzB,+BAA+B;IAC/B,6BAA6B;IAC7B,mCAAmC;CACpC,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAAuB,EAAE,UAAkB;IACvE,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1C,EAAE,EAAE,GAAG,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;QAChD,QAAQ,EAAE,mBAAmB;QAC7B,MAAM;QACN,UAAU,EAAE,UAAU,MAAM,aAAa,QAAQ,EAAE;QACnD,UAAU,EAAE,GAAG,UAAU,IAAI,QAAQ,EAAE;KACxC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACxG,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtD,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,SAAS,CAAC,CAClE,CAAC;IAEF,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAgB,EAChB,QAAuB,EACvB,MAAe;IAEf,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC;IAC/F,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAEjF,OAAO;QACL,EAAE,EAAE,UAAU,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;QAC7C,QAAQ;QACR,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,GAAG,WAAW,IAAI,QAAQ,EAAE;QACxC,UAAU,EAAE,GAAG,SAAS,IAAI,QAAQ,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAA+C;IAChF,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAC1D,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,EAAE,CAAC;AAEvD,MAAM,UAAU,yBAAyB,CAAC,MAAuB;IAC/D,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -57,7 +57,10 @@ export async function runAdd(options) {
57
57
  changedTargets,
58
58
  skippedTargets,
59
59
  files,
60
- notes: ["Run `product-spec check` to validate the installed integrations."]
60
+ notes: [
61
+ "Run `product-spec check` to validate the installed integrations.",
62
+ "Installed workflow: domain -> press -> faq -> narrative -> roadmap -> speckit* -> align -> current-truth."
63
+ ]
61
64
  };
62
65
  }
63
66
  //# sourceMappingURL=add.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/core/orchestration/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/core/orchestration/add.ts"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ export async function runCheck(options) {
66
66
  ? "No action needed."
67
67
  : status === "missing"
68
68
  ? `Run \`product-spec add ${target}\` to install this integration.`
69
- : `Run \`product-spec add ${target}\` to refresh managed files, then \`product-spec check ${target}\` again.`;
69
+ : `Run \`product-spec add ${target}\` to refresh managed files, then \`product-spec check ${target}\` again. The canonical workflow ends with \`current-truth.md\` maintained by \`align\`.`;
70
70
  reports.push({
71
71
  target,
72
72
  status,
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/core/orchestration/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/core/orchestration/check.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,8 @@ export async function runDoctor(options) {
10
10
  `Status: ${report.status}`,
11
11
  `Manifest aligned: ${report.manifestAligned ? "yes" : "no"}`,
12
12
  issueList,
13
- `Recommended action: ${report.recommendedAction}`
13
+ `Recommended action: ${report.recommendedAction}`,
14
+ "Workflow reminder: domain -> press -> faq -> narrative -> roadmap -> speckit* -> align -> current-truth"
14
15
  ].join("\n");
15
16
  });
16
17
  return { details };
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/core/orchestration/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWtC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExF,OAAO;YACL,MAAM,MAAM,CAAC,MAAM,EAAE;YACrB,WAAW,MAAM,CAAC,MAAM,EAAE;YAC1B,qBAAqB,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YAC5D,SAAS;YACT,uBAAuB,MAAM,CAAC,iBAAiB,EAAE;SAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/core/orchestration/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWtC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExF,OAAO;YACL,MAAM,MAAM,CAAC,MAAM,EAAE;YACrB,WAAW,MAAM,CAAC,MAAM,EAAE;YAC1B,qBAAqB,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YAC5D,SAAS;YACT,uBAAuB,MAAM,CAAC,iBAAiB,EAAE;YACjD,yGAAyG;SAC1G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import path from "node:path";
1
2
  import { sharedAssetRegistry } from "../assets/registry.js";
2
3
  import { assertInsideRoot, ensureDirectory, hashFile, joinProjectPath, pathExists, readText, removeIfExists, writeText } from "../fs/project.js";
3
4
  export async function installSharedAssets(rootDir, packageRoot) {
@@ -8,7 +9,7 @@ export async function installSharedAssets(rootDir, packageRoot) {
8
9
  const targetPath = joinProjectPath(rootDir, asset.targetPath);
9
10
  assertInsideRoot(rootDir, targetPath);
10
11
  const existed = await pathExists(targetPath);
11
- await ensureDirectory(joinProjectPath(rootDir, ".product/templates"));
12
+ await ensureDirectory(path.dirname(targetPath));
12
13
  await writeText(targetPath, await readText(sourcePath));
13
14
  sharedAssets.push({
14
15
  ...asset,
@@ -1 +1 @@
1
- {"version":3,"file":"shared-assets.js","sourceRoot":"","sources":["../../../src/core/orchestration/shared-assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,eAAe,EACf,UAAU,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACV,MAAM,kBAAkB,CAAC;AAO1B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,WAAmB;IAEnB,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACtE,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAExD,YAAY,CAAC,IAAI,CAAC;YAChB,GAAG,KAAK;YACR,QAAQ,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC;YACpC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACxC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,QAAyB;IAEzB,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACxC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"shared-assets.js","sourceRoot":"","sources":["../../../src/core/orchestration/shared-assets.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,eAAe,EACf,UAAU,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACV,MAAM,kBAAkB,CAAC;AAO1B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,WAAmB;IAEnB,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAChD,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAExD,YAAY,CAAC,IAAI,CAAC;YAChB,GAAG,KAAK;YACR,QAAQ,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC;YACpC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACxC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,QAAyB;IAEzB,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACxC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -5,7 +5,7 @@ export const MANIFEST_VERSION = "1";
5
5
  export const MANIFEST_RELATIVE_PATH = ".product-spec/manifest.json";
6
6
  const assetRecordSchema = z.object({
7
7
  id: z.string(),
8
- category: z.enum(["assistant-command", "product-template"]),
8
+ category: z.enum(["assistant-command", "product-template", "product-history-template"]),
9
9
  sourcePath: z.string(),
10
10
  targetPath: z.string(),
11
11
  target: z.enum(["claude", "codex", "shared"]),
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/state/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/state/manifest.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export type AssistantTarget = "claude" | "codex";
2
2
  export type RequestedTarget = AssistantTarget | "both";
3
- export type AssetCategory = "assistant-command" | "product-template";
3
+ export type AssetCategory = "assistant-command" | "product-template" | "product-history-template";
4
4
  export type HealthStatus = "healthy" | "missing" | "partial" | "unhealthy";
5
5
  export type LastOperation = "add" | "remove" | "check" | "doctor";
6
6
  export interface AssetRecord {
package/package.json CHANGED
@@ -1,8 +1,16 @@
1
1
  {
2
2
  "name": "product-spec",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "product-spec CLI for installing product-management command assets into Claude Code and Codex projects",
5
5
  "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/ehud-am/product-spec"
9
+ },
10
+ "homepage": "https://github.com/ehud-am/product-spec#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/ehud-am/product-spec/issues"
13
+ },
6
14
  "type": "module",
7
15
  "bin": {
8
16
  "product-spec": "dist/cli/main.js"