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 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
  [![CI](https://github.com/aihxp/godpowers/actions/workflows/ci.yml/badge.svg)](https://github.com/aihxp/godpowers/actions/workflows/ci.yml)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
- [![Version](https://img.shields.io/badge/version-2.5.2-blue)](CHANGELOG.md)
5
+ [![Version](https://img.shields.io/badge/version-2.6.0-blue)](CHANGELOG.md)
6
6
  [![npm](https://img.shields.io/npm/v/godpowers.svg)](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.5.2 keeps the 2.5.1 Codex host-run proof studies and patches two
34
- Phase 2 blocker defects: installed runtime gate command access and build-gate
35
- false passes when verification evidence is red.
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. YAML parsing is intentionally limited to
291
- the documented Godpowers subset used by intent, routing, workflow, and
292
- extension files, with parser coverage in `scripts/test-yaml-parser.js`.
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.5.2 Release
1
+ # Godpowers 2.6.0 Release
2
2
 
3
- > Status: Ready for protected merge
3
+ > Status: Release candidate
4
4
  > Date: 2026-06-10
5
5
 
6
- [DECISION] Godpowers 2.5.2 is a Phase 2 blocker patch after the 2.5.1 host-proof docs release.
7
- [DECISION] This release fixes the installed-runtime gate command gap and build-gate false-pass gap captured during Phase 2 proof work.
8
- [DECISION] This release does not change the 2.5.1 host-proof case-study claims.
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] 8 installer CLI helpers.
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] `godpowers-runtime` now includes `bin/` next to `package.json`, so host workflows can run `npm exec --package <runtime> -- godpowers gate`.
21
- - [DECISION] Build gates now fail closed when `.godpowers/build/STATE.md` records any failed verification command.
22
- - [DECISION] Slot A, Slot B, and Slot C evidence remains the repository state shipped in 2.5.1.
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] `node scripts/test-gate.js` passed before the latest `main` merge.
27
- - [DECISION] `node scripts/test-install-smoke.js` passed before the latest `main` merge.
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] `node scripts/static-check.js` passed before the latest `main` merge.
32
- - [DECISION] `npm run release:check` passed before the latest `main` merge with `coverage:lib` at 92.9 percent line coverage, `npm audit --omit=dev` reporting 0 vulnerabilities, public surface docs matching version 2.5.1, and package contents verified at 534 files.
33
- - [DECISION] Post-merge 2.5.2 `npm run test:surface` passed.
34
- - [DECISION] Post-merge 2.5.2 `node scripts/test-gate.js` passed.
35
- - [DECISION] Post-merge 2.5.2 `node scripts/test-install-smoke.js` passed.
36
- - [DECISION] Post-merge 2.5.2 `node scripts/static-check.js` passed.
37
- - [DECISION] Post-merge 2.5.2 `npm run test:e2e` passed.
38
- - [DECISION] Post-merge 2.5.2 `node scripts/test-runtime-verification.js` passed.
39
- - [DECISION] Post-merge 2.5.2 `node scripts/test-agent-browser.js` passed.
40
- - [DECISION] Post-merge 2.5.2 `npm run release:check` passed with `coverage:lib` at 92.9 percent line coverage, `npm audit --omit=dev` reporting 0 vulnerabilities, public surface docs matching version 2.5.2, and package contents verified at 534 files.
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.5.2` or `npx godpowers@2.5.2` after the package is published.
45
- - [DECISION] Reinstall Godpowers in host runtimes to refresh the installed runtime bundle.
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.1` package is already published.
51
- - [DECISION] Publishing 2.5.2 remains pending until protected merge, tag, and npm provenance publish complete.
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,
@@ -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
  };
@@ -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
- if (report.level === 'full') return `full on ${report.host}`;
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
  };
@@ -5,6 +5,7 @@ const COMMANDS = new Set([
5
5
  'status',
6
6
  'next',
7
7
  'quick-proof',
8
+ 'mcp-info',
8
9
  'automation-status',
9
10
  'automation-setup',
10
11
  'dogfood',
@@ -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.5.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
- "release:check": "npm run coverage:lib && npm run test:audit && npm run pack:check",
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",
@@ -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. If no dashboard module is available, say `Dashboard engine: unavailable, manual scan used`.
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
 
@@ -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. Use PROGRESS.md only as fallback or legacy explanation when state.json is missing.
35
- 5. Scan canonical artifact paths for PRD, design, architecture, roadmap, stack, repo, build, deploy, observe, launch, harden, sync, checkpoint, and requirements evidence.
36
- 6. Compare disk state to recorded state and flag phantom resume or untracked work.
37
- 7. Offer `/god-repair` when recorded state and disk evidence conflict.
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