@mriekki/project-forge 2.2.0 → 4.0.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 +4 -4
- package/assets/core/distribution.json +0 -4
- package/assets/deployment/distribution.json +1 -1
- package/assets/generated/ASSEMBLY.json +31 -51
- package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +8 -2
- package/assets/generated/core/core/process/DEPLOYMENT_ENABLEMENT.md +1 -1
- package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +1 -2
- package/assets/generated/core/core/process/OPERATION_JOURNAL.md +1 -2
- package/assets/generated/core/core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md +3 -3
- package/assets/generated/core/core/process/PROJECT_FORGE_ENGINEERING_GUIDE.md +14 -14
- package/assets/generated/core/core/skills/deploy/SKILL.md +1 -1
- package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +1 -1
- package/assets/generated/core/core/skills/grill-me/SKILL.md +84 -46
- package/assets/generated/core/core/skills/progress/SKILL.md +1 -1
- package/assets/generated/core/core/skills/setup/SKILL.md +149 -199
- package/assets/generated/core/core/skills/start-work/SKILL.md +5 -6
- package/assets/generated/core/core/skills/tear-down/SKILL.md +4 -4
- package/assets/generated/deployment/docs/DEVELOPER_ENVIRONMENTS.md +11 -11
- package/assets/generated/deployment/docs/ENVIRONMENT_PROOF.md +2 -2
- package/assets/generated/deployment/docs/WORKSPACE_INSTANCES.md +1 -1
- package/assets/generated/deployment/docs/images/developer-environment-journey.svg +2 -2
- package/assets/generated/deployment/docs/images/{poc-environment-model.svg → project-environment-model.svg} +4 -4
- package/assets/generated/deployment/src/project_forge_deployment/cli.py +1 -1
- package/assets/generated/deployment/src/project_forge_deployment/entrypoint.py +1 -1
- package/assets/generated/deployment/src/project_forge_deployment/environment_probe.py +2 -2
- package/assets/generated/deployment/src/project_forge_deployment/route_registry.py +2 -2
- package/assets/generated/deployment/src/project_forge_deployment/teardown.py +7 -7
- package/assets/generated/deployment/src/project_forge_deployment/teardown_cli.py +6 -6
- package/assets/generated/deployment/src/project_forge_deployment/teardown_remote.py +6 -6
- package/package.json +1 -1
- package/assets/generated/core/core/agents/coach.agent.md +0 -69
- package/assets/generated/core/core/skills/core-sync/SKILL.md +0 -184
- package/assets/generated/core/core/skills/developer-env-mode/SKILL.md +0 -231
- package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +0 -88
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: developer-env-mode
|
|
3
|
-
description: "Converge and verify the developer workstation for local-only or remote-enabled work. Mode changes become effective only after the selected readiness contract passes."
|
|
4
|
-
argument-hint: "status|local|remote"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Developer Environment Mode
|
|
10
|
-
|
|
11
|
-
`/developer-env-mode` manages the current workstation's operational development mode. It is not a deployment command and it does not weaken Staging or Production gates.
|
|
12
|
-
|
|
13
|
-
Supported intents:
|
|
14
|
-
|
|
15
|
-
```text
|
|
16
|
-
/developer-env-mode status
|
|
17
|
-
/developer-env-mode local
|
|
18
|
-
/developer-env-mode remote
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
The governing invariant is:
|
|
22
|
-
|
|
23
|
-
```text
|
|
24
|
-
MODE != preference
|
|
25
|
-
MODE = verified operational state
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Never record a requested mode as ready until its readiness contract passes. If convergence fails, preserve the prior ready mode when one exists and report the blocker.
|
|
29
|
-
|
|
30
|
-
## 1. Resolve repository and package provenance read-only
|
|
31
|
-
|
|
32
|
-
From the repository root inspect, when present:
|
|
33
|
-
|
|
34
|
-
- `PROJECT_BOOTSTRAP.json`;
|
|
35
|
-
- `PROJECT_FORGE_BASELINE.json` and component baselines;
|
|
36
|
-
- `DEV_ENVIRONMENT.json`;
|
|
37
|
-
- application setup/build/test commands and project-owned persistence configuration;
|
|
38
|
-
- deployment topology and generated deployment tooling;
|
|
39
|
-
- Git status so unrelated work is preserved.
|
|
40
|
-
|
|
41
|
-
For package-managed consumers, verify managed files are coherent before relying on distributed Core or Deployment tooling. Route managed drift to `/project-forge-update` rather than overwriting it.
|
|
42
|
-
|
|
43
|
-
Do not require a Bootstrap/Core/Deployment Kit source checkout for normal consumer use.
|
|
44
|
-
|
|
45
|
-
## 2. Keep current mode state workstation-local
|
|
46
|
-
|
|
47
|
-
Mode state is user/workstation state, not repository authority. Store it outside the repository under the user-scoped Project Forge directory, using a repository-scoped location such as:
|
|
48
|
-
|
|
49
|
-
```text
|
|
50
|
-
~/.project-forge/workspaces/<owner>/<repo>/developer-environment.json
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Do not commit this state. Do not store credentials, private keys, target trust stores, database contents, or secret values in it.
|
|
54
|
-
|
|
55
|
-
Record enough non-secret evidence to distinguish requested mode from readiness, for example:
|
|
56
|
-
|
|
57
|
-
- mode;
|
|
58
|
-
- ready/not-ready;
|
|
59
|
-
- verification timestamp;
|
|
60
|
-
- source revision when available;
|
|
61
|
-
- build/test state or fingerprint;
|
|
62
|
-
- local database state when applicable;
|
|
63
|
-
- local runtime health when applicable;
|
|
64
|
-
- remote target/access readiness summary when applicable.
|
|
65
|
-
|
|
66
|
-
A later `status` check must be allowed to report that the recorded mode is no longer ready when Docker stops, tools drift, the build becomes stale, the local database is missing/incompatible, or remote access disappears.
|
|
67
|
-
|
|
68
|
-
## 3. `status` is read-only
|
|
69
|
-
|
|
70
|
-
`/developer-env-mode status` performs no setup writes. Inspect current workstation evidence and live prerequisites, then report both the selected mode and current readiness.
|
|
71
|
-
|
|
72
|
-
Prefer a compact result such as:
|
|
73
|
-
|
|
74
|
-
```text
|
|
75
|
-
DEVELOPER ENVIRONMENT
|
|
76
|
-
|
|
77
|
-
Selected mode: LOCAL
|
|
78
|
-
Readiness: NOT READY
|
|
79
|
-
|
|
80
|
-
Docker ........ READY
|
|
81
|
-
Build ......... STALE
|
|
82
|
-
Tests ......... READY
|
|
83
|
-
SQLite ........ READY
|
|
84
|
-
Runtime ....... HEALTHY
|
|
85
|
-
Remote access . UNAVAILABLE
|
|
86
|
-
|
|
87
|
-
NEXT
|
|
88
|
-
/developer-env-mode local
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Do not silently repair state during `status`.
|
|
92
|
-
|
|
93
|
-
## 4. `local` means converge a complete local development environment
|
|
94
|
-
|
|
95
|
-
Selecting `local` authorizes bounded, non-destructive workstation setup needed to make the current repository usable locally. It does not authorize destructive database reset, deletion of unrelated Docker state, remote publication, remote deployment, or Production writes.
|
|
96
|
-
|
|
97
|
-
Converge in this order.
|
|
98
|
-
|
|
99
|
-
### A. Workstation prerequisites
|
|
100
|
-
|
|
101
|
-
Verify the current OS is supported by repository configuration. Use repository setup/doctor tooling when present to verify required tools and versions.
|
|
102
|
-
|
|
103
|
-
For Docker-based local execution require a working Docker CLI/engine. Prefer repository-distributed Deployment Kit commands when `DEPLOYMENT_BASELINE.json` proves they are installed.
|
|
104
|
-
|
|
105
|
-
### B. Dependencies and restore
|
|
106
|
-
|
|
107
|
-
Run repository-defined dependency restore/setup commands when missing or stale. Preserve pinned versions and project conventions. Do not substitute arbitrary global tooling when the repository defines a supported path.
|
|
108
|
-
|
|
109
|
-
### C. Local persistence
|
|
110
|
-
|
|
111
|
-
If the application uses SQLite for local development:
|
|
112
|
-
|
|
113
|
-
1. resolve the project-owned database filename/container path and migration/initialization contract from repository configuration/docs/code;
|
|
114
|
-
2. prefer the installed Deployment Kit local SQLite ensure/status primitive when available for workstation-owned persistent storage;
|
|
115
|
-
3. when the database is absent, create the owned local SQLite file/directory non-destructively;
|
|
116
|
-
4. run the repository-provided migration/schema initialization needed to make that database usable;
|
|
117
|
-
5. verify the resulting database can be opened and that the application-required schema/migration state is current when the repository provides such a check.
|
|
118
|
-
|
|
119
|
-
If an existing SQLite database is corrupt, incompatible, or has unexpected ownership/schema state, **STOP**. Never delete, replace, reset, or migrate destructively merely to make mode convergence pass. Present the exact recovery/reset decision separately.
|
|
120
|
-
|
|
121
|
-
Do not assume every project uses SQLite. Other persistence requires an explicit repository-owned local setup contract.
|
|
122
|
-
|
|
123
|
-
### D. Build and tests
|
|
124
|
-
|
|
125
|
-
Run the repository's required local build and test commands. A missing or stale build is a normal convergence condition; rebuild it.
|
|
126
|
-
|
|
127
|
-
If build or required tests fail, report `LOCAL MODE NOT READY` and do not mark the mode ready.
|
|
128
|
-
|
|
129
|
-
When the project policy says application validation is local-only, GitHub publication/PR activity does not replace this local build/test evidence.
|
|
130
|
-
|
|
131
|
-
### E. Local immutable Docker artifact
|
|
132
|
-
|
|
133
|
-
When the local runtime is Docker-based, build the application image locally using repository-owned commands. Resolve an immutable local image identity.
|
|
134
|
-
|
|
135
|
-
The standard Deployment Kit workstation adapter may accept either:
|
|
136
|
-
|
|
137
|
-
- an exact registry digest (`name@sha256:...`), or
|
|
138
|
-
- a local Docker image ID (`sha256:<64 hex>`) for workstation-only execution.
|
|
139
|
-
|
|
140
|
-
Never use a mutable tag as the final deployed identity. A local image ID is valid only for workstation placement and is not remote-release evidence.
|
|
141
|
-
|
|
142
|
-
### F. Workstation runtime
|
|
143
|
-
|
|
144
|
-
Converge the local application runtime through the repository-distributed workstation adapter when available:
|
|
145
|
-
|
|
146
|
-
```text
|
|
147
|
-
placement: workstation
|
|
148
|
-
isolation: container
|
|
149
|
-
exposure: loopback
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Keep exposure loopback-only. Mount the project-owned local SQLite persistence directory when required. Verify the declared health endpoint and any required local smoke check.
|
|
153
|
-
|
|
154
|
-
Do not resolve SSH targets, publish images, create public routes, or deploy Staging/Production while entering local mode.
|
|
155
|
-
|
|
156
|
-
### G. Commit local mode only after readiness passes
|
|
157
|
-
|
|
158
|
-
Only after prerequisites, persistence, build, tests, runtime, and health requirements pass, write the workstation-local mode state as ready.
|
|
159
|
-
|
|
160
|
-
A successful summary should distinguish local evidence from remote evidence:
|
|
161
|
-
|
|
162
|
-
```text
|
|
163
|
-
LOCAL DEVELOPER ENVIRONMENT READY
|
|
164
|
-
|
|
165
|
-
Build ........ READY
|
|
166
|
-
Tests ........ READY
|
|
167
|
-
Docker ....... READY
|
|
168
|
-
SQLite ....... READY / NOT APPLICABLE
|
|
169
|
-
Application .. HEALTHY
|
|
170
|
-
Remote deploy. DISABLED BY MODE
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## 5. `remote` means verify remote-enabled capability, not deploy
|
|
174
|
-
|
|
175
|
-
Selecting `remote` authorizes bounded, non-destructive checks/setup needed to prove that the current workstation can work with the repository's configured remote non-Production environment(s). It does **not** publish an artifact or deploy an application.
|
|
176
|
-
|
|
177
|
-
Verify as applicable:
|
|
178
|
-
|
|
179
|
-
- normal local developer prerequisites still needed to build/test the project;
|
|
180
|
-
- repository deployment topology contains a non-deferred remote environment;
|
|
181
|
-
- exact target/provider binding exists when required;
|
|
182
|
-
- workstation-to-target trust/access is valid;
|
|
183
|
-
- target OS/runtime/platform readiness is valid;
|
|
184
|
-
- persistence/readiness prerequisites can be inspected safely;
|
|
185
|
-
- GitHub/registry access needed for a later release/publish step is available;
|
|
186
|
-
- repository release/deployment tooling and baselines are coherent.
|
|
187
|
-
|
|
188
|
-
For the standard remote-SSH path preserve strict host identity. Unknown or changed host identity is a stop condition. Never fall back to another environment or host.
|
|
189
|
-
|
|
190
|
-
Do not require a Production target merely to enter remote mode. Do not weaken Production authorization because remote mode is ready.
|
|
191
|
-
|
|
192
|
-
Only after the selected remote readiness checks pass, record `remote` as ready.
|
|
193
|
-
|
|
194
|
-
Then report the next explicit operation, typically:
|
|
195
|
-
|
|
196
|
-
```text
|
|
197
|
-
/deployment-readiness <environment>
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
A later `/deploy <environment>` remains separately gated.
|
|
201
|
-
|
|
202
|
-
## 6. Fail closed on destructive or ambiguous repair
|
|
203
|
-
|
|
204
|
-
Automatic convergence may safely create missing local directories, dependency caches, build outputs, a new owned SQLite file, migrations that the project defines as normal forward initialization, and a new owned local application container.
|
|
205
|
-
|
|
206
|
-
Stop for a separate explicit decision before:
|
|
207
|
-
|
|
208
|
-
- deleting/resetting an existing database;
|
|
209
|
-
- destructive migration or rollback;
|
|
210
|
-
- replacing unexplained persistent data;
|
|
211
|
-
- deleting unrelated containers/images/volumes;
|
|
212
|
-
- publishing an artifact remotely;
|
|
213
|
-
- rebinding a target;
|
|
214
|
-
- weakening host verification;
|
|
215
|
-
- deploying Staging or Production;
|
|
216
|
-
- changing public/LAN exposure.
|
|
217
|
-
|
|
218
|
-
## 7. Relationship to other Project Forge commands
|
|
219
|
-
|
|
220
|
-
`/developer-env-mode` prepares a workstation and establishes current operational readiness.
|
|
221
|
-
|
|
222
|
-
It does not replace:
|
|
223
|
-
|
|
224
|
-
- `/project-forge-update` for managed Project Forge package changes;
|
|
225
|
-
- project setup/doctor tooling;
|
|
226
|
-
- `/start-work` for implementation authorization;
|
|
227
|
-
- `/deployment-readiness` for environment-specific pre-deploy evidence;
|
|
228
|
-
- `/deploy` for deployment authorization/execution;
|
|
229
|
-
- `/tear-down` for destructive cleanup.
|
|
230
|
-
|
|
231
|
-
Mode switching never implies merge, release publication, Staging deployment, or Production deployment.
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: grill-with-docs
|
|
3
|
-
description: Continuously challenge requirements/design and reconcile resolved decisions into permitted authoritative/supplemental documents or proposed external-work-item updates.
|
|
4
|
-
argument-hint: "<work-item ID, external key, document, plan, or topic>"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Grill With Docs
|
|
10
|
-
|
|
11
|
-
This is the documentation-aware form of `/grill-me`.
|
|
12
|
-
|
|
13
|
-
## 1. Resolve authority
|
|
14
|
-
|
|
15
|
-
Read `.github/project-forge-workspace.json` when present.
|
|
16
|
-
|
|
17
|
-
Determine:
|
|
18
|
-
- authoritative work-item source,
|
|
19
|
-
- which local documents are authoritative/supplemental/read-only/not-used,
|
|
20
|
-
- whether an external write integration is actually available and permitted.
|
|
21
|
-
|
|
22
|
-
Never assume Product/Feature Briefs exist. Never assume `Jira Epic == Feature Brief`.
|
|
23
|
-
|
|
24
|
-
## 2. Continuous grilling
|
|
25
|
-
|
|
26
|
-
Ask one material question at a time and challenge:
|
|
27
|
-
- ambiguous outcomes,
|
|
28
|
-
- missing domain/engineering rules,
|
|
29
|
-
- contradictory requirements,
|
|
30
|
-
- lifecycle/destructive behavior,
|
|
31
|
-
- data integrity/concurrency,
|
|
32
|
-
- failure behavior,
|
|
33
|
-
- accessibility/UX implications when relevant,
|
|
34
|
-
- architecture/operational tradeoffs,
|
|
35
|
-
- testability.
|
|
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. 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
|
-
|
|
39
|
-
Cadence:
|
|
40
|
-
|
|
41
|
-
```text
|
|
42
|
-
question
|
|
43
|
-
→ human answer
|
|
44
|
-
→ challenge/analyze
|
|
45
|
-
→ reconcile the resolved decision when already authorized
|
|
46
|
-
→ next material question
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Do not ask whether to continue after every answer.
|
|
50
|
-
|
|
51
|
-
## 3. Reconcile to the right authority
|
|
52
|
-
|
|
53
|
-
When a decision is resolved:
|
|
54
|
-
- update an existing permitted local authority/supplement only when the current session authorizes document edits;
|
|
55
|
-
- if Jira/GitHub/another external system is authoritative and no permitted write integration is available, accumulate a concise `PROPOSED EXTERNAL WORK-ITEM UPDATE`;
|
|
56
|
-
- if a permitted external write integration exists, require an explicit `[EXTERNAL WRITE]` choice before writing externally;
|
|
57
|
-
- never create a competing local source merely to store an answer.
|
|
58
|
-
|
|
59
|
-
For local-document models, common homes are:
|
|
60
|
-
- brief: high-level scope/outcome/major rule,
|
|
61
|
-
- combined requirements: detailed user/engineering behavior and testable scenarios,
|
|
62
|
-
- decisions: resolved work-item decision/basis,
|
|
63
|
-
- ADR: only a meaningful cross-cutting architecture decision.
|
|
64
|
-
|
|
65
|
-
## 4. Editing authorization
|
|
66
|
-
|
|
67
|
-
Invocation alone does not imply broad document-write permission.
|
|
68
|
-
|
|
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
|
-
|
|
71
|
-
- `Continue grilling only` `[READ ONLY]`
|
|
72
|
-
- `Reconcile resolved decisions during this session` `[MODIFIES DOCS]`
|
|
73
|
-
- `Stop` `[NO ACTION]`
|
|
74
|
-
|
|
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.
|
|
76
|
-
|
|
77
|
-
Pause only when a new answer would change higher-level approved scope, contradict another authority/ADR, or require a new cross-cutting decision.
|
|
78
|
-
|
|
79
|
-
## 5. Stop boundary
|
|
80
|
-
|
|
81
|
-
Do not implement production code.
|
|
82
|
-
|
|
83
|
-
At natural completion summarize:
|
|
84
|
-
- decisions resolved,
|
|
85
|
-
- documents/proposed external updates changed,
|
|
86
|
-
- remaining conflicts/open items.
|
|
87
|
-
|
|
88
|
-
If systematic detailed coverage is still needed, recommend `/refine-requirements`.
|