@mriekki/project-forge 2.0.0 → 2.2.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 (28) hide show
  1. package/assets/components.json +3 -3
  2. package/assets/core/distribution.json +7 -0
  3. package/assets/generated/ASSEMBLY.json +55 -20
  4. package/assets/generated/core/core/agents/reviewer.agent.md +1 -1
  5. package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +5 -1
  6. package/assets/generated/core/core/process/APPLICATION_VERSIONING.md +137 -0
  7. package/assets/generated/core/core/process/GUIDED_NEXT_STEPS.md +22 -6
  8. package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +31 -1
  9. package/assets/generated/core/core/process/OPERATION_JOURNAL.md +140 -0
  10. package/assets/generated/core/core/process/PROJECT_REQUIREMENTS_EXPORT.md +165 -0
  11. package/assets/generated/core/core/skills/build/SKILL.md +70 -0
  12. package/assets/generated/core/core/skills/cleanup-branches/SKILL.md +6 -10
  13. package/assets/generated/core/core/skills/code-walkthrough/SKILL.md +12 -8
  14. package/assets/generated/core/core/skills/core-sync/SKILL.md +17 -11
  15. package/assets/generated/core/core/skills/define-feature/SKILL.md +9 -18
  16. package/assets/generated/core/core/skills/deliver/SKILL.md +12 -8
  17. package/assets/generated/core/core/skills/deploy/SKILL.md +2 -2
  18. package/assets/generated/core/core/skills/export-requirements/SKILL.md +132 -0
  19. package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +6 -8
  20. package/assets/generated/core/core/skills/next-step/SKILL.md +10 -11
  21. package/assets/generated/core/core/skills/project-forge-update/SKILL.md +10 -6
  22. package/assets/generated/core/core/skills/pull-latest/SKILL.md +16 -10
  23. package/assets/generated/core/core/skills/refine-requirements/SKILL.md +37 -16
  24. package/assets/generated/core/core/skills/replatform/SKILL.md +122 -0
  25. package/assets/generated/core/core/skills/run/SKILL.md +75 -0
  26. package/assets/generated/core/core/skills/setup/SKILL.md +20 -17
  27. package/assets/generated/core/core/skills/start-work/SKILL.md +11 -9
  28. package/package.json +1 -1
