godpowers 3.0.1 → 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 (58) hide show
  1. package/CHANGELOG.md +26 -2
  2. package/README.md +24 -13
  3. package/RELEASE.md +21 -21
  4. package/SKILL.md +71 -112
  5. package/bin/install.js +10 -0
  6. package/lib/README.md +1 -0
  7. package/lib/cli-dispatch.js +40 -1
  8. package/lib/command-families.js +10 -2
  9. package/lib/install-profiles.js +4 -1
  10. package/lib/installer-args.js +22 -0
  11. package/lib/surface-profile.js +168 -0
  12. package/package.json +2 -2
  13. package/references/orchestration/GOD-MODE-RUNBOOK.md +9 -14
  14. package/references/orchestration/GOD-ORCHESTRATOR-RUNBOOK.md +31 -78
  15. package/references/shared/DASHBOARD-CONTRACT.md +66 -29
  16. package/references/shared/README.md +1 -1
  17. package/routing/god-demo.yaml +35 -0
  18. package/routing/god-first-run.yaml +34 -0
  19. package/routing/god-surface.yaml +39 -0
  20. package/routing/recipes/try-safely.yaml +26 -0
  21. package/skills/god-agent-audit.md +5 -6
  22. package/skills/god-archaeology.md +5 -6
  23. package/skills/god-audit.md +6 -7
  24. package/skills/god-automation-setup.md +6 -7
  25. package/skills/god-automation-status.md +6 -7
  26. package/skills/god-context-scan.md +7 -8
  27. package/skills/god-demo.md +53 -0
  28. package/skills/god-design-impact.md +5 -6
  29. package/skills/god-discuss.md +5 -6
  30. package/skills/god-docs.md +5 -10
  31. package/skills/god-doctor.md +8 -9
  32. package/skills/god-dogfood.md +7 -10
  33. package/skills/god-explore.md +5 -7
  34. package/skills/god-first-run.md +64 -0
  35. package/skills/god-help.md +77 -51
  36. package/skills/god-hygiene.md +5 -6
  37. package/skills/god-lifecycle.md +11 -13
  38. package/skills/god-list-assumptions.md +7 -8
  39. package/skills/god-locate.md +7 -8
  40. package/skills/god-map-codebase.md +5 -6
  41. package/skills/god-migrate.md +6 -15
  42. package/skills/god-next.md +16 -17
  43. package/skills/god-preflight.md +7 -8
  44. package/skills/god-progress.md +7 -8
  45. package/skills/god-reconcile.md +5 -6
  46. package/skills/god-reconstruct.md +5 -7
  47. package/skills/god-refactor.md +6 -7
  48. package/skills/god-roadmap-check.md +6 -7
  49. package/skills/god-scan.md +5 -9
  50. package/skills/god-spike.md +5 -6
  51. package/skills/god-standards.md +5 -6
  52. package/skills/god-status.md +12 -10
  53. package/skills/god-surface.md +61 -0
  54. package/skills/god-sync.md +4 -8
  55. package/skills/god-tech-debt.md +5 -6
  56. package/skills/god-test-runtime.md +4 -8
  57. package/skills/god-version.md +1 -1
  58. 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=')) {
@@ -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.1",
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
@@ -243,20 +243,20 @@ Use this trigger map:
243
243
 
244
244
  | Trigger | Auto action | Visibility |
245
245
  |---|---|---|
246
- | `state.json` or `PROGRESS.md` changed | refresh `.godpowers/CHECKPOINT.md` | `Auto-invoked:` local runtime only |
247
- | code or artifact files changed | run lightweight reverse-sync or spawn `god-updater` for workflow closeout | `Sync status:` |
248
- | durable artifact truth changed | run Pillars sync plan | `Auto-invoked:` local runtime only |
249
- | AI tool instruction files changed | spawn or dry-run `god-context-writer` | `Auto-invoked:` |
250
- | `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:` |
251
251
  | `DESIGN.md` or `PRODUCT.md` changed | spawn `god-design-reviewer` | gate card before propagation |
