@mriekki/project-forge 3.0.0 → 4.1.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 -0
- package/assets/generated/ASSEMBLY.json +22 -37
- package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +8 -2
- 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/skills/grill-me/SKILL.md +84 -46
- package/assets/generated/core/core/skills/project-forge-update/SKILL.md +3 -3
- 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/deployment/docs/DEVELOPER_ENVIRONMENTS.md +52 -12
- package/assets/generated/deployment/docs/ENVIRONMENT_PROOF.md +56 -6
- package/assets/generated/deployment/src/project_forge_deployment/app_runtime_workstation.py +103 -42
- package/assets/generated/deployment/src/project_forge_deployment/environment_cli.py +41 -4
- package/assets/generated/deployment/src/project_forge_deployment/environment_probe.py +152 -79
- package/assets/generated/deployment/src/project_forge_deployment/environment_setup.py +241 -0
- package/assets/generated/deployment/src/project_forge_deployment/image_transfer.py +51 -11
- 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
package/assets/components.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@mriekki/project-forge",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "4.1.0",
|
|
5
5
|
"defaultProfile": "greenfield-project",
|
|
6
6
|
"profiles": {
|
|
7
7
|
"greenfield-project": {
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"components": {
|
|
15
15
|
"core": {
|
|
16
16
|
"repository": "mriekki/project-forge-core",
|
|
17
|
-
"commit": "
|
|
18
|
-
"version": "
|
|
17
|
+
"commit": "738dca3e03d110da0837d35d45101d2315f13a6f",
|
|
18
|
+
"version": "4.0.0",
|
|
19
19
|
"distribution": "greenfield-workspace",
|
|
20
20
|
"descriptor": "assets/core/distribution.json",
|
|
21
21
|
"sourceRoot": "assets/generated/core",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"deployment": {
|
|
25
25
|
"repository": "mriekki/project-forge-deployment-kit",
|
|
26
|
-
"commit": "
|
|
26
|
+
"commit": "149812159cafdfeeca04645e129392021b8b9e09",
|
|
27
27
|
"distribution": "greenfield-project",
|
|
28
28
|
"descriptor": "assets/deployment/distribution.json",
|
|
29
29
|
"sourceRoot": "assets/generated/deployment",
|
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
"profileDestination": ".github/project-forge-workspace.json",
|
|
5
5
|
"mappings": [
|
|
6
6
|
{"source":"core/agents/reviewer.agent.md","destination":".github/agents/reviewer.agent.md"},
|
|
7
|
-
{"source":"core/agents/coach.agent.md","destination":".github/agents/coach.agent.md"},
|
|
8
7
|
{"source":"core/instructions/project-forge-workflow.instructions.md","destination":".github/instructions/project-forge-workflow.instructions.md"},
|
|
9
8
|
{"source":"core/instructions/project-forge-docs.instructions.md","destination":".github/instructions/project-forge-docs.instructions.md"},
|
|
10
9
|
{"source":"core/skills/define-feature/SKILL.md","destination":".github/skills/define-feature/SKILL.md"},
|
|
11
10
|
{"source":"core/skills/grill-me/SKILL.md","destination":".github/skills/grill-me/SKILL.md"},
|
|
12
|
-
{"source":"core/skills/grill-with-docs/SKILL.md","destination":".github/skills/grill-with-docs/SKILL.md"},
|
|
13
11
|
{"source":"core/skills/refine-requirements/SKILL.md","destination":".github/skills/refine-requirements/SKILL.md"},
|
|
14
12
|
{"source":"core/skills/start-work/SKILL.md","destination":".github/skills/start-work/SKILL.md"},
|
|
15
13
|
{"source":"core/skills/setup/SKILL.md","destination":".github/skills/setup/SKILL.md"},
|
|
@@ -23,10 +21,8 @@
|
|
|
23
21
|
{"source":"core/skills/cleanup-branches/SKILL.md","destination":".github/skills/cleanup-branches/SKILL.md"},
|
|
24
22
|
{"source":"core/skills/pull-latest/SKILL.md","destination":".github/skills/pull-latest/SKILL.md"},
|
|
25
23
|
{"source":"core/skills/project-forge-update/SKILL.md","destination":".github/skills/project-forge-update/SKILL.md"},
|
|
26
|
-
{"source":"core/skills/core-sync/SKILL.md","destination":".github/skills/core-sync/SKILL.md"},
|
|
27
24
|
{"source":"core/skills/upstream-fix/SKILL.md","destination":".github/skills/upstream-fix/SKILL.md"},
|
|
28
25
|
{"source":"core/skills/wait-what/SKILL.md","destination":".github/skills/wait-what/SKILL.md"},
|
|
29
|
-
{"source":"core/skills/developer-env-mode/SKILL.md","destination":".github/skills/developer-env-mode/SKILL.md"},
|
|
30
26
|
{"source":"core/skills/deployment-readiness/SKILL.md","destination":".github/skills/deployment-readiness/SKILL.md"},
|
|
31
27
|
{"source":"core/skills/deploy/SKILL.md","destination":".github/skills/deploy/SKILL.md"},
|
|
32
28
|
{"source":"core/skills/tear-down/SKILL.md","destination":".github/skills/tear-down/SKILL.md"},
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
{"source": "src/project_forge_deployment/entrypoint.py", "destination": "tools/project-forge-deployment/project_forge_deployment/entrypoint.py"},
|
|
19
19
|
{"source": "src/project_forge_deployment/environment_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/environment_cli.py"},
|
|
20
20
|
{"source": "src/project_forge_deployment/environment_probe.py", "destination": "tools/project-forge-deployment/project_forge_deployment/environment_probe.py"},
|
|
21
|
+
{"source": "src/project_forge_deployment/environment_setup.py", "destination": "tools/project-forge-deployment/project_forge_deployment/environment_setup.py"},
|
|
21
22
|
{"source": "src/project_forge_deployment/errors.py", "destination": "tools/project-forge-deployment/project_forge_deployment/errors.py"},
|
|
22
23
|
{"source": "src/project_forge_deployment/home_lab.py", "destination": "tools/project-forge-deployment/project_forge_deployment/home_lab.py"},
|
|
23
24
|
{"source": "src/project_forge_deployment/image_transfer.py", "destination": "tools/project-forge-deployment/project_forge_deployment/image_transfer.py"},
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@mriekki/project-forge",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "4.1.0",
|
|
5
5
|
"components": {
|
|
6
6
|
"core": {
|
|
7
7
|
"repository": "mriekki/project-forge-core",
|
|
8
|
-
"commit": "
|
|
9
|
-
"version": "
|
|
8
|
+
"commit": "738dca3e03d110da0837d35d45101d2315f13a6f",
|
|
9
|
+
"version": "4.0.0",
|
|
10
10
|
"distribution": "greenfield-workspace",
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
@@ -19,15 +19,10 @@
|
|
|
19
19
|
"destination": ".github/agents/reviewer.agent.md",
|
|
20
20
|
"sha256": "94255c72a6c875722ebaf8b0cb328fe019856c01443b550ca6e2f6c422da983e"
|
|
21
21
|
},
|
|
22
|
-
{
|
|
23
|
-
"source": "core/agents/coach.agent.md",
|
|
24
|
-
"destination": ".github/agents/coach.agent.md",
|
|
25
|
-
"sha256": "f2da3ed8ba1890f0886615c0d7a66411265524dcaf04648ef10dfd195dde522e"
|
|
26
|
-
},
|
|
27
22
|
{
|
|
28
23
|
"source": "core/instructions/project-forge-workflow.instructions.md",
|
|
29
24
|
"destination": ".github/instructions/project-forge-workflow.instructions.md",
|
|
30
|
-
"sha256": "
|
|
25
|
+
"sha256": "a6b28d916b67c9eec3831e414b56be3636512f7f7740523d22aaaf6efa00d335"
|
|
31
26
|
},
|
|
32
27
|
{
|
|
33
28
|
"source": "core/instructions/project-forge-docs.instructions.md",
|
|
@@ -42,12 +37,7 @@
|
|
|
42
37
|
{
|
|
43
38
|
"source": "core/skills/grill-me/SKILL.md",
|
|
44
39
|
"destination": ".github/skills/grill-me/SKILL.md",
|
|
45
|
-
"sha256": "
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"source": "core/skills/grill-with-docs/SKILL.md",
|
|
49
|
-
"destination": ".github/skills/grill-with-docs/SKILL.md",
|
|
50
|
-
"sha256": "facdfecee977ab01bbe908f6f122e483ea27c98a8f1562973f59f9266b63323e"
|
|
40
|
+
"sha256": "a71c2dcf63d7d88beb9112fcfe0cf19dbc233934f30bbe95727f58b29e845ffb"
|
|
51
41
|
},
|
|
52
42
|
{
|
|
53
43
|
"source": "core/skills/refine-requirements/SKILL.md",
|
|
@@ -57,12 +47,12 @@
|
|
|
57
47
|
{
|
|
58
48
|
"source": "core/skills/start-work/SKILL.md",
|
|
59
49
|
"destination": ".github/skills/start-work/SKILL.md",
|
|
60
|
-
"sha256": "
|
|
50
|
+
"sha256": "f054edd5a745489623579d25e334f5fcd6cebd6e73b86970074e7c2444f9af40"
|
|
61
51
|
},
|
|
62
52
|
{
|
|
63
53
|
"source": "core/skills/setup/SKILL.md",
|
|
64
54
|
"destination": ".github/skills/setup/SKILL.md",
|
|
65
|
-
"sha256": "
|
|
55
|
+
"sha256": "2f1b88b31b2c7233a00ab9293cd98a5fade00e114e1a442a793affbc7fe4ad83"
|
|
66
56
|
},
|
|
67
57
|
{
|
|
68
58
|
"source": "core/skills/build/SKILL.md",
|
|
@@ -112,12 +102,7 @@
|
|
|
112
102
|
{
|
|
113
103
|
"source": "core/skills/project-forge-update/SKILL.md",
|
|
114
104
|
"destination": ".github/skills/project-forge-update/SKILL.md",
|
|
115
|
-
"sha256": "
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"source": "core/skills/core-sync/SKILL.md",
|
|
119
|
-
"destination": ".github/skills/core-sync/SKILL.md",
|
|
120
|
-
"sha256": "cbc498597cea7a48004fc507f9a6efc130544e57f347c0efdbb073f71f14965e"
|
|
105
|
+
"sha256": "510d60fab8d91e54abbc49dbc963a93b132ac5cdfd97ec87f64128ca138d2b1a"
|
|
121
106
|
},
|
|
122
107
|
{
|
|
123
108
|
"source": "core/skills/upstream-fix/SKILL.md",
|
|
@@ -129,11 +114,6 @@
|
|
|
129
114
|
"destination": ".github/skills/wait-what/SKILL.md",
|
|
130
115
|
"sha256": "dba3aa4f042b813de960b60c47ae4c8a3dccb72fdc89c597fe04b720b27f5316"
|
|
131
116
|
},
|
|
132
|
-
{
|
|
133
|
-
"source": "core/skills/developer-env-mode/SKILL.md",
|
|
134
|
-
"destination": ".github/skills/developer-env-mode/SKILL.md",
|
|
135
|
-
"sha256": "2e45e00e30f17edda5b259bd24852233d2bcace46f7e095d3b28faf9ce35cedb"
|
|
136
|
-
},
|
|
137
117
|
{
|
|
138
118
|
"source": "core/skills/deployment-readiness/SKILL.md",
|
|
139
119
|
"destination": ".github/skills/deployment-readiness/SKILL.md",
|
|
@@ -207,7 +187,7 @@
|
|
|
207
187
|
{
|
|
208
188
|
"source": "core/process/INTERACTIVE_SESSION_GUIDE.md",
|
|
209
189
|
"destination": "docs/process/INTERACTIVE_SESSION_GUIDE.md",
|
|
210
|
-
"sha256": "
|
|
190
|
+
"sha256": "8cd74fbd7433969923299849eb89bdd774fd4af1b9694639f0b9871a1047cacf"
|
|
211
191
|
},
|
|
212
192
|
{
|
|
213
193
|
"source": "core/process/COACHING_GUIDE.md",
|
|
@@ -242,7 +222,7 @@
|
|
|
242
222
|
{
|
|
243
223
|
"source": "core/process/OPERATION_JOURNAL.md",
|
|
244
224
|
"destination": "docs/process/OPERATION_JOURNAL.md",
|
|
245
|
-
"sha256": "
|
|
225
|
+
"sha256": "7051e4554ee6f3cca1b7ee8105ad1ab9f2cde4f1afc7d0f39e310144df45f390"
|
|
246
226
|
},
|
|
247
227
|
{
|
|
248
228
|
"source": "core/process/PROJECT_REQUIREMENTS_EXPORT.md",
|
|
@@ -348,7 +328,7 @@
|
|
|
348
328
|
},
|
|
349
329
|
"deployment": {
|
|
350
330
|
"repository": "mriekki/project-forge-deployment-kit",
|
|
351
|
-
"commit": "
|
|
331
|
+
"commit": "149812159cafdfeeca04645e129392021b8b9e09",
|
|
352
332
|
"distribution": "greenfield-project",
|
|
353
333
|
"files": [
|
|
354
334
|
{
|
|
@@ -384,7 +364,7 @@
|
|
|
384
364
|
{
|
|
385
365
|
"source": "src/project_forge_deployment/app_runtime_workstation.py",
|
|
386
366
|
"destination": "tools/project-forge-deployment/project_forge_deployment/app_runtime_workstation.py",
|
|
387
|
-
"sha256": "
|
|
367
|
+
"sha256": "17723294fffce40433343df5fd26817df037a8029d473acefa6b767a56c9f725"
|
|
388
368
|
},
|
|
389
369
|
{
|
|
390
370
|
"source": "src/project_forge_deployment/box_platform.py",
|
|
@@ -419,12 +399,17 @@
|
|
|
419
399
|
{
|
|
420
400
|
"source": "src/project_forge_deployment/environment_cli.py",
|
|
421
401
|
"destination": "tools/project-forge-deployment/project_forge_deployment/environment_cli.py",
|
|
422
|
-
"sha256": "
|
|
402
|
+
"sha256": "3c8a0c67c8b75fed7374d1b7b013f95392f84661b6ea182187d07a2b48f206ae"
|
|
423
403
|
},
|
|
424
404
|
{
|
|
425
405
|
"source": "src/project_forge_deployment/environment_probe.py",
|
|
426
406
|
"destination": "tools/project-forge-deployment/project_forge_deployment/environment_probe.py",
|
|
427
|
-
"sha256": "
|
|
407
|
+
"sha256": "5f4bba4a9e01b97eccdf67919d49894c9d264fae0edd63f742baaa18e42f69d0"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"source": "src/project_forge_deployment/environment_setup.py",
|
|
411
|
+
"destination": "tools/project-forge-deployment/project_forge_deployment/environment_setup.py",
|
|
412
|
+
"sha256": "1554c2954a024f8419f44eb2ab3fdc129334de41df6038628bade9cb7a803950"
|
|
428
413
|
},
|
|
429
414
|
{
|
|
430
415
|
"source": "src/project_forge_deployment/errors.py",
|
|
@@ -439,7 +424,7 @@
|
|
|
439
424
|
{
|
|
440
425
|
"source": "src/project_forge_deployment/image_transfer.py",
|
|
441
426
|
"destination": "tools/project-forge-deployment/project_forge_deployment/image_transfer.py",
|
|
442
|
-
"sha256": "
|
|
427
|
+
"sha256": "dadd1fe7724372a4ca0e04ab2280769b6c2381f0f9ae75a096f6c5a5f5add755"
|
|
443
428
|
},
|
|
444
429
|
{
|
|
445
430
|
"source": "src/project_forge_deployment/keys.py",
|
|
@@ -559,7 +544,7 @@
|
|
|
559
544
|
{
|
|
560
545
|
"source": "docs/DEVELOPER_ENVIRONMENTS.md",
|
|
561
546
|
"destination": "docs/project-forge/DEVELOPER_ENVIRONMENTS.md",
|
|
562
|
-
"sha256": "
|
|
547
|
+
"sha256": "cac10b7e30db24992225a88b43e16aa55404317c87a2ef136f21a2589ee4dc5f"
|
|
563
548
|
},
|
|
564
549
|
{
|
|
565
550
|
"source": "docs/WORKSPACE_INSTANCES.md",
|
|
@@ -569,7 +554,7 @@
|
|
|
569
554
|
{
|
|
570
555
|
"source": "docs/ENVIRONMENT_PROOF.md",
|
|
571
556
|
"destination": "docs/project-forge/ENVIRONMENT_PROOF.md",
|
|
572
|
-
"sha256": "
|
|
557
|
+
"sha256": "f635a87ada6a22deb09a3ac0f1c99f8e32119bb8bff3613d77db2ed876dc2552"
|
|
573
558
|
},
|
|
574
559
|
{
|
|
575
560
|
"source": "docs/images/developer-environment-journey.svg",
|
|
@@ -18,7 +18,7 @@ Once a bounded action is authorized, routine mechanics inside that scope should
|
|
|
18
18
|
|
|
19
19
|
For implementation, establish the repository-appropriate short-lived work branch as routine setup once implementation itself is authorized; do not add a separate branch-creation gate when branch policy/naming and scope are clear.
|
|
20
20
|
|
|
21
|
-
Continuous modes such as `/grill-me`, `/
|
|
21
|
+
Continuous modes such as `/grill-me`, `/refine-requirements`, `/coach`, `/learning-review`, and `/deployment-readiness` continue until stopped or naturally complete.
|
|
22
22
|
|
|
23
23
|
During interactive questioning, prefer concise choice-first options for genuinely bounded human decisions, including `Other / specify` and `Not sure — recommend one` when appropriate. When the host exposes native structured question controls, use them instead of a plain numbered chat list. In VS Code, use the host's structured question surface such as `vscode_askQuestions` when available: single-select for mutually exclusive decisions/actions and multi-select only when several simultaneous selections are valid. A textual numbered menu is only the fallback when structured choice UI is unavailable.
|
|
24
24
|
|
|
@@ -26,11 +26,17 @@ Make a recommendation only when current evidence, repository policy, or a clear
|
|
|
26
26
|
|
|
27
27
|
Keep factual/environment-specific values and questions intended to elicit the human's own framing, reasoning, debugging approach, design rationale, or understanding open-ended unless options are later useful as scaffolding.
|
|
28
28
|
|
|
29
|
+
`/grill-me` is the single adversarial-questioning entry point. It begins read-only and may, after one explicit session-level choice, reconcile resolved decisions into permitted local authorities or proposed external updates. Do not create a second documentation-aware grilling command.
|
|
30
|
+
|
|
31
|
+
`/setup` is the single workstation/environment preparation entry point. It owns status, repair, verified local runtime convergence, remote-enabled capability preparation, and named-environment setup/proof. Do not create a second developer-environment-mode command. `/deployment-readiness <environment>` remains the later exact-environment pre-deploy verification step.
|
|
32
|
+
|
|
29
33
|
For deployment readiness, inspect existing non-secret configuration before asking setup questions. Show already-known simple machine facts such as hostname/address, deployment user, port, and target OS for confirmation. Ask only for missing or conflicting facts. Keep deployment-tool implementation identifiers such as logical target names, `targetName`, SSH aliases, profile paths, and trust-file paths internal unless troubleshooting or genuine ambiguity requires them.
|
|
30
34
|
|
|
31
35
|
Shared managed code keeps its canonical owner. When a consumer contains `CORE_BASELINE.json` or `DEPLOYMENT_BASELINE.json`, treat those baselines as ownership evidence. A temporary edit to a shared-managed consumer file may be used to diagnose or prove a reusable defect, but it is not the canonical deliverable.
|
|
32
36
|
|
|
33
|
-
Before consumer delivery, run available managed-baseline integrity checks. If Core- or Deployment-Kit-managed files have unexplained local drift, stop before staging/commit/push and route the reusable change through `/upstream-fix`. Fix the owning canonical repository, deliver/merge it there under normal gates, then adopt the exact accepted shared commit back into the consumer through the appropriate
|
|
37
|
+
Before consumer delivery, run available managed-baseline integrity checks. If Core- or Deployment-Kit-managed files have unexplained local drift, stop before staging/commit/push and route the reusable change through `/upstream-fix`. Fix the owning canonical repository, deliver/merge it there under normal gates, then adopt the exact accepted shared commit back into the consumer through the appropriate update boundary and retest in consumer context.
|
|
38
|
+
|
|
39
|
+
Package-managed generated Projects use `/project-forge-update`. Direct `/core-sync` remains only for component-only Core consumers without `PROJECT_FORGE_BASELINE.json` and is not part of the normal greenfield Project command surface.
|
|
34
40
|
|
|
35
41
|
Do not manually preserve a private consumer fork of shared managed code merely because the consumer exposed the bug. Consumer-owned product/application files remain normal consumer implementation scope.
|
|
36
42
|
|
|
@@ -4,7 +4,6 @@ The following modes are continuous after the human explicitly enters them:
|
|
|
4
4
|
|
|
5
5
|
```text
|
|
6
6
|
/grill-me
|
|
7
|
-
/grill-with-docs
|
|
8
7
|
/refine-requirements
|
|
9
8
|
/coach
|
|
10
9
|
/learning-review
|
|
@@ -85,7 +84,7 @@ Stop when:
|
|
|
85
84
|
|
|
86
85
|
Continuous conversation never implies permission for unrelated file, Git, external-system, remote, or production writes.
|
|
87
86
|
|
|
88
|
-
For modifying sessions such as requirement refinement or deployment-readiness documentation, one explicit session-level authorization may cover focused updates within the defined scope; do not re-ask after every answer.
|
|
87
|
+
For modifying sessions such as `/grill-me` decision reconciliation, requirement refinement, or deployment-readiness documentation, one explicit session-level authorization may cover focused updates within the defined scope; do not re-ask after every answer.
|
|
89
88
|
|
|
90
89
|
Compound action skills may also define their own bounded authorization. In particular, manually invoking `/deliver` after its prerequisites are satisfied authorizes routine branch/stage/commit/push/PR/CI mechanics within the accepted delivery scope. Do not interrupt that compound action with repeated ceremonial permission prompts. `/deliver` still stops for changed evidence, ambiguity/risk, and the explicit merge/finalize decision.
|
|
91
90
|
|
|
@@ -47,11 +47,10 @@ Operation journals are workstation-local and must remain ignored by Git. They ar
|
|
|
47
47
|
|
|
48
48
|
Journal deterministic operations when durable local diagnostics materially help:
|
|
49
49
|
|
|
50
|
-
- `/setup` and repository-local setup/doctor execution;
|
|
50
|
+
- `/setup` and repository-local setup/doctor execution, including local runtime convergence and remote-enabled environment preparation;
|
|
51
51
|
- `/build` when build diagnostics/artifact evidence are useful;
|
|
52
52
|
- `/run` as a concise startup/health receipt when useful, not as an unbounded application log sink;
|
|
53
53
|
- `/project-forge-update` apply/verification work;
|
|
54
|
-
- `/developer-env-mode` when it mutates or converges local runtime state;
|
|
55
54
|
- `/deployment-readiness` when it performs preparation or repair;
|
|
56
55
|
- environment proof operations;
|
|
57
56
|
- `/deploy` and `/tear-down`;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grill-me
|
|
3
|
-
description: Continuously challenge requirements, architecture, plans, implementation assumptions, or work-item coverage
|
|
3
|
+
description: Continuously challenge requirements, architecture, plans, implementation assumptions, or work-item coverage, with optional session-level reconciliation of resolved decisions into permitted authorities.
|
|
4
4
|
argument-hint: "<work-item ID, external key, document, plan, or topic>"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -8,70 +8,108 @@ disable-model-invocation: true
|
|
|
8
8
|
|
|
9
9
|
# Grill Me
|
|
10
10
|
|
|
11
|
-
Purpose: improve reasoning by challenging the highest-value uncertainty without adding process overhead.
|
|
11
|
+
Purpose: improve reasoning by challenging the highest-value uncertainty without adding process overhead or forcing the developer to choose a separate documentation-aware grilling command.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Invocation begins read-only.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- Ask one material question at a time.
|
|
17
|
-
- Explain briefly why the question matters.
|
|
18
|
-
- Challenge vague answers, hidden scope, contradictions, and weak assumptions.
|
|
19
|
-
- Recommend an answer or 2–3 options with tradeoffs when useful.
|
|
20
|
-
- Do not edit files.
|
|
21
|
-
- Do not invoke subagents.
|
|
22
|
-
- Do not create artifacts merely because grilling occurred.
|
|
23
|
-
- Do not claim external Jira/Issue content was read unless it was actually available.
|
|
15
|
+
## 1. Resolve authority and minimum context
|
|
24
16
|
|
|
25
|
-
|
|
26
|
-
- missing acceptance behavior,
|
|
27
|
-
- cross-work-item/Epic gaps,
|
|
28
|
-
- domain/business rules,
|
|
29
|
-
- lifecycle/state transitions,
|
|
30
|
-
- validation/failure behavior,
|
|
31
|
-
- data integrity,
|
|
32
|
-
- concurrency/transactions,
|
|
33
|
-
- destructive/reversible actions,
|
|
34
|
-
- architecture assumptions,
|
|
35
|
-
- security/operational risk,
|
|
36
|
-
- testability.
|
|
17
|
+
Read `.github/project-forge-workspace.json` when present and only the minimum relevant context.
|
|
37
18
|
|
|
38
|
-
|
|
19
|
+
Determine when applicable:
|
|
20
|
+
- the authoritative work-item source;
|
|
21
|
+
- which local documents are authoritative, supplemental, read-only, or not used;
|
|
22
|
+
- relevant accepted ADR/design rules;
|
|
23
|
+
- whether an external write integration is actually available and permitted.
|
|
39
24
|
|
|
40
|
-
|
|
41
|
-
QUESTION
|
|
42
|
-
<one focused question>
|
|
25
|
+
Never assume Product/Feature Briefs exist. Never assume `Jira Epic == Feature Brief`. Do not claim external Jira/Issue content was read unless it was actually available.
|
|
43
26
|
|
|
44
|
-
|
|
45
|
-
<short explanation>
|
|
27
|
+
## 2. Continuous grilling
|
|
46
28
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
29
|
+
Ask one material question at a time. Explain briefly why the question matters. Challenge vague answers, hidden scope, contradictions, and weak assumptions.
|
|
30
|
+
|
|
31
|
+
Challenge areas may include:
|
|
32
|
+
- missing acceptance behavior;
|
|
33
|
+
- cross-work-item/Epic gaps;
|
|
34
|
+
- domain/business rules;
|
|
35
|
+
- lifecycle/state transitions;
|
|
36
|
+
- validation/failure behavior;
|
|
37
|
+
- data integrity;
|
|
38
|
+
- concurrency/transactions;
|
|
39
|
+
- destructive/reversible actions;
|
|
40
|
+
- architecture assumptions;
|
|
41
|
+
- security/operational risk;
|
|
42
|
+
- accessibility/UX implications when relevant;
|
|
43
|
+
- testability.
|
|
44
|
+
|
|
45
|
+
When the purpose is to expose or strengthen the human's reasoning, ask open-ended first. For a bounded decision with a small credible option set, follow `INTERACTIVE_SESSION_GUIDE.md`: use host-native single-select structured choice UI for mutually exclusive alternatives when available, multi-select only when several selections are valid together, and preserve free-text/`Other / specify` when choices may be incomplete.
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
Recommend at most one answer/option only when current evidence or a clear engineering tradeoff supports it. A recommendation is advice, not an accepted decision.
|
|
48
|
+
|
|
49
|
+
Cadence:
|
|
52
50
|
|
|
53
51
|
```text
|
|
54
|
-
|
|
52
|
+
question
|
|
53
|
+
→ human answer
|
|
54
|
+
→ challenge/analyze the answer
|
|
55
55
|
→ explain implications when useful
|
|
56
|
-
→
|
|
56
|
+
→ reconcile the resolved decision when the session is authorized to do so
|
|
57
|
+
→ next material question
|
|
57
58
|
```
|
|
58
59
|
|
|
59
60
|
Do not ask `Do you want to continue?` after each answer. The human already entered a continuous grilling mode.
|
|
60
61
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
62
|
+
## 3. Optional decision reconciliation
|
|
63
|
+
|
|
64
|
+
Grilling does not require document writes. When resolved decisions would benefit from durable reconciliation, present one session-level **single-select structured choice** through the host UI when available. In VS Code use the native question surface such as `vscode_askQuestions`.
|
|
65
|
+
|
|
66
|
+
Offer:
|
|
67
|
+
- `Continue grilling only` `[READ ONLY]` — default when no durable update is needed;
|
|
68
|
+
- `Reconcile resolved decisions during this session` `[MODIFIES DOCS]`;
|
|
69
|
+
- `Stop` `[NO ACTION]`.
|
|
70
|
+
|
|
71
|
+
Use a numbered text list only when structured choice UI is unavailable.
|
|
72
|
+
|
|
73
|
+
Selecting `Reconcile resolved decisions during this session` authorizes only focused updates to the permitted current work-item documents for this active session. Do not ask again after every answer.
|
|
74
|
+
|
|
75
|
+
When a decision is resolved:
|
|
76
|
+
- update an existing permitted local authority/supplement only when this session has document-write authorization;
|
|
77
|
+
- if Jira/GitHub/another external system is authoritative and no permitted write integration is available, accumulate a concise `PROPOSED EXTERNAL WORK-ITEM UPDATE`;
|
|
78
|
+
- if a permitted external write integration exists, require an explicit `[EXTERNAL WRITE]` choice before writing externally;
|
|
79
|
+
- never create a competing local source merely to store an answer.
|
|
80
|
+
|
|
81
|
+
For local-document models, common homes are:
|
|
82
|
+
- brief: high-level scope/outcome/major rule;
|
|
83
|
+
- combined requirements: detailed user/engineering behavior and testable scenarios;
|
|
84
|
+
- decisions: resolved work-item decision/basis;
|
|
85
|
+
- ADR: only a meaningful cross-cutting architecture decision.
|
|
86
|
+
|
|
87
|
+
Pause reconciliation when an answer would materially change higher-level approved scope, contradict another authority/ADR, or require a new cross-cutting decision. Continue read-only grilling when appropriate.
|
|
88
|
+
|
|
89
|
+
## 4. Boundaries
|
|
90
|
+
|
|
91
|
+
Do not:
|
|
92
|
+
- implement production code;
|
|
93
|
+
- invoke subagents;
|
|
94
|
+
- create artifacts merely because grilling occurred;
|
|
95
|
+
- infer approval from an answer;
|
|
96
|
+
- silently write local or external authorities without the applicable session/write authorization.
|
|
97
|
+
|
|
98
|
+
Stop when:
|
|
99
|
+
- the human says stop/done/pause;
|
|
100
|
+
- no material issues remain;
|
|
101
|
+
- a true scope/decision/action gate appears;
|
|
65
102
|
- the human switches workflow.
|
|
66
103
|
|
|
67
|
-
## Natural completion
|
|
104
|
+
## 5. Natural completion
|
|
68
105
|
|
|
69
106
|
Summarize once:
|
|
70
|
-
- decisions strengthened
|
|
71
|
-
-
|
|
107
|
+
- decisions strengthened;
|
|
108
|
+
- documents or proposed external updates changed, if any;
|
|
109
|
+
- unresolved issues/conflicts;
|
|
72
110
|
- recommended next workflow.
|
|
73
111
|
|
|
74
112
|
Typical next workflows:
|
|
75
|
-
- `/
|
|
76
|
-
- `/
|
|
77
|
-
-
|
|
113
|
+
- `/refine-requirements` for systematic detailed coverage;
|
|
114
|
+
- `/start-work` when the item is ready;
|
|
115
|
+
- normal review/approval when a material requirement gate remains.
|
|
@@ -49,7 +49,7 @@ Do not synthesize or repair missing umbrella provenance by hand.
|
|
|
49
49
|
|
|
50
50
|
If `PROJECT_BOOTSTRAP.json` exists, treat it as approved generated-consumer provenance, not unrelated product data.
|
|
51
51
|
|
|
52
|
-
Before planning an update, require `generation.
|
|
52
|
+
Before planning an update, require `generation["project-forge"].package`, `generation["project-forge"].version`, and `generation["project-forge"].profile` to agree exactly with the installed `PROJECT_FORGE_BASELINE.json`. Require `generation["project-forge"].integrity` to be a non-empty exact registry integrity value for that installed package/version. Verify that integrity read-only from the registry when registry access is available.
|
|
53
53
|
|
|
54
54
|
If those values disagree before the update, report `GENERATED PROJECT FORGE METADATA DRIFT` and stop. Do not use `/project-forge-update` to silently reconcile an already-incoherent generated consumer.
|
|
55
55
|
|
|
@@ -117,7 +117,7 @@ A modified retired Core path is different: never auto-add `--accept-retired core
|
|
|
117
117
|
|
|
118
118
|
For a Bootstrap-generated consumer, also preview the companion generated-consumer changes:
|
|
119
119
|
|
|
120
|
-
- `PROJECT_BOOTSTRAP.json` keeps the same package/profile but changes `generation.
|
|
120
|
+
- `PROJECT_BOOTSTRAP.json` keeps the same package/profile but changes `generation["project-forge"].version` and `generation["project-forge"].integrity` to the exact reviewed target;
|
|
121
121
|
- generated package-verification surfaces should consume `PROJECT_BOOTSTRAP.json` dynamically when the accepted Bootstrap contract supports that form;
|
|
122
122
|
- a recognized older Bootstrap-generated verification block may be migrated only when its embedded old package/version/integrity exactly match the currently approved manifest metadata;
|
|
123
123
|
- an unrecognized or locally modified generated verification surface is a stop condition, not permission to reconstruct Bootstrap output by hand.
|
|
@@ -152,7 +152,7 @@ Choosing `Apply the exact Project Forge package update` authorizes only:
|
|
|
152
152
|
- creation/switch to one repository-appropriate short-lived update branch when needed;
|
|
153
153
|
- exact target package apply;
|
|
154
154
|
- removal of unchanged retired package-managed files that the reviewed preview classified as `REMOVE`;
|
|
155
|
-
- when `PROJECT_BOOTSTRAP.json` is present, update of its exact `generation.
|
|
155
|
+
- when `PROJECT_BOOTSTRAP.json` is present, update of its exact `generation["project-forge"].version` and `generation["project-forge"].integrity` to the reviewed target while preserving package/profile;
|
|
156
156
|
- migration of a recognized Bootstrap-generated package-verification block from duplicated current literals to the accepted manifest-driven form, only when the existing block still exactly matches the current approved metadata;
|
|
157
157
|
- package/baseline/generated-consumer verification;
|
|
158
158
|
- inspection of the resulting meaningful diff.
|