godpowers 1.6.15 → 1.6.16
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 +27 -0
- package/README.md +19 -9
- package/RELEASE.md +33 -52
- package/SKILL.md +9 -1
- package/lib/README.md +3 -0
- package/lib/context-writer.js +3 -4
- package/lib/feature-awareness.js +220 -0
- package/package.json +2 -2
- package/schema/state.v1.json +26 -0
- package/skills/god-context.md +15 -5
- package/skills/god-doctor.md +20 -0
- package/skills/god-mode.md +7 -0
- package/skills/god-sync.md +8 -4
- package/skills/god-version.md +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,33 @@ All notable changes to Godpowers will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.6.16] - 2026-05-16
|
|
9
|
+
|
|
10
|
+
Feature awareness for existing Godpowers projects.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Added `lib/feature-awareness.js` to detect stale project awareness after a
|
|
14
|
+
Godpowers runtime upgrade.
|
|
15
|
+
- Added state recording for the current Godpowers feature set so existing
|
|
16
|
+
projects can tell whether their context has learned about new capabilities.
|
|
17
|
+
- Added behavioral tests for feature-awareness detection, safe state refresh,
|
|
18
|
+
AI-tool context refresh, migration suggestions, and `god-greenfieldifier`
|
|
19
|
+
escalation.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- `AGENTS.md` context refresh now advertises `/god-sync`, `/god-migrate`, and
|
|
23
|
+
`/god-context refresh` so AI tools opening an existing project see the new
|
|
24
|
+
migration and awareness commands.
|
|
25
|
+
- `/god-doctor`, `/god-context`, `/god-sync`, and `/god-mode` now document the
|
|
26
|
+
feature-awareness auto-invoke path for existing `.godpowers` projects.
|
|
27
|
+
- `state.v1.json` now accepts the `godpowers-features` awareness record.
|
|
28
|
+
|
|
29
|
+
### Guardrails
|
|
30
|
+
- Detection is read-only by default.
|
|
31
|
+
- The apply path writes only safe state metadata and managed context fences.
|
|
32
|
+
- Ambiguous planning-system evidence is reported as a scoped
|
|
33
|
+
`god-greenfieldifier` recommendation instead of being converted blindly.
|
|
34
|
+
|
|
8
35
|
## [1.6.15] - 2026-05-16
|
|
9
36
|
|
|
10
37
|
Planning-system migration and sync-back.
|
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.**
|
|
@@ -12,13 +12,12 @@ idea to hardened production. It runs as **slash commands inside your AI coding
|
|
|
12
12
|
tool** (Claude Code, Codex, Cursor, etc.) that orchestrate **specialist agents**
|
|
13
13
|
in fresh contexts to do the work.
|
|
14
14
|
|
|
15
|
-
Version 1.6.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
controlled migration plan.
|
|
15
|
+
Version 1.6.16 adds feature awareness for existing Godpowers projects. When a
|
|
16
|
+
new runtime adds capabilities, `/god-doctor`, `/god-context`, `/god-sync`, and
|
|
17
|
+
`/god-mode` can detect stale project awareness, record the current feature set
|
|
18
|
+
in `state.json`, refresh AI-tool context fences, and point source-system
|
|
19
|
+
migration cases to `/god-migrate` or `god-greenfieldifier` when judgment is
|
|
20
|
+
needed.
|
|
22
21
|
|
|
23
22
|
It fuses four disciplines into one unified workflow:
|
|
24
23
|
|
|
@@ -228,6 +227,16 @@ managed sync-back files such as `.planning/GODPOWERS-SYNC.md`,
|
|
|
228
227
|
`_bmad-output/GODPOWERS-SYNC.md`, or
|
|
229
228
|
`docs/superpowers/GODPOWERS-SYNC.md`.
|
|
230
229
|
|
|
230
|
+
Existing Godpowers projects can refresh their awareness after an upgrade:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
/god-context refresh
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
This records the current Godpowers feature set in `.godpowers/state.json`,
|
|
237
|
+
refreshes managed AI-tool context fences, and suggests `/god-migrate` or
|
|
238
|
+
`god-greenfieldifier` when source-system evidence needs migration judgment.
|
|
239
|
+
|
|
231
240
|
For existing codebases and org-constrained new projects, God Mode now runs a
|
|
232
241
|
greenfield simulation audit and then actions it through a greenfieldification
|
|
233
242
|
plan. It pauses before risky artifact rewrites because that process can change
|
|
@@ -351,8 +360,9 @@ Pi. T3 Code inherits from the underlying agent (Codex / Claude / OpenCode).
|
|
|
351
360
|
- [Getting Started](docs/getting-started.md)
|
|
352
361
|
- [Concepts](docs/concepts.md)
|
|
353
362
|
- [Command reference (all 109 skills + 40 agents)](docs/reference.md)
|
|
363
|
+
- [Feature awareness](docs/feature-awareness.md)
|
|
354
364
|
- [Roadmap](docs/ROADMAP.md)
|
|
355
|
-
- [
|
|
365
|
+
- [Release Notes](RELEASE.md)
|
|
356
366
|
- [Changelog](CHANGELOG.md)
|
|
357
367
|
- [Inspiration](INSPIRATION.md)
|
|
358
368
|
|
package/RELEASE.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
# Godpowers 1.6.
|
|
1
|
+
# Godpowers 1.6.16 Release
|
|
2
2
|
|
|
3
3
|
Date: 2026-05-16
|
|
4
4
|
|
|
5
|
-
Godpowers 1.6.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Godpowers 1.6.16 adds feature awareness for existing Godpowers projects. After
|
|
6
|
+
the installed runtime gains new capabilities, Godpowers can detect stale project
|
|
7
|
+
awareness, record the current feature set in `state.json`, refresh AI-tool
|
|
8
|
+
context fences, and route migration judgment to the right command or agent.
|
|
8
9
|
|
|
9
10
|
## What is stable
|
|
10
11
|
|
|
@@ -20,74 +21,54 @@ return to its prior planning system with current Godpowers progress visible.
|
|
|
20
21
|
- `.godpowers/` workflow state and artifact layout
|
|
21
22
|
- Safe-sync routing before deploy, observe, harden, launch, or god-mode work
|
|
22
23
|
- Critical harden finding gate before launch
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
- Plain-language project-run wording in user-facing reports
|
|
24
|
+
- Planning-system migration for GSD, BMAD, and Superpowers
|
|
25
|
+
- Managed sync-back companion files for imported source systems
|
|
26
26
|
|
|
27
27
|
## What is new
|
|
28
28
|
|
|
29
|
-
- Added `lib/
|
|
30
|
-
- Added `
|
|
31
|
-
- Added
|
|
32
|
-
- `/god-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
- `reverse-sync` now returns source-system sync-back results.
|
|
37
|
-
- `state.v1.json` now records source-system import and sync-back state.
|
|
38
|
-
- Added `docs/planning-system-migration.md`.
|
|
29
|
+
- Added `lib/feature-awareness.js`.
|
|
30
|
+
- Added `godpowers-features` to `state.v1.json`.
|
|
31
|
+
- Added `scripts/test-feature-awareness.js`.
|
|
32
|
+
- `/god-doctor`, `/god-context`, `/god-sync`, and `/god-mode` now document the
|
|
33
|
+
feature-awareness auto-invoke path.
|
|
34
|
+
- `AGENTS.md` refreshes now include `/god-sync`, `/god-migrate`, and
|
|
35
|
+
`/god-context refresh` in the useful command list.
|
|
39
36
|
|
|
40
|
-
##
|
|
37
|
+
## Awareness behavior
|
|
41
38
|
|
|
42
|
-
|
|
39
|
+
For an initialized `.godpowers` project, the helper:
|
|
43
40
|
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
|
|
41
|
+
- reads the installed runtime version
|
|
42
|
+
- compares the project `godpowers-features` record to the current feature set
|
|
43
|
+
- detects missing managed AI-tool context fences
|
|
44
|
+
- detects unimported GSD, BMAD, or Superpowers planning artifacts
|
|
45
|
+
- writes only safe state metadata and managed context fences when applied
|
|
48
46
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Existing Godpowers artifacts are preserved unless the user explicitly forces an
|
|
52
|
-
overwrite.
|
|
53
|
-
|
|
54
|
-
## Sync-back behavior
|
|
55
|
-
|
|
56
|
-
Godpowers writes managed companion files:
|
|
57
|
-
|
|
58
|
-
- GSD: `.planning/GODPOWERS-SYNC.md` or `.gsd/GODPOWERS-SYNC.md`
|
|
59
|
-
- BMAD: `_bmad-output/GODPOWERS-SYNC.md` or `.bmad/GODPOWERS-SYNC.md`
|
|
60
|
-
- Superpowers: `docs/superpowers/GODPOWERS-SYNC.md` or
|
|
61
|
-
`.superpowers/GODPOWERS-SYNC.md`
|
|
62
|
-
|
|
63
|
-
Pointer fences are written only when a safe native state file already exists.
|
|
64
|
-
Godpowers never rewrites source-system prose outside managed fences.
|
|
47
|
+
Detection is read-only. Applying awareness does not rewrite product, planning,
|
|
48
|
+
source-system, or code files outside Godpowers-owned fences.
|
|
65
49
|
|
|
66
50
|
## Auto-invoke and auto-spawn policy
|
|
67
51
|
|
|
68
|
-
|
|
52
|
+
Feature awareness is local runtime work and must be reported as:
|
|
69
53
|
|
|
70
54
|
```
|
|
71
55
|
Agent: none, local runtime only
|
|
72
56
|
```
|
|
73
57
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Godpowers spawns `god-greenfieldifier` only when import confidence is low,
|
|
78
|
-
multiple source systems conflict, or canonical seed artifacts cannot be safely
|
|
79
|
-
created from available evidence.
|
|
58
|
+
Godpowers recommends or spawns `god-greenfieldifier` only when imported or
|
|
59
|
+
detected planning-system context has low confidence or conflicts that need
|
|
60
|
+
migration judgment.
|
|
80
61
|
|
|
81
62
|
## Validation
|
|
82
63
|
|
|
83
64
|
Release validation includes:
|
|
84
65
|
|
|
66
|
+
- `node scripts/test-feature-awareness.js`
|
|
67
|
+
- `node scripts/test-context-writer.js`
|
|
85
68
|
- `node scripts/test-planning-systems.js`
|
|
86
|
-
- `node scripts/test-
|
|
87
|
-
- `
|
|
88
|
-
- `npm run test:audit`
|
|
89
|
-
- `node scripts/check-package-contents.js`
|
|
69
|
+
- `node scripts/test-doc-surface-counts.js`
|
|
70
|
+
- `node scripts/validate-skills.js`
|
|
90
71
|
- `git diff --check`
|
|
91
72
|
|
|
92
|
-
The `v1.6.
|
|
93
|
-
`godpowers@1.6.
|
|
73
|
+
The `v1.6.16` tag should point to the release commit that matches the npm
|
|
74
|
+
`godpowers@1.6.16` package.
|
package/SKILL.md
CHANGED
|
@@ -214,7 +214,7 @@ Auto-invoked:
|
|
|
214
214
|
Trigger: <what caused this automatic step>
|
|
215
215
|
Agent: <god-updater | god-context-writer | none, local runtime only>
|
|
216
216
|
Local syncs:
|
|
217
|
-
+ <planning-system-import | reverse-sync | source-sync | pillars-sync | checkpoint-sync | context-refresh>: <result or skipped reason>
|
|
217
|
+
+ <feature-awareness | planning-system-import | reverse-sync | source-sync | pillars-sync | checkpoint-sync | context-refresh>: <result or skipped reason>
|
|
218
218
|
Artifacts: <changed files, no-op, or deferred>
|
|
219
219
|
Log: <SYNC-LOG.md, CHECKPOINT.md, REVIEW-REQUIRED.md, or none>
|
|
220
220
|
```
|
|
@@ -240,6 +240,8 @@ Automatic steps that especially need visible reporting:
|
|
|
240
240
|
`/god-automation-status`, and `/god-automation-setup`
|
|
241
241
|
- planning-system import during `/god-init` or `/god-migrate`
|
|
242
242
|
- source-system sync-back during `/god-sync`, `/god-scan`, or `/god-migrate`
|
|
243
|
+
- feature-awareness refresh during `/god-doctor`, `/god-context`,
|
|
244
|
+
`/god-sync`, or `/god-mode`
|
|
243
245
|
|
|
244
246
|
### 13. Proactive Auto-Invoke Policy
|
|
245
247
|
Godpowers should be proactive from disk evidence, not from guesswork. Before
|
|
@@ -272,6 +274,10 @@ Run these local runtime helpers automatically when their trigger is present:
|
|
|
272
274
|
`/god-migrate`.
|
|
273
275
|
- `lib/source-sync.run` when `state.json` records enabled `source-systems`
|
|
274
276
|
entries and `/god-sync`, `/god-scan`, or `/god-migrate` closes a workflow.
|
|
277
|
+
- `lib/feature-awareness.detect` during `/god-doctor` and
|
|
278
|
+
`lib/feature-awareness.run` during `/god-context`, `/god-sync`, or
|
|
279
|
+
`/god-mode` when an initialized `.godpowers` project lacks current runtime
|
|
280
|
+
feature metadata or managed AI-tool context fences.
|
|
275
281
|
- Context refresh dry-run after `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`,
|
|
276
282
|
`.cursor/rules/`, `.windsurfrules`, `.github/copilot-instructions.md`,
|
|
277
283
|
`.clinerules`, `.roo/`, or `.continue/` changes.
|
|
@@ -299,6 +305,8 @@ Spawn these agents only when the trigger is direct and scope is bounded:
|
|
|
299
305
|
- `god-greenfieldifier` when imported GSD, BMAD, or Superpowers context has
|
|
300
306
|
low confidence, conflicting systems, or missing canonical Godpowers seed
|
|
301
307
|
artifacts after local import.
|
|
308
|
+
- `god-greenfieldifier` when feature-awareness detects unimported or imported
|
|
309
|
+
source-system context that is low confidence or conflicting.
|
|
302
310
|
|
|
303
311
|
#### Level 4: Explicit approval required
|
|
304
312
|
Never auto-run these from inference alone:
|
package/lib/README.md
CHANGED
|
@@ -12,6 +12,7 @@ package-level integrations.
|
|
|
12
12
|
| `state-lock.js` | Coordinate state writes with a lock file. |
|
|
13
13
|
| `intent.js` | Read and validate `intent.yaml` from project roots or `.godpowers/`. |
|
|
14
14
|
| `checkpoint.js` | Create and inspect resumable checkpoint artifacts. |
|
|
15
|
+
| `feature-awareness.js` | Detect and refresh existing-project awareness after runtime upgrades. |
|
|
15
16
|
| `budget.js` | Read and enforce configured budget controls. |
|
|
16
17
|
| `cost-tracker.js` | Track token and cost estimates from event streams. |
|
|
17
18
|
|
|
@@ -52,6 +53,8 @@ package-level integrations.
|
|
|
52
53
|
|--------|---------|
|
|
53
54
|
| `context-writer.js` | Produce tool-specific context files. |
|
|
54
55
|
| `context-budget.js` | Keep generated context within budget. |
|
|
56
|
+
| `planning-systems.js` | Detect and import GSD, BMAD, and Superpowers planning context. |
|
|
57
|
+
| `source-sync.js` | Write managed Godpowers progress back to source-system companion files. |
|
|
55
58
|
| `design-detector.js` | Detect design-system conventions. |
|
|
56
59
|
| `design-spec.js` | Normalize design specifications. |
|
|
57
60
|
| `awesome-design.js` | Validate design guidance against awesome-design rules. |
|
package/lib/context-writer.js
CHANGED
|
@@ -97,11 +97,10 @@ function buildCanonicalContent(state, opts = {}) {
|
|
|
97
97
|
lines.push('');
|
|
98
98
|
lines.push('- `/god-status` - re-derive state from disk');
|
|
99
99
|
lines.push('- `/god-next` - what to run next, with reason');
|
|
100
|
-
lines.push('- `/god <free text>` - match intent to a recipe');
|
|
101
100
|
lines.push('- `/god-mode` - run the full autonomous project run');
|
|
102
|
-
lines.push('- `/god-
|
|
103
|
-
lines.push('- `/god-
|
|
104
|
-
lines.push('- `/god-
|
|
101
|
+
lines.push('- `/god-sync` - refresh artifacts, context, and source-system sync-back');
|
|
102
|
+
lines.push('- `/god-migrate` - import or sync GSD, BMAD, or Superpowers context');
|
|
103
|
+
lines.push('- `/god-context refresh` - refresh AI-tool awareness for this project');
|
|
105
104
|
lines.push('');
|
|
106
105
|
|
|
107
106
|
// Pointers to design and product files when present
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Godpowers Feature Awareness
|
|
3
|
+
*
|
|
4
|
+
* Keeps existing Godpowers projects aware of capabilities added by newer
|
|
5
|
+
* installed runtimes. This module is deliberately conservative: detect is
|
|
6
|
+
* read-only, run applies only safe state and context refreshes, and ambiguous
|
|
7
|
+
* migration cases are returned as spawn recommendations.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
|
|
13
|
+
const state = require('./state');
|
|
14
|
+
const contextWriter = require('./context-writer');
|
|
15
|
+
const planningSystems = require('./planning-systems');
|
|
16
|
+
|
|
17
|
+
const FEATURE_SET_VERSION = 1;
|
|
18
|
+
|
|
19
|
+
const FEATURES = [
|
|
20
|
+
{
|
|
21
|
+
id: 'planning-system-migration',
|
|
22
|
+
since: '1.6.15',
|
|
23
|
+
commands: ['/god-migrate', '/god-init'],
|
|
24
|
+
description: 'Detect and import GSD, BMAD, and Superpowers planning artifacts.'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'source-system-sync-back',
|
|
28
|
+
since: '1.6.15',
|
|
29
|
+
commands: ['/god-sync', '/god-migrate'],
|
|
30
|
+
description: 'Write managed Godpowers progress summaries back to detected source systems.'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'feature-awareness',
|
|
34
|
+
since: '1.6.16',
|
|
35
|
+
commands: ['/god-doctor', '/god-context', '/god-sync', '/god-mode'],
|
|
36
|
+
description: 'Refresh existing Godpowers projects when the installed runtime gains new capabilities.'
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
function packageVersion(projectRoot) {
|
|
41
|
+
const candidates = [
|
|
42
|
+
path.join(__dirname, '..', 'package.json'),
|
|
43
|
+
path.join(projectRoot || process.cwd(), 'package.json')
|
|
44
|
+
];
|
|
45
|
+
for (const candidate of candidates) {
|
|
46
|
+
if (!fs.existsSync(candidate)) continue;
|
|
47
|
+
try {
|
|
48
|
+
const parsed = JSON.parse(fs.readFileSync(candidate, 'utf8'));
|
|
49
|
+
if (parsed && parsed.name === 'godpowers' && parsed.version) return parsed.version;
|
|
50
|
+
} catch (err) {
|
|
51
|
+
// Ignore malformed package metadata. Awareness can still run with unknown.
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return 'unknown';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function expectedFeatureIds() {
|
|
58
|
+
return FEATURES.map((feature) => feature.id);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function existingFeatureIds(current) {
|
|
62
|
+
const record = current && current['godpowers-features'];
|
|
63
|
+
return Array.isArray(record && record.known) ? record.known : [];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function missingFeatureIds(current) {
|
|
67
|
+
const known = new Set(existingFeatureIds(current));
|
|
68
|
+
return expectedFeatureIds().filter((id) => !known.has(id));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function sourceSystemsNeedJudgment(current) {
|
|
72
|
+
const systems = Array.isArray(current && current['source-systems'])
|
|
73
|
+
? current['source-systems']
|
|
74
|
+
: [];
|
|
75
|
+
return systems.filter((system) => {
|
|
76
|
+
return system.confidence === 'low' || Number(system['conflict-count'] || 0) > 0;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function missingContextTargets(projectRoot) {
|
|
81
|
+
const status = contextWriter.status(projectRoot);
|
|
82
|
+
const missing = [];
|
|
83
|
+
if (!status.canonical.hasFence) missing.push('AGENTS.md');
|
|
84
|
+
for (const pointer of status.pointers) {
|
|
85
|
+
if (!pointer.hasFence) {
|
|
86
|
+
missing.push(path.relative(projectRoot, pointer.path).split(path.sep).join('/'));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return missing;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function detect(projectRoot, opts = {}) {
|
|
93
|
+
const current = state.read(projectRoot);
|
|
94
|
+
const runtimeVersion = opts.runtimeVersion || packageVersion(projectRoot);
|
|
95
|
+
if (!current) {
|
|
96
|
+
return {
|
|
97
|
+
initialized: false,
|
|
98
|
+
runtimeVersion,
|
|
99
|
+
actions: [],
|
|
100
|
+
missingFeatures: expectedFeatureIds(),
|
|
101
|
+
missingContext: [],
|
|
102
|
+
migrationCandidates: [],
|
|
103
|
+
spawnRecommendation: null
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const record = current['godpowers-features'] || {};
|
|
108
|
+
const missingFeatures = missingFeatureIds(current);
|
|
109
|
+
const missingContext = missingContextTargets(projectRoot);
|
|
110
|
+
const migrationCandidates = planningSystems.detect(projectRoot).systems
|
|
111
|
+
.filter((system) => {
|
|
112
|
+
const configured = Array.isArray(current['source-systems'])
|
|
113
|
+
? current['source-systems']
|
|
114
|
+
: [];
|
|
115
|
+
return !configured.some((entry) => entry.id === system.id);
|
|
116
|
+
})
|
|
117
|
+
.map((system) => ({
|
|
118
|
+
id: system.id,
|
|
119
|
+
name: system.name,
|
|
120
|
+
confidence: system.confidence,
|
|
121
|
+
files: system.files.length
|
|
122
|
+
}));
|
|
123
|
+
|
|
124
|
+
const actions = [];
|
|
125
|
+
if (record['runtime-version'] !== runtimeVersion) actions.push('record-runtime-version');
|
|
126
|
+
if (missingFeatures.length > 0) actions.push('record-feature-set');
|
|
127
|
+
if (missingContext.length > 0) actions.push('refresh-context');
|
|
128
|
+
if (migrationCandidates.length > 0) actions.push('suggest-god-migrate');
|
|
129
|
+
|
|
130
|
+
const needsJudgment = sourceSystemsNeedJudgment(current);
|
|
131
|
+
const lowConfidenceCandidates = migrationCandidates.filter((system) => system.confidence === 'low');
|
|
132
|
+
const spawnRecommendation = needsJudgment.length > 0 || lowConfidenceCandidates.length > 0
|
|
133
|
+
? {
|
|
134
|
+
agent: 'god-greenfieldifier',
|
|
135
|
+
reason: 'Imported or detected planning-system context needs migration judgment.',
|
|
136
|
+
systems: [...needsJudgment.map((system) => system.id), ...lowConfidenceCandidates.map((system) => system.id)]
|
|
137
|
+
}
|
|
138
|
+
: null;
|
|
139
|
+
|
|
140
|
+
return {
|
|
141
|
+
initialized: true,
|
|
142
|
+
runtimeVersion,
|
|
143
|
+
featureSetVersion: FEATURE_SET_VERSION,
|
|
144
|
+
actions,
|
|
145
|
+
currentFeatures: existingFeatureIds(current),
|
|
146
|
+
expectedFeatures: FEATURES,
|
|
147
|
+
missingFeatures,
|
|
148
|
+
missingContext,
|
|
149
|
+
migrationCandidates,
|
|
150
|
+
spawnRecommendation
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function buildFeatureRecord(runtimeVersion, now) {
|
|
155
|
+
return {
|
|
156
|
+
'feature-set-version': FEATURE_SET_VERSION,
|
|
157
|
+
'runtime-version': runtimeVersion,
|
|
158
|
+
known: expectedFeatureIds(),
|
|
159
|
+
'last-awareness-refresh-at': now
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function sameFeatureRecord(existing, next) {
|
|
164
|
+
if (!existing) return false;
|
|
165
|
+
return existing['feature-set-version'] === next['feature-set-version']
|
|
166
|
+
&& existing['runtime-version'] === next['runtime-version']
|
|
167
|
+
&& JSON.stringify(existing.known || []) === JSON.stringify(next.known || []);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function applyStateAwareness(projectRoot, current, runtimeVersion, now) {
|
|
171
|
+
const nextRecord = buildFeatureRecord(runtimeVersion, now);
|
|
172
|
+
if (sameFeatureRecord(current['godpowers-features'], nextRecord)) {
|
|
173
|
+
return { written: false, record: current['godpowers-features'] };
|
|
174
|
+
}
|
|
175
|
+
const nextState = {
|
|
176
|
+
...current,
|
|
177
|
+
'godpowers-features': nextRecord
|
|
178
|
+
};
|
|
179
|
+
state.write(projectRoot, nextState);
|
|
180
|
+
return { written: true, record: nextRecord };
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function run(projectRoot, opts = {}) {
|
|
184
|
+
const before = detect(projectRoot, opts);
|
|
185
|
+
if (!before.initialized) {
|
|
186
|
+
return {
|
|
187
|
+
...before,
|
|
188
|
+
applied: false,
|
|
189
|
+
stateWritten: false,
|
|
190
|
+
contextResults: [],
|
|
191
|
+
reason: '.godpowers/state.json not found'
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const current = state.read(projectRoot);
|
|
196
|
+
const now = opts.now || new Date().toISOString();
|
|
197
|
+
const stateResult = applyStateAwareness(projectRoot, current, before.runtimeVersion, now);
|
|
198
|
+
const refreshedState = state.read(projectRoot);
|
|
199
|
+
const shouldRefreshContext = opts.refreshContext !== false;
|
|
200
|
+
const contextResults = shouldRefreshContext
|
|
201
|
+
? contextWriter.apply(projectRoot, refreshedState, { projectRoot })
|
|
202
|
+
: [];
|
|
203
|
+
const after = detect(projectRoot, opts);
|
|
204
|
+
|
|
205
|
+
return {
|
|
206
|
+
...after,
|
|
207
|
+
applied: true,
|
|
208
|
+
stateWritten: stateResult.written,
|
|
209
|
+
contextResults,
|
|
210
|
+
stateRecord: stateResult.record
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
module.exports = {
|
|
215
|
+
FEATURE_SET_VERSION,
|
|
216
|
+
FEATURES,
|
|
217
|
+
packageVersion,
|
|
218
|
+
detect,
|
|
219
|
+
run
|
|
220
|
+
};
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "godpowers",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.16",
|
|
4
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.",
|
|
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-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-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",
|
package/schema/state.v1.json
CHANGED
|
@@ -131,6 +131,32 @@
|
|
|
131
131
|
"additionalProperties": false
|
|
132
132
|
}
|
|
133
133
|
},
|
|
134
|
+
"godpowers-features": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"description": "Installed Godpowers feature awareness recorded for this project.",
|
|
137
|
+
"required": ["feature-set-version", "runtime-version", "known"],
|
|
138
|
+
"properties": {
|
|
139
|
+
"feature-set-version": {
|
|
140
|
+
"type": "integer",
|
|
141
|
+
"minimum": 1
|
|
142
|
+
},
|
|
143
|
+
"runtime-version": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"pattern": "^(unknown|\\d+\\.\\d+\\.\\d+)$"
|
|
146
|
+
},
|
|
147
|
+
"known": {
|
|
148
|
+
"type": "array",
|
|
149
|
+
"items": {
|
|
150
|
+
"type": "string"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"last-awareness-refresh-at": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"format": "date-time"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"additionalProperties": false
|
|
159
|
+
},
|
|
134
160
|
"yolo-decisions": {
|
|
135
161
|
"type": "array",
|
|
136
162
|
"description": "Auto-decisions made under --yolo. Mirrored to YOLO-DECISIONS.md.",
|
package/skills/god-context.md
CHANGED
|
@@ -33,10 +33,12 @@ the Godpowers fences off, check status, or refresh on demand.
|
|
|
33
33
|
|
|
34
34
|
1. Verify `.godpowers/` exists. If not, suggest `/god-init` first.
|
|
35
35
|
2. Read `.godpowers/state.json`.
|
|
36
|
-
3. Call `lib/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
3. Call `lib/feature-awareness.run(projectRoot)` to record current runtime
|
|
37
|
+
features and refresh managed AI-tool awareness safely.
|
|
38
|
+
4. Call `lib/pillars.detect(projectRoot)`.
|
|
39
|
+
5. If Pillars is absent or partial, call `lib/pillars.init(projectRoot)`.
|
|
40
|
+
6. Spawn `god-context-writer` agent with the requested mode.
|
|
41
|
+
7. Report results.
|
|
40
42
|
|
|
41
43
|
## What gets written
|
|
42
44
|
|
|
@@ -136,6 +138,14 @@ When `/god-sync` runs (after a project run, or any sync), `god-updater` calls th
|
|
|
136
138
|
with `refresh` to keep `AGENTS.md` content aligned with the latest project
|
|
137
139
|
state (mode, scale, completed tiers, active artifacts).
|
|
138
140
|
|
|
141
|
+
For existing projects after a Godpowers upgrade, `/god-context refresh`
|
|
142
|
+
auto-invokes `lib/feature-awareness.run(projectRoot)`. Report it as:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Agent: none, local runtime only
|
|
146
|
+
Why: this path records current runtime features and refreshes managed context fences
|
|
147
|
+
```
|
|
148
|
+
|
|
139
149
|
You can disable the Godpowers fences by running `/god-context off`. Pillars
|
|
140
150
|
remains because it is the native context contract for Godpowers projects.
|
|
141
151
|
|
|
@@ -146,7 +156,7 @@ The fenced content contains:
|
|
|
146
156
|
- Mode (greenfield/brownfield/audit) and scale
|
|
147
157
|
- A short list of completed-tier artifact paths
|
|
148
158
|
- Quarterback rule reminder
|
|
149
|
-
-
|
|
159
|
+
- Short useful slash command list
|
|
150
160
|
|
|
151
161
|
It does NOT contain:
|
|
152
162
|
- Secrets, credentials, API keys
|
package/skills/god-doctor.md
CHANGED
|
@@ -32,6 +32,8 @@ Run a system-state diagnostic. Build nothing. Touch nothing. Report only.
|
|
|
32
32
|
5. Is the reflog (`.godpowers/log`) parseable?
|
|
33
33
|
6. Are there entries in `.godpowers/.trash/`?
|
|
34
34
|
7. Do declared linkage entries point at real code files?
|
|
35
|
+
8. Does `state.json` know the current Godpowers feature set?
|
|
36
|
+
9. Are managed AI-tool context fences present when tools are detected?
|
|
35
37
|
|
|
36
38
|
### External integration health
|
|
37
39
|
1. Is impeccable present? `node_modules/impeccable` or `~/.claude/skills/impeccable`?
|
|
@@ -53,6 +55,7 @@ Install: claude (~/.claude/)
|
|
|
53
55
|
|
|
54
56
|
Project: /Users/.../my-project/.godpowers/
|
|
55
57
|
[OK] state.json valid
|
|
58
|
+
[WARN] feature awareness stale -> run /god-context refresh
|
|
56
59
|
[WARN] PRD declared but .godpowers/prd/PRD.md missing -> run /god-prd
|
|
57
60
|
[INFO] 2 entries in .trash/; run /god-restore to review
|
|
58
61
|
|
|
@@ -96,12 +99,29 @@ Skip install checks. Useful inside the project.
|
|
|
96
99
|
### `/god-doctor --fix`
|
|
97
100
|
Attempt to repair detected issues automatically (only for safe categories: regenerate missing routing YAMLs, repair PROGRESS.md from state.json, etc.). Pauses before any destructive change.
|
|
98
101
|
|
|
102
|
+
## Feature Awareness
|
|
103
|
+
|
|
104
|
+
For initialized projects, `/god-doctor` calls `lib/feature-awareness.detect`
|
|
105
|
+
as a read-only diagnostic. It reports:
|
|
106
|
+
- runtime version recorded in `state.json`
|
|
107
|
+
- missing current Godpowers feature IDs
|
|
108
|
+
- missing managed AI-tool context fences
|
|
109
|
+
- unimported GSD, BMAD, or Superpowers evidence that should route to
|
|
110
|
+
`/god-migrate`
|
|
111
|
+
- `god-greenfieldifier` recommendation when migration evidence is low
|
|
112
|
+
confidence or conflicting
|
|
113
|
+
|
|
114
|
+
`/god-doctor --fix` may call `lib/feature-awareness.run(projectRoot)` because
|
|
115
|
+
that helper writes only safe state metadata and managed context fences.
|
|
116
|
+
|
|
99
117
|
## Implementation
|
|
100
118
|
|
|
101
119
|
Built-in, no spawned agent. Reads:
|
|
102
120
|
- `<runtime>/GODPOWERS_VERSION` (compare to package.json)
|
|
103
121
|
- `<runtime>/skills/` and `<runtime>/agents/` listings
|
|
104
122
|
- `.godpowers/state.json`, `intent.yaml`, `log`, `linkage.json`
|
|
123
|
+
- `lib/feature-awareness.detect(projectRoot)` for existing-project upgrade
|
|
124
|
+
awareness
|
|
105
125
|
- `bin/install.js` VERSION constant
|
|
106
126
|
|
|
107
127
|
## Exit codes
|
package/skills/god-mode.md
CHANGED
|
@@ -304,6 +304,7 @@ Sync status:
|
|
|
304
304
|
Trigger: /god-mode final sync
|
|
305
305
|
Agent: god-updater spawned
|
|
306
306
|
Local syncs:
|
|
307
|
+
+ feature-awareness: <recorded runtime features, refreshed context, or no-op>
|
|
307
308
|
+ reverse-sync: <counts and result>
|
|
308
309
|
+ pillars-sync: <counts and result>
|
|
309
310
|
+ checkpoint-sync: <created, updated, no-op, or skipped>
|
|
@@ -318,6 +319,11 @@ to relevant pillar files through `lib/pillars.planArtifactSync`. Default mode
|
|
|
318
319
|
proposes pillar updates for review. `--yolo` applies them immediately and logs
|
|
319
320
|
the action to `.godpowers/YOLO-DECISIONS.md`.
|
|
320
321
|
|
|
322
|
+
When `/god-mode` resumes an existing `.godpowers` project, it auto-invokes
|
|
323
|
+
`lib/feature-awareness.run(projectRoot)` before the final sync report. This
|
|
324
|
+
keeps upgraded projects aware of new runtime features, current context fences,
|
|
325
|
+
and migration routes without rewriting user artifacts.
|
|
326
|
+
|
|
321
327
|
If `/god-mode` resumes an existing `.godpowers` project that lacks Pillars,
|
|
322
328
|
it Pillar-izes the project before continuing. Existing `.godpowers` artifacts
|
|
323
329
|
become managed source references in the relevant `agents/*.md` files.
|
|
@@ -337,6 +343,7 @@ Sync status:
|
|
|
337
343
|
Trigger: /god-mode final sync
|
|
338
344
|
Agent: god-updater spawned
|
|
339
345
|
Local syncs:
|
|
346
|
+
+ feature-awareness: <recorded runtime features, refreshed context, or no-op>
|
|
340
347
|
+ reverse-sync: <counts and result>
|
|
341
348
|
+ pillars-sync: <counts and result>
|
|
342
349
|
+ checkpoint-sync: <created, updated, no-op, or skipped>
|
package/skills/god-sync.md
CHANGED
|
@@ -29,14 +29,17 @@ User runs `/god-sync` after manual changes. Useful for:
|
|
|
29
29
|
## Setup
|
|
30
30
|
|
|
31
31
|
1. Verify `.godpowers/` exists
|
|
32
|
-
2. Call `lib/
|
|
32
|
+
2. Call `lib/feature-awareness.run(projectRoot)` so existing projects learn
|
|
33
|
+
about newly installed Godpowers runtime capabilities before sync closes.
|
|
34
|
+
Report this as `Agent: none, local runtime only`.
|
|
35
|
+
3. Call `lib/pillars.pillarizeExisting(projectRoot)` if Pillars is absent or
|
|
33
36
|
partial, because every Godpowers project must also carry native Pillars
|
|
34
37
|
context.
|
|
35
|
-
|
|
38
|
+
4. If `state.json` contains enabled `source-systems`, auto-invoke
|
|
36
39
|
`lib/source-sync.run(projectRoot)` so current Godpowers progress is written
|
|
37
40
|
back to imported GSD, BMAD, or Superpowers companion files. Report this as
|
|
38
41
|
`Agent: none, local runtime only`.
|
|
39
|
-
|
|
42
|
+
5. Spawn god-updater in fresh context with:
|
|
40
43
|
- The reconciliation verdict (if available from a prior /god-reconcile)
|
|
41
44
|
- Or: re-run reconciliation against current state to detect what changed
|
|
42
45
|
- Recent commits for context
|
|
@@ -48,7 +51,7 @@ Auto-invoked:
|
|
|
48
51
|
Trigger: <manual /god-sync, recipe closeout, /god-mode final sync, or other source>
|
|
49
52
|
Agent: god-updater
|
|
50
53
|
Local syncs:
|
|
51
|
-
- pending: reverse-sync, source-sync, pillars-sync, checkpoint-sync, context-refresh
|
|
54
|
+
- pending: feature-awareness, reverse-sync, source-sync, pillars-sync, checkpoint-sync, context-refresh
|
|
52
55
|
Artifacts: pending
|
|
53
56
|
Log: .godpowers/SYNC-LOG.md
|
|
54
57
|
```
|
|
@@ -73,6 +76,7 @@ Sync status:
|
|
|
73
76
|
Agent: god-updater spawned
|
|
74
77
|
Local syncs:
|
|
75
78
|
+ reverse-sync: <scanned N files, updated M footers, populated K review items>
|
|
79
|
+
+ feature-awareness: <recorded runtime features, refreshed context, or no-op>
|
|
76
80
|
+ source-sync: <written GSD/BMAD/Superpowers companion files, no-op, or skipped>
|
|
77
81
|
+ pillars-sync: <updated N pillar files, no-op, or proposed>
|
|
78
82
|
+ checkpoint-sync: <CHECKPOINT.md updated or skipped>
|
package/skills/god-version.md
CHANGED
|
@@ -14,11 +14,12 @@ Print version and a short capability summary.
|
|
|
14
14
|
## Output
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
Godpowers v1.6.
|
|
17
|
+
Godpowers v1.6.16
|
|
18
18
|
Install: /Users/.../.claude/ (matches package.json)
|
|
19
19
|
Surface: 109 skills, 40 agents, 13 workflows, 36 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
|
+
Feature awareness: planning-system migration, source-system sync-back, context refresh
|
|
22
23
|
```
|
|
23
24
|
|
|
24
25
|
## Subcommands
|