252
- | 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:` |
253
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 |
254
- | frontend-visible files changed and no known URL exists | suggest `/god-test-runtime` with local URL setup, defer deployed URL | proposition |
255
- | security-sensitive files changed | auto-spawn only inside harden, hotfix, launch, or project run; otherwise suggest `/god-harden` | proposition |
256
- | dependency files changed | auto-spawn only inside update-deps, hygiene, or approved project run; otherwise suggest `/god-update-deps` | proposition |
257
- | 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:` |
258
258
  | user approves complex automation setup | spawn `god-automation-engineer` | approval card plus setup result |
259
- | full project run complete or hygiene stale | suggest `/god-hygiene` | proposition |
259
+ | full project run complete or hygiene stale | suggest `/god-hygiene` | `Next commands:` |
260
260
 
261
261
  Never use this matrix to auto-run Level 4 actions: deployed staging against a
262
262
  guessed URL, production launch, provider dashboard access, broad dependency
@@ -265,8 +265,8 @@ git stage, commit, push, package, release, publish, schedule creation, routine
265
265
  creation, background agent creation, API trigger creation, or CI workflow
266
266
  creation without explicit user approval.
267
267
 
268
- Every auto action must emit either `Auto-invoked:`, `Sync status:`, or a
269
- 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.
270
270
 
271
271
  ## Detection-Driven Tier 1 Routing
272
272
 
@@ -640,18 +640,6 @@ After Launch completes, write a transition message:
640
640
  ```text
641
641
  Godpowers project run complete.
642
642
 
643
- Godpowers Dashboard
644
-
645
- Source: runtime dashboard (lib/dashboard.js)
646
-
647
- Current status:
648
- State: complete
649
- Phase: <plain-language phase> (tier <human ordinal> of <human total>)
650
- Step: <sub-step label> (step <n> of <total steps>)
651
- Progress: <pct>% workflow progress (<done> of <total> tracked steps complete)
652
- Worktree: <clean | modified files unstaged | staged changes | mixed>
653
- Index: <untouched | staged files listed>
654
-
655
643
  Action brief:
656
644
  Next: <one command or user decision>
657
645
  Why: <one sentence tied to disk state>
@@ -659,17 +647,6 @@ Action brief:
659
647
  Attention: <none or top blockers>
660
648
  Host guarantees: <full | degraded | unknown>
661
649
 
662
- Planning visibility:
663
- PRD: <done | pending | missing | deferred> <artifact path when present>
664
- Roadmap: <done | pending | missing | deferred> <artifact path when present>
665
- Current milestone: <roadmap milestone, tier, or next planning gate when known>
666
- Completion basis: <state.json, PROGRESS.md, artifacts, or audit score source>
667
-
668
- Deliverable progress:
669
- Requirements: <done>/<total> done (<pct>%); <in-progress> in progress, <untouched> not started
670
- Increments: <done> done, <building> building, <pending> pending
671
- Ledger: .godpowers/REQUIREMENTS.md
672
-
673
650
  What changed:
674
651
  1. <highest-signal user-visible change>
675
652
  2. <highest-signal user-visible change>
@@ -677,22 +654,6 @@ What changed:
677
654
  Validation:
678
655
  + <command>: <result>
679
656
 
680
- Proactive checks:
681
- Checkpoint: <fresh | refreshed | stale>
682
- Reviews: <none | N pending, suggest /god-review-changes>
683
- Sync: <fresh | suggested | local helper ran>
684
- Docs: <fresh | suggested | drift-check spawned>
685
- Repo surface: <fresh | stale, suggest /god-doctor>
686
- Host: <full | degraded | unknown>
687
- Dogfood: <not-run | pass | fail | suggest /god-dogfood>
688
- Runtime: <not-applicable | suggested | browser test spawned>
689
- Security: <clear | suggested | harden spawned>
690
- Dependencies: <clear | suggested | deps audit spawned>
691
- Hygiene: <fresh | suggest /god-hygiene>
692
-
693
- Open items:
694
- 1. <none, or deployed staging deferred, pending review, unstaged files, etc.>
695
-
696
657
  Project is now in steady state. From here, ongoing work uses these workflows:
697
658
 
698
659
  Adding features: /god-feature
@@ -709,21 +670,18 @@ Periodic hygiene:
709
670
  Health check: /god-hygiene (combines audit + deps + docs)
710
671
  Deliverable status: /god-progress (requirements + increments done/left)
711
672
 
712
- Next:
713
- Recommended: <single safest command or decision>
714
- Why: <one sentence tied to disk state>
715
-
716
- Proposition:
717
- 1. Review status: /god-status (pipeline) or /god-progress (deliverables)
718
- 2. Continue work: /god-next or describe the next intent
719
- 3. Commit release-ready changes: stage only the intended files, then commit
720
- 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.
721
678
  ```