@@ -0,0 +1,165 @@
1
+ # Project Requirements Export
2
+
3
+ `PROJECT_REQUIREMENTS.json` is the canonical portable Project Forge interchange artifact for durable product, domain, experience, roadmap, and approved cross-cutting intent.
4
+
5
+ It exists to support workflows such as replatforming the same product onto a different implementation stack without treating the source repository's framework/tool choices as product requirements.
6
+
7
+ ## Authority
8
+
9
+ The JSON file is a **derived export**, not a competing source of truth.
10
+
11
+ Repository authorities continue to own their facts. In a normal generated workspace that commonly means:
12
+
13
+ ```text
14
+ docs/product/PRODUCT_BRIEF.md
15
+ → docs/work-items/<FB-...>/brief.md
16
+ → approved requirements.md when present
17
+ ```
18
+
19
+ Additional product/domain authorities may include roadmap, system-design/domain invariants, product-level design/accessibility guidance, accepted ADR consequences, and project-owned decisions.
20
+
21
+ The export must retain source paths/authority/provenance so a consumer can trace normalized facts back to their repository authorities.
22
+
23
+ ## Canonical filename and state
24
+
25
+ Only this filename is canonical:
26
+
27
+ ```text
28
+ PROJECT_REQUIREMENTS.json
29
+ ```
30
+
31
+ The contract has no compatibility alias or alternate export filename.
32
+
33
+ State is explicit:
34
+
35
+ ```text
36
+ draft
37
+ review
38
+ approved
39
+ ```
40
+
41
+ Only `approved` may be consumed as replatform input.
42
+
43
+ ## Portable content model
44
+
45
+ The export should represent, when present:
46
+
47
+ - project/product identity;
48
+ - problem, users/stakeholders, desired outcomes, scope/non-scope;
49
+ - product workflows/capabilities and success measures;
50
+ - Feature Briefs with source ID, title, target milestone, target disposition, authority/status/maturity, outcomes, scope/non-scope, workflows, business/domain rules, dependencies, acceptance criteria, learning objectives, and open questions;
51
+ - domain concepts and relationships;
52
+ - domain invariants, lifecycle/state semantics, and business rules;
53
+ - cross-cutting security/privacy, accessibility, reliability, performance, and data requirements;
54
+ - portable product/UX principles, responsive constraints, and interaction intent;
55
+ - roadmap milestones/sequencing facts that express product intent;
56
+ - accepted decisions whose consequences are portable;
57
+ - explicit learning intent/future ideas while preserving their non-authorizing maturity;
58
+ - exact source repository/commit and contributing artifact paths.
59
+
60
+ ## Product Brief model
61
+
62
+ Project Forge generated workspaces currently use one canonical product authority:
63
+
64
+ ```text
65
+ docs/product/PRODUCT_BRIEF.md
66
+ ```
67
+
68
+ The export therefore uses one normalized `product` object rather than inventing a multi-Product-Brief hierarchy.
69
+
70
+ If a non-generated/adopted workspace declares a different authority model, export only what that model actually establishes. Do not manufacture a second Product Brief merely to fit Project Forge defaults.
71
+
72
+ ## Work-item maturity
73
+
74
+ Preserve maturity exactly.
75
+
76
+ Typical generated-project semantics include:
77
+
78
+ ```text
79
+ V1 + committed
80
+ V2 + planned
81
+ V3 + directional
82
+ ```
83
+
84
+ Presence in `PROJECT_REQUIREMENTS.json` is never implementation authorization. A roadmap Feature remains roadmap/directional until separately promoted through the normal requirements/work-item process.
85
+
86
+ ## Engineering Enablers
87
+
88
+ Engineering Enablers are usually implementation-specific and are not portable product requirements.
89
+
90
+ The export may retain an enabler in source traceability when it establishes a durable cross-cutting requirement, but replatforming normally re-derives stack-specific enablers rather than copying their IDs/scope.
91
+
92
+ Examples:
93
+
94
+ ```text
95
+ PRESERVE: secure individual authentication is required for remote internet use
96
+ RE-DERIVE: configure ASP.NET authentication middleware
97
+
98
+ PRESERVE: database schema changes must be reproducible and controlled
99
+ RE-DERIVE: use EF Core migrations
100
+ ```
101
+
102
+ ## Mixed authorities
103
+
104
+ Some documents mix durable intent with implementation choices. Treat these as classification inputs rather than all-or-nothing copies.
105
+
106
+ Examples:
107
+
108
+ - a Project Blueprint may contain product/domain facts plus current technology baseline;
109
+ - a System Design may contain portable domain invariants plus React/.NET/SQLite topology;
110
+ - a UX pattern may contain portable interaction behavior plus component-library details;
111
+ - an ADR may establish both a product/security consequence and a stack-specific mechanism.
112
+
113
+ Extract the portable fact, retain source traceability, and exclude/reconcile the mechanism.
114
+
115
+ ## Exclusions
116
+
117
+ Do not export as portable requirements unless the repository explicitly makes them true product constraints:
118
+
119
+ - programming languages/frameworks/component libraries;
120
+ - ORMs, package managers, build tools, test runners;
121
+ - repository/project directory layouts;
122
+ - generated client/tooling mechanisms;
123
+ - CI implementation commands;
124
+ - current deployment host/provider bindings;
125
+ - secrets/credentials/private runtime values;
126
+ - application source code;
127
+ - work-item plans/review/delivery history;
128
+ - Git/PR/CI evidence;
129
+ - Project Forge/Core/Bootstrap baseline state.
130
+
131
+ ## Replatform relationship
132
+
133
+ The canonical flow is:
134
+
135
+ ```text
136
+ project authorities
137
+ → /export-requirements
138
+ → PROJECT_REQUIREMENTS.json state=review
139
+ → human approval
140
+ → PROJECT_REQUIREMENTS.json state=approved
141
+ → /replatform <target-stack>
142
+ → current Bootstrap catalog reconciliation
143
+ → PROJECT_BOOTSTRAP.json state=review
144
+ → human Bootstrap approval
145
+ → deterministic generation into a new repository
146
+ ```
147
+
148
+ `PROJECT_BOOTSTRAP.json` remains the generation/provenance contract for one implementation. `PROJECT_REQUIREMENTS.json` remains the portable product/domain interchange contract.
149
+
150
+ ## No in-place replatforming
151
+
152
+ Replatforming creates a sibling/new implementation repository. It never rewrites the source application in place.
153
+
154
+ This preserves historical truth and allows multiple implementations of the same product intent to coexist, such as:
155
+
156
+ ```text
157
+ Family Meal Planner requirements
158
+ ├── React + ASP.NET Core implementation
159
+ ├── Angular + Spring Boot implementation
160
+ └── Blazor + ASP.NET Core implementation
161
+ ```
162
+
163
+ ## Security
164
+
165
+ The export must not contain secrets, credentials, private keys, access tokens, production data, machine-local bindings, or arbitrary runtime/log transcripts.
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: build
3
+ description: "Build the current project through its repository-owned build command without turning local compilation into setup, testing, delivery, or deployment."
4
+ argument-hint: "[target|all]"
5
+ user-invocable: true
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ # Build
10
+
11
+ `/build` is a thin local helper. It hides framework-specific command details while preserving the repository as the authority for how the project builds.
12
+
13
+ ## Contract
14
+
15
+ Invoking `/build` authorizes one bounded local build attempt for the requested target. It does not authorize setup, dependency upgrades, source edits, delivery, release publication, deployment, or Production access.
16
+
17
+ Resolve the build command from current repository evidence in this order:
18
+
19
+ 1. an explicit repository-owned build wrapper or documented build command;
20
+ 2. an explicit package/task script whose purpose is build;
21
+ 3. an unambiguous ecosystem-native build entry point already present in the repository.
22
+
23
+ Do not invent a command because a framework is recognizable. If multiple materially different build targets exist and no default is documented, require a target such as `/build web`, `/build api`, or `/build all`.
24
+
25
+ ## Preconditions
26
+
27
+ Before execution:
28
+
29
+ - identify the repository root and current Git state;
30
+ - inspect `PROJECT_BOOTSTRAP.json` and scaffold/readiness evidence when present;
31
+ - verify that the selected build entry point exists;
32
+ - do not create an intentionally deferred scaffold merely to make `/build` succeed.
33
+
34
+ If the approved scaffold is deferred or required build markers do not exist, return `BUILD NOT AVAILABLE` with the smallest relevant reason. Do not run installation/scaffolding commands as an implicit repair.
35
+
36
+ If dependencies or workstation tools are missing, recommend `/setup` rather than broadening `/build`.
37
+
38
+ ## Execution
39
+
40
+ Run the selected build visibly and report:
41
+
42
+ - target;
43
+ - resolved repository-owned command identity;
44
+ - success/failure and exit code when available;
45
+ - produced artifact/output locations when the build contract makes them explicit;
46
+ - effective application release/build identity when the build exposes it;
47
+ - a concise actionable failure summary.
48
+
49
+ Do not add linting, tests, formatting, packaging, container publishing, or code generation unless the repository's selected build command already defines them as part of that build.
50
+
51
+ When the project implements `docs/process/APPLICATION_VERSIONING.md`, report observed version evidence from the build output/artifact metadata. Do not synthesize a build number, commit, or display version when the repository did not produce it.
52
+
53
+ ## Operation journal
54
+
55
+ A consequential build may write a concise sanitized journal under `.project-forge/logs/build/` following `docs/process/OPERATION_JOURNAL.md`.
56
+
57
+ Record the command identity, target, timestamps, exit status, explicit artifact paths, and observed application version/build identity when available. Do not blindly capture unlimited compiler/application output or secrets.
58
+
59
+ ## Git and lifecycle boundary
60
+
61
+ `/build` must not:
62
+
63
+ - edit source or configuration to fix a build;
64
+ - stage, commit, push, open/update PRs, merge, or clean branches;
65
+ - mark a work item accepted or delivered;
66
+ - bump the application's release version merely to create a unique build;
67
+ - publish a package/image/release;
68
+ - deploy locally or remotely.
69
+
70
+ A successful build is local machine evidence only.
@@ -114,18 +114,14 @@ If no branch is safely deletable, stop after the preview.
114
114
 
