godpowers 1.6.1 → 1.6.2

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,32 @@ 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.2] - 2026-05-16
9
+
10
+ Codex agent metadata compatibility patch. Keeps the public command surface
11
+ stable while making installed Godpowers specialist agents spawnable in Codex
12
+ sessions that require per-agent TOML metadata.
13
+
14
+ ### Added
15
+ - Added Codex agent metadata generation during `--codex` installs. Every
16
+ `agents/god-*.md` file now gets a matching `god-*.toml` file with name,
17
+ description, sandbox mode, and developer instructions.
18
+ - Added install smoke coverage that verifies all 39 Godpowers agents receive
19
+ Codex metadata.
20
+ - Added `--all` installer coverage for all 15 supported runtimes, including
21
+ Claude Code, Codex, and Pi.
22
+
23
+ ### Changed
24
+ - Codex runtime support now declares its agent metadata behavior explicitly in
25
+ the installer instead of relying on an inline special case.
26
+ - Non-Codex runtimes keep their existing markdown agent install format.
27
+
28
+ ### Guardrails
29
+ - This patch does not add slash commands, agents, workflows, recipes, schemas,
30
+ or public artifact formats.
31
+ - The Codex metadata is generated from the existing agent markdown specs so the
32
+ Godpowers agent source of truth stays in `agents/*.md`.
33
+
8
34
  ## [1.6.1] - 2026-05-15
9
35
 