722
679
 
723
680
  Generate the dashboard with `lib/dashboard.compute(projectRoot)` and
724
- `lib/dashboard.render(result)` when the runtime bundle is available. If the
725
- runtime module cannot be loaded, fall back to a manual disk scan and say
726
- `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.
727
685
 
728
686
  The dashboard `Progress` line is workflow progress only. Audit scores,
729
687
  remediation scores, hygiene scores, and launch-readiness scores must be labeled
@@ -847,15 +805,14 @@ Show:
847
805
  - concise phase status
848
806
  - before each visible tier/sub-step, a short "what will happen" card
849
807
  - after each visible tier/sub-step, a short "what happened" card
850
- - every auto-invoked command, agent, and local runtime helper using an
851
- `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
852
810
  - durable state detected from disk
853
811
  - commands being run and whether they passed or failed
854
812
  - scoped file changes
855
813
  - final validation summary
856
- - final Godpowers Dashboard from disk, including phase, tier, step, progress,
857
- lifecycle, planning visibility, proactive checks, open items,
858
- worktree/index state, and recommended next action
814
+ - final compact action brief from disk, with `/god-status --full` offered for
815
+ the complete dashboard
859
816
  - plain-language workflow names. Say "project run" or "workflow" instead of
860
817
  unexplained "arc" in visible output
861
818
  - PRD and roadmap visibility when those artifacts exist or are expected
@@ -878,21 +835,17 @@ user-facing question. Do not expose the rule itself. Example: ask for
878
835
  `STAGING_APP_URL=<deployed staging origin>` at final sign-off rather than
879
836
  showing the Shipping Closure Protocol.
880
837
 
881
- ### Auto-Invoked Work Cards
838
+ ### Automatic Work Notes
882
839
 
883
840
  Every automatic step that mutates state, writes artifacts, validates gates, or
884
- 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.
885
844
 
886
845
  Use this shape:
887
846
 
888
847
  ```
889
- Auto-invoked:
890
- Trigger: <event that caused the automatic step>
891
- Agent: <agent name, or none, local runtime only>
892
- Local syncs:
893
- + <helper>: <result>
894
- Artifacts: <changed files, no-op, or deferred>
895
- Log: <path, or none>
848
+ Synced project artifacts after the change. Details were written to .godpowers/SYNC-LOG.md.
896
849
  ```
897
850
 
898
851
  Required auto-invoked cards:
@@ -1,16 +1,52 @@
1
1
  # Godpowers Dashboard Contract
2
2
 
3
- This reference owns the shared dashboard shape for `/god-status`, `/god-next`, `/god-mode` closeouts, and completed command closeouts.
3
+ This reference owns the shared closeout shape for `/god-status`, `/god-next`,
4
+ `/god-mode` closeouts, and completed command closeouts.
4
5
 
5
- ## Runtime source
6
+ ## Runtime Source
6
7
 
