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 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
  [![CI](https://github.com/aihxp/godpowers/actions/workflows/ci.yml/badge.svg)](https://github.com/aihxp/godpowers/actions/workflows/ci.yml)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
- [![Version](https://img.shields.io/badge/version-1.6.15-blue)](CHANGELOG.md)
5
+ [![Version](https://img.shields.io/badge/version-1.6.16-blue)](CHANGELOG.md)
6
6
  [![npm](https://img.shields.io/npm/v/godpowers.svg)](https://www.npmjs.com/package/godpowers)
7
7
 
8
8
  **Ship fast. Ship right. Ship everything. Ship accountably.**
@@ -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.15 adds planning-system migration for teams arriving from GSD,
16
- BMAD, or Superpowers. `/god-init` now auto-detects those systems, imports
17
- useful context into Godpowers prep and seed artifacts, and records source
18
- systems in `state.json`. `/god-sync` now syncs current Godpowers progress back
19
- to managed companion files so teams can return to the prior system with a clear
20
- handoff trail. Ambiguous imports can auto-spawn `god-greenfieldifier` for a
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
- - [1.5 Release Notes](RELEASE.md)
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.15 Release
1
+ # Godpowers 1.6.16 Release
2
2
 
3
3
  Date: 2026-05-16
4
4
 
5
- Godpowers 1.6.15 adds automatic migration from GSD, BMAD, and Superpowers
6
- projects into Godpowers. The release also adds managed sync-back so a team can
7
- return to its prior planning system with current Godpowers progress visible.
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
- - GSD-style proposition closeouts for exploratory, diagnostic, audit,
24
- lifecycle, status, reconciliation, and decision-support outputs
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/planning-systems.js` for GSD, BMAD, and Superpowers detection.
30
- - Added `lib/source-sync.js` for managed sync-back companion files.
31
- - Added `/god-migrate` as the explicit migration command.
32
- - `/god-init` now auto-invokes planning-system import when source systems are
33
- detected.
34
- - `/god-sync` now auto-invokes source-system sync-back when enabled source
35
- systems are recorded in `state.json`.
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
- ## Migration behavior
37
+ ## Awareness behavior
41
38
 
42
- Godpowers detects:
39
+ For an initialized `.godpowers` project, the helper:
43
40
 
44
- - GSD: `.planning/`, `.gsd/`, `GSD.md`, and `gsd*.md`
45
- - BMAD: `_bmad/`, `_bmad-output/`, `.bmad-core/`, `.bmad/`, and `BMAD.md`
46
- - Superpowers: `docs/superpowers/`, `.superpowers/`, `SUPERPOWERS.md`, and
47
- project-local skills
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
- Imported context is written to `.godpowers/prep/IMPORTED-CONTEXT.md`.
50
- Missing Godpowers seed artifacts are created only when source evidence exists.
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
- The import path is local runtime work and must be reported as:
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
- The sync-back path is also local runtime work and must be reported the same
75
- way.
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-reverse-sync.js`
87
- - `npm test`
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.15` git tag points to the release commit that matches the npm
93
- `godpowers@1.6.15` package.
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. |
@@ -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-lint` - validate artifacts against have-nots');
103
- lines.push('- `/god-scan` - rebuild linkage map from code');
104
- lines.push('- `/god-review-changes` - walk REVIEW-REQUIRED.md');
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.15",
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",
@@ -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.",
@@ -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/pillars.detect(projectRoot)`.
37
- 4. If Pillars is absent or partial, call `lib/pillars.init(projectRoot)`.
38
- 5. Spawn `god-context-writer` agent with the requested mode.
39
- 6. Report results.
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
- - Top 4 useful slash commands
159
+ - Short useful slash command list
150
160
 
151
161
  It does NOT contain:
152
162
  - Secrets, credentials, API keys
@@ -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
@@ -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>
@@ -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/pillars.pillarizeExisting(projectRoot)` if Pillars is absent or
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
- 3. If `state.json` contains enabled `source-systems`, auto-invoke
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
- 4. Spawn god-updater in fresh context with:
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>
@@ -14,11 +14,12 @@ Print version and a short capability summary.
14
14
  ## Output
15
15
 
16
16
  ```
17
- Godpowers v1.6.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