115
115
  ## 5. Cleanup gate
116
116
 
117
- For a non-empty verified-safe set, present one bounded destructive gate:
117
+ For a non-empty verified-safe set, present one bounded destructive gate using the host-native **single-select structured choice UI** when available; in VS Code use the native question surface such as `vscode_askQuestions`. Offer:
118
118
 
119
- ```text
120
- BRANCH CLEANUP READY
121
-
122
- 1. Delete verified-safe local + remote branches [GIT + GITHUB WRITE] — recommended
123
- 2. Delete verified-safe remote branches only [GITHUB WRITE]
124
- 3. Delete verified-safe local branches only [GIT WRITE]
125
- 4. Stop [NO ACTION]
126
- ```
119
+ - `Delete verified-safe local + remote branches` `[GIT + GITHUB WRITE]` — `RECOMMENDED`
120
+ - `Delete verified-safe remote branches only` `[GITHUB WRITE]`
121
+ - `Delete verified-safe local branches only` `[GIT WRITE]`
122
+ - `Stop` `[NO ACTION]`
127
123
 
128
- Only the selected option authorizes the corresponding deletions. Do not include REVIEW REQUIRED branches in the bounded action.
124
+ Use a numbered text menu only when structured choice UI is unavailable. Only the selected choice authorizes the corresponding deletions. Do not include REVIEW REQUIRED branches in the bounded action.
129
125
 
