godpowers 1.6.21 → 1.6.22

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.
@@ -143,6 +143,94 @@ function refreshFromRepos(hubPath) {
143
143
  return data;
144
144
  }
145
145
 
146
+ function readPackageName(repoPath) {
147
+ const file = path.join(repoPath, 'package.json');
148
+ if (!fs.existsSync(file)) return path.basename(repoPath);
149
+ try {
150
+ const pkg = JSON.parse(fs.readFileSync(file, 'utf8'));
151
+ return pkg.name || path.basename(repoPath);
152
+ } catch (err) {
153
+ return path.basename(repoPath);
154
+ }
155
+ }
156
+
157
+ function readPackageDeps(repoPath) {
158
+ const file = path.join(repoPath, 'package.json');
159
+ if (!fs.existsSync(file)) return {};
160
+ try {
161
+ const pkg = JSON.parse(fs.readFileSync(file, 'utf8'));
162
+ return {
163
+ ...(pkg.dependencies || {}),
164
+ ...(pkg.devDependencies || {}),
165
+ ...(pkg.peerDependencies || {}),
166
+ ...(pkg.optionalDependencies || {})
167
+ };
168
+ } catch (err) {
169
+ return {};
170
+ }
171
+ }
172
+
173
+ function siblingRecords(hubPath) {
174
+ const config = detector.readSuiteConfig(hubPath);
175
+ if (!config) return [];
176
+ return (config.siblings || []).map((sib) => {
177
+ if (typeof sib === 'string') {
178
+ const repoPath = path.resolve(hubPath, sib);
179
+ return { name: sib, path: repoPath, packageName: readPackageName(repoPath) };
180
+ }
181
+ const repoPath = path.resolve(hubPath, sib.path || sib.name);
182
+ return { name: sib.name, path: repoPath, packageName: readPackageName(repoPath) };
183
+ });
184
+ }
185
+
186
+ function planRelease(hubPath, repoName, version, opts = {}) {
187
+ const siblings = siblingRecords(hubPath);
188
+ const target = siblings.find((repo) => repo.name === repoName || repo.packageName === repoName);
189
+ if (!target) {
190
+ return {
191
+ mode: 'dry-run',
192
+ status: 'blocked',
193
+ repo: repoName,
194
+ version,
195
+ impacted: [],
196
+ blockers: [`${repoName} is not registered in suite-config.yaml`],
197
+ writes: []
198
+ };
199
+ }
200
+
201
+ const impacted = [];
202
+ for (const repo of siblings) {
203
+ if (repo.name === target.name) continue;
204
+ const deps = readPackageDeps(repo.path);
205
+ if (Object.prototype.hasOwnProperty.call(deps, target.packageName)
206
+ || Object.prototype.hasOwnProperty.call(deps, target.name)) {
207
+ impacted.push({
208
+ name: repo.name,
209
+ packageName: repo.packageName,
210
+ path: repo.path,
211
+ dependsOn: target.packageName,
212
+ currentRange: deps[target.packageName] || deps[target.name]
213
+ });
214
+ }
215
+ }
216
+
217
+ return {
218
+ mode: opts.apply ? 'apply-plan' : 'dry-run',
219
+ status: 'ready',
220
+ repo: target.name,
221
+ packageName: target.packageName,
222
+ version,
223
+ impacted,
224
+ blockers: [],
225
+ writes: [
226
+ { path: path.join(target.path, 'package.json'), action: 'bump-version' },
227
+ ...impacted.map((repo) => ({ path: path.join(repo.path, 'package.json'), action: 'update-dependency-range' })),
228
+ { path: path.join(hubPath, '.godpowers', 'suite-config.yaml'), action: 'update-version-table' },
229
+ { path: suiteSyncLogPath(hubPath), action: 'append-release-plan' }
230
+ ]
231
+ };
232
+ }
233
+
146
234
  /**
147
235
  * Write a human-readable STATE.md from the aggregate.
148
236
  */
@@ -216,5 +304,6 @@ module.exports = {
216
304
  writeSuiteState,
217
305
  refreshFromRepos,
218
306
  appendSyncLog,
219
- format
307
+ format,
308
+ planRelease
220
309
  };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "godpowers",
3
- "version": "1.6.21",
4
- "description": "AI-powered development system: 109 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.",
3
+ "version": "1.6.22",
4
+ "description": "AI-powered development system: 110 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"
7
7
  },