10
36
  Release hardening patch. Keeps the 1.6 domain precision surface stable while
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.1-blue)](CHANGELOG.md)
5
+ [![Version](https://img.shields.io/badge/version-1.6.2-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,9 +12,10 @@ 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.1 hardens the release path around the 1.6 domain precision layer:
16
- release checks now cover tests, audit, package contents, E2E smoke, and npm
17
- payload verification before publishing.
15
+ Version 1.6.2 hardens Codex agent integration around the 1.6 domain precision
16
+ layer: Codex installs now include per-agent TOML metadata for all 39
17
+ Godpowers specialist agents, while release checks cover every supported
18
+ runtime surface.
18
19
 
19
20
  It fuses four disciplines into one unified workflow:
20
21
 
@@ -46,6 +47,7 @@ T3 Code is transparently supported through the underlying agent.
46
47
  The installer copies:
47
48
  - Slash command skills to `<runtime>/skills/`
48
49
  - Specialist agents to `<runtime>/agents/`
50
+ - Codex agent metadata to `<runtime>/agents/*.toml`
49
51
  - SessionStart hook (Claude Code only) to `<runtime>/hooks/`
50
52
 
51
53
  ## Usage
package/RELEASE.md CHANGED
@@ -1,11 +1,11 @@
1
- # Godpowers 1.6.1 Release
1
+ # Godpowers 1.6.2 Release
2
2
 
3
- Date: 2026-05-15
3
+ Date: 2026-05-16
4
4
 
5
- Godpowers 1.6.1 hardens the release and package path around the 1.6 domain
6
- precision release. The goal of this patch is to make tests, audit checks,
7
- package contents, E2E smoke coverage, npm publishing, and GitHub release
8
- metadata easier to verify before anything reaches users.
5
+ Godpowers 1.6.2 hardens Codex agent integration around the stable 1.6 domain
6
+ precision release. The goal of this patch is to make every installed
7
+ Godpowers specialist agent spawnable in Codex sessions that require per-agent
8
+ metadata, without changing the public command surface.
9
9
 
10
10
  ## What is stable
11
11
 
@@ -14,6 +14,7 @@ metadata easier to verify before anything reaches users.
14
14
  - 13 executable workflows
15
15
  - 36 intent recipes
16
16
  - 15-runtime installer
17
+ - Codex installs with 39 generated `god-*.toml` agent metadata files
17
18
  - Native Pillars project context through `AGENTS.md` and `agents/*.md`
18
19
  - `.godpowers/` workflow state and artifact layout
19
20
  - Core schemas: intent, state, events, workflow, routing, recipes, extension
@@ -24,24 +25,22 @@ metadata easier to verify before anything reaches users.
24
25
 
25
26
  ## What is new
26
27
 
27
- - `npm run release:check` now runs tests, audit checks, and package contents
28
- verification as a single pre-release gate.
29
- - `npm run pack:check` now asserts required npm payload files and rejects
30
- local-only files instead of relying on visual dry-run output.
31
- - CI now installs with `npm ci`, runs audit checks, runs E2E smoke explicitly,
32
- and keeps package validation tied to local scripts.
33
- - `docs/RELEASE-CHECKLIST.md` documents the expected release flow, tag flow,
34
- npm provenance path, and post-release verification.
35
- - `/god-mode` full-arc has a plan-mode E2E smoke test that verifies 10 jobs,
36
- 7 waves, and a generated `.godpowers/runs/.../plan.yaml` artifact.
37
- - Stale placeholder docs for runtime libraries, references, and test strategy
38
- now describe the implemented system.
39
-
40
- ## What 1.6.1 means
41
-
42
- Godpowers 1.6.1 does not expand the public command surface. It tightens the
43
- release discipline around the existing surface so local checks, CI checks, npm
44
- payload contents, git tags, and GitHub release metadata agree.
28
+ - Codex runtime support now declares an `agentMetadata: "toml"` capability in
29
+ the installer.
30
+ - Codex installs generate a matching TOML metadata file for every
31
+ `agents/god-*.md` source file.
32
+ - Codex metadata includes agent name, description, workspace-write sandbox
33
+ mode, and developer instructions derived from the markdown agent spec.
34
+ - Install smoke tests now verify all 39 Codex metadata files, plus
35
+ runtime-specific install surfaces for all 15 supported runtimes.
36
+ - Claude Code, Pi, and the other non-Codex runtimes keep their existing
37
+ markdown agent install behavior.
38
+
39
+ ## What 1.6.2 means
40
+
41
+ Godpowers 1.6.2 does not expand the public command surface. It tightens the
42
+ runtime compatibility path so the installed Codex agent registry can see the
43
+ same Godpowers agents already shipped in `agents/*.md`.
45
44
 
46
45
  The domain glossary remains preparation context. PRD, ARCH, ROADMAP, STACK,
47
46
  docs, and Pillars files still carry durable decisions for their own domains.
@@ -51,8 +50,8 @@ docs, and Pillars files still carry durable decisions for their own domains.
51
50
  During the 1.x stability window, do not add broad new command families, change
52
51
  schema formats, or rename public artifacts without evidence from real use.
53
52
 
54
- The `v1.6.1` git tag points to the release commit that matches the npm
55
- `godpowers@1.6.1` package. Public publishes should prefer the tag-triggered
53
+ The `v1.6.2` git tag points to the release commit that matches the npm
54
+ `godpowers@1.6.2` package. Public publishes should prefer the tag-triggered
56
55
  GitHub workflow so npm provenance, git history, and release notes stay aligned.
57
56
 
58
57
  Allowed changes:
package/bin/install.js CHANGED
@@ -36,6 +36,7 @@ const RUNTIMES = {
36
36
  configDir: path.join(os.homedir(), '.codex'),
37
37
  skillsDir: 'skills',
38
38
  configFile: 'config.toml',
39
+ agentMetadata: 'toml',
39
40
  },
40
41
  cursor: {
41
42
  name: 'Cursor',
@@ -182,6 +183,84 @@ function installSkillFile(srcFile, skillsDest, runtimeKey, targetName = null) {
182
183
  fs.copyFileSync(srcFile, path.join(skillsDest, `${baseName}.md`));
183
184
  }
184
185
 
186
+ function parseAgentFrontmatter(content) {
187
+ const fallback = { name: null, description: null };
188
+ if (!content.startsWith('---\n')) return fallback;
189
+
190
+ const end = content.indexOf('\n---', 4);
191
+ if (end === -1) return fallback;
192
+
193
+ const lines = content.slice(4, end).split('\n');
194
+ const parsed = { ...fallback };
195
+
196
+ for (let i = 0; i < lines.length; i++) {
197
+ const line = lines[i];
198
+ const nameMatch = line.match(/^name:\s*(.+)\s*$/);
199
+ if (nameMatch) {
200
+ parsed.name = nameMatch[1].replace(/^["']|["']$/g, '');
201
+ continue;
202
+ }
203
+
204
+ if (line === 'description: |') {
205
+ const desc = [];
206
+ i++;
207
+ while (i < lines.length && /^ {2}/.test(lines[i])) {
208
+ desc.push(lines[i].slice(2));
209
+ i++;
210
+ }
211
+ i--;
212
+ parsed.description = desc.join('\n').trim();
213
+ continue;
214
+ }
215
+
216
+ const descMatch = line.match(/^description:\s*(.+)\s*$/);
217
+ if (descMatch) {
218
+ parsed.description = descMatch[1].replace(/^["']|["']$/g, '');
219
+ }
220
+ }
221
+
222
+ return parsed;
223
+ }
224
+
225
+ function stripFrontmatter(content) {
226
+ if (!content.startsWith('---\n')) return content.trim();
227
+ const end = content.indexOf('\n---', 4);
228
+ if (end === -1) return content.trim();
229
+ return content.slice(end + 4).trim();
230
+ }
231
+
232
+ function tomlString(value) {
233
+ return JSON.stringify(value || '');
234
+ }
235
+
236
+ function tomlLiteral(value) {
237
+ return `'''\n${(value || '').replace(/'''/g, "'''\\'''")}\n'''`;
238
+ }
239
+
240
+ function writeCodexAgentToml(srcFile, agentsDest) {
241
+ const content = fs.readFileSync(srcFile, 'utf8');
242
+ const frontmatter = parseAgentFrontmatter(content);
243
+ const name = frontmatter.name || path.basename(srcFile, '.md');
244
+ const description = frontmatter.description || `Godpowers specialist agent: ${name}.`;
245
+ const instructions = stripFrontmatter(content);
246
+ const toml = [
247
+ `name = ${tomlString(name)}`,
248
+ `description = ${tomlString(description)}`,
249
+ 'sandbox_mode = "workspace-write"',
250
+ `developer_instructions = ${tomlLiteral(instructions)}`,
251
+ ''
252
+ ].join('\n');
253
+
254
+ fs.writeFileSync(path.join(agentsDest, `${name}.toml`), toml);
255
+ }
256
+
257
+ function installAgentFile(srcFile, agentsDest, runtime) {
258
+ fs.copyFileSync(srcFile, path.join(agentsDest, path.basename(srcFile)));
259
+ if (runtime.agentMetadata === 'toml') {
260
+ writeCodexAgentToml(srcFile, agentsDest);
261
+ }
262
+ }
263
+
185
264
  function removeSkillEntry(skillsDir, entry) {
186
265
  const entryPath = path.join(skillsDir, entry.name);
187
266
  if (entry.isDirectory()) {
@@ -289,11 +368,13 @@ function installForRuntime(runtimeKey, srcDir) {
289
368
  let count = 0;
290
369
  for (const file of fs.readdirSync(agentsSrc)) {
291
370
  if (file.endsWith('.md')) {
292
- fs.copyFileSync(path.join(agentsSrc, file), path.join(agentsDest, file));
371
+ const srcFile = path.join(agentsSrc, file);
372
+ installAgentFile(srcFile, agentsDest, runtime);
293
373
  count++;
294
374
  }
295
375
  }
296
- success(`Installed ${count} specialist agents to agents/`);
376
+ const shape = runtime.agentMetadata === 'toml' ? 'agents/ with Codex metadata' : 'agents/';
377
+ success(`Installed ${count} specialist agents to ${shape}`);
297
378
  }
298
379
 
299
380
  // 3. Install the master SKILL.md (always-on context)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "godpowers",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "description": "AI-powered development system: 106 slash commands and 39 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"
@@ -48,7 +48,7 @@ GODPOWERS DOCTOR
48
48
  Install: claude (~/.claude/)
49
49
  [OK] 106 skills installed
50
50
  [OK] 39 agents installed
51
- [OK] VERSION matches (1.6.1)
51
+ [OK] VERSION matches (1.6.2)
52
52
  [WARN] routing/god-doctor.yaml exists but skill file did not until now
53
53
 
54
54
  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 v1.6.1
17
+ Godpowers v1.6.2
18
18
  Install: /Users/.../.claude/ (matches package.json)
19
19
  Surface: 106 skills, 39 agents, 13 workflows, 36 recipes
20
20
  Schema: intent.v1, state.v1, events.v1, workflow.v1, routing.v1, recipe.v1