130
126
  ## 6. Revalidate before deletion
131
127
 
@@ -58,6 +58,8 @@ Deep — important methods/blocks, state/data flow, dependencies, edge cases,
58
58
 
59
59
  Depth may vary by file. Treat trivial configuration lightly unless it materially affects behavior; spend more depth on implementation anchors.
60
60
 
61
+ If the human needs to choose a depth, use host-native **single-select structured choice UI** when available. Do not recommend a depth unless the requested learning goal or change complexity clearly supports one; `Focused` is a descriptive default, not permission to manufacture a recommendation.
62
+
61
63
  ## 4. Build the walkthrough plan
62
64
 
63
65
  Before explaining the first file:
@@ -125,13 +127,15 @@ Group trivial generated/configuration changes when that improves learning, but d
125
127
 
126
128
  Default to one file or one tightly related file group at a time. Do not dump the whole implementation at once.
127
129
 
128
- At a natural file boundary, show a compact navigation cue such as:
130
+ At a natural file boundary, a compact navigation cue may be shown:
129
131
 
130
132
  ```text
131
133
  NEXT: <suggested file>
132
134
  Use: next | deeper | explain this | trace | why this design | diagram | quiz | debug | interview | skip | stop
133
135
  ```
134
136
 
137
+ When the host exposes structured choice UI and the human is being asked to choose among these navigation actions, prefer a relevant **single-select** subset rather than forcing the human to type a token. Keep free-text commands valid. Do not turn the full command vocabulary into a large mandatory selector when the next action is already obvious.
138
+
135
139
  Interpret these naturally:
136
140
  - `next` — continue to the suggested next file;
137
141
  - `deeper` — increase depth for the current file/topic;
@@ -185,13 +189,13 @@ When the planned change set is covered or the human stops, summarize:
185
189
  - learning gaps or topics worth revisiting,
186
190
  - optional next learning actions.
187
191
 
188
- Offer only relevant next choices, such as:
192
+ When offering bounded next actions, use host-native **single-select structured choice UI** when available. Relevant choices may include:
189
193
 
190
- ```text
191
- 1. /learning-review <same scope> [READ ONLY]
192
- 2. /coach <specific concept> [READ ONLY]
193
- 3. Return to engineering workflow [NO ACTION]
194
- 4. Stop [NO ACTION]
195
- ```
194
+ - `/learning-review <same scope>` `[READ ONLY]`
195
+ - `/coach <specific concept>` `[READ ONLY]`
196
+ - `Return to engineering workflow` `[NO ACTION]`
197
+ - `Stop` `[NO ACTION]`
198
+
199
+ Recommend at most one only when the walkthrough evidence shows a clear learning gap or the engineering workflow is clearly the better next step; otherwise present the choices without a recommendation. Use a numbered text menu only when structured choice UI is unavailable.
196
200
 
197
201
  Do not create a new engineering state such as `CODE_WALKTHROUGH_PENDING`. Walkthrough completion is learning evidence, not a delivery gate.
@@ -94,7 +94,9 @@ If the checkout is dirty, ahead, diverged, intentionally pinned, or ambiguous, p
94
94
 
95
95
  ## 5. Present one bounded component-sync choice
96
96
 
97
- For a safe local source:
97
+ Use the host-native **single-select structured choice UI** when available because exactly one next action is authorized. In VS Code use the native question surface such as `vscode_askQuestions`. Preserve the consequence labels and show the recommended choice. Use a numbered text list only when structured choice UI is unavailable.
98
+
99
+ For a safe local source, show the evidence:
98
100
 