7
- Prefer `lib/dashboard.js` for dashboard computation. Call `dashboard.compute(projectRoot)`, then render with `dashboard.render(result)` unless the caller needs a narrower brief view.
8
+ Prefer `lib/dashboard.js` for status computation. Call
9
+ `dashboard.compute(projectRoot)`, then render a compact action brief unless the
10
+ user asks for `/god-status --full` or passes a verbose flag.
8
11
 
9
- If the runtime module is unavailable, use a manual disk scan and say `Dashboard engine: unavailable, manual scan used`.
12
+ If the runtime module is unavailable, use a manual disk scan quietly. Mention
13
+ the fallback only when it changes the recommendation, then suggest
14
+ `/god-doctor`.
10
15
 
11
- Never mix workflow progress with audit, hygiene, remediation, or launch-readiness scores. Label those scores separately when they appear.
16
+ Never mix workflow progress with audit, hygiene, remediation, or
17
+ launch-readiness scores. Label those scores separately when they appear.
12
18
 
13
- ## Required shape
19
+ ## Default Closeout
20
+
21
+ Completed work, proposals, diagnostics, lifecycle views, and status summaries
22
+ use this shape by default:
23
+
24
+ ```text
25
+ <one sentence describing the result or current position>
26
+
27
+ Changed:
28
+ - <highest-signal user-visible change>
29
+ - <highest-signal user-visible change>
30
+
31
+ Validation:
32
+ - <command>: <result>
33
+
34
+ Attention:
35
+ - <only blockers or signals that change the recommendation>
36
+
37
+ Next commands:
38
+ - <recommended command>: <one sentence reason>
39
+ - /god-status --full: See the complete dashboard and proactive checks.
40
+ ```
41
+
42
+ Omit empty sections. Do not render rows that only say `fresh`, `clear`,
43
+ `none`, or `not-applicable`.
44
+
45
+ ## Full Dashboard
46
+
47
+ The full dashboard is available on request through `/god-status --full` and in
48
+ release-gate evidence. It may also appear when a user explicitly asks for all
49
+ status details.
14
50
 
15
51
  ```text
16
52
  Godpowers Dashboard
@@ -43,13 +79,6 @@ Deliverable progress:
43
79
  Increments: <done> done, <building> building, <pending> pending
44
80
  Ledger: .godpowers/REQUIREMENTS.md
45
81
 
46
- What changed:
47
- 1. <highest-signal user-visible change>
48
- 2. <highest-signal user-visible change>
49
-
50
- Validation:
51
- + <command>: <result>
52
-
53
82
  Proactive checks:
54
83
  Checkpoint: <fresh | refreshed | missing | stale | conflicts with state.json>
55
84
  Reviews: <none | N pending, suggest /god-review-changes>
@@ -57,7 +86,7 @@ Proactive checks:
57
86
  Docs: <fresh | N stale, suggest /god-docs | repo-doc-sync ran>
58
87
  Repo surface: <fresh | N stale, suggest /god-doctor | repo-surface-sync ran>
59
88
  Host: <full | degraded | unknown with host and first gap>
60
- Runtime: <not-applicable | known URL, suggest /god-test-runtime | no known URL, defer deployed verification>
89
+ Runtime: <not-applicable | known URL, suggest /god-test-runtime | no known URL>
61
90
  Automation: <not configured | N active | available via provider, suggest /god-automation-setup>
62
91
  Security: <clear | sensitive files changed, suggest /god-harden>
63
92
  Dependencies: <clear | dependency files changed, suggest /god-update-deps>
@@ -66,28 +95,36 @@ Proactive checks:
66
95
  Open items:
67
96
  1. <deferred staging, unstaged files, pending review, blocker, or none>
68
97
 
69
- Next:
70
- Recommended: <one concrete command or user decision>
71
- Why: <one sentence tied to current state>
98
+ Next commands:
99
+ - <recommended command>: <one sentence reason>
100
+ - /god-next: Recompute the state-derived next step.
72
101
  ```
73
102
 
74
- ## Proposition closeout
103
+ ## Next Commands
75
104
 
