godpowers 2.5.2 → 2.6.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 +18 -0
- package/README.md +33 -7
- package/RELEASE.md +34 -25
- package/bin/install.js +3 -0
- package/lib/cli-dispatch.js +12 -0
- package/lib/host-capabilities.js +53 -3
- package/lib/installer-args.js +1 -0
- package/lib/mcp-info.js +93 -0
- package/package.json +7 -2
- package/skills/god-next.md +2 -1
- package/skills/god-status.md +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.6.0] - 2026-06-10
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Added the `@godpowers/mcp` companion package with read-only MCP tools for
|
|
14
|
+
status, next, gate checks, artifact linting, and requirement tracing.
|
|
15
|
+
- Added `godpowers mcp-info --project=.` as a read-only main-package helper
|
|
16
|
+
that prints setup instructions without loading the MCP SDK.
|
|
17
|
+
- Added MCP protocol tests that spawn the companion server over stdio, list
|
|
18
|
+
tools, and call each tool against the quick-proof fixture.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Updated dashboard and quick-proof host guarantee output to include MCP
|
|
22
|
+
availability.
|
|
23
|
+
- Updated `/god-status` and `/god-next` to prefer MCP tools when available and
|
|
24
|
+
fall back to CLI or runtime modules otherwise.
|
|
25
|
+
- Updated release checks to verify the companion package protocol and package
|
|
26
|
+
contents while keeping the main `godpowers` package dependency-free.
|
|
27
|
+
|
|
10
28
|
## [2.5.2] - 2026-06-10
|
|
11
29
|
|
|
12
30
|
### Added
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/aihxp/godpowers/actions/workflows/ci.yml)
|
|
4
4
|
[](LICENSE)
|
|
5
|
-
[](CHANGELOG.md)
|
|
6
6
|
[](https://www.npmjs.com/package/godpowers)
|
|
7
7
|
|
|
8
8
|
**Ship fast. Ship right. Ship everything. Ship accountably.**
|
|
@@ -30,9 +30,13 @@ Godpowers makes AI coding accountable: every serious run should leave disk
|
|
|
30
30
|
state, artifacts, validation gates, host guarantees, and a next action. Code is
|
|
31
31
|
only one output. The project memory and proof trail matter too.
|
|
32
32
|
|
|
33
|
-
Version 2.
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
Version 2.6.0 adds the optional `@godpowers/mcp` companion package with
|
|
34
|
+
read-only MCP tools for status, next-route, gate, artifact lint, and requirement
|
|
35
|
+
trace workflows. It keeps the 2.5.2 installed-runtime gate and build-gate
|
|
36
|
+
fixes, the 2.5.1 Codex host proof studies, executable tier gates, 2.4
|
|
37
|
+
command-family UX, external CLI canary evidence, prompt-size guardrails, legacy
|
|
38
|
+
command quarantine, lib coverage gating, and package verification before
|
|
39
|
+
publish.
|
|
36
40
|
|
|
37
41
|
Maintainer hardening continues on the 2.x line with small, audited public
|
|
38
42
|
surface updates when they close real workflow gaps. The 2.1.0 patch closes a command-injection vector in the
|
|
@@ -256,6 +260,7 @@ npx godpowers status --project=. --brief
|
|
|
256
260
|
npx godpowers status --project=. --json
|
|
257
261
|
npx godpowers quick-proof --project=.
|
|
258
262
|
npx godpowers gate --tier=prd --project=.
|
|
263
|
+
npx godpowers mcp-info --project=.
|
|
259
264
|
npx godpowers dogfood
|
|
260
265
|
npx godpowers extension-scaffold --name=@godpowers/my-pack --output=.
|
|
261
266
|
```
|
|
@@ -287,9 +292,30 @@ npx godpowers gate --tier=harden --project=.
|
|
|
287
292
|
The gate reads disk artifacts, runs the shared artifact linter, checks build
|
|
288
293
|
verification evidence, and blocks unresolved Critical harden findings.
|
|
289
294
|
|
|
290
|
-
The runtime remains dependency-free.
|
|
291
|
-
|
|
292
|
-
|
|
295
|
+
The main `godpowers` runtime remains dependency-free. The optional
|
|
296
|
+
`@godpowers/mcp` companion package owns the MCP SDK dependency and exposes
|
|
297
|
+
read-only tools through explicit host setup. YAML parsing is intentionally
|
|
298
|
+
limited to the documented Godpowers subset used by intent, routing, workflow,
|
|
299
|
+
and extension files, with parser coverage in `scripts/test-yaml-parser.js`.
|
|
300
|
+
|
|
301
|
+
### MCP Companion
|
|
302
|
+
|
|
303
|
+
MCP-capable hosts can use the optional companion package without adding an SDK
|
|
304
|
+
dependency to the main `godpowers` package:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
npx godpowers mcp-info --project=.
|
|
308
|
+
npx -y -p godpowers@2.6.0 -p @godpowers/mcp@2.6.0 godpowers-mcp serve --project=.
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
The companion exposes `status`, `next`, `gate_check`, `lint_artifact`, and
|
|
312
|
+
`trace_requirement`. Host registration is opt-in:
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
npx -y -p godpowers@2.6.0 -p @godpowers/mcp@2.6.0 godpowers-mcp setup --host=codex --project=. --write
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
See [MCP Companion](docs/mcp.md) for package boundaries and setup details.
|
|
293
319
|
|
|
294
320
|
### Slash Commands
|
|
295
321
|
|
package/RELEASE.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Godpowers 2.
|
|
1
|
+
# Godpowers 2.6.0 Release
|
|
2
2
|
|
|
3
|
-
> Status:
|
|
3
|
+
> Status: Release candidate
|
|
4
4
|
> Date: 2026-06-10
|
|
5
5
|
|
|
6
|
-
[DECISION] Godpowers 2.
|
|
7
|
-
[DECISION] This release
|
|
8
|
-
[DECISION] This release
|
|
6
|
+
[DECISION] Godpowers 2.6.0 is the Phase 3 MCP companion package release.
|
|
7
|
+
[DECISION] This release keeps the main `godpowers` package dependency-free while adding an optional `@godpowers/mcp` package for MCP-capable hosts.
|
|
8
|
+
[DECISION] This release preserves the 2.5.2 installed-runtime gate command fix and build-gate false-pass fix.
|
|
9
9
|
|
|
10
10
|
## What's in this release
|
|
11
11
|
|
|
@@ -13,39 +13,48 @@
|
|
|
13
13
|
- [DECISION] 40 specialist agents.
|
|
14
14
|
- [DECISION] 13 executable workflows.
|
|
15
15
|
- [DECISION] 42 intent recipes.
|
|
16
|
-
- [DECISION]
|
|
16
|
+
- [DECISION] 9 installer CLI helpers.
|
|
17
|
+
- [DECISION] 5 read-only MCP tools in `@godpowers/mcp`.
|
|
17
18
|
|
|
18
19
|
## Highlights
|
|
19
20
|
|
|
20
|
-
- [DECISION]
|
|
21
|
-
- [DECISION]
|
|
22
|
-
- [DECISION]
|
|
21
|
+
- [DECISION] `@godpowers/mcp` exposes `status`, `next`, `gate_check`, `lint_artifact`, and `trace_requirement` over stdio.
|
|
22
|
+
- [DECISION] `godpowers mcp-info --project=.` prints setup instructions without requiring or loading the MCP SDK in the main package.
|
|
23
|
+
- [DECISION] `godpowers-mcp setup --host=codex --project=. --write` writes a managed Codex MCP registration only after the user explicitly asks for it.
|
|
24
|
+
- [DECISION] Dashboard and Quick Proof host guarantee lines now include MCP availability.
|
|
25
|
+
- [DECISION] The main `godpowers` package still has no production dependencies.
|
|
23
26
|
|
|
24
27
|
## Validation
|
|
25
28
|
|
|
26
|
-
- [DECISION] `
|
|
27
|
-
- [DECISION] `
|
|
29
|
+
- [DECISION] `npm --workspace @godpowers/mcp test` passed before the latest `main` merge.
|
|
30
|
+
- [DECISION] `npm --workspace @godpowers/mcp run pack:check` passed before the latest `main` merge.
|
|
28
31
|
- [DECISION] `npm run test:e2e` passed before the latest `main` merge.
|
|
29
32
|
- [DECISION] `node scripts/test-runtime-verification.js` passed before the latest `main` merge.
|
|
30
33
|
- [DECISION] `node scripts/test-agent-browser.js` passed before the latest `main` merge.
|
|
31
|
-
- [DECISION] `
|
|
32
|
-
- [DECISION]
|
|
33
|
-
- [DECISION] Post-merge 2.
|
|
34
|
-
- [DECISION] Post-merge 2.
|
|
35
|
-
- [DECISION] Post-merge 2.
|
|
36
|
-
- [DECISION] Post-merge 2.
|
|
37
|
-
- [DECISION] Post-merge 2.
|
|
38
|
-
- [DECISION] Post-merge 2.
|
|
39
|
-
- [DECISION] Post-merge 2.
|
|
40
|
-
- [DECISION] Post-merge 2.
|
|
34
|
+
- [DECISION] `npm run release:check` passed before the latest `main` merge with `coverage:lib` at 92.85 percent line coverage, `npm audit --omit=dev` reporting 0 vulnerabilities, public surface docs matching version 2.6.0, root package contents verified at 535 files, and MCP package contents verified at 8 files.
|
|
35
|
+
- [DECISION] Post-merge 2.6.0 `npm --workspace @godpowers/mcp test` passed.
|
|
36
|
+
- [DECISION] Post-merge 2.6.0 `npm --workspace @godpowers/mcp run pack:check` passed.
|
|
37
|
+
- [DECISION] Post-merge 2.6.0 `node scripts/test-gate.js` passed.
|
|
38
|
+
- [DECISION] Post-merge 2.6.0 `node scripts/test-install-smoke.js` passed.
|
|
39
|
+
- [DECISION] Post-merge 2.6.0 `node scripts/static-check.js` passed.
|
|
40
|
+
- [DECISION] Post-merge 2.6.0 `npm run test:e2e` passed.
|
|
41
|
+
- [DECISION] Post-merge 2.6.0 `node scripts/test-runtime-verification.js` passed.
|
|
42
|
+
- [DECISION] Post-merge 2.6.0 `node scripts/test-agent-browser.js` passed.
|
|
43
|
+
- [DECISION] Post-merge 2.6.0 `npm run release:check` passed with `coverage:lib` at 92.88 percent line coverage, `npm audit --omit=dev` reporting 0 vulnerabilities, public surface docs matching version 2.6.0, root package contents verified at 535 files, and MCP package contents verified at 8 files.
|
|
41
44
|
|
|
42
45
|
## Upgrade
|
|
43
46
|
|
|
44
|
-
- [DECISION] Use `npm install -g godpowers@2.
|
|
45
|
-
- [DECISION]
|
|
47
|
+
- [DECISION] Use `npm install -g godpowers@2.6.0` or `npx godpowers@2.6.0` after the package is published.
|
|
48
|
+
- [DECISION] Use optional MCP package install `npm install -g godpowers @godpowers/mcp` when the host can register MCP servers.
|
|
49
|
+
- [DECISION] Re-run `/god-context` in each project to refresh installed runtime metadata.
|
|
46
50
|
- [DECISION] Existing `.godpowers/` state remains compatible.
|
|
47
51
|
|
|
48
52
|
## Notes
|
|
49
53
|
|
|
50
|
-
- [DECISION] The npm `godpowers@2.5.
|
|
51
|
-
- [DECISION]
|
|
54
|
+
- [DECISION] The npm `godpowers@2.5.2` package is published with provenance.
|
|
55
|
+
- [DECISION] GitHub release `v2.5.2` was created at `https://github.com/aihxp/godpowers/releases/tag/v2.5.2`.
|
|
56
|
+
- [DECISION] The 2.5.2 release-status closeout confirmed GitHub workflow `27289417888`, npm `latest` version 2.5.2, published-install verification, `npm run lint`, and `npm run release:check`.
|
|
57
|
+
- [DECISION] GitHub release `v2.6.0` should be created only after the release gate passes on the merged branch.
|
|
58
|
+
- [DECISION] The tag should match the npm package version.
|
|
59
|
+
- [DECISION] The companion package should publish as `@godpowers/mcp@2.6.0` after the release gate passes.
|
|
60
|
+
- [DECISION] The `v2.6.0` tag is not pushed yet because the current tag workflow publishes only the root `godpowers` package and does not publish `@godpowers/mcp`.
|
package/bin/install.js
CHANGED
|
@@ -52,6 +52,7 @@ function showHelp() {
|
|
|
52
52
|
log(' status Show the Godpowers Dashboard for a project');
|
|
53
53
|
log(' next Show the dashboard and recommended next command');
|
|
54
54
|
log(' gate Check a tier artifact gate');
|
|
55
|
+
log(' mcp-info Show read-only MCP companion setup instructions');
|
|
55
56
|
log(' quick-proof Show a runnable proof from the shipped fixture');
|
|
56
57
|
log(' automation-status Show host automation provider support');
|
|
57
58
|
log(' automation-setup Show an opt-in automation setup plan');
|
|
@@ -100,6 +101,7 @@ function showHelp() {
|
|
|
100
101
|
log(' npx godpowers status --project=.');
|
|
101
102
|
log(' npx godpowers next --project=.');
|
|
102
103
|
log(' npx godpowers gate --tier=prd --project=.');
|
|
104
|
+
log(' npx godpowers mcp-info --project=.');
|
|
103
105
|
log(' npx godpowers quick-proof --project=.');
|
|
104
106
|
log(' npx godpowers automation-status --project=.');
|
|
105
107
|
log(' npx godpowers automation-setup --project=.');
|
|
@@ -211,6 +213,7 @@ module.exports = {
|
|
|
211
213
|
runDashboardCommand: cliDispatch.runDashboardCommand,
|
|
212
214
|
runDogfoodCommand: cliDispatch.runDogfoodCommand,
|
|
213
215
|
runQuickProofCommand: cliDispatch.runQuickProofCommand,
|
|
216
|
+
runMcpInfoCommand: cliDispatch.runMcpInfoCommand,
|
|
214
217
|
runExtensionScaffoldCommand: cliDispatch.runExtensionScaffoldCommand,
|
|
215
218
|
runGateCommand: cliDispatch.runGateCommand,
|
|
216
219
|
applyDefaultRuntimeSelection,
|
package/lib/cli-dispatch.js
CHANGED
|
@@ -74,6 +74,16 @@ function runQuickProofCommand(opts) {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
function runMcpInfoCommand(opts) {
|
|
78
|
+
const mcpInfo = require('./mcp-info');
|
|
79
|
+
const result = mcpInfo.info(opts.project);
|
|
80
|
+
if (opts.json) {
|
|
81
|
+
console.log(JSON.stringify(result, null, 2));
|
|
82
|
+
} else {
|
|
83
|
+
console.log(mcpInfo.render(result));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
77
87
|
function runExtensionScaffoldCommand(opts) {
|
|
78
88
|
const authoring = require('./extension-authoring');
|
|
79
89
|
if (!opts.extensionName) {
|
|
@@ -134,6 +144,7 @@ const COMMAND_RUNNERS = {
|
|
|
134
144
|
status: runDashboardCommand,
|
|
135
145
|
next: runDashboardCommand,
|
|
136
146
|
'quick-proof': runQuickProofCommand,
|
|
147
|
+
'mcp-info': runMcpInfoCommand,
|
|
137
148
|
'automation-status': runAutomationCommand,
|
|
138
149
|
'automation-setup': runAutomationCommand,
|
|
139
150
|
dogfood: runDogfoodCommand,
|
|
@@ -157,6 +168,7 @@ module.exports = {
|
|
|
157
168
|
runDashboardCommand,
|
|
158
169
|
runDogfoodCommand,
|
|
159
170
|
runQuickProofCommand,
|
|
171
|
+
runMcpInfoCommand,
|
|
160
172
|
runExtensionScaffoldCommand,
|
|
161
173
|
runGateCommand
|
|
162
174
|
};
|
package/lib/host-capabilities.js
CHANGED
|
@@ -48,6 +48,48 @@ function installedAgentSurfaces(homeDir) {
|
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
function detectMcpAvailability(projectRoot, opts = {}) {
|
|
52
|
+
if (opts.mcp) return opts.mcp;
|
|
53
|
+
if (Object.prototype.hasOwnProperty.call(opts, 'mcpAvailable')) {
|
|
54
|
+
return {
|
|
55
|
+
available: Boolean(opts.mcpAvailable),
|
|
56
|
+
source: opts.mcpAvailable ? (opts.mcpSource || 'override') : 'override'
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const env = opts.env || process.env;
|
|
61
|
+
if (env.GODPOWERS_MCP === '1' || env.GODPOWERS_MCP === 'true') {
|
|
62
|
+
return { available: true, source: 'environment' };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const root = projectRoot || process.cwd();
|
|
66
|
+
if (exists(path.join(root, 'packages', 'mcp', 'package.json'))) {
|
|
67
|
+
return { available: true, source: 'workspace package' };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
require.resolve('@godpowers/mcp/package.json', { paths: [root, __dirname] });
|
|
72
|
+
return { available: true, source: 'installed package' };
|
|
73
|
+
} catch (error) {
|
|
74
|
+
// Continue to host registration detection.
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const homeDir = opts.homeDir || os.homedir();
|
|
78
|
+
const codexConfig = path.join(homeDir, '.codex', 'config.toml');
|
|
79
|
+
if (exists(codexConfig)) {
|
|
80
|
+
try {
|
|
81
|
+
const text = fs.readFileSync(codexConfig, 'utf8');
|
|
82
|
+
if (/\[mcp_servers\.godpowers\]/.test(text)) {
|
|
83
|
+
return { available: true, source: 'codex registration' };
|
|
84
|
+
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
return { available: false, source: 'codex registration unreadable' };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return { available: false, source: 'not configured' };
|
|
91
|
+
}
|
|
92
|
+
|
|
51
93
|
function detect(projectRoot, opts = {}) {
|
|
52
94
|
const env = opts.env || process.env;
|
|
53
95
|
const homeDir = opts.homeDir || os.homedir();
|
|
@@ -62,6 +104,7 @@ function detect(projectRoot, opts = {}) {
|
|
|
62
104
|
const extensionAuthoring = exists(path.join(root, 'lib', 'extension-authoring.js'))
|
|
63
105
|
&& exists(path.join(root, 'schema', 'extension-manifest.v1.json'));
|
|
64
106
|
const suiteReleaseDryRun = exists(path.join(root, 'lib', 'suite-state.js'));
|
|
107
|
+
const mcp = detectMcpAvailability(root, opts);
|
|
65
108
|
|
|
66
109
|
const gaps = [];
|
|
67
110
|
if (!shell) gaps.push('shell unavailable');
|
|
@@ -86,6 +129,7 @@ function detect(projectRoot, opts = {}) {
|
|
|
86
129
|
npm,
|
|
87
130
|
gh,
|
|
88
131
|
agentSpawn,
|
|
132
|
+
mcp,
|
|
89
133
|
codeIntelligence: codeIntel,
|
|
90
134
|
extensionAuthoring,
|
|
91
135
|
suiteReleaseDryRun
|
|
@@ -97,9 +141,13 @@ function detect(projectRoot, opts = {}) {
|
|
|
97
141
|
|
|
98
142
|
function summary(report) {
|
|
99
143
|
if (!report) return 'unknown';
|
|
100
|
-
|
|
144
|
+
const mcp = report.guarantees && report.guarantees.mcp;
|
|
145
|
+
const mcpText = mcp && mcp.available
|
|
146
|
+
? `; MCP available via ${mcp.source}`
|
|
147
|
+
: '; MCP not configured';
|
|
148
|
+
if (report.level === 'full') return `full on ${report.host}${mcpText}`;
|
|
101
149
|
const gap = report.gaps && report.gaps.length > 0 ? `, ${report.gaps[0]}` : '';
|
|
102
|
-
return `${report.level} on ${report.host}${gap}`;
|
|
150
|
+
return `${report.level} on ${report.host}${gap}${mcpText}`;
|
|
103
151
|
}
|
|
104
152
|
|
|
105
153
|
function render(report) {
|
|
@@ -112,6 +160,7 @@ function render(report) {
|
|
|
112
160
|
lines.push(` Git: ${report.guarantees.git || 'not detected'}`);
|
|
113
161
|
lines.push(` npm: ${report.guarantees.npm || 'not detected'}`);
|
|
114
162
|
lines.push(` GitHub CLI: ${report.guarantees.gh || 'not detected'}`);
|
|
163
|
+
lines.push(` MCP: ${report.guarantees.mcp.available ? `available via ${report.guarantees.mcp.source}` : 'not configured'}`);
|
|
115
164
|
lines.push(` Code intelligence: ${codeIntelligence.summary(report.guarantees.codeIntelligence)}`);
|
|
116
165
|
lines.push(` Gaps: ${report.gaps.length > 0 ? report.gaps.join('; ') : 'none'}`);
|
|
117
166
|
return lines.join('\n');
|
|
@@ -124,6 +173,7 @@ module.exports = {
|
|
|
124
173
|
_private: {
|
|
125
174
|
commandVersion,
|
|
126
175
|
hostName,
|
|
127
|
-
installedAgentSurfaces
|
|
176
|
+
installedAgentSurfaces,
|
|
177
|
+
detectMcpAvailability
|
|
128
178
|
}
|
|
129
179
|
};
|
package/lib/installer-args.js
CHANGED
package/lib/mcp-info.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
|
|
3
|
+
const identity = require('./package-identity');
|
|
4
|
+
|
|
5
|
+
const MCP_PACKAGE = '@godpowers/mcp';
|
|
6
|
+
|
|
7
|
+
function projectPath(projectRoot) {
|
|
8
|
+
return path.resolve(projectRoot || process.cwd());
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function serverCommand(projectRoot, version = identity.PACKAGE_VERSION) {
|
|
12
|
+
return {
|
|
13
|
+
command: 'npx',
|
|
14
|
+
args: [
|
|
15
|
+
'-y',
|
|
16
|
+
'-p',
|
|
17
|
+
`${identity.PACKAGE_NAME}@${version}`,
|
|
18
|
+
'-p',
|
|
19
|
+
`${MCP_PACKAGE}@${version}`,
|
|
20
|
+
'godpowers-mcp',
|
|
21
|
+
'serve',
|
|
22
|
+
'--project',
|
|
23
|
+
projectPath(projectRoot)
|
|
24
|
+
]
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function setupCommand(projectRoot, version = identity.PACKAGE_VERSION) {
|
|
29
|
+
return {
|
|
30
|
+
command: 'npx',
|
|
31
|
+
args: [
|
|
32
|
+
'-y',
|
|
33
|
+
'-p',
|
|
34
|
+
`${identity.PACKAGE_NAME}@${version}`,
|
|
35
|
+
'-p',
|
|
36
|
+
`${MCP_PACKAGE}@${version}`,
|
|
37
|
+
'godpowers-mcp',
|
|
38
|
+
'setup',
|
|
39
|
+
'--host=codex',
|
|
40
|
+
'--project',
|
|
41
|
+
projectPath(projectRoot),
|
|
42
|
+
'--write'
|
|
43
|
+
]
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function info(projectRoot, version = identity.PACKAGE_VERSION) {
|
|
48
|
+
const project = projectPath(projectRoot);
|
|
49
|
+
return {
|
|
50
|
+
package: MCP_PACKAGE,
|
|
51
|
+
version,
|
|
52
|
+
project,
|
|
53
|
+
boundary: 'The MCP SDK dependency is isolated in @godpowers/mcp. The main godpowers package has no production dependencies.',
|
|
54
|
+
tools: ['status', 'next', 'gate_check', 'lint_artifact', 'trace_requirement'],
|
|
55
|
+
server: serverCommand(project, version),
|
|
56
|
+
setup: setupCommand(project, version),
|
|
57
|
+
automaticRegistration: false
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function renderCommand(command) {
|
|
62
|
+
return `${command.command} ${command.args.join(' ')}`;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function render(result) {
|
|
66
|
+
return [
|
|
67
|
+
'Godpowers MCP',
|
|
68
|
+
'',
|
|
69
|
+
`Package: ${result.package}@${result.version}`,
|
|
70
|
+
`Project: ${result.project}`,
|
|
71
|
+
`Boundary: ${result.boundary}`,
|
|
72
|
+
'',
|
|
73
|
+
'Tools:',
|
|
74
|
+
` ${result.tools.join(', ')}`,
|
|
75
|
+
'',
|
|
76
|
+
'Run server:',
|
|
77
|
+
` ${renderCommand(result.server)}`,
|
|
78
|
+
'',
|
|
79
|
+
'Opt-in Codex setup:',
|
|
80
|
+
` ${renderCommand(result.setup)}`,
|
|
81
|
+
'',
|
|
82
|
+
'Automatic registration: disabled'
|
|
83
|
+
].join('\n');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
module.exports = {
|
|
87
|
+
MCP_PACKAGE,
|
|
88
|
+
serverCommand,
|
|
89
|
+
setupCommand,
|
|
90
|
+
info,
|
|
91
|
+
render,
|
|
92
|
+
renderCommand
|
|
93
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "godpowers",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"description": "AI-powered development system: 112 slash commands and 40 specialist agents that take a project from raw idea to hardened production. Runs inside Claude Code, Codex, Cursor, Windsurf, Gemini, and 10+ other AI coding tools.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"godpowers": "./bin/install.js"
|
|
@@ -22,13 +22,18 @@
|
|
|
22
22
|
"test:linter": "node scripts/test-artifact-linter.js",
|
|
23
23
|
"test:diff": "node scripts/test-artifact-diff.js",
|
|
24
24
|
"test:e2e": "node tests/integration/full-arc.test.js",
|
|
25
|
+
"test:mcp": "npm --workspace @godpowers/mcp test",
|
|
25
26
|
"coverage": "c8 --reporter=text --reporter=lcov node scripts/run-tests.js",
|
|
26
27
|
"coverage:lib": "c8 --include=lib/**/*.js --check-coverage --lines 90 --reporter=text node scripts/run-tests.js",
|
|
27
28
|
"test:audit": "npm audit --omit=dev && git diff --check && npm run test:surface",
|
|
28
29
|
"pack:check": "node scripts/check-package-contents.js",
|
|
29
|
-
"
|
|
30
|
+
"pack:mcp:check": "npm --workspace @godpowers/mcp run pack:check",
|
|
31
|
+
"release:check": "npm run coverage:lib && npm run test:audit && npm run pack:check && npm run pack:mcp:check",
|
|
30
32
|
"lint": "node scripts/static-check.js"
|
|
31
33
|
},
|
|
34
|
+
"workspaces": [
|
|
35
|
+
"packages/mcp"
|
|
36
|
+
],
|
|
32
37
|
"keywords": [
|
|
33
38
|
"ai",
|
|
34
39
|
"ai-agent",
|
package/skills/god-next.md
CHANGED
|
@@ -22,7 +22,8 @@ routing definitions, recipes, command families, and user intent.
|
|
|
22
22
|
3. Read routing definitions from `<runtimeRoot>/routing/*.yaml` and recipes from `<runtimeRoot>/routing/recipes/*.yaml`.
|
|
23
23
|
4. Load `<runtimeRoot>/lib/command-families.js` before resolving broad intent.
|
|
24
24
|
5. Load `<runtimeRoot>/lib/dashboard.js` and render the shared dashboard before route-specific detail.
|
|
25
|
-
6.
|
|
25
|
+
6. Prefer the MCP `next` tool when it is available, and fall back to the CLI or runtime module when it is not.
|
|
26
|
+
7. If no dashboard module is available, say `Dashboard engine: unavailable, manual scan used`.
|
|
26
27
|
|
|
27
28
|
## Required references
|
|
28
29
|
|
package/skills/god-status.md
CHANGED
|
@@ -31,10 +31,11 @@ proactive checks, blockers, planning visibility, and the next action first.
|
|
|
31
31
|
1. Check whether `.godpowers/PROGRESS.md` or `.godpowers/state.json` exists. If neither exists, report that no Godpowers project was found and suggest `/god-init`.
|
|
32
32
|
2. Resolve the runtime root and load `<runtimeRoot>/lib/dashboard.js`.
|
|
33
33
|
3. Call `dashboard.compute(projectRoot)` and render with `dashboard.render(result)`.
|
|
34
|
-
4.
|
|
35
|
-
5.
|
|
36
|
-
6.
|
|
37
|
-
7.
|
|
34
|
+
4. Prefer the MCP `status` tool when it is available, and fall back to the CLI or runtime module when it is not.
|
|
35
|
+
5. Use PROGRESS.md only as fallback or legacy explanation when state.json is missing.
|
|
36
|
+
6. Scan canonical artifact paths for PRD, design, architecture, roadmap, stack, repo, build, deploy, observe, launch, harden, sync, checkpoint, and requirements evidence.
|
|
37
|
+
7. Compare disk state to recorded state and flag phantom resume or untracked work.
|
|
38
|
+
8. Offer `/god-repair` when recorded state and disk evidence conflict.
|
|
38
39
|
|
|
39
40
|
## Required reference
|
|
40
41
|
|