99
101
  ```text
100
102
  CORE SYNC READY
@@ -102,13 +104,15 @@ CORE SYNC READY
102
104
  Consumer baseline: <commit/version>
103
105
  Source: LOCAL <core-path>
104
106
  Distribution: <distribution>
105
-
106
- 1. Sync the component-only Core baseline [GIT + FILE WRITE] — recommended
107
- 2. Keep inspecting only [READ ONLY]
108
- 3. Stop [NO ACTION]
109
107
  ```
110
108
 
111
- For a configured remote source:
109
+ Then offer:
110
+
111
+ - `Sync the component-only Core baseline` `[GIT + FILE WRITE]` — `RECOMMENDED`
112
+ - `Keep inspecting only` `[READ ONLY]`
113
+ - `Stop` `[NO ACTION]`
114
+
115
+ For a configured remote source, show:
112
116
 
113
117
  ```text
114
118
  CORE SYNC READY
@@ -116,17 +120,19 @@ CORE SYNC READY
116
120
  Consumer baseline: <commit/version>
117
121
  Source: REMOTE PROVIDER
118
122
  Provider: <provider repository>
119
-
120
- 1. Request remote Core sync [REMOTE WRITE] — recommended
121
- 2. Keep inspecting only [READ ONLY]
122
- 3. Stop [NO ACTION]
123
123
  ```
124
124
 
125
+ Then offer:
126
+
127
+ - `Request remote Core sync` `[REMOTE WRITE]` — `RECOMMENDED`
128
+ - `Keep inspecting only` `[READ ONLY]`
129
+ - `Stop` `[NO ACTION]`
130
+
125
131
  The selected choice does not authorize merge, release publication, or deployment.
126
132
 
127
133
  ## 6. Local component path
128
134
 
129
- After local option 1 is selected:
135
+ After `Sync the component-only Core baseline` is selected:
130
136
 
131
137
  1. Refresh Core remote state.
132
138
  2. Reclassify the accepted/default Core branch.
@@ -63,7 +63,7 @@ Do not create a competing source of truth.
63
63
 
64
64
  Ask one material question at a time when a real decision is unresolved.
65
65
 
66
- For bounded decisions with a small credible answer space, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md`. Keep initial product/problem framing, desired outcomes, workflows, and other answers that need the human's own wording open-ended rather than constraining them to invented options.
66
+ For bounded decisions with a small credible answer space, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md`. When the host exposes structured choice controls, render mutually exclusive alternatives through single-select UI rather than a plain numbered menu; use multi-select only when several simultaneous selections are actually valid. Keep `Other / specify` or free-text available when choices may be incomplete. Keep initial product/problem framing, desired outcomes, workflows, and other answers that need the human's own wording open-ended rather than constraining them to invented options.
67
67
 
68
68
  Clarify only what matters, such as:
69
69
  - user/engineering outcome,
@@ -123,22 +123,13 @@ If systematic lower-level coverage is valuable, recommend:
123
123
 
124
124
  ## 7. Guided ending
125
125
 
126
- Use a small evidence-backed menu, for example:
126
+ Use a small evidence-backed set of relevant actions. In VS Code, render them through the host-native **single-select structured choice UI** such as `vscode_askQuestions` when available. Conceptual choices may include:
127
127
 
128
- ```text
129
- CURRENT STATE
130
- <what is defined and what remains open>
131
-
132
- RECOMMENDED NEXT STEP
133
- <one action and why>
134
-
135
- OPTIONS
136
- 1. Review definition [READ ONLY]
137
- 2. Grill unresolved behavior [READ ONLY]
138
- 3. Refine detailed requirements [READ ONLY initially]
139
- 4. Approve requirements/scope when applicable [REQUIREMENTS GATE]
140
- 5. Start work if already ready [READ ONLY]
141
- 6. Stop [NO ACTION]
142
- ```
128
+ - `Review definition` `[READ ONLY]`
129
+ - `Grill unresolved behavior` `[READ ONLY]`
130
+ - `Refine detailed requirements` `[READ ONLY initially]`
131
+ - `Approve requirements/scope` `[REQUIREMENTS GATE]` when applicable
132
+ - `Start work` `[READ ONLY]` when already ready
133
+ - `Stop` `[NO ACTION]`
143
134
 
