godpowers 2.6.0 → 3.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/CHANGELOG.md +45 -0
- package/README.md +46 -34
- package/RELEASE.md +49 -37
- package/SKILL.md +46 -48
- package/agents/god-deploy-engineer.md +2 -2
- package/agents/god-designer.md +3 -2
- package/agents/god-greenfieldifier.md +2 -4
- package/agents/god-launch-strategist.md +4 -5
- package/agents/god-observability-engineer.md +5 -5
- package/agents/god-reconciler.md +10 -4
- package/agents/god-retrospective.md +1 -1
- package/agents/god-updater.md +5 -5
- package/bin/install.js +11 -6
- package/extensions/data-pack/manifest.yaml +1 -1
- package/extensions/data-pack/package.json +1 -1
- package/extensions/launch-pack/manifest.yaml +1 -1
- package/extensions/launch-pack/package.json +1 -1
- package/extensions/security-pack/manifest.yaml +1 -1
- package/extensions/security-pack/package.json +1 -1
- package/fixtures/gate/build-pass/.godpowers/state.json +33 -0
- package/lib/README.md +2 -0
- package/lib/artifact-map.js +15 -3
- package/lib/cli-dispatch.js +39 -1
- package/lib/command-families.js +13 -8
- package/lib/context-writer.js +4 -4
- package/lib/gate.js +107 -9
- package/lib/install-profiles.js +39 -13
- package/lib/installer-args.js +25 -1
- package/lib/pillars.js +2 -4
- package/lib/recipes.js +16 -0
- package/lib/router.js +1 -5
- package/lib/source-sync.js +1 -1
- package/lib/state-advance.js +244 -0
- package/lib/state-lock.js +8 -4
- package/lib/state-views.js +460 -0
- package/lib/state.js +52 -3
- package/package.json +2 -2
- package/routing/god-audit.yaml +1 -1
- package/routing/god-build.yaml +1 -1
- package/routing/god-capture.yaml +41 -0
- package/routing/god-context.yaml +1 -1
- package/routing/god-deploy.yaml +3 -1
- package/routing/god-design.yaml +2 -2
- package/routing/god-extend.yaml +47 -0
- package/routing/god-fix.yaml +37 -0
- package/routing/god-launch.yaml +4 -1
- package/routing/god-lifecycle.yaml +1 -1
- package/routing/god-locate.yaml +1 -1
- package/routing/god-migrate.yaml +0 -1
- package/routing/god-mode.yaml +1 -1
- package/routing/god-observe.yaml +4 -1
- package/routing/god-plan.yaml +45 -0
- package/routing/god-prd.yaml +1 -1
- package/routing/god-reconcile.yaml +2 -5
- package/routing/god-ship.yaml +39 -0
- package/routing/god-sync.yaml +1 -1
- package/routing/recipes/returning-after-break.yaml +1 -1
- package/schema/state.v1.json +68 -1
- package/skills/god-arch.md +1 -1
- package/skills/god-build.md +6 -4
- package/skills/god-capture.md +45 -0
- package/skills/god-deploy.md +16 -14
- package/skills/god-design.md +3 -3
- package/skills/god-doctor.md +1 -1
- package/skills/god-extend.md +48 -0
- package/skills/god-fast.md +2 -2
- package/skills/god-feature.md +1 -1
- package/skills/god-fix.md +43 -0
- package/skills/god-harden.md +3 -3
- package/skills/god-hotfix.md +1 -1
- package/skills/god-init.md +14 -10
- package/skills/god-launch.md +14 -12
- package/skills/god-lifecycle.md +8 -1
- package/skills/god-locate.md +6 -0
- package/skills/god-mode.md +5 -4
- package/skills/god-observe.md +15 -13
- package/skills/god-pause-work.md +2 -2
- package/skills/god-plan.md +51 -0
- package/skills/god-prd.md +5 -4
- package/skills/god-quick.md +1 -1
- package/skills/god-repo.md +1 -1
- package/skills/god-resume-work.md +5 -4
- package/skills/god-roadmap-check.md +1 -0
- package/skills/god-roadmap-update.md +1 -1
- package/skills/god-roadmap.md +1 -1
- package/skills/god-rollback.md +1 -1
- package/skills/god-ship.md +44 -0
- package/skills/god-skip.md +2 -2
- package/skills/god-stack.md +1 -1
- package/skills/god-standards.md +1 -1
- package/skills/god-status.md +14 -9
- package/skills/god-story.md +1 -1
- package/skills/god-sync.md +2 -2
- package/skills/god-version.md +1 -1
- package/workflows/bluefield-arc.yaml +2 -4
- package/workflows/brownfield-arc.yaml +2 -4
|
@@ -69,9 +69,8 @@ For each channel:
|
|
|
69
69
|
- D+7: post-launch retrospective
|
|
70
70
|
|
|
71
71
|
### 6. Shipping Closure
|
|
72
|
-
- Read `.godpowers/deploy
|
|
73
|
-
`.godpowers/deploy/WAITING-FOR-EXTERNAL-ACCESS.md` if present
|
|
74
|
-
`.godpowers/observe/STATE.md`.
|
|
72
|
+
- Read `.godpowers/state.json` deploy and observe evidence plus
|
|
73
|
+
`.godpowers/deploy/WAITING-FOR-EXTERNAL-ACCESS.md` if present.
|
|
75
74
|
- If deploy or observe is waiting on external access, do not create a broad
|
|
76
75
|
dashboard checklist. Reference only the smallest next access item from the
|
|
77
76
|
waiting bundle and write launch state as local-ready with deployed
|
|
@@ -96,7 +95,7 @@ For each channel:
|
|
|
96
95
|
|
|
97
96
|
## Output
|
|
98
97
|
|
|
99
|
-
|
|
98
|
+
Return launch evidence for `.godpowers/state.json`; `lib/state-views.js` generates `.godpowers/launch/STATE.md` with the launch artifact summary.
|
|
100
99
|
|
|
101
100
|
## Have-Nots
|
|
102
101
|
|
|
@@ -129,7 +128,7 @@ pause. Log to YOLO-DECISIONS.md so the user can revise:
|
|
|
129
128
|
- Auto-picked tone: direct/professional (default)
|
|
130
129
|
- Auto-picked headline: [actual headline written]
|
|
131
130
|
- Reason: substitution-tested headline that emphasizes the strongest PRD value prop
|
|
132
|
-
- Reversible by:
|
|
131
|
+
- Reversible by: update launch evidence in `.godpowers/state.json` and regenerate the launch state view
|
|
133
132
|
- Timestamp: [ISO 8601]
|
|
134
133
|
```
|
|
135
134
|
|
|
@@ -15,10 +15,10 @@ Wire observability.
|
|
|
15
15
|
|
|
16
16
|
## Gate Check
|
|
17
17
|
|
|
18
|
-
`.godpowers/
|
|
19
|
-
|
|
20
|
-
bundle. A deferred staging URL must not block
|
|
21
|
-
CI-verifiable checks can still run.
|
|
18
|
+
`.godpowers/state.json` records deploy completion. The deploy evidence says the
|
|
19
|
+
app is deployed and reachable, or it documents a tested local staging harness
|
|
20
|
+
plus a single external access bundle. A deferred staging URL must not block
|
|
21
|
+
observability setup when local or CI-verifiable checks can still run.
|
|
22
22
|
|
|
23
23
|
## Process
|
|
24
24
|
|
|
@@ -78,7 +78,7 @@ For each PRD success metric, define an SLO:
|
|
|
78
78
|
|
|
79
79
|
## Output
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
Return observability evidence for `.godpowers/state.json`; `lib/state-views.js` generates `.godpowers/observe/STATE.md` with:
|
|
82
82
|
- SLO definitions
|
|
83
83
|
- Error budget policies
|
|
84
84
|
- Alert catalog
|
package/agents/god-reconciler.md
CHANGED
|
@@ -82,12 +82,16 @@ For each artifact below, check (in parallel where possible):
|
|
|
82
82
|
|
|
83
83
|
### Tier 3 artifacts
|
|
84
84
|
|
|
85
|
-
#### DEPLOY
|
|
85
|
+
#### DEPLOY state evidence
|
|
86
|
+
|
|
87
|
+
Source: `.godpowers/state.json` `tier-3.deploy`.
|
|
86
88
|
- Does the feature need a new env var?
|
|
87
89
|
- New deploy step (e.g., new service)?
|
|
88
90
|
- Verdict: covered / needs-extension
|
|
89
91
|
|
|
90
|
-
#### OBSERVE
|
|
92
|
+
#### OBSERVE state evidence
|
|
93
|
+
|
|
94
|
+
Source: `.godpowers/state.json` `tier-3.observe`.
|
|
91
95
|
- Does the feature need a new SLO?
|
|
92
96
|
- New error budget category?
|
|
93
97
|
- New alert + runbook?
|
|
@@ -99,7 +103,9 @@ For each artifact below, check (in parallel where possible):
|
|
|
99
103
|
- New input source to validate?
|
|
100
104
|
- Verdict: covered / needs-review / new-surface
|
|
101
105
|
|
|
102
|
-
#### LAUNCH
|
|
106
|
+
#### LAUNCH state evidence
|
|
107
|
+
|
|
108
|
+
Source: `.godpowers/state.json` `tier-3.launch`.
|
|
103
109
|
- Is the feature user-visible?
|
|
104
110
|
- Does launch copy need updating?
|
|
105
111
|
- New channel-specific messaging needed?
|
|
@@ -168,7 +174,7 @@ Return structured JSON to the orchestrating skill:
|
|
|
168
174
|
"roadmap": { "status": "enhancement", "match": "Milestone 2", "action": "fold in or amend" },
|
|
169
175
|
"stack": { "status": "covered" },
|
|
170
176
|
"repo": { "status": "scaffolded" },
|
|
171
|
-
"deploy": { "status": "needs-extension", "action": "
|
|
177
|
+
"deploy": { "status": "needs-extension", "action": "record new env var in state.json deploy evidence" },
|
|
172
178
|
"observe": { "status": "needs-slo", "action": "add SLO for new endpoint" },
|
|
173
179
|
"harden": { "status": "needs-review", "action": "scope-to-new-code review" },
|
|
174
180
|
"launch": { "status": "copy-update", "action": "update landing if launching publicly" },
|
|
@@ -22,7 +22,7 @@ sprint, not generic platitudes.
|
|
|
22
22
|
### 1. Gather Data
|
|
23
23
|
Read:
|
|
24
24
|
- Sprint PLAN.md (what was committed)
|
|
25
|
-
- Sprint slice completion record from `.godpowers/
|
|
25
|
+
- Sprint slice completion record from `.godpowers/state.json`
|
|
26
26
|
- Git log for the sprint window
|
|
27
27
|
- Any HANDOFF.md or pause logs from the sprint
|
|
28
28
|
|
package/agents/god-updater.md
CHANGED
|
@@ -54,13 +54,13 @@ After feature work, every artifact that was impacted needs to reflect reality.
|
|
|
54
54
|
- Validate have-nots S-01 through S-05
|
|
55
55
|
|
|
56
56
|
### DEPLOY update (if reconciler said "needs-extension")
|
|
57
|
-
- Update
|
|
57
|
+
- Update `.godpowers/state.json` deploy evidence
|
|
58
58
|
- Document new env vars
|
|
59
59
|
- Update CI/CD config notes
|
|
60
60
|
- Have-nots D-01 through D-08
|
|
61
61
|
|
|
62
62
|
### OBSERVE update (if reconciler said "needs-slo" or "needs-alert")
|
|
63
|
-
- Update
|
|
63
|
+
- Update `.godpowers/state.json` observe evidence
|
|
64
64
|
- Define new SLO with error budget policy
|
|
65
65
|
- Define new alert with runbook reference
|
|
66
66
|
- Have-nots OB-01 through OB-08
|
|
@@ -71,7 +71,7 @@ After feature work, every artifact that was impacted needs to reflect reality.
|
|
|
71
71
|
- Have-nots H-01 through H-11
|
|
72
72
|
|
|
73
73
|
### LAUNCH update (if reconciler said "copy-update" or "new-launch")
|
|
74
|
-
- Update
|
|
74
|
+
- Update `.godpowers/state.json` launch evidence
|
|
75
75
|
- Update landing copy if user-visible
|
|
76
76
|
- Substitution-test new copy
|
|
77
77
|
|
|
@@ -260,8 +260,8 @@ Updated:
|
|
|
260
260
|
- arch/ARCH.md: added ADR-007 (auth refactor)
|
|
261
261
|
- arch/adr/007-auth-refactor.md: created
|
|
262
262
|
- roadmap/ROADMAP.md: Milestone 2 marked complete
|
|
263
|
-
- deploy
|
|
264
|
-
- observe
|
|
263
|
+
- state.json tier-3.deploy: added STRIPE_WEBHOOK_SECRET env var
|
|
264
|
+
- state.json tier-3.observe: added SLO for /api/stripe-webhook (99.5%)
|
|
265
265
|
- backlog/BACKLOG.md: resolved entry "Stripe webhook handling"
|
|
266
266
|
- todos/TODOS.md: marked "wire stripe events" as done
|
|
267
267
|
- threads/auth-migration.md: appended progress note
|
package/bin/install.js
CHANGED
|
@@ -51,6 +51,7 @@ function showHelp() {
|
|
|
51
51
|
log('Commands:');
|
|
52
52
|
log(' status Show the Godpowers Dashboard for a project');
|
|
53
53
|
log(' next Show the dashboard and recommended next command');
|
|
54
|
+
log(' state advance Update one tracked Godpowers state step');
|
|
54
55
|
log(' gate Check a tier artifact gate');
|
|
55
56
|
log(' mcp-info Show read-only MCP companion setup instructions');
|
|
56
57
|
log(' quick-proof Show a runnable proof from the shipped fixture');
|
|
@@ -65,7 +66,9 @@ function showHelp() {
|
|
|
65
66
|
}
|
|
66
67
|
log('');
|
|
67
68
|
log('Options:');
|
|
68
|
-
log(' --project=<path> Project root for status, next, proof, or automation commands');
|
|
69
|
+
log(' --project=<path> Project root for status, next, state, proof, or automation commands');
|
|
70
|
+
log(' --step=<name> Step for state advance, such as prd or tier-1.prd');
|
|
71
|
+
log(' --status=<status> Status for state advance');
|
|
69
72
|
log(' --tier=<name> Tier for gate: prd, design, arch, roadmap, stack, repo, build, or harden');
|
|
70
73
|
log(' --json Emit JSON for status, next, proof, or automation commands');
|
|
71
74
|
log(' --brief Render compact output for status, next, or proof');
|
|
@@ -92,7 +95,7 @@ function showHelp() {
|
|
|
92
95
|
log(' --codebuddy Install for CodeBuddy');
|
|
93
96
|
log(' --pi Install for Pi');
|
|
94
97
|
log(' --all Install for all 15 runtimes');
|
|
95
|
-
log(' --profile=<name> Install profile: core, builder, maintainer, suite, or full');
|
|
98
|
+
log(' --profile=<name> Install profile: core, builder, maintainer, suite, or full (default: core)');
|
|
96
99
|
log(' --minimal Alias for --profile=core');
|
|
97
100
|
log(' -u, --uninstall Uninstall Godpowers');
|
|
98
101
|
log(' -h, --help Show this help message');
|
|
@@ -100,6 +103,7 @@ function showHelp() {
|
|
|
100
103
|
log('Examples:');
|
|
101
104
|
log(' npx godpowers status --project=.');
|
|
102
105
|
log(' npx godpowers next --project=.');
|
|
106
|
+
log(' npx godpowers state advance --step=prd --status=done --project=.');
|
|
103
107
|
log(' npx godpowers gate --tier=prd --project=.');
|
|
104
108
|
log(' npx godpowers mcp-info --project=.');
|
|
105
109
|
log(' npx godpowers quick-proof --project=.');
|
|
@@ -162,15 +166,15 @@ function runInstall(opts, srcDir) {
|
|
|
162
166
|
log('');
|
|
163
167
|
log(`\x1b[36mProfile:\x1b[0m ${describeProfiles(opts.profile)}`);
|
|
164
168
|
log(`\x1b[36mInstalled:\x1b[0m`);
|
|
165
|
-
log(` ${surface.skills} slash commands (try: /god
|
|
169
|
+
log(` ${surface.skills} slash commands (try: /god, /god-plan, /god-status, /god-mode)`);
|
|
166
170
|
log(` ${surface.agents} specialist agents`);
|
|
167
171
|
log(' Templates and references for artifact discipline');
|
|
168
172
|
log('');
|
|
169
173
|
log(`\x1b[36mNext steps:\x1b[0m`);
|
|
170
174
|
log(' 1. Open your AI coding tool in any project directory');
|
|
171
|
-
log(` 2. Type: \x1b[36m/god
|
|
172
|
-
log(` Or: \x1b[36m/god-
|
|
173
|
-
log(` Or: \x1b[36m/god-
|
|
175
|
+
log(` 2. Type: \x1b[36m/god\x1b[0m for the front door`);
|
|
176
|
+
log(` Or: \x1b[36m/god-plan\x1b[0m to start planning`);
|
|
177
|
+
log(` Or: \x1b[36m/god-mode\x1b[0m for the full autonomous project run`);
|
|
174
178
|
log('');
|
|
175
179
|
log(`\x1b[36mDocs:\x1b[0m ${identity.HOMEPAGE_URL}`);
|
|
176
180
|
log('');
|
|
@@ -216,6 +220,7 @@ module.exports = {
|
|
|
216
220
|
runMcpInfoCommand: cliDispatch.runMcpInfoCommand,
|
|
217
221
|
runExtensionScaffoldCommand: cliDispatch.runExtensionScaffoldCommand,
|
|
218
222
|
runGateCommand: cliDispatch.runGateCommand,
|
|
223
|
+
runStateCommand: cliDispatch.runStateCommand,
|
|
219
224
|
applyDefaultRuntimeSelection,
|
|
220
225
|
runInstall,
|
|
221
226
|
runUninstall,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://godpowers.dev/schema/state.v1.json",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"project": {
|
|
5
|
+
"name": "build-pass",
|
|
6
|
+
"started": "2026-06-10T00:00:00.000Z"
|
|
7
|
+
},
|
|
8
|
+
"tiers": {
|
|
9
|
+
"tier-2": {
|
|
10
|
+
"build": {
|
|
11
|
+
"status": "done",
|
|
12
|
+
"updated": "2026-06-10T18:08:00.000Z",
|
|
13
|
+
"artifact": "build/STATE.md",
|
|
14
|
+
"verification": {
|
|
15
|
+
"commands": [
|
|
16
|
+
{
|
|
17
|
+
"command": "npm test",
|
|
18
|
+
"status": "pass",
|
|
19
|
+
"exitCode": 0,
|
|
20
|
+
"ranAt": "2026-06-10T18:07:00.000Z"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"command": "npm run lint",
|
|
24
|
+
"status": "pass",
|
|
25
|
+
"exitCode": 0,
|
|
26
|
+
"ranAt": "2026-06-10T18:07:30.000Z"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
package/lib/README.md
CHANGED
|
@@ -9,6 +9,8 @@ package-level integrations.
|
|
|
9
9
|
| Module | Purpose |
|
|
10
10
|
|--------|---------|
|
|
11
11
|
| `state.js` | Read, initialize, validate, and write `.godpowers/state.json`. |
|
|
12
|
+
| `state-views.js` | Generate managed markdown views such as `.godpowers/PROGRESS.md` and Godpowers-owned per-tier `STATE.md` files from `state.json`. |
|
|
13
|
+
| `state-advance.js` | Mutate one tracked state step through locking and generated state view refresh. |
|
|
12
14
|
| `state-lock.js` | Coordinate state writes with a lock file. |
|
|
13
15
|
| `intent.js` | Read and validate `intent.yaml` from project roots or `.godpowers/`. |
|
|
14
16
|
| `frontmatter.js` | Parse shared markdown YAML frontmatter for skills, agents, Pillars, checkpoints, and design specs. |
|
package/lib/artifact-map.js
CHANGED
|
@@ -9,7 +9,7 @@ const TIER_ARTIFACTS = {
|
|
|
9
9
|
design: [
|
|
10
10
|
{ path: 'DESIGN.md', required: true, lint: true },
|
|
11
11
|
{ path: 'PRODUCT.md', required: false, lint: true },
|
|
12
|
-
{ path: '.godpowers/
|
|
12
|
+
{ path: '.godpowers/state.json', required: true, lint: false }
|
|
13
13
|
],
|
|
14
14
|
arch: [
|
|
15
15
|
{ path: '.godpowers/arch/ARCH.md', required: true, lint: true }
|
|
@@ -24,13 +24,18 @@ const TIER_ARTIFACTS = {
|
|
|
24
24
|
{ path: '.godpowers/repo/AUDIT.md', required: true, lint: true }
|
|
25
25
|
],
|
|
26
26
|
build: [
|
|
27
|
-
{ path: '.godpowers/
|
|
27
|
+
{ path: '.godpowers/state.json', required: true, lint: false }
|
|
28
28
|
],
|
|
29
29
|
harden: [
|
|
30
30
|
{ path: '.godpowers/harden/FINDINGS.md', required: true, lint: true }
|
|
31
31
|
]
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
+
const TIER_STATE_STEPS = {
|
|
35
|
+
design: { tierKey: 'tier-1', subStepKey: 'design' },
|
|
36
|
+
build: { tierKey: 'tier-2', subStepKey: 'build' }
|
|
37
|
+
};
|
|
38
|
+
|
|
34
39
|
function normalizeTier(tier) {
|
|
35
40
|
if (!tier) return null;
|
|
36
41
|
return String(tier).replace(/^\/?god-/, '').toLowerCase();
|
|
@@ -51,10 +56,17 @@ function requiredArtifactsForTier(tier) {
|
|
|
51
56
|
return artifacts ? artifacts.filter((artifact) => artifact.required) : null;
|
|
52
57
|
}
|
|
53
58
|
|
|
59
|
+
function stateStepForTier(tier) {
|
|
60
|
+
const key = normalizeTier(tier);
|
|
61
|
+
if (!key || !TIER_STATE_STEPS[key]) return null;
|
|
62
|
+
return { ...TIER_STATE_STEPS[key] };
|
|
63
|
+
}
|
|
64
|
+
|
|
54
65
|
module.exports = {
|
|
55
66
|
TIER_ARTIFACTS,
|
|
56
67
|
normalizeTier,
|
|
57
68
|
tiers,
|
|
58
69
|
artifactsForTier,
|
|
59
|
-
requiredArtifactsForTier
|
|
70
|
+
requiredArtifactsForTier,
|
|
71
|
+
stateStepForTier
|
|
60
72
|
};
|
package/lib/cli-dispatch.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
const gate = require('./gate');
|
|
6
6
|
const identity = require('./package-identity');
|
|
7
|
+
const stateAdvance = require('./state-advance');
|
|
7
8
|
|
|
8
9
|
const VERSION = identity.PACKAGE_VERSION;
|
|
9
10
|
|
|
@@ -140,9 +141,45 @@ function runGateCommand(opts) {
|
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
143
|
|
|
144
|
+
function runStateCommand(opts) {
|
|
145
|
+
if (opts.stateAction !== 'advance') {
|
|
146
|
+
const result = {
|
|
147
|
+
command: 'state',
|
|
148
|
+
verdict: 'fail',
|
|
149
|
+
project: opts.project,
|
|
150
|
+
step: opts.step || null,
|
|
151
|
+
status: opts.status || null,
|
|
152
|
+
previousStatus: null,
|
|
153
|
+
updated: null,
|
|
154
|
+
warnings: [],
|
|
155
|
+
checks: [{ id: 'state-action-required', status: 'fail', artifact: '.godpowers/state.json', reason: 'state requires subcommand advance' }],
|
|
156
|
+
findings: [{ id: 'state-action-required', severity: 'error', artifact: '.godpowers/state.json', reason: 'state requires subcommand advance' }],
|
|
157
|
+
summary: { updated: false, state: '.godpowers/state.json', views: ['.godpowers/PROGRESS.md'] }
|
|
158
|
+
};
|
|
159
|
+
if (opts.json) console.log(JSON.stringify(result, null, 2));
|
|
160
|
+
else console.log(stateAdvance.render(result));
|
|
161
|
+
process.exitCode = 1;
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const result = stateAdvance.advance(opts.project, {
|
|
166
|
+
step: opts.step,
|
|
167
|
+
status: opts.status
|
|
168
|
+
});
|
|
169
|
+
if (opts.json) {
|
|
170
|
+
console.log(JSON.stringify(result, null, 2));
|
|
171
|
+
} else {
|
|
172
|
+
console.log(stateAdvance.render(result));
|
|
173
|
+
}
|
|
174
|
+
if (stateAdvance.exitCode(result) !== 0) {
|
|
175
|
+
process.exitCode = 1;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
143
179
|
const COMMAND_RUNNERS = {
|
|
144
180
|
status: runDashboardCommand,
|
|
145
181
|
next: runDashboardCommand,
|
|
182
|
+
state: runStateCommand,
|
|
146
183
|
'quick-proof': runQuickProofCommand,
|
|
147
184
|
'mcp-info': runMcpInfoCommand,
|
|
148
185
|
'automation-status': runAutomationCommand,
|
|
@@ -170,5 +207,6 @@ module.exports = {
|
|
|
170
207
|
runQuickProofCommand,
|
|
171
208
|
runMcpInfoCommand,
|
|
172
209
|
runExtensionScaffoldCommand,
|
|
173
|
-
runGateCommand
|
|
210
|
+
runGateCommand,
|
|
211
|
+
runStateCommand
|
|
174
212
|
};
|
package/lib/command-families.js
CHANGED
|
@@ -17,6 +17,7 @@ const COMMAND_FAMILIES = [
|
|
|
17
17
|
'/god',
|
|
18
18
|
'/god-init',
|
|
19
19
|
'/god-mode',
|
|
20
|
+
'/god-plan',
|
|
20
21
|
'/god-explore',
|
|
21
22
|
'/god-discuss',
|
|
22
23
|
'/god-list-assumptions',
|
|
@@ -42,8 +43,6 @@ const COMMAND_FAMILIES = [
|
|
|
42
43
|
'/god-status',
|
|
43
44
|
'/god-next',
|
|
44
45
|
'/god-progress',
|
|
45
|
-
'/god-lifecycle',
|
|
46
|
-
'/god-locate',
|
|
47
46
|
'/god-resume-work',
|
|
48
47
|
'/god-pause-work'
|
|
49
48
|
]
|
|
@@ -54,6 +53,7 @@ const COMMAND_FAMILIES = [
|
|
|
54
53
|
purpose: 'Plan, implement, test, and ship product work.',
|
|
55
54
|
commands: [
|
|
56
55
|
'/god-build',
|
|
56
|
+
'/god-fix',
|
|
57
57
|
'/god-feature',
|
|
58
58
|
'/god-story',
|
|
59
59
|
'/god-stories',
|
|
@@ -91,6 +91,7 @@ const COMMAND_FAMILIES = [
|
|
|
91
91
|
purpose: 'Deploy, observe, harden, launch, and respond in production.',
|
|
92
92
|
commands: [
|
|
93
93
|
'/god-deploy',
|
|
94
|
+
'/god-ship',
|
|
94
95
|
'/god-observe',
|
|
95
96
|
'/god-harden',
|
|
96
97
|
'/god-launch',
|
|
@@ -128,6 +129,7 @@ const COMMAND_FAMILIES = [
|
|
|
128
129
|
purpose: 'Save thoughts, tasks, backlog items, seeds, and learnings.',
|
|
129
130
|
commands: [
|
|
130
131
|
'/god-note',
|
|
132
|
+
'/god-capture',
|
|
131
133
|
'/god-add-todo',
|
|
132
134
|
'/god-check-todos',
|
|
133
135
|
'/god-add-backlog',
|
|
@@ -158,6 +160,7 @@ const COMMAND_FAMILIES = [
|
|
|
158
160
|
purpose: 'Install, inspect, test, remove, or author extension packs.',
|
|
159
161
|
commands: [
|
|
160
162
|
'/god-extension-scaffold',
|
|
163
|
+
'/god-extend',
|
|
161
164
|
'/god-extension-add',
|
|
162
165
|
'/god-extension-list',
|
|
163
166
|
'/god-extension-info',
|
|
@@ -204,7 +207,9 @@ const COMMAND_FAMILIES = [
|
|
|
204
207
|
purpose: 'Deprecated full-profile commands kept for backward compatibility.',
|
|
205
208
|
visibility: 'hidden',
|
|
206
209
|
commands: [
|
|
207
|
-
'/god-roadmap-check'
|
|
210
|
+
'/god-roadmap-check',
|
|
211
|
+
'/god-lifecycle',
|
|
212
|
+
'/god-locate'
|
|
208
213
|
]
|
|
209
214
|
}
|
|
210
215
|
];
|
|
@@ -212,8 +217,8 @@ const COMMAND_FAMILIES = [
|
|
|
212
217
|
const STATUS_VIEWS = [
|
|
213
218
|
{ id: 'overview', command: '/god-status', label: 'Overview', purpose: 'Operational state, proactive checks, and blockers.' },
|
|
214
219
|
{ id: 'progress', command: '/god-progress', label: 'Progress', purpose: 'Requirement and roadmap increment completion.' },
|
|
215
|
-
{ id: 'lifecycle', command: '/god-lifecycle', label: 'Lifecycle', purpose: 'Project phase and fitting workflows.' },
|
|
216
|
-
{ id: 'locate', command: '/god-locate', label: 'Locate', purpose: 'Resume orientation from checkpoint and disk state.' },
|
|
220
|
+
{ id: 'lifecycle', command: '/god-status --lifecycle', label: 'Lifecycle', purpose: 'Project phase and fitting workflows.' },
|
|
221
|
+
{ id: 'locate', command: '/god-status --locate', label: 'Locate', purpose: 'Resume orientation from checkpoint and disk state.' },
|
|
217
222
|
{ id: 'next', command: '/god-next', label: 'Next', purpose: 'Single recommended command with reason.' }
|
|
218
223
|
];
|
|
219
224
|
|
|
@@ -275,11 +280,11 @@ const TRIGGER_PRECEDENCE = {
|
|
|
275
280
|
reason: 'Progress answers deliverables while status answers operational state.'
|
|
276
281
|
},
|
|
277
282
|
'where am i': {
|
|
278
|
-
default: '/god-lifecycle',
|
|
283
|
+
default: '/god-status --lifecycle',
|
|
279
284
|
conditional: [
|
|
280
|
-
{ command: '/god-locate', when: 'checkpoint-or-handoff-exists', reason: 'Resume artifacts exist on disk.' }
|
|
285
|
+
{ command: '/god-status --locate', when: 'checkpoint-or-handoff-exists', reason: 'Resume artifacts exist on disk.' }
|
|
281
286
|
],
|
|
282
|
-
reason: '
|
|
287
|
+
reason: 'Status flags explain the phase or orient a resumed session.'
|
|
283
288
|
}
|
|
284
289
|
};
|
|
285
290
|
|
package/lib/context-writer.js
CHANGED
|
@@ -83,13 +83,13 @@ function buildCanonicalContent(state, opts = {}) {
|
|
|
83
83
|
const scale = (state && (state.scale || (state.project && state.project.scale))) || opts.scale || 'unknown';
|
|
84
84
|
lines.push(`- Project: ${projectName}`);
|
|
85
85
|
lines.push(`- Mode: ${mode} Scale: ${scale}`);
|
|
86
|
-
lines.push('- State: `.godpowers/state.json`
|
|
86
|
+
lines.push('- State: `.godpowers/state.json` is authority; `.godpowers/PROGRESS.md` is generated for humans');
|
|
87
87
|
lines.push('');
|
|
88
88
|
|
|
89
89
|
lines.push('### Quarterback rule');
|
|
90
90
|
lines.push('');
|
|
91
|
-
lines.push('There is exactly one orchestrator: `god-orchestrator`. It owns
|
|
92
|
-
lines.push('`state.json`, `
|
|
91
|
+
lines.push('There is exactly one orchestrator: `god-orchestrator`. It owns writes to');
|
|
92
|
+
lines.push('`state.json`, `intent.yaml`, and `events.jsonl`; `PROGRESS.md` is regenerated from state. Skills like');
|
|
93
93
|
lines.push('`/god`, `/god-next`, `/god-status` read state without writing.');
|
|
94
94
|
lines.push('');
|
|
95
95
|
|
|
@@ -148,7 +148,7 @@ function buildCanonicalContent(state, opts = {}) {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
lines.push('See `.godpowers/PROGRESS.md` for the
|
|
151
|
+
lines.push('See `.godpowers/state.json` for authority and `.godpowers/PROGRESS.md` for the generated tier table.');
|
|
152
152
|
return lines.join('\n');
|
|
153
153
|
}
|
|
154
154
|
|