@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.
- package/assets/components.json +3 -3
- package/assets/core/distribution.json +7 -0
- package/assets/generated/ASSEMBLY.json +55 -20
- package/assets/generated/core/core/agents/reviewer.agent.md +1 -1
- package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +5 -1
- package/assets/generated/core/core/process/APPLICATION_VERSIONING.md +137 -0
- package/assets/generated/core/core/process/GUIDED_NEXT_STEPS.md +22 -6
- package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +31 -1
- package/assets/generated/core/core/process/OPERATION_JOURNAL.md +140 -0
- package/assets/generated/core/core/process/PROJECT_REQUIREMENTS_EXPORT.md +165 -0
- package/assets/generated/core/core/skills/build/SKILL.md +70 -0
- package/assets/generated/core/core/skills/cleanup-branches/SKILL.md +6 -10
- package/assets/generated/core/core/skills/code-walkthrough/SKILL.md +12 -8
- package/assets/generated/core/core/skills/core-sync/SKILL.md +17 -11
- package/assets/generated/core/core/skills/define-feature/SKILL.md +9 -18
- package/assets/generated/core/core/skills/deliver/SKILL.md +12 -8
- package/assets/generated/core/core/skills/deploy/SKILL.md +2 -2
- package/assets/generated/core/core/skills/export-requirements/SKILL.md +132 -0
- package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +6 -8
- package/assets/generated/core/core/skills/next-step/SKILL.md +10 -11
- package/assets/generated/core/core/skills/project-forge-update/SKILL.md +10 -6
- package/assets/generated/core/core/skills/pull-latest/SKILL.md +16 -10
- package/assets/generated/core/core/skills/refine-requirements/SKILL.md +37 -16
- package/assets/generated/core/core/skills/replatform/SKILL.md +122 -0
- package/assets/generated/core/core/skills/run/SKILL.md +75 -0
- package/assets/generated/core/core/skills/setup/SKILL.md +20 -17
- package/assets/generated/core/core/skills/start-work/SKILL.md +11 -9
- 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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
192
|
+
When offering bounded next actions, use host-native **single-select structured choice UI** when available. Relevant choices may include:
|
|
189
193
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
|
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
|
|