144
- Only show relevant options. A file-changing choice authorizes only that bounded action/session.
135
+ Make the recommended next action visible when evidence supports one. Use a numbered text menu only when structured choice UI is unavailable. A file-changing choice authorizes only that bounded action/session.
@@ -197,7 +197,7 @@ If a Draft PR was required earlier and all readiness conditions are now satisfie
197
197
 
198
198
  ## 8. Single merge + finalize gate
199
199
 
200
- When PR evidence still matches the accepted implementation and CI/policy are satisfactory, combine final PR acceptance and merge authorization into one meaningful gate:
200
+ When PR evidence still matches the accepted implementation and CI/policy are satisfactory, combine final PR acceptance and merge authorization into one meaningful gate. First show:
201
201
 
202
202
  ```text
203
203
  MERGE READY
@@ -206,13 +206,17 @@ PR CI: GREEN
206
206
  Reviewer: READY
207
207
  PR diff: matches accepted delivery scope
208
208
  Mergeable/policy: <observed state>
209
-
210
- 1. Merge and finalize delivery [HUMAN ACCEPTANCE + GITHUB/GIT WRITE] — recommended
211
- 2. Review final PR diff first [READ ONLY]
212
- 3. Leave PR open [NO ACTION]
213
209
  ```
214
210
 
215
- Selecting option 1 means:
211
+ Then render the mutually exclusive gate through the host-native **single-select structured choice UI** when available. In VS Code use the native question surface such as `vscode_askQuestions`. Offer:
212
+
213
+ - `Merge and finalize delivery` `[HUMAN ACCEPTANCE + GITHUB/GIT WRITE]` — `RECOMMENDED`
214
+ - `Review final PR diff first` `[READ ONLY]`
215
+ - `Leave PR open` `[NO ACTION]`
216
+
217
+ Use a numbered text list only when structured choice UI is unavailable.
218
+
219
+ Selecting `Merge and finalize delivery` means:
216
220
  - the human accepts the final PR as observed,
217
221
  - merge is authorized using the repository-approved strategy,
218
222
  - applicable post-merge default-branch CI/policy may be observed/rechecked automatically,
@@ -247,7 +251,7 @@ Only after configured post-merge default-branch CI and any additional observable
247
251
 
248
252
  ## 10. Delivered-branch finalization
249
253
 
250
- For a normal short-lived delivered branch, option 1 at the merge gate already authorizes finalization. Do not ask a separate `Delete branch?` question.
254
+ For a normal short-lived delivered branch, the `Merge and finalize delivery` gate choice already authorizes finalization. Do not ask a separate `Delete branch?` question.
251
255
 
252
256
  Preserve by default:
253
257
  - the configured default branch,
@@ -394,4 +398,4 @@ The optional learning handoff does not block or replace deployment readiness whe
394
398
 
395
399
  `/deliver` takes reviewed/accepted work through routine branch/commit/push/PR/CI mechanics automatically, then stops once for the merge-and-finalize decision. After successful engineering completion it may prepare disposable learning workbenches and shows an optional learning handoff without creating another gate.
396
400
 
397
- `/cleanup-branches` is the standalone preview-first path for accumulated, previously retained, unrelated, or otherwise out-of-band branch housekeeping.
401
+ `/cleanup-branches` is the standalone preview-first path for accumulated, previously retained, unrelated, or otherwise out-of-band branch housekeeping.
@@ -33,7 +33,7 @@ Resolve exact configured name, purpose/Production classification, placement, iso
33
33
 
34
34
  If `demo` exists, `/deploy demo` targets exactly `demo`. If `prod-east` has purpose `production`, `/deploy prod-east` remains a Production deployment even though the literal name differs.
35
35
 
36
- If no environment is named, enumerate configured environments and ask the human to choose; never silently default to Production. The deployment workflow must never fall back to another environment/placement/host/provider because deployment fails.
36
+ If no environment is named, enumerate configured environments and ask the human to choose through host-native **single-select structured choice UI** when available; in VS Code use the native question surface such as `vscode_askQuestions`; never silently default to Production. Do not recommend an environment unless current project evidence or the user's stated deployment goal clearly supports one. The deployment workflow must never fall back to another environment/placement/host/provider because deployment fails.
37
37
 
38
38
  If the requested environment is missing or ambiguous, route to `/setup` rather than guessing.
39
39
 
@@ -73,7 +73,7 @@ immutable application image/release policy
73
73
  smoke validation