76
- When a command only recommends work, end with this proposition block unless it already launched the selected command.
105
+ When a command only recommends work, end with this block unless it already
106
+ launched the selected command.
77
107
 
78
108
  ```text
79
- Proposition:
80
- 1. Implement partial: <single suggested command>
81
- 2. Implement complete: <recipe sequence or /god-mode when safe>
82
- 3. Discuss more: /god-discuss <routing ambiguity or missing prerequisite>
83
- 4. Inspect status: /god-status, /god-locate, or /god-next
84
- Recommended: <one option and why>
109
+ Next commands:
110
+ - <best runnable command>: <plain sentence reason>
111
+ - <second runnable command>: <plain sentence reason>
112
+ - <third runnable command>: <plain sentence reason>
85
113
  ```
86
114
 
87
- ## Proactive rules
115
+ Use 1 to 4 commands. Put the recommendation first. Do not show abstract
116
+ implementation choices when a slash command can name the next move.
117
+
118
+ ## Proactive Rules
88
119
 
89
- `/god-status` is read-only by default, so Level 3 agent work becomes a suggestion unless the user asked it to continue work.
120
+ `/god-status` is read-only by default, so Level 3 agent work becomes a
121
+ suggestion unless the user asked it to continue work.
90
122
 
91
- `/god-next` may run Level 2 local helpers only when there is a direct trigger. Standalone `/god-next` turns Level 3 work into the recommended command or a proposition option.
123
+ `/god-next` may run Level 1 read-only checks by default. It may run Level 2
124
+ local helpers only when there is a direct trigger and no destructive effect.
125
+ Standalone `/god-next` turns Level 3 work into the recommended command.
92
126
 
93
- Report checkpoint, review, sync, docs, repo surface, host, runtime, automation, security, dependency, and hygiene signals using the labels in the required shape.
127
+ Report checkpoint, review, sync, docs, repo surface, host, runtime, automation,
128
+ security, dependency, and hygiene signals using the labels in the full
129
+ dashboard only when they affect the recommendation or the user asks for full
130
+ status.
@@ -8,7 +8,7 @@ Cross-tier reference content used by multiple agents.
8
8
  - [ORCHESTRATORS.md](ORCHESTRATORS.md): composition patterns with other AI
9
9
  coding workflow systems, including migration and managed sync-back.
10
10
  - [GLOSSARY.md](GLOSSARY.md): standardized vocabulary across tiers.
11
- - [DASHBOARD-CONTRACT.md](DASHBOARD-CONTRACT.md): shared dashboard and proposition output contract.
11
+ - [DASHBOARD-CONTRACT.md](DASHBOARD-CONTRACT.md): shared dashboard and `Next commands:` output contract.
12
12
  - [LOCKING.md](LOCKING.md): shared state-lock contract for mutating commands.
13
13
 
14
14
  ## Planned content
@@ -0,0 +1,35 @@
1
+ apiVersion: godpowers/v1
2
+ kind: CommandRouting
3
+ metadata:
4
+ command: /god-demo
5
+ description: Safe sandbox proof
6
+ tier: 0
7
+ family: start
8
+
9
+ prerequisites:
10
+ required:
11
+ []
12
+
13
+ execution:
14
+ spawns: [built-in]
15
+ context: fresh
16
+ reads:
17
+ - fixtures/quick-proof/project/.godpowers/state.json
18
+ - fixtures/quick-proof/manifest.json
19
+ writes:
20
+ []
21
+
22
+ success-path:
23
+ next-recommended: /god-first-run
24
+ outcome:
25
+ type: deterministic
26
+ label: Sandbox proof rendered
27
+ reason: The shipped quick-proof fixture can be inspected without modifying the project.
28
+ allowed-next: [/god-first-run, /god-init, /god-status]
29
+
30
+ failure-path:
31
+ on-error: /god-doctor
32
+
33
+ endoff:
34
+ state-update: tier-0 updated for /god-demo
35
+ events: [agent.start, agent.end]