godpowers 2.1.0 → 2.1.1

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
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.1.1] - 2026-05-30
11
+
12
+ ### Changed
13
+ - The context off-switch now empties the canonical `AGENTS.md` instead of
14
+ deleting it; auto-generated pointer files (`CLAUDE.md`, `.cursorrules`, etc.)
15
+ are still removed when only the Godpowers fence remains
16
+ (`lib/context-writer.js`).
17
+
18
+ ### Fixed
19
+ - Documentation: dropped unverifiable external impeccable rule/finding counts;
20
+ reconciled the project-mode taxonomy (A/B/C/E primary modes, with D as the
21
+ orthogonal multi-repo suite overlay) in `concepts.md` and `ROADMAP.md`;
22
+ documented all `lib/` modules in `lib/README.md`; and clarified how the
23
+ artifact-category counts relate in `greenfield-coverage.md`.
24
+
10
25
  ## [2.1.0] - 2026-05-30
11
26
 
12
27
  ### Security
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-2.1.0-blue)](CHANGELOG.md)
5
+ [![Version](https://img.shields.io/badge/version-2.1.1-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.**
@@ -21,7 +21,7 @@ Godpowers makes AI coding accountable: every serious run should leave disk
21
21
  state, artifacts, validation gates, host guarantees, and a next action. Code is
22
22
  only one output. The project memory and proof trail matter too.
23
23
 
24
- Version 2.1.0 keeps the proof loop executable. `npx godpowers quick-proof
24
+ Version 2.1.1 keeps the proof loop executable. `npx godpowers quick-proof
25
25
  --project=.` now renders a shipped fixture with real `.godpowers/state.json`,
26
26
  computed next action, missing-artifact visibility, and host guarantees. The
27
27
  2.0 line also ships a proof transcript, adoption canary harness, published npm
package/RELEASE.md CHANGED
@@ -1,11 +1,11 @@
1
- # Godpowers 2.1.0 Release
1
+ # Godpowers 2.1.1 Release
2
2
 
3
3
  Date: 2026-05-30
4
4
 
5
- Godpowers 2.1.0 is the security and drift hardening release. It keeps the 2.0
6
- proof, request-trace, and command surfaces stable while closing a
7
- command-injection vector, hardening runtime file handling and the installer,
8
- and reconciling documentation drift across the repository.
5
+ Godpowers 2.1.1 is a documentation and off-switch safety patch on top of the
6
+ 2.1.0 security release. The public slash-command surface, runtime behavior, and
7
+ artifact layout are unchanged except for one safety improvement to the context
8
+ off-switch.
9
9
 
10
10
  ## What is stable
11
11
 
@@ -15,45 +15,25 @@ and reconciling documentation drift across the repository.
15
15
  - 40 intent recipes
16
16
  - 15-runtime installer
17
17
  - Codex installs with generated `god-*.toml` agent metadata files
18
- - Markdown specialist agent contracts at `<runtime>/agents/god-*.md`
19
18
  - Shared runtime bundle at `<runtime>/godpowers-runtime`
20
19
  - Native Pillars project context through `AGENTS.md` and `agents/*.md`
21
20
  - `.godpowers/` workflow state and artifact layout
22
- - Dashboard action briefs for next-step compression
23
- - Dashboard host guarantees for full, degraded, and unknown runtime capability
24
- - `godpowers status --project .` and `godpowers next --project .`
25
- - `godpowers quick-proof --project .`
26
- - Planning-system migration for GSD, BMAD, and Superpowers
27
- - Repository documentation, repository surface, route quality, recipe coverage,
28
- and release surface sync checks
29
- - Messy-repo dogfood scenarios
30
- - Extension authoring scaffold helper
31
- - Mode D suite release dry-run planner
21
+ - `godpowers status --project .`, `godpowers next --project .`, and
22
+ `godpowers quick-proof --project .`
32
23
  - Release gate enforcement through `npm run release:check`
24
+ - The 2.1.0 security hardening (argv-only browser exec, corrupt-file parse
25
+ guards, clean-replace installs, prototype-pollution guards)
33
26
 
34
27
  ## What is new
35
28
 
36
- - Closed a command-injection vector in `lib/agent-browser-driver.js`. CLI
37
- arguments now flow through an argv array with the shell disabled, so URLs,
38
- selectors, and eval expressions sourced from project content or CLI flags
39
- cannot be interpreted as shell syntax.
40
- - Guarded runtime JSON parsing of `state.json` and `events.jsonl` against
41
- corrupt or partially-written files, replacing uncaught crashes with clear
42
- errors or skipped torn lines.
43
- - Corrected the review registry path to `.godpowers/REVIEW-REQUIRED.md` so the
44
- dashboard and automation see review items and the off-switch no longer
45
- deletes a repo-root file.
46
- - Made data-directory and runtime-bundle installs a clean replace so version
47
- upgrades never leave behind files that no longer ship.
48
- - Narrowed `agent-cache` deletion scope, added extension-scaffold name
49
- validation, added prototype-pollution guards to the YAML/manifest parser and
50
- router, and limited installer symlink reproduction to the source tree.
51
- - Added a skill/agent prose reference validator wired into the agent-ref test
52
- gate, wired have-not `A-13` into the architecture gate, and softened brittle
53
- exact-count tests to floors.
54
- - Reconciled documentation drift across README, ARCHITECTURE, ARCHITECTURE-MAP,
55
- docs, references, and skills (counts, linkage paths, HAVE-NOTS tally, stale
56
- sample output).
29
+ - The context off-switch now empties the canonical `AGENTS.md` instead of
30
+ deleting it; auto-generated pointer files (`CLAUDE.md`, `.cursorrules`, etc.)
31
+ are still removed when only the Godpowers fence remains.
32
+ - Documentation reconciliation: removed unverifiable external impeccable
33
+ rule/finding counts; aligned the project-mode taxonomy with the runtime
34
+ (A/B/C/E primary modes, with D as the orthogonal multi-repo suite overlay);
35
+ documented every `lib/` module; and clarified how the artifact-category counts
36
+ relate.
57
37
 
58
38
  ## Guardrails
59
39
 
@@ -61,10 +41,6 @@ and reconciling documentation drift across the repository.
61
41
  - The runtime remains dependency-free.
62
42
  - `bin/install.js` stays a thin CLI entry point and delegates install behavior
63
43
  to `lib/installer-core.js`.
64
- - Every `child_process` call site uses an argv array with the shell disabled.
65
- - `scripts/static-check.js` continues to verify async APIs, JSDoc typedefs,
66
- agent-ref test coverage, shared harness adoption, skill metadata source
67
- parsing, and God Mode runbook delegation.
68
44
 
69
45
  ## Validation
70
46
 
@@ -77,7 +53,7 @@ Release validation includes:
77
53
  - `npm pack --json`
78
54
  - local install smoke tests across supported runtime shapes
79
55
  - npm publish when registry credentials are available
80
- - GitHub release creation for `v2.1.0`
56
+ - GitHub release creation for `v2.1.1`
81
57
 
82
- The `v2.1.0` tag should point to the release commit that matches the npm
83
- `godpowers@2.1.0` package.
58
+ The `v2.1.1` tag should point to the release commit that matches the npm
59
+ `godpowers@2.1.1` package.
package/SKILL.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: godpowers
3
- version: 2.1.0
3
+ version: 2.1.1
4
4
  description: |
5
5
  AI-powered development system that takes a project from raw idea to hardened
6
6
  production. Fuses artifact discipline, execution engine, quality enforcement,
package/lib/README.md CHANGED
@@ -22,6 +22,7 @@ package-level integrations.
22
22
  | `dogfood-runner.js` | Run deterministic messy-repo scenarios against migration, host, extension, and suite release behavior. |
23
23
  | `budget.js` | Read and enforce configured budget controls. |
24
24
  | `cost-tracker.js` | Track token and cost estimates from event streams. |
25
+ | `fs-async.js` | Promise-based file read/write helpers for non-blocking runtime paths. |
25
26
 
26
27
  ## Events and observability
27
28
 
@@ -43,6 +44,8 @@ package-level integrations.
43
44
  | `workflow-runner.js` | Execute workflow steps with validation hooks. |
44
45
  | `agent-cache.js` | Cache agent metadata for faster routing. |
45
46
  | `agent-validator.js` | Validate agent frontmatter and contracts. |
47
+ | `agent-refs.js` | Validate workflow agent references and scan skill/agent prose for phantom references. |
48
+ | `skill-surface.js` | Derive slash-command metadata from the individual `skills/` files. |
46
49
 
47
50
  ## Artifact quality
48
51
 
@@ -71,6 +74,7 @@ package-level integrations.
71
74
  | `impeccable-bridge.js` | Bridge runtime checks into impeccable quality workflows. |
72
75
  | `extensions.js` | Load and validate extension packs. |
73
76
  | `extension-authoring.js` | Scaffold publishable extension packs with manifest, package, README, skill, agent, and workflow files. |
77
+ | `pillars.js` | Manage the Pillars project-context layer (`AGENTS.md` plus routed `agents/*.md`). |
74
78
 
75
79
  ## Repository and graph helpers
76
80
 
@@ -87,5 +91,17 @@ package-level integrations.
87
91
  | `review-required.js` | Decide when review gates should block progress. |
88
92
  | `suite-state.js` | Manage state across registered project suites. |
89
93
 
94
+ ## Installer, dashboard, and CLI helpers
95
+
96
+ | Module | Purpose |
97
+ |--------|---------|
98
+ | `installer-core.js` | Install and uninstall the Godpowers surface for each runtime. |
99
+ | `installer-files.js` | File-copy helpers shared by the installer and its tests. |
100
+ | `installer-args.js` | Parse `bin/install.js` arguments and subcommands. |
101
+ | `installer-runtimes.js` | Map supported runtimes to their config directories. |
102
+ | `automation-providers.js` | Detect and configure host-native automation providers. |
103
+ | `dashboard.js` | Compute the next-step action brief and host guarantee line. |
104
+ | `quick-proof.js` | Render the shipped proof fixture for `godpowers quick-proof`. |
105
+
90
106
  See `../ARCHITECTURE.md` for system design and `../docs/ROADMAP.md` for planned
91
107
  runtime work.
@@ -216,15 +216,21 @@ function writeFenced(filePath, sectionContent) {
216
216
  }
217
217
 
218
218
  /**
219
- * Remove the Godpowers fence from a file. Leaves the rest untouched. If the
220
- * file becomes empty (whitespace only), removes it.
219
+ * Remove the Godpowers fence from a file. Leaves the rest untouched. If only
220
+ * the fence remained, an auto-generated pointer file is deleted; with
221
+ * { preserveFile: true } the file is emptied instead of deleted (used for the
222
+ * canonical AGENTS.md so the off-switch never removes the user's primary file).
221
223
  */
222
- function removeFenced(filePath) {
224
+ function removeFenced(filePath, opts = {}) {
223
225
  if (!fs.existsSync(filePath)) return { removed: false, reason: 'missing' };
224
226
  const parsed = readFenced(filePath);
225
227
  if (parsed.fenced === '') return { removed: false, reason: 'no-fence' };
226
228
  let remaining = `${parsed.before}${parsed.after}`.replace(/\n{3,}/g, '\n\n').trim();
227
229
  if (remaining === '') {
230
+ if (opts.preserveFile) {
231
+ fs.writeFileSync(filePath, '');
232
+ return { removed: true, fileDeleted: false, emptied: true };
233
+ }
228
234
  fs.unlinkSync(filePath);
229
235
  return { removed: true, fileDeleted: true };
230
236
  }
@@ -284,8 +290,11 @@ function apply(projectRoot, state, opts = {}) {
284
290
  * Remove all Godpowers fences from canonical + pointers (off-switch).
285
291
  */
286
292
  function clearAll(projectRoot) {
287
- const targets = [
288
- path.join(projectRoot, 'AGENTS.md'),
293
+ // The canonical AGENTS.md is the user's primary context file: empty it rather
294
+ // than delete it. The remaining targets are auto-generated pointer files that
295
+ // Godpowers owns outright, so they are deleted when only the fence remains.
296
+ const canonical = path.join(projectRoot, 'AGENTS.md');
297
+ const pointers = [
289
298
  path.join(projectRoot, 'CLAUDE.md'),
290
299
  path.join(projectRoot, 'GEMINI.md'),
291
300
  path.join(projectRoot, '.cursorrules'),
@@ -300,7 +309,9 @@ function clearAll(projectRoot) {
300
309
  path.join(projectRoot, '.agents', 'skills', 'godpowers.md')
301
310
  ];
302
311
  const results = [];
303
- for (const t of targets) {
312
+ const rc = removeFenced(canonical, { preserveFile: true });
313
+ if (rc.removed) results.push({ path: canonical, ...rc });
314
+ for (const t of pointers) {
304
315
  const r = removeFenced(t);
305
316
  if (r.removed) results.push({ path: t, ...r });
306
317
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "godpowers",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
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"
@@ -50,7 +50,7 @@ GODPOWERS DOCTOR
50
50
  Install: claude (~/.claude/)
51
51
  [OK] 110 skills installed
52
52
  [OK] 40 agents installed
53
- [OK] VERSION matches (2.1.0)
53
+ [OK] VERSION matches (2.1.1)
54
54
  [WARN] routing/god-doctor.yaml exists but skill file did not until now
55
55
 
56
56
  Project: /Users/.../my-project/.godpowers/
@@ -14,7 +14,7 @@ Print version and a short capability summary.
14
14
  ## Output
15
15
 
16
16
  ```
17
- Godpowers v2.1.0
17
+ Godpowers v2.1.1
18
18
  Install: /Users/.../.claude/ (matches package.json)
19
19
  Surface: 110 skills, 40 agents, 13 workflows, 40 recipes
20
20
  Schema: intent.v1, state.v1, events.v1, workflow.v1, routing.v1, recipe.v1