74
74
  ```
75
75
 
76
- When a bounded choice is useful, provide a small recommended menu plus `Other / specify` and `Not sure — recommend one`.
76
+ When a bounded choice is useful, follow `INTERACTIVE_SESSION_GUIDE.md`: use host-native structured choice UI when available, single-select for mutually exclusive values and multi-select only when several simultaneous selections are valid. Keep `Other / specify` or free-text available when the choices may be incomplete. Recommend at most one option, only when evidence or a clear engineering tradeoff supports it, and explain why briefly; otherwise show the choices without a recommendation. Record only the human's selected/confirmed answer.
77
77
 
78
78
  Once these facts are durably established, later deployments should be routine rather than repeating onboarding.
79
79
 
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: export-requirements
3
+ description: "Export the workspace's durable product, domain, UX, roadmap, and approved feature intent into canonical PROJECT_REQUIREMENTS.json without copying stack-specific implementation choices."
4
+ argument-hint: "[review|approve]"
5
+ user-invocable: true
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ # Export Project Requirements
10
+
11
+ `/export-requirements` creates the portable Project Forge requirements interchange artifact:
12
+
13
+ ```text
14
+ PROJECT_REQUIREMENTS.json
15
+ ```
16
+
17
+ It is a derived export of the workspace's existing authorities. It is not a competing requirements database and it never outranks the source Product Brief, Feature Briefs, approved detailed requirements, accepted product/domain decisions, or other repository authorities.
18
+
19
+ ## Purpose
20
+
21
+ Use this export when the same product/system intent should be carried into a new implementation, especially `/replatform`.
22
+
23
+ The export answers:
24
+
25
+ > What must remain true about the product, domain, user experience, roadmap, and accepted cross-cutting behavior independent of this implementation stack?
26
+
27
+ It must not answer:
28
+
29
+ > Which framework, language, ORM, build tool, folder layout, or CI implementation should the next repository use?
30
+
31
+ ## Source model
32
+
33
+ Start from the workspace's declared authority model. In a normal generated Project Forge workspace, inspect as applicable:
34
+
35
+ 1. `docs/product/PRODUCT_BRIEF.md` as product authority;
36
+ 2. `docs/product/IMPLEMENTATION_ROADMAP.md` for milestone/feature maturity and product sequencing facts;
37
+ 3. Product Feature folders under `docs/work-items/`, including `brief.md` and approved `requirements.md`;
38
+ 4. product/domain portions of architecture or system-design documents;
39
+ 5. durable domain concepts, relationships, invariants, and business rules;
40
+ 6. product-level design principles, accessibility/responsive requirements, and relevant interaction patterns;
41
+ 7. accepted ADRs/decisions that constrain product/domain behavior;
42
+ 8. approved cross-cutting security/privacy, reliability, performance, and data requirements;
43
+ 9. learning goals/future ideas when they are explicitly part of project intent, preserving their non-authorizing status.
44
+
45
+ Treat summaries such as AI context briefs as reference/navigation unless the repository declares them authoritative.
46
+
47
+ ## Preserve authority and maturity
48
+
49
+ Do not flatten roadmap maturity.
50
+
51
+ Preserve distinctions such as:
52
+
53
+ ```text
54
+ V1 / committed / approved
55
+ V2 / planned / roadmap
56
+ V3 / directional / roadmap
57
+ ```
58
+
59
+ A directional Feature remains directional in the export. Exporting it must not promote it into implementation scope.
60
+
61
+ ## Classification
62
+
63
+ Classify source material before export.
64
+
65
+ ### Preserve
66
+
67
+ Normally portable:
68
+
69
+ - product problem, goals, users, outcomes, scope/non-scope;
70
+ - Feature Brief intent and product dependencies;
71
+ - approved functional/domain requirements and acceptance criteria;
72
+ - domain concepts, relationships, invariants, lifecycle/state semantics, business rules;
73
+ - security/privacy outcomes and constraints;
74
+ - accessibility/responsive/product-experience requirements;
75
+ - product-level design principles and interaction intent;
76
+ - milestone/roadmap target and maturity;
77
+ - learning intent when explicitly part of the project.
78
+
79
+ ### Reconcile
80
+
81
+ Require human review when a durable requirement is mixed with implementation detail, for example:
82
+
83
+ - API/persistence semantics expressed using a current framework;
84
+ - architecture documents containing both domain invariants and technology topology;
85
+ - ADRs that combine product consequences with stack choices;
86
+ - UX patterns containing both user behavior and component-library detail.
87
+
88
+ Preserve the durable intent and exclude/rephrase the implementation-specific mechanism.
89
+
90
+ ### Exclude / re-derive
91
+
92
+ Do not export as portable requirements:
93
+
94
+ - React, Angular, Blazor, Java, C#, Spring Boot, ASP.NET Core, ORM, package-manager, or build-tool choices unless they are explicitly approved product constraints;
95
+ - source directory/project layout;
96
+ - framework/component-library implementation details;
97
+ - stack-specific Engineering Enablers;
98
+ - CI implementation commands;
99
+ - deployment scripts/bindings/credentials;
100
+ - implementation plans, code, review history, branch/PR/CI evidence;
101
+ - generated Project Forge/Core provenance.
102
+
103
+ ## Artifact state and human gate
104
+
105
+ Default `/export-requirements` writes or refreshes `PROJECT_REQUIREMENTS.json` with `state: "review"` and exact source repository/commit provenance.
106
+
107
+ Before calling it approved, present a compact reconciliation summary:
108
+
109
+ ```text
110
+ PROJECT REQUIREMENTS EXPORT
111
+
112
+ Preserved product/features: ...
113
+ Preserved domain rules: ...
114
+ Preserved UX/cross-cutting constraints: ...
115
+ Roadmap maturity retained: ...
116
+ Implementation-specific material excluded: ...
117
+ Items requiring reconciliation: ...
118
+
119
+ Approve PROJECT_REQUIREMENTS.json as the portable requirements baseline?
120
+ ```
121
+
122
+ Only explicit human approval may set `state: "approved"`.
123
+
124
+ `/export-requirements approve` may perform only that bounded finalization after confirming the reviewed content/evidence has not materially changed.
125
+
126
+ ## Safety and scope
127
+
128
+ The skill may create/update only `PROJECT_REQUIREMENTS.json` unless the human separately authorizes source-document edits.
129
+
130
+ It must not silently rewrite source Product/Feature Briefs, requirements, architecture, ADRs, roadmap, or design documents to make export easier.
131
+
132
+ Do not export secrets, credentials, production values, personal runtime data, or machine-local bindings.
@@ -34,7 +34,7 @@ Ask one material question at a time and challenge:
34
34
  - architecture/operational tradeoffs,
35
35
  - testability.
36
36
 
37
- When the challenge is a bounded decision with a small credible option set, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md` and explain important tradeoffs. When the purpose is to expose or strengthen the human's reasoning, ask open-ended first; introduce options or hints later only when useful as scaffolding.
37
+ When the challenge is a bounded decision with a small credible option set, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md` and explain important tradeoffs. Use host-native single-select UI for mutually exclusive alternatives when available, and multi-select only when several choices may be valid together. When the purpose is to expose or strengthen the human's reasoning, ask open-ended first; introduce options or hints later only when useful as scaffolding.
38
38
 
39
39
  Cadence:
40
40
 
@@ -66,15 +66,13 @@ For local-document models, common homes are:
66
66
 
67
67
  Invocation alone does not imply broad document-write permission.
68
68
 
69
- When document changes are needed, present a bounded choice such as:
69
+ When document changes are needed, present a bounded **single-select structured choice** through the host UI when available. In VS Code use the native question surface such as `vscode_askQuestions`. Relevant choices are:
70
70
 
71
- ```text
72
- 1. Continue grilling only [READ ONLY]
73
- 2. Reconcile resolved decisions during this session [MODIFIES DOCS]
74
- 3. Stop [NO ACTION]
75
- ```
71
+ - `Continue grilling only` `[READ ONLY]`
72
+ - `Reconcile resolved decisions during this session` `[MODIFIES DOCS]`
73
+ - `Stop` `[NO ACTION]`
76
74
 
77
- After option 2 is selected, focused updates to the permitted current work-item documents are authorized for the active session. Do not ask again after each answer.
75
+ Use a numbered text list only when structured choice UI is unavailable. After `Reconcile resolved decisions during this session` is selected, focused updates to the permitted current work-item documents are authorized for the active session. Do not ask again after each answer.
78
76
 
79
77
  Pause only when a new answer would change higher-level approved scope, contradict another authority/ADR, or require a new cross-cutting decision.
80
78