8
8
  "scripts": {
9
- "test": "node scripts/validate-skills.js && node scripts/test-doc-surface-counts.js && bash scripts/smoke.sh && node scripts/test-runtime.js && node scripts/test-router.js && node scripts/test-recipes.js && node scripts/test-context-writer.js && node scripts/test-pillars.js && node scripts/test-artifact-linter.js && node scripts/test-artifact-diff.js && node scripts/test-design-foundation.js && node scripts/test-linkage.js && node scripts/test-impact.js && node scripts/test-reverse-sync.js && node scripts/test-planning-systems.js && node scripts/test-feature-awareness.js && node scripts/test-repo-doc-sync.js && node scripts/test-repo-surface-sync.js && node scripts/test-automation-surface-sync.js && node scripts/test-integration.js && node scripts/test-cross-artifact.js && node scripts/test-awesome-design.js && node scripts/test-skillui-bridge.js && node scripts/test-runtime-verification.js && node scripts/test-agent-browser.js && node scripts/test-mode-d.js && node scripts/test-runtime-heuristics.js && node scripts/test-agent-validator.js && node scripts/test-story-validator.js && node scripts/test-state.js && node scripts/test-dashboard.js && node scripts/test-automation-providers.js && node scripts/test-intent.js && node scripts/test-events.js && node scripts/test-golden-artifacts.js && node scripts/test-install-smoke.js && node scripts/test-checkpoint.js && node scripts/test-extensions.js && node scripts/test-event-reader.js && node scripts/test-state-lock.js && node scripts/test-cost-saver.js && node scripts/test-budget-onoff.js && node scripts/test-workflow-runner.js && npm run test:e2e && node scripts/test-otel-exporter.js && node scripts/test-extensions-publish.js",
9
+ "test": "node scripts/validate-skills.js && node scripts/test-doc-surface-counts.js && bash scripts/smoke.sh && node scripts/test-runtime.js && node scripts/test-router.js && node scripts/test-recipes.js && node scripts/test-context-writer.js && node scripts/test-pillars.js && node scripts/test-artifact-linter.js && node scripts/test-artifact-diff.js && node scripts/test-design-foundation.js && node scripts/test-linkage.js && node scripts/test-impact.js && node scripts/test-reverse-sync.js && node scripts/test-planning-systems.js && node scripts/test-feature-awareness.js && node scripts/test-repo-doc-sync.js && node scripts/test-repo-surface-sync.js && node scripts/test-automation-surface-sync.js && node scripts/test-host-capabilities.js && node scripts/test-extension-authoring.js && node scripts/test-dogfood-runner.js && node scripts/test-integration.js && node scripts/test-cross-artifact.js && node scripts/test-awesome-design.js && node scripts/test-skillui-bridge.js && node scripts/test-runtime-verification.js && node scripts/test-agent-browser.js && node scripts/test-mode-d.js && node scripts/test-runtime-heuristics.js && node scripts/test-agent-validator.js && node scripts/test-story-validator.js && node scripts/test-state.js && node scripts/test-dashboard.js && node scripts/test-automation-providers.js && node scripts/test-intent.js && node scripts/test-events.js && node scripts/test-golden-artifacts.js && node scripts/test-install-smoke.js && node scripts/test-checkpoint.js && node scripts/test-extensions.js && node scripts/test-event-reader.js && node scripts/test-state-lock.js && node scripts/test-cost-saver.js && node scripts/test-budget-onoff.js && node scripts/test-workflow-runner.js && npm run test:e2e && node scripts/test-otel-exporter.js && node scripts/test-extensions-publish.js",
10
10
  "prepublishOnly": "npm test",
11
11
  "validate-skills": "node scripts/validate-skills.js",
12
12
  "test:surface": "node scripts/test-doc-surface-counts.js",
@@ -74,6 +74,7 @@
74
74
  "workflows/",
75
75
  "schema/",
76
76
  "lib/",
77
+ "fixtures/",
77
78
  "extensions/",
78
79
  "INSPIRATION.md",
79
80
  "RELEASE.md",
@@ -0,0 +1,35 @@
1
+ apiVersion: godpowers/v1
2
+ kind: CommandRouting
3
+ metadata:
4
+ command: /god-dogfood
5
+ description: Run messy-repo dogfood scenarios for release and autonomy readiness.
6
+ tier: 0
7
+
8
+ prerequisites:
9
+ required: []
10
+
11
+ execution:
12
+ spawns:
13
+ - built-in
14
+ secondary-spawns:
15
+ - god-greenfieldifier
16
+ - god-context-writer
17
+ - god-coordinator
18
+ context: current
19
+ writes: []
20
+
21
+ success-path:
22
+ next-recommended: /god-status
23
+
24
+ failure-path:
25
+ on-error: /god-repair
26
+ auto-spawn:
27
+ - god-greenfieldifier
28
+ - god-context-writer
29
+ - god-coordinator
30
+
31
+ endoff:
32
+ state-update: none
33
+ events:
34
+ - agent.start
35
+ - agent.end
@@ -48,7 +48,7 @@ Plain-text report grouped by severity:
48
48
  GODPOWERS DOCTOR
49
49
 
50
50
  Install: claude (~/.claude/)
51
- [OK] 109 skills installed
51
+ [OK] 110 skills installed
52
52
  [OK] 40 agents installed
53
53
  [OK] VERSION matches (1.6.6)
54
54
  [WARN] routing/god-doctor.yaml exists but skill file did not until now
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: god-dogfood
3
+ description: |
4
+ Run built-in messy-repo dogfood scenarios against Godpowers automation,
5
+ migration, host capability, extension authoring, and suite release surfaces.
6
+
7
+ Triggers on: "god dogfood", "/god-dogfood", "dogfood godpowers",
8
+ "test messy repos", "real-project dogfooding"
9
+ ---
10
+
11
+ # /god-dogfood
12
+
13
+ Run deterministic messy-repo scenarios before release or after automation changes.
14
+
15
+ ## When To Use
16
+
17
+ - [DECISION] Use `/god-dogfood` before a release when migration, host autonomy,
18
+ extension authoring, or Mode D suite release behavior changes.
19
+ - [DECISION] Use `/god-dogfood` when a project already contains GSD, BMAD, or
20
+ Superpowers context and you need confidence that Godpowers can import and
21
+ sync back without deleting prior-system files.
22
+ - [DECISION] Use `/god-dogfood` when host-spawn guarantees are unclear and the
23
+ dashboard reports degraded or unknown host capability.
24
+
25
+ ## Process
26
+
27
+ 1. Resolve the runtime root and load `lib/dogfood-runner.js`.
28
+ 2. Run `dogfood.runAll()` against `fixtures/dogfood/`.
29
+ 3. Report each scenario with pass or fail status.
30
+ 4. If any scenario fails, auto-invoke the matching specialist by visible card:
31
+ - `god-greenfieldifier` for planning-system import failures.
32
+ - `god-context-writer` for host capability or install surface failures.
33
+ - `god-coordinator` for extension authoring or suite release failures.
34
+ 5. Do not edit user projects while running fixture scenarios.
35
+ 6. End with the Godpowers Dashboard and make `/god-repair` the recommended
36
+ route when dogfood is red.
37
+
38
+ ## CLI Equivalent
39
+
40
+ ```bash
41
+ npx godpowers dogfood
42
+ npx godpowers dogfood --json
43
+ ```
44
+
45
+ ## Expected Coverage
46
+
47
+ - [DECISION] The dogfood suite includes a half-migrated GSD project.
48
+ - [DECISION] The dogfood suite includes degraded and full host capability
49
+ scenarios.
50
+ - [DECISION] The dogfood suite includes extension scaffold validation.
51
+ - [DECISION] The dogfood suite includes a Mode D suite release dry-run.
52
+
53
+ ## Auto-Invoke Card
54
+
55
+ ```text
56
+ Auto-invoked:
57
+ Trigger: /god-dogfood scenario failure
58
+ Agent: <god-greenfieldifier | god-context-writer | god-coordinator | none, local runtime only>
59
+ Local syncs:
60
+ + dogfood-runner: <pass, fail, or skipped reason>
61
+ Artifacts: fixture-only unless repair is explicitly requested
62
+ Log: none
63
+ ```
@@ -16,7 +16,7 @@ Print version and a short capability summary.
16
16
  ```
17
17
  Godpowers v1.6.19
18
18
  Install: /Users/.../.claude/ (matches package.json)
19
- Surface: 109 skills, 40 agents, 13 workflows, 40 recipes
19
+ Surface: 110 skills, 40 agents, 13 workflows, 40 recipes
20
20
  Schema: intent.v1, state.v1, events.v1, workflow.v1, routing.v1, recipe.v1
21
21
  External integrations available: impeccable, agent-browser (others lazy)
22
22
  Feature awareness: planning-system migration, source-system sync-back, context refresh, dashboard status labels, repo documentation sync, repo surface sync