godpowers 3.0.0 → 3.0.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.
Files changed (132) hide show
  1. package/CHANGELOG.md +46 -3
  2. package/README.md +28 -24
  3. package/RELEASE.md +31 -50
  4. package/SKILL.md +75 -113
  5. package/agents/god-archaeologist.md +11 -0
  6. package/agents/god-architect.md +12 -0
  7. package/agents/god-auditor.md +13 -0
  8. package/agents/god-automation-engineer.md +13 -0
  9. package/agents/god-browser-tester.md +15 -0
  10. package/agents/god-context-writer.md +14 -0
  11. package/agents/god-coordinator.md +14 -0
  12. package/agents/god-debt-assessor.md +11 -0
  13. package/agents/god-debugger.md +13 -0
  14. package/agents/god-deploy-engineer.md +13 -0
  15. package/agents/god-deps-auditor.md +13 -0
  16. package/agents/god-design-reviewer.md +14 -0
  17. package/agents/god-designer.md +15 -0
  18. package/agents/god-docs-writer.md +13 -0
  19. package/agents/god-executor.md +14 -0
  20. package/agents/god-explorer.md +14 -0
  21. package/agents/god-greenfieldifier.md +13 -0
  22. package/agents/god-harden-auditor.md +12 -0
  23. package/agents/god-incident-investigator.md +13 -0
  24. package/agents/god-launch-strategist.md +14 -0
  25. package/agents/god-migration-strategist.md +13 -0
  26. package/agents/god-observability-engineer.md +14 -0
  27. package/agents/god-orchestrator.md +16 -2
  28. package/agents/god-org-context-loader.md +11 -0
  29. package/agents/god-planner.md +11 -0
  30. package/agents/god-pm.md +14 -0
  31. package/agents/god-quality-reviewer.md +12 -0
  32. package/agents/god-reconciler.md +14 -1
  33. package/agents/god-reconstructor.md +16 -0
  34. package/agents/god-repo-scaffolder.md +11 -0
  35. package/agents/god-retrospective.md +11 -0
  36. package/agents/god-roadmap-reconciler.md +42 -87
  37. package/agents/god-roadmap-updater.md +11 -0
  38. package/agents/god-roadmapper.md +12 -0
  39. package/agents/god-spec-reviewer.md +14 -0
  40. package/agents/god-spike-runner.md +13 -0
  41. package/agents/god-stack-selector.md +12 -0
  42. package/agents/god-standards-check.md +13 -0
  43. package/agents/god-storyteller.md +14 -0
  44. package/agents/god-updater.md +14 -0
  45. package/bin/install.js +10 -0
  46. package/lib/README.md +4 -0
  47. package/lib/agent-validator.js +67 -2
  48. package/lib/cli-dispatch.js +40 -1
  49. package/lib/command-families.js +10 -2
  50. package/lib/install-profiles.js +4 -1
  51. package/lib/installer-args.js +22 -0
  52. package/lib/recipe-coverage-sync.js +1 -1
  53. package/lib/release-surface-sync.js +3 -0
  54. package/lib/repo-doc-sync.js +1 -1
  55. package/lib/repo-surface-sync.js +3 -3
  56. package/lib/route-quality-sync.js +2 -2
  57. package/lib/router.js +6 -0
  58. package/lib/surface-profile.js +168 -0
  59. package/package.json +2 -2
  60. package/references/orchestration/GOD-MODE-RUNBOOK.md +9 -14
  61. package/references/orchestration/GOD-ORCHESTRATOR-RUNBOOK.md +43 -81
  62. package/references/shared/DASHBOARD-CONTRACT.md +66 -29
  63. package/references/shared/README.md +1 -1
  64. package/routing/god-demo.yaml +35 -0
  65. package/routing/god-first-run.yaml +34 -0
  66. package/routing/god-roadmap-check.yaml +2 -2
  67. package/routing/god-surface.yaml +39 -0
  68. package/routing/recipes/try-safely.yaml +26 -0
  69. package/skills/god-agent-audit.md +17 -15
  70. package/skills/god-arch.md +1 -3
  71. package/skills/god-archaeology.md +5 -6
  72. package/skills/god-audit.md +6 -7
  73. package/skills/god-automation-setup.md +6 -7
  74. package/skills/god-automation-status.md +6 -7
  75. package/skills/god-build.md +1 -3
  76. package/skills/god-context-scan.md +7 -8
  77. package/skills/god-demo.md +53 -0
  78. package/skills/god-deploy.md +1 -3
  79. package/skills/god-design-impact.md +5 -6
  80. package/skills/god-design.md +9 -3
  81. package/skills/god-discuss.md +5 -6
  82. package/skills/god-docs.md +5 -10
  83. package/skills/god-doctor.md +8 -9
  84. package/skills/god-dogfood.md +7 -10
  85. package/skills/god-explore.md +5 -7
  86. package/skills/god-feature.md +1 -3
  87. package/skills/god-first-run.md +64 -0
  88. package/skills/god-harden.md +1 -3
  89. package/skills/god-help.md +77 -51
  90. package/skills/god-hotfix.md +1 -3
  91. package/skills/god-hygiene.md +5 -6
  92. package/skills/god-launch.md +1 -3
  93. package/skills/god-lifecycle.md +11 -13
  94. package/skills/god-link.md +1 -3
  95. package/skills/god-list-assumptions.md +7 -8
  96. package/skills/god-locate.md +7 -8
  97. package/skills/god-map-codebase.md +5 -6
  98. package/skills/god-migrate.md +7 -18
  99. package/skills/god-mode.md +5 -0
  100. package/skills/god-next.md +16 -17
  101. package/skills/god-observe.md +1 -3
  102. package/skills/god-prd.md +1 -3
  103. package/skills/god-preflight.md +7 -8
  104. package/skills/god-progress.md +7 -8
  105. package/skills/god-reconcile.md +9 -10
  106. package/skills/god-reconstruct.md +5 -7
  107. package/skills/god-redo.md +1 -3
  108. package/skills/god-refactor.md +7 -10
  109. package/skills/god-repair.md +1 -3
  110. package/skills/god-repo.md +1 -3
  111. package/skills/god-restore.md +1 -3
  112. package/skills/god-roadmap-check.md +10 -10
  113. package/skills/god-roadmap.md +1 -3
  114. package/skills/god-rollback.md +1 -3
  115. package/skills/god-scan.md +6 -12
  116. package/skills/god-skip.md +1 -3
  117. package/skills/god-spike.md +5 -6
  118. package/skills/god-stack.md +1 -3
  119. package/skills/god-standards.md +5 -6
  120. package/skills/god-status.md +12 -10
  121. package/skills/god-story-build.md +1 -3
  122. package/skills/god-story-close.md +1 -3
  123. package/skills/god-story.md +1 -3
  124. package/skills/god-surface.md +61 -0
  125. package/skills/god-sync.md +7 -13
  126. package/skills/god-tech-debt.md +5 -6
  127. package/skills/god-test-runtime.md +4 -8
  128. package/skills/god-undo.md +1 -3
  129. package/skills/god-update-deps.md +1 -3
  130. package/skills/god-upgrade.md +1 -3
  131. package/skills/god-version.md +1 -1
  132. package/skills/god.md +53 -52
