godpowers 1.6.21 → 1.6.23
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/AGENTS.md +6 -0
- package/CHANGELOG.md +75 -0
- package/INSPIRATION.md +6 -0
- package/README.md +25 -9
- package/RELEASE.md +50 -58
- package/SKILL.md +24 -4
- package/agents/god-orchestrator.md +18 -3
- package/agents/god-reconciler.md +52 -5
- package/agents/god-updater.md +84 -2
- 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/hooks/pre-tool-use.sh +13 -1
- package/hooks/session-start.sh +12 -0
- package/lib/README.md +3 -0
- package/lib/dashboard.js +30 -1
- package/lib/dogfood-runner.js +193 -0
- package/lib/events.js +6 -0
- package/lib/extension-authoring.js +154 -0
- package/lib/feature-awareness.js +30 -0
- package/lib/have-nots-validator.js +2 -2
- 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/lib/workflow-runner.js +4 -0
- package/package.json +5 -4
- package/references/HAVE-NOTS.md +16 -0
- package/references/orchestration/MODE-DETECTION.md +36 -3
- package/references/orchestration/README.md +5 -2
- package/references/planning/ROADMAP-ANTIPATTERNS.md +1 -1
- package/references/shared/ORCHESTRATORS.md +42 -11
- package/references/shared/README.md +4 -4
- package/routing/god-dogfood.yaml +35 -0
- package/schema/events.v1.json +9 -0
- package/schema/intent.v1.yaml.json +5 -1
- package/schema/recipe.v1.json +2 -1
- package/schema/routing.v1.json +20 -0
- package/schema/state.v1.json +51 -0
- package/schema/workflow.v1.json +31 -2
- package/skills/god-doctor.md +1 -1
- package/skills/god-dogfood.md +63 -0
- package/skills/god-mode.md +4 -1
- package/skills/god-reconcile.md +13 -4
- package/skills/god-version.md +2 -2
- package/templates/DOCS-UPDATE-LOG.md +14 -0
- package/templates/IMPORTED-CONTEXT.md +2 -0
- package/templates/INITIAL-FINDINGS.md +5 -0
- package/templates/PROGRESS.md +8 -0
- package/workflows/audit-only.yaml +12 -0
- package/workflows/bluefield-arc.yaml +16 -1
- package/workflows/brownfield-arc.yaml +17 -1
- package/workflows/deps-audit.yaml +13 -0
- package/workflows/docs-arc.yaml +23 -0
- package/workflows/feature-arc.yaml +14 -0
- package/workflows/full-arc.yaml +19 -0
- package/workflows/hotfix-arc.yaml +14 -0
- package/workflows/hygiene.yaml +6 -0
- package/workflows/migration-arc.yaml +15 -0
- package/workflows/postmortem.yaml +13 -0
- package/workflows/refactor-arc.yaml +14 -0
- package/workflows/spike.yaml +11 -0
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/lib/workflow-runner.js
CHANGED
|
@@ -111,6 +111,7 @@ function plan(workflow, ctx = {}) {
|
|
|
111
111
|
review: job.review || null,
|
|
112
112
|
'on-pass': job['on-pass'] || null,
|
|
113
113
|
'on-fail': job['on-fail'] || null,
|
|
114
|
+
localHelpers: job['local-helpers'] || [],
|
|
114
115
|
with: job.with || null
|
|
115
116
|
});
|
|
116
117
|
}
|
|
@@ -191,6 +192,9 @@ function serializePlan(p) {
|
|
|
191
192
|
if (step.tier) lines.push(` tier: ${step.tier}`);
|
|
192
193
|
if (step.agent) lines.push(` agent: ${step.agent}`);
|
|
193
194
|
if (step.uses) lines.push(` uses: ${step.uses}`);
|
|
195
|
+
if (step.localHelpers && step.localHelpers.length) {
|
|
196
|
+
lines.push(` local-helpers: [${step.localHelpers.join(', ')}]`);
|
|
197
|
+
}
|
|
194
198
|
if (step.needs && step.needs.length) {
|
|
195
199
|
lines.push(` needs: [${step.needs.join(', ')}]`);
|
|
196
200
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "godpowers",
|
|
3
|
-
"version": "1.6.
|
|
4
|
-
"description": "AI-powered development system:
|
|
3
|
+
"version": "1.6.23",
|
|
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",
|
|
10
|
-
"prepublishOnly": "npm
|
|
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
|
+
"prepublishOnly": "npm run release:check",
|
|
11
11
|
"validate-skills": "node scripts/validate-skills.js",
|
|
12
12
|
"test:surface": "node scripts/test-doc-surface-counts.js",
|
|
13
13
|
"smoke": "bash scripts/smoke.sh",
|
|
@@ -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",
|
package/references/HAVE-NOTS.md
CHANGED
|
@@ -78,6 +78,22 @@ the Decisions Log. Fail.
|
|
|
78
78
|
### O-06 YOLO decisions silent
|
|
79
79
|
--yolo flag was used but no YOLO-DECISIONS log was emitted. Fail.
|
|
80
80
|
|
|
81
|
+
### O-07 Invisible auto-invoke
|
|
82
|
+
Automatic local helper or specialist work ran without reporting the trigger,
|
|
83
|
+
agent status, helper result, changed artifacts, and next route. Fail.
|
|
84
|
+
|
|
85
|
+
### O-08 Stale dashboard closeout
|
|
86
|
+
A command completed without a disk-derived dashboard, action brief, or
|
|
87
|
+
recommended next command. Fail.
|
|
88
|
+
|
|
89
|
+
### O-09 Sync-back ambiguity
|
|
90
|
+
Imported GSD, BMAD, or Superpowers context exists but the project does not say
|
|
91
|
+
whether managed sync-back is enabled, disabled, or not applicable. Fail.
|
|
92
|
+
|
|
93
|
+
### O-10 Host guarantees hidden
|
|
94
|
+
The workflow relies on shell, git, npm, release tooling, or fresh-context
|
|
95
|
+
agent spawning without reporting host guarantee level. Fail.
|
|
96
|
+
|
|
81
97
|
---
|
|
82
98
|
|
|
83
99
|
## Tier 1: Planning Have-Nots
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Mode Detection
|
|
2
2
|
|
|
3
|
-
> How god-orchestrator decides which mode (A/B/C/
|
|
3
|
+
> How god-orchestrator decides which mode (A/B/C/E) to use, and when Mode D
|
|
4
|
+
> suite coordination also applies.
|
|
4
5
|
|
|
5
6
|
## Mode A: Greenfield (default)
|
|
6
7
|
|
|
@@ -17,6 +18,8 @@
|
|
|
17
18
|
- Some `.godpowers/<tier>/<artifact>` files already exist
|
|
18
19
|
- OR existing codebase signals: package.json, Dockerfile, .github/workflows
|
|
19
20
|
- User describes an existing project they want to add Godpowers to
|
|
21
|
+
- GSD, BMAD, or Superpowers planning context is detected and should be imported
|
|
22
|
+
into Godpowers preparation artifacts
|
|
20
23
|
|
|
21
24
|
**Behavior**:
|
|
22
25
|
1. For each canonical artifact path: check existence on disk
|
|
@@ -30,6 +33,8 @@ Codebase signals (for inferring partial completion):
|
|
|
30
33
|
- `.github/workflows/` or `.gitlab-ci.yml` exists -> CI present
|
|
31
34
|
- `tests/` or `*.test.*` files exist -> Build tier in progress
|
|
32
35
|
- `Dockerfile` + deploy config -> Deploy tier may be done
|
|
36
|
+
- `.planning/`, `.gsd/`, `_bmad-output/`, `.bmad/`, or Superpowers specs ->
|
|
37
|
+
source-system import and managed sync-back may be needed
|
|
33
38
|
|
|
34
39
|
## Mode C: Audit
|
|
35
40
|
|
|
@@ -39,14 +44,34 @@ Codebase signals (for inferring partial completion):
|
|
|
39
44
|
|
|
40
45
|
**Behavior**: run god-auditor on all existing artifacts. Build nothing.
|
|
41
46
|
|
|
42
|
-
## Mode
|
|
47
|
+
## Mode E: Bluefield
|
|
48
|
+
|
|
49
|
+
**Signals**:
|
|
50
|
+
- User is starting new code inside an existing organization or platform.
|
|
51
|
+
- Parent or sibling directories contain org standards, shared packages,
|
|
52
|
+
deployment conventions, or platform contracts.
|
|
53
|
+
- User names shared constraints such as approved infrastructure, design system,
|
|
54
|
+
compliance baseline, or internal libraries.
|
|
55
|
+
|
|
56
|
+
**Behavior**:
|
|
57
|
+
1. Load org context with `/god-org-context`.
|
|
58
|
+
2. Run `/god-preflight` against the surrounding environment.
|
|
59
|
+
3. Run a greenfield simulation audit against the org constraints.
|
|
60
|
+
4. Use `god-greenfieldifier` to plan approved artifact updates.
|
|
61
|
+
5. Continue the normal arc with the org constraints respected.
|
|
62
|
+
|
|
63
|
+
## Mode D: Multi-repo suite membership
|
|
43
64
|
|
|
44
65
|
**Signals**:
|
|
45
66
|
- Working directory contains workspace config (pnpm-workspace.yaml, nx.json, lerna.json, turbo.json)
|
|
46
67
|
- OR multiple sub-repos with their own `.git/`
|
|
47
68
|
- User describes a system spanning multiple repos
|
|
69
|
+
- `.godpowers/suite/` exists or sibling repos share byte-identical managed files
|
|
48
70
|
|
|
49
|
-
**
|
|
71
|
+
**Behavior**: Mode D is not a replacement for A/B/C/E. It is suite membership
|
|
72
|
+
managed by `god-coordinator` as a Tier-0 peer. Each repo still runs one of
|
|
73
|
+
A/B/C/E underneath, while `/god-suite-*` commands handle cross-repo status,
|
|
74
|
+
sync, patch, and release planning.
|
|
50
75
|
|
|
51
76
|
## Worked example
|
|
52
77
|
|
|
@@ -72,3 +97,11 @@ Reports to user:
|
|
|
72
97
|
> Setting Mode B (gap-fill). I'll work backward to fill missing artifacts.
|
|
73
98
|
> First: I need to understand what this codebase does. Let me start with
|
|
74
99
|
> /god-explore or you can describe it briefly."
|
|
100
|
+
|
|
101
|
+
## Existing Godpowers projects after upgrades
|
|
102
|
+
|
|
103
|
+
When `.godpowers/state.json` already exists, mode detection should also run
|
|
104
|
+
feature awareness. The safe local helper records the installed Godpowers
|
|
105
|
+
feature set, refreshes managed AI-tool context fences, and reports missing
|
|
106
|
+
planning-system import or sync-back opportunities. It does not overwrite
|
|
107
|
+
product artifacts.
|
|
@@ -5,14 +5,17 @@ god-orchestrator and related agents.
|
|
|
5
5
|
|
|
6
6
|
## Files
|
|
7
7
|
|
|
8
|
-
- (
|
|
8
|
+
- [MODE-DETECTION.md](MODE-DETECTION.md): Mode A/B/C/E detection, plus Mode D
|
|
9
|
+
suite membership.
|
|
10
|
+
- [SCALE-DETECTION.md](SCALE-DETECTION.md): scale rubric and calibration.
|
|
9
11
|
|
|
10
12
|
## Contribution Welcome
|
|
11
13
|
|
|
12
14
|
This directory is the natural home for:
|
|
13
|
-
- Mode A/B/C/
|
|
15
|
+
- More Mode A/B/C/E and Mode D suite detection examples
|
|
14
16
|
- Scale detection rubric with calibration cases
|
|
15
17
|
- Pause vs no-pause decision tree examples
|
|
16
18
|
- YOLO default rationale documents
|
|
19
|
+
- Auto-invoke visibility examples for local helpers and specialist spawns
|
|
17
20
|
|
|
18
21
|
If you'd like to contribute, see [CONTRIBUTING.md](../../CONTRIBUTING.md).
|
|
@@ -42,18 +42,47 @@ codebase mappers, story trackers). The rules below let them coexist.
|
|
|
42
42
|
## Migration into Godpowers
|
|
43
43
|
|
|
44
44
|
If you arrive at Godpowers carrying artifacts from another system,
|
|
45
|
-
`/god-init` Mode B (gap-fill)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
`/god-init` Mode B (gap-fill) and `/god-migrate` read what exists and map it
|
|
46
|
+
forward:
|
|
47
|
+
|
|
48
|
+
- GSD `.planning/` or `.gsd/` context -> `.godpowers/prep/IMPORTED-CONTEXT.md`
|
|
49
|
+
and optional native seed artifacts
|
|
50
|
+
- BMAD `_bmad-output/` or `.bmad/` context -> imported preparation context and
|
|
51
|
+
open questions for PRD, architecture, roadmap, and stack
|
|
52
|
+
- Superpowers specs or plans -> imported preparation context and native
|
|
53
|
+
Godpowers seed artifacts when confidence is high
|
|
54
|
+
- Existing PRD-like documents -> `.godpowers/prd/PRD.md` after
|
|
55
|
+
substitution-test rewrite if needed
|
|
49
56
|
- Existing ADRs -> `.godpowers/arch/adr/`
|
|
50
|
-
- Existing roadmap
|
|
51
|
-
- Existing story
|
|
52
|
-
|
|
57
|
+
- Existing roadmap or milestones -> `.godpowers/roadmap/ROADMAP.md`
|
|
58
|
+
- Existing story or ticket files -> `.godpowers/stories/STORY-*.md` through
|
|
59
|
+
`/god-story`
|
|
60
|
+
|
|
61
|
+
Mode B does not delete the source files. It produces Godpowers artifacts
|
|
62
|
+
alongside them. Once parity is reached, you can retire the older system at
|
|
63
|
+
your own pace.
|
|
64
|
+
|
|
65
|
+
## Managed sync-back
|
|
66
|
+
|
|
67
|
+
Godpowers can keep a source system informed without making that source system
|
|
68
|
+
authoritative. `/god-sync` writes managed companion files such as:
|
|
69
|
+
|
|
70
|
+
- `.planning/GODPOWERS-SYNC.md`
|
|
71
|
+
- `_bmad-output/GODPOWERS-SYNC.md`
|
|
72
|
+
- `docs/superpowers/GODPOWERS-SYNC.md`
|
|
73
|
+
|
|
74
|
+
The sync-back file is a bridge, not a second source of truth. It should contain
|
|
75
|
+
the current Godpowers status, imported-context mapping, open conflicts, and the
|
|
76
|
+
next safe route back into either system. It must be fenced or companion-owned
|
|
77
|
+
so Godpowers does not overwrite arbitrary GSD, BMAD, or Superpowers artifacts.
|
|
78
|
+
|
|
79
|
+
## Existing Godpowers projects after upgrades
|
|
53
80
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
81
|
+
Feature awareness is the upgrade path for projects that are already
|
|
82
|
+
Godpowers-native. `/god-context refresh`, `/god-sync`, `/god-doctor --fix`, and
|
|
83
|
+
God Mode resume can record the current runtime feature set, refresh managed AI
|
|
84
|
+
tool fences, and point out missing migration, sync-back, dogfood, host
|
|
85
|
+
capability, extension-authoring, or suite-release readiness.
|
|
57
86
|
|
|
58
87
|
## Migration out of Godpowers
|
|
59
88
|
|
|
@@ -64,7 +93,9 @@ frontmatter. There's no proprietary binary state. To leave:
|
|
|
64
93
|
2. Strip the fenced "Implementation Linkage" footers if the target
|
|
65
94
|
system doesn't understand them (they're recoverable from code
|
|
66
95
|
annotations).
|
|
67
|
-
3.
|
|
96
|
+
3. Use the most recent managed sync-back file as the return-path summary if the
|
|
97
|
+
target system is GSD, BMAD, or Superpowers.
|
|
98
|
+
4. Delete `.godpowers/`.
|
|
68
99
|
|
|
69
100
|
## What Godpowers does not try to be
|
|
70
101
|
|
|
@@ -4,11 +4,11 @@ Cross-tier reference content used by multiple agents.
|
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
7
|
-
- [HAVE-NOTS.md](../HAVE-NOTS.md) (canonical failure-mode catalog
|
|
7
|
+
- [HAVE-NOTS.md](../HAVE-NOTS.md) (canonical failure-mode catalog)
|
|
8
|
+
- [ORCHESTRATORS.md](ORCHESTRATORS.md): composition patterns with other AI
|
|
9
|
+
coding workflow systems, including migration and managed sync-back.
|
|
10
|
+
- [GLOSSARY.md](GLOSSARY.md): standardized vocabulary across tiers.
|
|
8
11
|
|
|
9
12
|
## Planned content
|
|
10
13
|
|
|
11
|
-
- ORCHESTRATORS.md: composition patterns with other AI coding workflow systems
|
|
12
14
|
- RESEARCH.md: dated research notes informing agent design decisions
|
|
13
|
-
- GLOSSARY.md: standardized vocabulary across tiers (substitution test,
|
|
14
|
-
three-label test, flip point, have-not, paper artifact, theater, AI-slop)
|
|
@@ -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/schema/events.v1.json
CHANGED
|
@@ -48,6 +48,15 @@
|
|
|
48
48
|
"tier.skip",
|
|
49
49
|
"state.repair",
|
|
50
50
|
"state.rollback",
|
|
51
|
+
"local-helper.run",
|
|
52
|
+
"local-helper.complete",
|
|
53
|
+
"dashboard.render",
|
|
54
|
+
"host-capabilities.detect",
|
|
55
|
+
"dogfood.run",
|
|
56
|
+
"source-system.import",
|
|
57
|
+
"source-system.sync-back",
|
|
58
|
+
"repo-doc-sync.detect",
|
|
59
|
+
"repo-surface-sync.detect",
|
|
51
60
|
"extension.install",
|
|
52
61
|
"extension.activate",
|
|
53
62
|
"error",
|
|
@@ -108,7 +108,11 @@
|
|
|
108
108
|
"properties": {
|
|
109
109
|
"yolo": { "type": "boolean", "default": false },
|
|
110
110
|
"conservative": { "type": "boolean", "default": false },
|
|
111
|
-
"trash-retention-days": { "type": "integer", "minimum": 0, "default": 30 }
|
|
111
|
+
"trash-retention-days": { "type": "integer", "minimum": 0, "default": 30 },
|
|
112
|
+
"repo-doc-sync": { "type": "boolean", "default": true },
|
|
113
|
+
"repo-surface-sync": { "type": "boolean", "default": true },
|
|
114
|
+
"source-sync-back": { "type": "boolean", "default": true },
|
|
115
|
+
"dashboard-brief": { "type": "boolean", "default": true }
|
|
112
116
|
}
|
|
113
117
|
}
|
|
114
118
|
},
|
package/schema/recipe.v1.json
CHANGED
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"enum": [
|
|
28
28
|
"starting", "planning", "building", "shipping",
|
|
29
29
|
"production", "maintaining", "recovering", "collaborating",
|
|
30
|
-
"knowledge", "feature-addition", "configuration", "meta"
|
|
30
|
+
"knowledge", "feature-addition", "configuration", "meta",
|
|
31
|
+
"migration", "release", "extension", "suite", "dogfood"
|
|
31
32
|
]
|
|
32
33
|
},
|
|
33
34
|
"description": { "type": "string" }
|
package/schema/routing.v1.json
CHANGED
|
@@ -65,6 +65,26 @@
|
|
|
65
65
|
"type": "array",
|
|
66
66
|
"items": { "type": "string" },
|
|
67
67
|
"description": "Agents spawned by primary agent (e.g., reviewers)"
|
|
68
|
+
},
|
|
69
|
+
"local-helpers": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"description": "Visible local runtime helpers this command may run without spawning a specialist agent.",
|
|
72
|
+
"items": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"enum": [
|
|
75
|
+
"checkpoint-sync",
|
|
76
|
+
"feature-awareness",
|
|
77
|
+
"host-capabilities",
|
|
78
|
+
"repo-doc-sync",
|
|
79
|
+
"repo-surface-sync",
|
|
80
|
+
"route-quality-sync",
|
|
81
|
+
"recipe-coverage-sync",
|
|
82
|
+
"release-surface-sync",
|
|
83
|
+
"dogfood-runner",
|
|
84
|
+
"source-sync-back",
|
|
85
|
+
"pillars-sync-plan"
|
|
86
|
+
]
|
|
87
|
+
}
|
|
68
88
|
}
|
|
69
89
|
}
|
|
70
90
|
},
|
package/schema/state.v1.json
CHANGED
|
@@ -157,6 +157,57 @@
|
|
|
157
157
|
},
|
|
158
158
|
"additionalProperties": false
|
|
159
159
|
},
|
|
160
|
+
"host-capabilities": {
|
|
161
|
+
"type": "object",
|
|
162
|
+
"description": "Most recent host guarantee report used by dashboard and release readiness surfaces.",
|
|
163
|
+
"properties": {
|
|
164
|
+
"host": { "type": "string" },
|
|
165
|
+
"level": {
|
|
166
|
+
"type": "string",
|
|
167
|
+
"enum": ["full", "degraded", "unknown"]
|
|
168
|
+
},
|
|
169
|
+
"gaps": {
|
|
170
|
+
"type": "array",
|
|
171
|
+
"items": { "type": "string" }
|
|
172
|
+
},
|
|
173
|
+
"checked-at": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"format": "date-time"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"additionalProperties": true
|
|
179
|
+
},
|
|
180
|
+
"dashboard": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"description": "Optional cached dashboard summary. Runtime recomputes from disk when present data is stale.",
|
|
183
|
+
"properties": {
|
|
184
|
+
"last-rendered-at": { "type": "string", "format": "date-time" },
|
|
185
|
+
"action-brief": {
|
|
186
|
+
"type": "object",
|
|
187
|
+
"properties": {
|
|
188
|
+
"next": { "type": "string" },
|
|
189
|
+
"why": { "type": "string" },
|
|
190
|
+
"readiness": { "type": "string", "enum": ["ready", "needs attention"] },
|
|
191
|
+
"attention": { "type": "array", "items": { "type": "string" } },
|
|
192
|
+
"host-guarantees": { "type": "string" }
|
|
193
|
+
},
|
|
194
|
+
"additionalProperties": false
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
"additionalProperties": false
|
|
198
|
+
},
|
|
199
|
+
"dogfood": {
|
|
200
|
+
"type": "object",
|
|
201
|
+
"description": "Most recent deterministic messy-repo fixture run summary.",
|
|
202
|
+
"properties": {
|
|
203
|
+
"status": { "type": "string", "enum": ["not-run", "pass", "fail"] },
|
|
204
|
+
"total": { "type": "integer", "minimum": 0 },
|
|
205
|
+
"passed": { "type": "integer", "minimum": 0 },
|
|
206
|
+
"failed": { "type": "integer", "minimum": 0 },
|
|
207
|
+
"last-run-at": { "type": "string", "format": "date-time" }
|
|
208
|
+
},
|
|
209
|
+
"additionalProperties": false
|
|
210
|
+
},
|
|
160
211
|
"yolo-decisions": {
|
|
161
212
|
"type": "array",
|
|
162
213
|
"description": "Auto-decisions made under --yolo. Mirrored to YOLO-DECISIONS.md.",
|
package/schema/workflow.v1.json
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"type": "array",
|
|
28
28
|
"items": {
|
|
29
29
|
"type": "string",
|
|
30
|
-
"pattern": "^/god-[a-z-]
|
|
30
|
+
"pattern": "^/god-[a-z-]+(\\s.*)?$"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"jobs": {
|
|
@@ -86,10 +86,39 @@
|
|
|
86
86
|
"additionalProperties": true
|
|
87
87
|
}
|
|
88
88
|
},
|
|
89
|
+
"local-helpers": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"description": "Visible local runtime helpers that run in this job without specialist-agent judgment.",
|
|
92
|
+
"items": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"enum": [
|
|
95
|
+
"checkpoint-sync",
|
|
96
|
+
"feature-awareness",
|
|
97
|
+
"host-capabilities",
|
|
98
|
+
"repo-doc-sync",
|
|
99
|
+
"repo-surface-sync",
|
|
100
|
+
"route-quality-sync",
|
|
101
|
+
"recipe-coverage-sync",
|
|
102
|
+
"release-surface-sync",
|
|
103
|
+
"dogfood-runner",
|
|
104
|
+
"source-sync-back",
|
|
105
|
+
"pillars-sync-plan"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
},
|
|
89
109
|
"per": { "type": "string", "enum": ["slice", "wave"] },
|
|
90
110
|
"parallel-by": { "type": "string", "enum": ["slice", "wave"] },
|
|
91
111
|
"on-pass": { "type": "string" },
|
|
92
|
-
"
|
|
112
|
+
"on-fail": { "type": "string" },
|
|
113
|
+
"skip-when": { "type": "string" },
|
|
114
|
+
"verification": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"additionalProperties": true
|
|
117
|
+
},
|
|
118
|
+
"closure": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"additionalProperties": true
|
|
121
|
+
}
|
|
93
122
|
}
|
|
94
123
|
}
|
|
95
124
|
}
|
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
|
+
```
|