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.
- package/CHANGELOG.md +35 -0
- package/README.md +25 -9
- package/RELEASE.md +29 -18
- package/bin/install.js +81 -1
- package/fixtures/dogfood/extension-authoring/manifest.json +13 -0
- package/fixtures/dogfood/half-migrated-gsd/.planning/PROJECT.md +5 -0
- package/fixtures/dogfood/half-migrated-gsd/.planning/REQUIREMENTS.md +5 -0
- package/fixtures/dogfood/half-migrated-gsd/.planning/ROADMAP.md +5 -0
- package/fixtures/dogfood/half-migrated-gsd/manifest.json +16 -0
- package/fixtures/dogfood/host-degraded/manifest.json +5 -0
- package/fixtures/dogfood/host-full/home/.codex/agents/god-orchestrator.toml +2 -0
- package/fixtures/dogfood/host-full/manifest.json +5 -0
- package/fixtures/dogfood/suite-release-dry-run/.godpowers/suite-config.yaml +9 -0
- package/fixtures/dogfood/suite-release-dry-run/manifest.json +7 -0
- package/fixtures/dogfood/suite-release-dry-run/repo-a/package.json +4 -0
- package/fixtures/dogfood/suite-release-dry-run/repo-b/package.json +7 -0
- package/lib/README.md +3 -0
- package/lib/dashboard.js +30 -1
- package/lib/dogfood-runner.js +193 -0
- package/lib/extension-authoring.js +154 -0
- package/lib/feature-awareness.js +18 -0
- package/lib/host-capabilities.js +125 -0
- package/lib/release-surface-sync.js +6 -0
- package/lib/repo-surface-sync.js +58 -0
- package/lib/suite-state.js +90 -1
- package/package.json +4 -3
- package/routing/god-dogfood.yaml +35 -0
- package/skills/god-doctor.md +1 -1
- package/skills/god-dogfood.md +63 -0
- package/skills/god-version.md +1 -1
package/lib/suite-state.js
CHANGED
|
@@ -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.
|
|
4
|
-
"description": "AI-powered development system:
|
|
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
|
package/skills/god-doctor.md
CHANGED
|
@@ -48,7 +48,7 @@ Plain-text report grouped by severity:
|
|
|
48
48
|
GODPOWERS DOCTOR
|
|
49
49
|
|
|
50
50
|
Install: claude (~/.claude/)
|
|
51
|
-
[OK]
|
|
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
|
+
```
|
package/skills/god-version.md
CHANGED
|
@@ -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:
|
|
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
|