@@ -11,6 +11,8 @@ const COMMANDS = new Set([
11
11
  'automation-setup',
12
12
  'dogfood',
13
13
  'extension-scaffold',
14
+ 'surface',
15
+ 'demo',
14
16
  'gate'
15
17
  ]);
16
18
 
@@ -21,6 +23,7 @@ function parseArgs(argv, cwd = process.cwd()) {
21
23
  project: cwd,
22
24
  json: false,
23
25
  brief: false,
26
+ full: false,
24
27
  stateAction: null,
25
28
  step: null,
26
29
  status: null,
@@ -30,6 +33,8 @@ function parseArgs(argv, cwd = process.cwd()) {
30
33
  extensionAgent: null,
31
34
  extensionWorkflow: null,
32
35
  tier: null,
36
+ apply: false,
37
+ dryRun: false,
33
38
  runtimes: [],
34
39
  global: false,
35
40
  local: false,
@@ -57,6 +62,21 @@ function parseArgs(argv, cwd = process.cwd()) {
57
62
  case '--brief':
58
63
  opts.brief = true;
59
64
  break;
65
+ case '--full':
66
+ opts.full = true;
67
+ break;
68
+ case '--apply':
69
+ opts.apply = true;
70
+ break;
71
+ case '--dry-run':
72
+ opts.dryRun = true;
73
+ break;
74
+ case '--runtime':
75
+ if (args[i + 1]) {
76
+ opts.runtimes.push(args[i + 1]);
77
+ i++;
78
+ }
79
+ break;
60
80
  case '--tier':
61
81
  if (args[i + 1]) {
62
82
  opts.tier = args[i + 1];
@@ -122,6 +142,8 @@ function parseArgs(argv, cwd = process.cwd()) {
122
142
  opts.extensionAgent = arg.slice('--agent='.length);
123
143
  } else if (arg.startsWith('--workflow=')) {
124
144
  opts.extensionWorkflow = arg.slice('--workflow='.length);
145
+ } else if (arg.startsWith('--runtime=')) {
146
+ opts.runtimes.push(arg.slice('--runtime='.length));
125
147
  } else if (arg.startsWith('--tier=')) {
126
148
  opts.tier = arg.slice('--tier='.length);
127
149
  } else if (arg.startsWith('--step=')) {
@@ -92,7 +92,7 @@ function detect(projectRoot) {
92
92
  matched.length > 0
93
93
  ? `Recipe coverage exists for ${required.description}.`
94
94
  : `No recipe covers ${required.description} with ${required.commands.join(', ')}.`,
95
- { spawn: matched.length > 0 ? null : 'god-roadmap-reconciler' }
95
+ { spawn: matched.length > 0 ? null : 'god-reconciler' }
96
96
  );
97
97
  }
98
98
 
@@ -12,9 +12,12 @@ const path = require('path');
12
12
  const LOG_PATH = '.godpowers/surface/RELEASE-SURFACE-SYNC.md';
13
13
 
14
14
  const REQUIRED_PACKAGE_GUARDS = [
15
+ 'lib/artifact-map.js',
16
+ 'lib/cli-dispatch.js',
15
17
  'lib/command-families.js',
16
18
  'lib/dogfood-runner.js',
17
19
  'lib/extension-authoring.js',
20
+ 'lib/gate.js',
18
21
  'lib/host-capabilities.js',
19
22
  'lib/route-quality-sync.js',
20
23
  'lib/recipe-coverage-sync.js',
@@ -371,7 +371,7 @@ function adjacentOpportunities() {
371
371
  id: 'workflow-recipe-graph-sync',
372
372
  trigger: '/god-next, /god-mode, /god-doctor',
373
373
  behavior: 'compare workflow YAML, recipes, command flows, and orchestrator guidance',
374
- escalation: 'spawn god-roadmap-reconciler when lifecycle intent is ambiguous'
374
+ escalation: 'spawn god-reconciler when lifecycle intent is ambiguous'
375
375
  },
376
376
  {
377
377
  id: 'extension-pack-sync',
@@ -270,7 +270,7 @@ function workflowRecipeChecks(projectRoot) {
270
270
  hasMetadata ? 'fresh' : 'stale',
271
271
  workflow,
272
272
  hasMetadata ? `${workflow} has metadata.` : `${workflow} is missing parseable metadata.`,
273
- { spawn: hasMetadata ? null : 'god-roadmap-reconciler' }
273
+ { spawn: hasMetadata ? null : 'god-reconciler' }
274
274
  );
275
275
  }
276
276
 
@@ -285,7 +285,7 @@ function workflowRecipeChecks(projectRoot) {
285
285
  hasCommand ? 'fresh' : 'stale',
286
286
  recipe,
287
287
  hasCommand ? `${recipe} includes a slash-command route.` : `${recipe} has no slash-command route.`,
288
- { spawn: hasCommand ? null : 'god-roadmap-reconciler' }
288
+ { spawn: hasCommand ? null : 'god-reconciler' }
289
289
  );
290
290
  }
291
291
 
@@ -297,7 +297,7 @@ function workflowRecipeChecks(projectRoot) {
297
297
  commandFlows.includes('/god-docs') && commandFlows.includes('/god-sync') ? 'fresh' : 'stale',
298
298
  'docs/command-flows.md',
299
299
  'docs/command-flows.md includes core docs and sync flows.',
300
- { spawn: 'god-roadmap-reconciler' }
300
+ { spawn: 'god-reconciler' }
301
301
  );
302
302
  }
303
303
  return checks;
@@ -244,7 +244,7 @@ function detect(projectRoot) {
244
244
  'stale',
245
245
  routePath,
246
246
  `${command} uses contextual next route ${next} without a typed success-path.outcome.`,
247
- { spawn: 'god-roadmap-reconciler' }
247
+ { spawn: 'god-reconciler' }
248
248
  );
249
249
  }
250
250
  }
@@ -297,7 +297,7 @@ function detect(projectRoot) {
297
297
  checks.some((check) => check.id.startsWith('missing-route-outcome-')) ? 'stale' : 'fresh',
298
298
  'routing/',
299
299
  `${typedOutcomeCount} contextual route exits have typed outcomes and all other next routes are explicit.`,
300
- { spawn: checks.some((check) => check.id.startsWith('missing-route-outcome-')) ? 'god-roadmap-reconciler' : null }
300
+ { spawn: checks.some((check) => check.id.startsWith('missing-route-outcome-')) ? 'god-reconciler' : null }
301
301
  );
302
302
  addCheck(
303
303
  checks,
package/lib/router.js CHANGED
@@ -264,6 +264,11 @@ function getStandards(command) {
264
264
  return routing.standards;
265
265
  }
266
266
 
267
+ function getGateCommand(command) {
268
+ const standards = getStandards(command);
269
+ return standards && standards['gate-command'] ? standards['gate-command'] : null;
270
+ }
271
+
267
272
  /**
268
273
  * Get the list of agents this command spawns (primary + secondary).
269
274
  */
@@ -403,6 +408,7 @@ module.exports = {
403
408
  getRouteOutcome,
404
409
  getAlternatives,
405
410
  getStandards,
411
+ getGateCommand,
406
412
  getSpawnedAgents,
407
413
  getCommandFamily: commandFamilies.familyForCommand,
408
414
  resolveTrigger: commandFamilies.resolveTrigger,
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Runtime surface profile preview and apply helper.
3
+ */
4
+
5
+ const fs = require('fs');
6
+ const path = require('path');
7
+
8
+ const { resolveRuntime, runtimeKeys } = require('./installer-runtimes');
9
+ const profiles = require('./install-profiles');
10
+ const installer = require('./installer-core');
11
+
12
+ function availableSkillNames(srcDir) {
13
+ const skillsDir = path.join(srcDir, 'skills');
14
+ if (!fs.existsSync(skillsDir)) return [];
15
+ return fs.readdirSync(skillsDir)
16
+ .filter((file) => /^god.*\.md$/.test(file))
17
+ .map((file) => path.basename(file, '.md'))
18
+ .sort();
19
+ }
20
+
21
+ function isRuntimeSkillName(name) {
22
+ return name === 'god' || name.startsWith('god-');
23
+ }
24
+
25
+ function installedSkillNames(runtime) {
26
+ const skillsDir = path.join(runtime.configDir, runtime.skillsDir);
27
+ if (!fs.existsSync(skillsDir)) return [];
28
+ const names = [];
29
+ for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
30
+ if (entry.isDirectory()) {
31
+ const skillFile = path.join(skillsDir, entry.name, 'SKILL.md');
32
+ if (fs.existsSync(skillFile) && isRuntimeSkillName(entry.name)) {
33
+ names.push(entry.name);
34
+ }
35
+ continue;
36
+ }
37
+ if (entry.isFile() && entry.name.endsWith('.md')) {
38
+ const name = path.basename(entry.name, '.md');
39
+ if (isRuntimeSkillName(name)) names.push(name);
40
+ }
41
+ }
42
+ return [...new Set(names)].sort();
43
+ }
44
+
45
+ function currentProfile(runtime) {
46
+ const marker = path.join(runtime.configDir, 'GODPOWERS_PROFILE');
47
+ if (!fs.existsSync(marker)) return 'unknown';
48
+ const text = fs.readFileSync(marker, 'utf8').trim();
49
+ return text || 'unknown';
50
+ }
51
+
52
+ function targetRuntimeKeys(opts = {}) {
53
+ if (opts.all) return runtimeKeys();
54
+ if (opts.runtimes && opts.runtimes.length > 0) return opts.runtimes.slice();
55
+ return runtimeKeys().filter((key) => {
56
+ const runtime = resolveRuntime(key, opts);
57
+ return runtime && fs.existsSync(path.join(runtime.configDir, 'GODPOWERS_VERSION'));
58
+ });
59
+ }
60
+
61
+ function diffSkills(selected, installed) {
62
+ const selectedSet = new Set(selected);
63
+ const installedSet = new Set(installed);
64
+ return {
65
+ add: selected.filter((name) => !installedSet.has(name)),
66
+ remove: installed.filter((name) => !selectedSet.has(name))
67
+ };
68
+ }
69
+
70
+ function plan(srcDir = path.resolve(__dirname, '..'), opts = {}) {
71
+ const profileList = profiles.normalizeProfiles(opts.profile || 'core');
72
+ const profile = profileList.join(',');
73
+ const available = availableSkillNames(srcDir);
74
+ const selected = [...profiles.selectedSkillNames(profile, available)].sort();
75
+ const keys = targetRuntimeKeys(opts);
76
+ const targets = keys.map((key) => {
77
+ const runtime = resolveRuntime(key, opts);
78
+ const installed = runtime ? installedSkillNames(runtime) : [];
79
+ const diff = diffSkills(selected, installed);
80
+ return {
81
+ key,
82
+ name: runtime ? runtime.name : key,
83
+ configDir: runtime ? runtime.configDir : null,
84
+ skillsDir: runtime ? path.join(runtime.configDir, runtime.skillsDir) : null,
85
+ installed: Boolean(runtime && fs.existsSync(path.join(runtime.configDir, 'GODPOWERS_VERSION'))),
86
+ currentProfile: runtime ? currentProfile(runtime) : 'unknown',
87
+ currentCount: installed.length,
88
+ selectedCount: selected.length,
89
+ add: diff.add,
90
+ remove: diff.remove
91
+ };
92
+ });
93
+
94
+ return {
95
+ profile,
96
+ description: profiles.describeProfiles(profile),
97
+ mode: opts.apply ? 'apply' : 'dry-run',
98
+ selectedCount: selected.length,
99
+ availableCount: available.length,
100
+ targets
101
+ };
102
+ }
103
+
104
+ function apply(srcDir = path.resolve(__dirname, '..'), opts = {}) {
105
+ const keys = targetRuntimeKeys(opts);
106
+ if (keys.length === 0) {
107
+ throw new Error('surface apply requires an installed runtime, --all, or an explicit runtime flag');
108
+ }
109
+ const results = [];
110
+ for (const key of keys) {
111
+ const ok = installer.installForRuntime(key, srcDir, { ...opts, profile: opts.profile || 'core' });
112
+ results.push({ key, ok });
113
+ }
114
+ return results;
115
+ }
116
+
117
+ function renderList(items, max = 6) {
118
+ if (!items || items.length === 0) return 'none';
119
+ const shown = items.slice(0, max).join(', ');
120
+ const remaining = items.length - max;
121
+ return remaining > 0 ? `${shown}, and ${remaining} more` : shown;
122
+ }
123
+
124
+ function render(report) {
125
+ const lines = [
126
+ 'Godpowers Surface',
127
+ '',
128
+ `Profile: ${report.description}`,
129
+ `Mode: ${report.mode}`,
130
+ `Selected commands: ${report.selectedCount} of ${report.availableCount}`,
131
+ '',
132
+ 'Runtime targets:'
133
+ ];
134
+
135
+ if (report.targets.length === 0) {
136
+ lines.push(' none detected. Pass --claude, --codex, or --all.');
137
+ } else {
138
+ for (const target of report.targets) {
139
+ lines.push(` - ${target.name}: current ${target.currentProfile}, selected ${target.selectedCount} commands`);
140
+ lines.push(` Path: ${target.skillsDir}`);
141
+ lines.push(` Add: ${renderList(target.add)}`);
142
+ lines.push(` Remove: ${renderList(target.remove)}`);
143
+ }
144
+ }
145
+
146
+ lines.push('');
147
+ lines.push('Next commands:');
148
+ if (report.targets.length === 0) {
149
+ lines.push('- godpowers surface --profile=core --codex --global --dry-run: Preview the core surface for Codex.');
150
+ } else if (report.mode === 'dry-run') {
151
+ const first = report.targets[0];
152
+ lines.push(`- godpowers surface --profile=${report.profile} --${first.key} --global --apply: Apply this profile to ${first.name}.`);
153
+ } else {
154
+ lines.push('- /god-help: Open the compact help view after the surface switch.');
155
+ }
156
+ lines.push('- /god-help all: Show the complete catalog when you need every command.');
157
+
158
+ return lines.join('\n');
159
+ }
160
+
161
+ module.exports = {
162
+ availableSkillNames,
163
+ installedSkillNames,
164
+ targetRuntimeKeys,
165
+ plan,
166
+ apply,
167
+ render
168
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "godpowers",
3
- "version": "3.0.0",
4
- "description": "AI-powered development system: 117 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.",
3
+ "version": "3.0.2",
4
+ "description": "AI-powered development system: 120 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
  },
@@ -10,8 +10,8 @@ Show:
10
10
  - detected resume or project mode in plain language
11
11
  - a compact "Next step" card before each visible phase or tier sub-step
12
12
  - a compact "Step result" card after each visible phase or tier sub-step
13
- - every auto-invoked command, agent, and local runtime helper using an
14
- `Auto-invoked:` or `Sync status:` card
13
+ - concise notes for automatic work that changes artifacts, review items, or
14
+ recommendations, with details written to logs
15
15
  - plain-language workflow names. Say "project run" or "workflow" instead of
16
16
  unexplained "arc" in visible output
17
17
  - PRD and roadmap visibility in status and closeout blocks when artifacts
@@ -19,9 +19,8 @@ Show:
19
19
  - short progress updates for phases, commands, validations, and file edits
20
20
  - concise validation summaries instead of full command noise when possible
21
21
  - final changed paths, validation results, and completion or pause status
22
- - final Godpowers Dashboard from disk, including phase, tier, step, progress,
23
- planning visibility, proactive checks, open items, worktree/index state, and
24
- recommended next action
22
+ - final compact action brief from disk, with `/god-status --full` offered for
23
+ the complete dashboard
25
24
 
26
25
  Hide:
27
26
  - raw spawn input
@@ -272,15 +271,11 @@ Periodic hygiene:
272
271
  Open items:
273
272
  1. <none, or deployed staging deferred, pending review, unstaged files, etc.>
274
273
 
275
- Next:
276
- Recommended: <single safest command or decision>
277
- Why: <one sentence tied to disk state>
278
-
279
- Proposition:
280
- 1. Review status: /god-status
281
- 2. Continue work: /god-next or describe the next intent
282
- 3. Commit release-ready changes: stage only the intended files, then commit
283
- 4. Run deployed staging: provide STAGING_APP_URL=<deployed staging origin> when needed
274
+ Next commands:
275
+ - /god-status --full: Review the complete dashboard and proactive checks.
276
+ - /god-next: Continue with the safest state-derived next step.
277
+ - stage only the intended files, then commit: Commit release-ready changes.
278
+ - provide STAGING_APP_URL=<deployed staging origin>: Run deployed staging when needed.
284
279
  ```
285
280
 
286
281
  If the run edited code but did not stage or commit, the completion block must
@@ -182,6 +182,7 @@ When deciding what to spawn next, query the routing definition:
182
182
  - `execution.spawns` -> primary agent to spawn
183
183
  - `execution.secondary-spawns` -> downstream agents (e.g., reviewers)
184
184
  - `standards.have-nots` -> which have-nots to verify
185
+ - `standards.gate-command` -> executable artifact gate to run after output exists
185
186
  - `success-path.next-recommended` -> what to suggest next
186
187
 
187
188
  Before spawning a command, evaluate `lib/router.js checkPrerequisites(command,
@@ -197,6 +198,12 @@ the routing config has a `standards` section). Standards check uses fresh
197
198
  context, independent of the producing agent, so it catches drift the
198
199
  producing agent's own self-check would miss.
199
200
 
201
+ When `standards.gate-command` is present, run that exact command from the
202
+ project root after the producing tier skill returns and before any downstream
203
+ tier starts. A non-zero exit means the tier is not complete. Report the gate
204
+ output, repair the artifact, and rerun the gate before updating durable state
205
+ to done.
206
+
200
207
  ## Recipe-Driven Decisions (for fuzzy intent)
201
208
 
202
209
  When the user describes intent in plain English instead of running a specific
@@ -217,7 +224,7 @@ with the "why" annotations for each step.
217
224
  This is the third layer of decision support:
218
225
  1. **Routing** (`<runtimeRoot>/routing/<command>.yaml`): structural prerequisites and gates
219
226
  2. **Recipes** (`<runtimeRoot>/routing/recipes/<recipe>.yaml`): scenario-based sequences
220
- 3. **Standards** (god-standards-check): quality gates between stages
227
+ 3. **Standards** (god-standards-check plus standards.gate-command): quality gates between stages
221
228
 
222
229
  ## Proactive Auto-Invoke Matrix
223
230
 
@@ -236,20 +243,20 @@ Use this trigger map:
236
243
 
237
244
  | Trigger | Auto action | Visibility |
238
245
  |---|---|---|
239
- | `state.json` or `PROGRESS.md` changed | refresh `.godpowers/CHECKPOINT.md` | `Auto-invoked:` local runtime only |
240
- | code or artifact files changed | run lightweight reverse-sync or spawn `god-updater` for workflow closeout | `Sync status:` |
241
- | durable artifact truth changed | run Pillars sync plan | `Auto-invoked:` local runtime only |
242
- | AI tool instruction files changed | spawn or dry-run `god-context-writer` | `Auto-invoked:` |
243
- | `REVIEW-REQUIRED.md` gains entries | suggest `/god-review-changes` | closeout proposition |
246
+ | `state.json` or `PROGRESS.md` changed | refresh `.godpowers/CHECKPOINT.md` | log detail, concise note only when recommendation changes |
247
+ | code or artifact files changed | run lightweight reverse-sync or spawn `god-updater` for workflow closeout | concise sync note and log path |
248
+ | durable artifact truth changed | run Pillars sync plan | log detail, concise note only when pillar edits are proposed |
249
+ | AI tool instruction files changed | spawn or dry-run `god-context-writer` | concise note when files change |
250
+ | `REVIEW-REQUIRED.md` gains entries | suggest `/god-review-changes` | `Next commands:` |
244
251
  | `DESIGN.md` or `PRODUCT.md` changed | spawn `god-design-reviewer` | gate card before propagation |
245
- | docs and code both changed | spawn `god-docs-writer` in drift-check mode when current workflow owns docs, otherwise suggest `/god-docs` | `Auto-invoked:` or proposition |
252
+ | docs and code both changed | spawn `god-docs-writer` in drift-check mode when current workflow owns docs, otherwise suggest `/god-docs` | concise note or `Next commands:` |
246
253
  | frontend-visible files changed and a known URL exists | spawn `god-browser-tester` inside build, design, launch, harden, or explicit runtime workflows | runtime status card |
247
- | frontend-visible files changed and no known URL exists | suggest `/god-test-runtime` with local URL setup, defer deployed URL | proposition |
248
- | security-sensitive files changed | auto-spawn only inside harden, hotfix, launch, or project run; otherwise suggest `/god-harden` | proposition |
249
- | dependency files changed | auto-spawn only inside update-deps, hygiene, or approved project run; otherwise suggest `/god-update-deps` | proposition |
250
- | host automation support detected and no active templates are recorded | suggest `/god-automation-status` or `/god-automation-setup` | proposition |
254
+ | frontend-visible files changed and no known URL exists | suggest `/god-test-runtime` with local URL setup, defer deployed URL | `Next commands:` |
255
+ | security-sensitive files changed | auto-spawn only inside harden, hotfix, launch, or project run; otherwise suggest `/god-harden` | `Next commands:` |
256
+ | dependency files changed | auto-spawn only inside update-deps, hygiene, or approved project run; otherwise suggest `/god-update-deps` | `Next commands:` |
257
+ | host automation support detected and no active templates are recorded | suggest `/god-automation-status` or `/god-automation-setup` | `Next commands:` |
251
258
  | user approves complex automation setup | spawn `god-automation-engineer` | approval card plus setup result |
252
- | full project run complete or hygiene stale | suggest `/god-hygiene` | proposition |
259
+ | full project run complete or hygiene stale | suggest `/god-hygiene` | `Next commands:` |
253
260
 
254
261
  Never use this matrix to auto-run Level 4 actions: deployed staging against a
255
262
  guessed URL, production launch, provider dashboard access, broad dependency
@@ -258,8 +265,8 @@ git stage, commit, push, package, release, publish, schedule creation, routine
258
265
  creation, background agent creation, API trigger creation, or CI workflow
259
266
  creation without explicit user approval.
260
267
 
261
- Every auto action must emit either `Auto-invoked:`, `Sync status:`, or a
262
- proposition explaining why it did not run.
268
+ Every auto action must either log details or emit a concise note when it
269
+ changes artifacts, review items, blockers, or the next recommendation.
263
270
 
264
271
  ## Detection-Driven Tier 1 Routing
265
272
 
@@ -479,7 +486,7 @@ requested or final sign-off begins.
479
486
  4. Print the "Next step" card from the Step Narration Protocol
480
487
  5. Spawn the appropriate specialist agent in a fresh context
481
488
  6. Verify their output exists on disk
482
- 7. Run have-nots check on the artifact
489
+ 7. Run have-nots check on the artifact and run `standards.gate-command` when configured
483
490
  8. If pass: update PROGRESS.md, sync CHECKPOINT.md, run the proactive
484
491
  auto-invoke sweep, print the "Step result" card, then move to next sub-step
485
492
  9. If fail and repairable: print the failed result card, then enter the
@@ -633,18 +640,6 @@ After Launch completes, write a transition message:
633
640
  ```text
634
641
  Godpowers project run complete.
635
642
 
636
- Godpowers Dashboard
637
-
638
- Source: runtime dashboard (lib/dashboard.js)
639
-
640
- Current status:
641
- State: complete
642
- Phase: <plain-language phase> (tier <human ordinal> of <human total>)
643
- Step: <sub-step label> (step <n> of <total steps>)
644
- Progress: <pct>% workflow progress (<done> of <total> tracked steps complete)
645
- Worktree: <clean | modified files unstaged | staged changes | mixed>
646
- Index: <untouched | staged files listed>
647
-
648
643
  Action brief:
649
644
  Next: <one command or user decision>
650
645
  Why: <one sentence tied to disk state>
@@ -652,17 +647,6 @@ Action brief:
652
647
  Attention: <none or top blockers>
653
648
  Host guarantees: <full | degraded | unknown>
654
649
 
655
- Planning visibility:
656
- PRD: <done | pending | missing | deferred> <artifact path when present>
657
- Roadmap: <done | pending | missing | deferred> <artifact path when present>
658
- Current milestone: <roadmap milestone, tier, or next planning gate when known>
659
- Completion basis: <state.json, PROGRESS.md, artifacts, or audit score source>
660
-
661
- Deliverable progress:
662
- Requirements: <done>/<total> done (<pct>%); <in-progress> in progress, <untouched> not started
663
- Increments: <done> done, <building> building, <pending> pending
664
- Ledger: .godpowers/REQUIREMENTS.md
665
-
666
650
  What changed:
667
651
  1. <highest-signal user-visible change>
668
652
  2. <highest-signal user-visible change>
@@ -670,22 +654,6 @@ What changed:
670
654
  Validation:
671
655
  + <command>: <result>
672
656
 
673
- Proactive checks:
674
- Checkpoint: <fresh | refreshed | stale>
675
- Reviews: <none | N pending, suggest /god-review-changes>
676
- Sync: <fresh | suggested | local helper ran>
677
- Docs: <fresh | suggested | drift-check spawned>
678
- Repo surface: <fresh | stale, suggest /god-doctor>
679
- Host: <full | degraded | unknown>
680
- Dogfood: <not-run | pass | fail | suggest /god-dogfood>
681
- Runtime: <not-applicable | suggested | browser test spawned>
682
- Security: <clear | suggested | harden spawned>
683
- Dependencies: <clear | suggested | deps audit spawned>
684
- Hygiene: <fresh | suggest /god-hygiene>
685
-
686
- Open items:
687
- 1. <none, or deployed staging deferred, pending review, unstaged files, etc.>
688
-
689
657
  Project is now in steady state. From here, ongoing work uses these workflows:
690
658
 
691
659
  Adding features: /god-feature
@@ -702,21 +670,18 @@ Periodic hygiene:
702
670
  Health check: /god-hygiene (combines audit + deps + docs)
703
671
  Deliverable status: /god-progress (requirements + increments done/left)
704
672
 
705
- Next:
706
- Recommended: <single safest command or decision>
707
- Why: <one sentence tied to disk state>
708
-
709
- Proposition:
710
- 1. Review status: /god-status (pipeline) or /god-progress (deliverables)
711
- 2. Continue work: /god-next or describe the next intent
712
- 3. Commit release-ready changes: stage only the intended files, then commit
713
- 4. Run deployed staging: provide STAGING_APP_URL=<deployed staging origin> when needed
673
+ Next commands:
674
+ - /god-status --full: Review the complete dashboard and proactive checks.
675
+ - /god-progress: Review deliverable progress.
676
+ - /god-next: Continue with the safest state-derived next step.
677
+ - provide STAGING_APP_URL=<deployed staging origin>: Run deployed staging when needed.
714
678
  ```
715
679
 
716
680
  Generate the dashboard with `lib/dashboard.compute(projectRoot)` and
717
- `lib/dashboard.render(result)` when the runtime bundle is available. If the
718
- runtime module cannot be loaded, fall back to a manual disk scan and say
719
- `Dashboard engine: unavailable, manual scan used`.
681
+ `lib/dashboard.render(result, { brief: true })` when the runtime bundle is
682
+ available. If the runtime module cannot be loaded, use a manual disk scan
683
+ quietly and suggest `/god-doctor` only when the fallback changes the next
684
+ recommendation.
720
685
 
721
686
  The dashboard `Progress` line is workflow progress only. Audit scores,
722
687
  remediation scores, hygiene scores, and launch-readiness scores must be labeled
@@ -840,15 +805,14 @@ Show:
840
805
  - concise phase status
841
806
  - before each visible tier/sub-step, a short "what will happen" card
842
807
  - after each visible tier/sub-step, a short "what happened" card
843
- - every auto-invoked command, agent, and local runtime helper using an
844
- `Auto-invoked:` or `Sync status:` card
808
+ - concise notes for automatic work that changes artifacts, review items, or
809
+ recommendations, with details written to logs
845
810
  - durable state detected from disk
846
811
  - commands being run and whether they passed or failed
847
812
  - scoped file changes
848
813
  - final validation summary
849
- - final Godpowers Dashboard from disk, including phase, tier, step, progress,
850
- lifecycle, planning visibility, proactive checks, open items,
851
- worktree/index state, and recommended next action
814
+ - final compact action brief from disk, with `/god-status --full` offered for
815
+ the complete dashboard
852
816
  - plain-language workflow names. Say "project run" or "workflow" instead of
853
817
  unexplained "arc" in visible output
854
818
  - PRD and roadmap visibility when those artifacts exist or are expected
@@ -871,21 +835,17 @@ user-facing question. Do not expose the rule itself. Example: ask for
871
835
  `STAGING_APP_URL=<deployed staging origin>` at final sign-off rather than
872
836
  showing the Shipping Closure Protocol.
873
837
 
874
- ### Auto-Invoked Work Cards
838
+ ### Automatic Work Notes
875
839
 
876
840
  Every automatic step that mutates state, writes artifacts, validates gates, or
877
- spawns an agent must leave a visible trace in the transcript.
841
+ spawns an agent must leave an accountable trace in logs. Show a concise note in
842
+ the transcript only when artifacts changed, review items were created, blockers
843
+ appeared, or the recommendation changed.
878
844
 
879
845
  Use this shape:
880
846
 
881
847
  ```
882
- Auto-invoked:
883
- Trigger: <event that caused the automatic step>
884
- Agent: <agent name, or none, local runtime only>
885
- Local syncs:
886
- + <helper>: <result>
887
- Artifacts: <changed files, no-op, or deferred>
888
- Log: <path, or none>
848
+ Synced project artifacts after the change. Details were written to .godpowers/SYNC-LOG.md.
889
849
  ```
890
850
 
891
851
  Required auto-invoked cards:
@@ -1256,4 +1216,6 @@ For preflight auto-routing, append:
1256
1216
 
1257
1217
  The canonical have-nots catalog lives at `references/HAVE-NOTS.md` (115 named
1258
1218
  failure modes). When verifying an artifact, run the relevant tier's have-nots
1259
- against it. When in doubt, spawn god-auditor to do the check.
1219
+ against it. When the route has `standards.gate-command`, run that exact command
1220
+ after have-nots and block on any non-zero exit. When in doubt, spawn
1221
+ god-auditor to do the check.