godpowers 1.0.0 → 1.6.0

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.
@@ -6,7 +6,7 @@
6
6
  * findings.
7
7
  *
8
8
  * Public API:
9
- * detectType(filePath) -> 'prd'|'arch'|'roadmap'|'stack'|'design'|'product'|null
9
+ * detectType(filePath) -> 'prd'|'arch'|'roadmap'|'stack'|'design'|'product'|'domain'|null
10
10
  * lintFile(filePath, opts) -> { type, findings, summary }
11
11
  * lintAll(projectRoot, opts) -> [{ path, type, findings, summary }, ...]
12
12
  *
@@ -28,6 +28,7 @@ function detectType(filePath) {
28
28
  if (lower.includes('/arch/') || basename === 'arch.md') return 'arch';
29
29
  if (lower.includes('/roadmap/') || basename === 'roadmap.md') return 'roadmap';
30
30
  if (lower.includes('/stack/') || basename === 'stack-decision.md' || basename === 'decision.md') return 'stack';
31
+ if (lower.includes('/domain/') || basename === 'domain-glossary.md' || basename === 'glossary.md') return 'domain';
31
32
  if (basename === 'design.md') return 'design';
32
33
  if (basename === 'product.md') return 'product';
33
34
  if (basename === 'postmortem.md') return 'postmortem';
@@ -82,6 +83,7 @@ function lintAll(projectRoot, opts = {}) {
82
83
  '.godpowers/arch/ARCH.md',
83
84
  '.godpowers/roadmap/ROADMAP.md',
84
85
  '.godpowers/stack/DECISION.md',
86
+ '.godpowers/domain/GLOSSARY.md',
85
87
  '.godpowers/design/DESIGN.md',
86
88
  'DESIGN.md',
87
89
  'PRODUCT.md'
@@ -22,6 +22,11 @@
22
22
  * P-08 open-q without owner mechanical (table column scan)
23
23
  * P-09 open-q without due date mechanical (table column scan)
24
24
  * A-04 NFR not mapped mechanical (PRD NFR vs ARCH map)
25
+ * DG-01 term without avoid aliases mechanical (term block scan)
26
+ * DG-02 implementation detail partial mechanical (technical-word scan)
27
+ * DG-03 ambiguity owner/due mechanical (section scan)
28
+ * DG-04 relationship undefined mechanical (bold term cross-check)
29
+ * DG-05 behavior definition partial mechanical (verb scan)
25
30
  *
26
31
  * Substitution test (U-01) is a partial mechanical check: flags sentences
27
32
  * containing only generic nouns ('users', 'developers', 'scalable',
@@ -524,6 +529,163 @@ function checkArchNfrMap(content, opts = {}) {
524
529
  return findings;
525
530
  }
526
531
 
532
+ /** DG-01: canonical term without avoided aliases */
533
+ function checkDomainAvoidAliases(content) {
534
+ const findings = [];
535
+ const lines = content.split('\n');
536
+ for (let i = 0; i < lines.length; i++) {
537
+ const line = lines[i].trim();
538
+ const match = line.match(/^\*\*([^*\]]+)\*\*:\s*(.+)/);
539
+ if (!match) continue;
540
+ const term = match[1].trim();
541
+ if (!term || term.startsWith('[')) continue;
542
+ let hasAvoid = false;
543
+ for (let j = i + 1; j < Math.min(lines.length, i + 5); j++) {
544
+ const next = lines[j].trim();
545
+ if (/^\*\*[^*]+\*\*:/.test(next) || /^#{1,6}\s/.test(next)) break;
546
+ const avoidMatch = next.match(/^_Avoid_:\s*(.+)/i);
547
+ if (avoidMatch && avoidMatch[1].trim() && !avoidMatch[1].includes('[')) {
548
+ hasAvoid = true;
549
+ break;
550
+ }
551
+ }
552
+ if (!hasAvoid) {
553
+ findings.push({
554
+ code: 'DG-01',
555
+ severity: 'warning',
556
+ line: i + 1,
557
+ column: 1,
558
+ message: `Glossary term "${term}" has no avoided aliases listed.`,
559
+ suggestion: 'Add an _Avoid_: line with non-canonical aliases or overloaded words.'
560
+ });
561
+ }
562
+ }
563
+ return findings;
564
+ }
565
+
566
+ /** DG-02: implementation detail in glossary */
567
+ function checkDomainImplementationDetails(content) {
568
+ const findings = [];
569
+ const technicalWords = /\b(src\/|lib\/|\.js\b|\.ts\b|\.tsx\b|React|Vue|Svelte|Postgres|MySQL|Redis|Kafka|API endpoint|endpoint|function|class|module|component|database|ORM|queue|HTTP|GraphQL)\b/i;
570
+ const lines = content.split('\n');
571
+ for (let i = 0; i < lines.length; i++) {
572
+ const line = lines[i];
573
+ if (technicalWords.test(line)) {
574
+ findings.push({
575
+ code: 'DG-02',
576
+ severity: 'warning',
577
+ line: i + 1,
578
+ column: 1,
579
+ message: 'Possible implementation detail in domain glossary.',
580
+ suggestion: 'Keep implementation details in PRD, ARCH, STACK, docs, or code-linked artifacts.'
581
+ });
582
+ }
583
+ }
584
+ return findings;
585
+ }
586
+
587
+ /** DG-03: unresolved ambiguity without owner or due date */
588
+ function checkDomainAmbiguityOwners(content) {
589
+ const findings = [];
590
+ const section = extractSection(content, /^##\s*Flagged Ambiguities/im);
591
+ if (!section) return findings;
592
+ const lines = section.body.split('\n');
593
+ for (let i = 0; i < lines.length; i++) {
594
+ const line = lines[i].trim();
595
+ if (!line.startsWith('-')) continue;
596
+ const lineWithoutLabel = line.replace(/\[OPEN QUESTION\]/g, '');
597
+ if (lineWithoutLabel.includes('[')) continue;
598
+ const isOpen = line.includes('[OPEN QUESTION]') || /\bambigu/i.test(line);
599
+ if (!isOpen) continue;
600
+ if (!/\bOwner:\s*[^.\]]+/i.test(line)) {
601
+ findings.push({
602
+ code: 'DG-03',
603
+ severity: 'error',
604
+ line: section.startLine + i,
605
+ column: 1,
606
+ message: 'Glossary ambiguity has no owner.',
607
+ suggestion: 'Add Owner: [name] to the ambiguity.'
608
+ });
609
+ }
610
+ if (!/\bDue:\s*[^.\]]+/i.test(line)) {
611
+ findings.push({
612
+ code: 'DG-03',
613
+ severity: 'error',
614
+ line: section.startLine + i,
615
+ column: 1,
616
+ message: 'Glossary ambiguity has no due date.',
617
+ suggestion: 'Add Due: [date or command gate] to the ambiguity.'
618
+ });
619
+ }
620
+ }
621
+ return findings;
622
+ }
623
+
624
+ /** DG-04: relationship references undefined canonical term */
625
+ function checkDomainRelationshipTerms(content) {
626
+ const findings = [];
627
+ const language = extractSection(content, /^##\s*Language/im);
628
+ const relationships = extractSection(content, /^##\s*Relationships/im);
629
+ if (!language || !relationships) return findings;
630
+
631
+ const canonical = new Set();
632
+ const languageLines = language.body.split('\n');
633
+ for (const line of languageLines) {
634
+ const match = line.trim().match(/^\*\*([^*\]]+)\*\*:/);
635
+ if (match && !match[1].startsWith('[')) {
636
+ canonical.add(match[1].trim());
637
+ }
638
+ }
639
+
640
+ const relLines = relationships.body.split('\n');
641
+ for (let i = 0; i < relLines.length; i++) {
642
+ const relLineWithoutLabels = relLines[i]
643
+ .replace(/\[DECISION\]/g, '')
644
+ .replace(/\[HYPOTHESIS\]/g, '')
645
+ .replace(/\[OPEN QUESTION\]/g, '');
646
+ if (relLineWithoutLabels.includes('[')) continue;
647
+ const boldTerms = [...relLines[i].matchAll(/\*\*([^*\]]+)\*\*/g)].map(m => m[1].trim());
648
+ for (const term of boldTerms) {
649
+ if (term.startsWith('[')) continue;
650
+ if (!canonical.has(term)) {
651
+ findings.push({
652
+ code: 'DG-04',
653
+ severity: 'warning',
654
+ line: relationships.startLine + i,
655
+ column: 1,
656
+ message: `Relationship references undefined glossary term "${term}".`,
657
+ suggestion: 'Define the term in Language or replace it with a canonical term.'
658
+ });
659
+ }
660
+ }
661
+ }
662
+ return findings;
663
+ }
664
+
665
+ /** DG-05: definition describes behavior instead of identity */
666
+ function checkDomainDefinitionBehavior(content) {
667
+ const findings = [];
668
+ const behaviorWords = /\b(handles|processes|manages|stores|renders|calls|sends|receives|creates|updates|deletes|calculates|syncs)\b/i;
669
+ const lines = content.split('\n');
670
+ for (let i = 0; i < lines.length; i++) {
671
+ const line = lines[i].trim();
672
+ const match = line.match(/^\*\*([^*\]]+)\*\*:\s*(.+)/);
673
+ if (!match || match[1].startsWith('[')) continue;
674
+ const definition = match[2];
675
+ if (behaviorWords.test(definition)) {
676
+ findings.push({
677
+ code: 'DG-05',
678
+ severity: 'warning',
679
+ line: i + 1,
680
+ column: 1,
681
+ message: `Glossary definition for "${match[1]}" may describe behavior instead of identity.`,
682
+ suggestion: 'Define what the term is in one sentence. Put behavior in PRD, ARCH, or docs.'
683
+ });
684
+ }
685
+ }
686
+ return findings;
687
+ }
688
+
527
689
  // ============================================================================
528
690
  // Helpers
529
691
  // ============================================================================
@@ -579,6 +741,13 @@ const ARTIFACT_CHECKS = {
579
741
  ],
580
742
  arch: [
581
743
  { code: 'A-04', fn: checkArchNfrMap }
744
+ ],
745
+ domain: [
746
+ { code: 'DG-01', fn: checkDomainAvoidAliases },
747
+ { code: 'DG-02', fn: checkDomainImplementationDetails },
748
+ { code: 'DG-03', fn: checkDomainAmbiguityOwners },
749
+ { code: 'DG-04', fn: checkDomainRelationshipTerms },
750
+ { code: 'DG-05', fn: checkDomainDefinitionBehavior }
582
751
  ]
583
752
  };
584
753
 
@@ -643,5 +812,10 @@ module.exports = {
643
812
  checkPrdNoGos,
644
813
  checkPrdOpenQuestions,
645
814
  checkArchNfrMap,
815
+ checkDomainAvoidAliases,
816
+ checkDomainImplementationDetails,
817
+ checkDomainAmbiguityOwners,
818
+ checkDomainRelationshipTerms,
819
+ checkDomainDefinitionBehavior,
646
820
  extractSection
647
821
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "godpowers",
3
- "version": "1.0.0",
4
- "description": "AI-powered development system: 105 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.",
3
+ "version": "1.6.0",
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"
7
7
  },
@@ -179,6 +179,30 @@ Choice motivated by "looks good on resume" rather than fit-for-PRD. Fail.
179
179
  Looks robust on paper but fails first real load. NFR validation must include
180
180
  worst-case analysis. Fail.
181
181
 
182
+ #### A-13 ADR inflation
183
+ An ADR records a decision that is easy to reverse, obvious without context, or
184
+ not the result of a real tradeoff. Fail.
185
+
186
+ ### Domain Glossary Have-Nots
187
+
188
+ #### DG-01 Canonical term without avoided aliases
189
+ A glossary term names the canonical language but does not list avoided aliases.
190
+ Fail.
191
+
192
+ #### DG-02 Implementation detail in glossary
193
+ The domain glossary stores implementation details, stack choices, code paths,
194
+ or technical scratch notes. The glossary is domain language only. Fail.
195
+
196
+ #### DG-03 Unresolved ambiguity without owner or due date
197
+ An ambiguity is recorded without an owner or due date. Fail.
198
+
199
+ #### DG-04 Relationship uses non-canonical term
200
+ A relationship references a term that is not defined in the glossary language
201
+ section. Fail.
202
+
203
+ #### DG-05 Definition does behavior work
204
+ A definition describes what the system does instead of what the term is. Fail.
205
+
182
206
  ### Roadmap Have-Nots
183
207
 
184
208
  #### R-01 Generic milestone goal
@@ -17,7 +17,8 @@ execution:
17
17
  reads:
18
18
  - .godpowers/prep/INITIAL-FINDINGS.md
19
19
  - .godpowers/prep/IMPORTED-CONTEXT.md
20
- secondary-spawns: [god-pm, god-designer, god-architect, god-roadmapper, god-stack-selector, god-repo-scaffolder, god-planner, god-executor, god-spec-reviewer, god-quality-reviewer, god-deploy-engineer, god-observability-engineer, god-harden-auditor, god-launch-strategist]
20
+ - .godpowers/preflight/PREFLIGHT.md
21
+ secondary-spawns: [god-auditor, god-pm, god-designer, god-architect, god-roadmapper, god-stack-selector, god-repo-scaffolder, god-planner, god-executor, god-spec-reviewer, god-quality-reviewer, god-deploy-engineer, god-observability-engineer, god-harden-auditor, god-launch-strategist]
21
22
  writes:
22
23
  []
23
24
 
@@ -0,0 +1,36 @@
1
+ apiVersion: godpowers/v1
2
+ kind: CommandRouting
3
+ metadata:
4
+ command: /god-preflight
5
+ description: Read-only intake audit before arc-ready and pillars
6
+ tier: 0
7
+
8
+ prerequisites:
9
+ required:
10
+ - check: codebase-present
11
+ human-required: true
12
+
13
+ execution:
14
+ spawns: [god-auditor]
15
+ context: fresh
16
+ writes:
17
+ - .godpowers/preflight/PREFLIGHT.md
18
+
19
+ success-path:
20
+ next-recommended: /god-archaeology
21
+ alternatives:
22
+ - command: /god-init
23
+ when: missing-basic-project-state
24
+ - command: /god-reconstruct
25
+ when: planning-artifacts-missing
26
+ - command: /god-tech-debt
27
+ when: debt-dominates-risk
28
+ - command: /god-audit
29
+ when: artifacts-exist
30
+
31
+ failure-path:
32
+ on-error: /god-doctor
33
+
34
+ endoff:
35
+ state-update: preflight completed
36
+ events: [agent.start, artifact.created, agent.end]
@@ -19,6 +19,8 @@ sequences:
19
19
  steps:
20
20
  - command: "/god-org-context init"
21
21
  why: "Capture org-level standards and constraints"
22
+ - command: "/god-preflight"
23
+ why: "Inspect inherited context before arc-ready and pillars"
22
24
  - command: "/god-init"
23
25
  why: "Detect bluefield mode"
24
26
  - command: "/god-mode --bluefield"
@@ -3,7 +3,7 @@ kind: Recipe
3
3
  metadata:
4
4
  name: brownfield-onboarding
5
5
  category: starting
6
- description: "Inheriting an existing codebase; archaeology + reconstruction first"
6
+ description: "Inheriting an existing codebase; preflight before archaeology"
7
7
 
8
8
  triggers:
9
9
  intent-keywords:
@@ -16,8 +16,10 @@ triggers:
16
16
 
17
17
  sequences:
18
18
  default:
19
- description: "Inheriting an existing codebase; archaeology + reconstruction first"
19
+ description: "Inheriting an existing codebase; preflight before archaeology"
20
20
  steps:
21
+ - command: "/god-preflight"
22
+ why: "Read-only intake audit before arc-ready and pillars"
21
23
  - command: "/god-archaeology"
22
24
  why: "Deep history, decisions, conventions, risks"
23
25
  - command: "/god-reconstruct"
@@ -11,7 +11,7 @@ description: |
11
11
 
12
12
  # /god-discuss
13
13
 
14
- Pre-planning Socratic discussion.
14
+ Pre-planning Socratic discussion with domain grilling.
15
15
 
16
16
  ## When to use
17
17
 
@@ -26,21 +26,45 @@ Spawn god-explorer in fresh context with focus="next-phase-scoping".
26
26
 
27
27
  The agent:
28
28
  1. Reads the active workflow context
29
- 2. Asks targeted (not open-ended) questions
30
- 3. Surfaces 2-3 hidden assumptions
31
- 4. Identifies what's [DECISION] vs [HYPOTHESIS] vs [OPEN QUESTION]
32
- 5. Drafts a brief in `.godpowers/discussions/<topic>.md`
29
+ 2. Reads `.godpowers/domain/GLOSSARY.md` if it exists
30
+ 3. Asks targeted questions one at a time, with a recommended answer for each
31
+ 4. Explores the codebase instead of asking when repo evidence can answer
32
+ 5. Challenges vague, overloaded, or conflicting terms against the glossary
33
+ 6. Stress-tests domain relationships with concrete scenarios and edge cases
34
+ 7. Surfaces 2-3 hidden assumptions
35
+ 8. Identifies what's [DECISION] vs [HYPOTHESIS] vs [OPEN QUESTION]
36
+ 9. Drafts a brief in `.godpowers/discussions/<topic>.md`
37
+ 10. Updates `.godpowers/domain/GLOSSARY.md` when a term or ambiguity is resolved
33
38
 
34
- The brief gets passed to the next planning command.
39
+ The brief and glossary get passed to the next planning command. The glossary is
40
+ preparation context, not a replacement for PRD, ARCH, ROADMAP, STACK, or Pillars
41
+ files.
42
+
43
+ ## Domain Glossary Rules
44
+
45
+ - Create `.godpowers/domain/GLOSSARY.md` lazily from `templates/DOMAIN-GLOSSARY.md`
46
+ only when the discussion resolves the first project-specific term.
47
+ - Keep `.godpowers/domain/GLOSSARY.md` free of implementation details.
48
+ - Use the glossary for canonical terms, avoided aliases, relationships, example
49
+ dialogue, flagged ambiguities, and source notes.
50
+ - When the user uses a term that conflicts with the glossary, call out the
51
+ conflict immediately and ask which meaning should win.
52
+ - When the user uses a fuzzy term, propose a precise canonical term and the
53
+ avoided aliases.
54
+ - Offer ADRs only when all three are true: the decision is hard to reverse, a
55
+ future reader would find it surprising without context, and the choice came
56
+ from a real tradeoff.
35
57
 
36
58
  ## Output
37
59
 
38
60
  ```
39
61
  Discussion complete: .godpowers/discussions/<topic>.md
62
+ Domain glossary: .godpowers/domain/GLOSSARY.md (created or updated if terms resolved)
40
63
 
41
64
  Key findings:
42
65
  - [assumption surfaced]
43
66
  - [open question that needs human decision]
67
+ - [term or ambiguity resolved]
44
68
 
45
69
  Suggested next: [the planning command this discussion was for]
46
70
  ```
@@ -46,9 +46,9 @@ Plain-text report grouped by severity:
46
46
  GODPOWERS DOCTOR
47
47
 
48
48
  Install: claude (~/.claude/)
49
- [OK] 105 skills installed
49
+ [OK] 106 skills installed
50
50
  [OK] 39 agents installed
51
- [OK] VERSION matches (1.0.0)
51
+ [OK] VERSION matches (1.6.0)
52
52
  [WARN] routing/god-doctor.yaml exists but skill file did not until now
53
53
 
54
54
  Project: /Users/.../my-project/.godpowers/
@@ -94,8 +94,8 @@ needs to specify a mode.
94
94
  - Write `.godpowers/prep/IMPORTED-CONTEXT.md` when useful context exists
95
95
  - Initialize native Pillars context and record Pillars health in
96
96
  `INITIAL-FINDINGS.md`
97
- - For brownfield: schedule archaeology + reconstruction as preflight
98
- - For bluefield: load org-context as constraint
97
+ - For brownfield: schedule preflight before archaeology + reconstruction
98
+ - For bluefield: load org-context, then schedule preflight as constraint intake
99
99
  - Create directory structure
100
100
  - Write PROGRESS.md with mode, scale, timestamp, tier states
101
101
  - Return mode/scale/announcement to this skill
@@ -22,6 +22,9 @@ have-nots catalog. Real validation, not self-attestation. Catches:
22
22
  - PRD have-nots: metric without timeline / method, empty no-gos, open
23
23
  questions without owner / due date (P-04, P-05, P-07, P-08, P-09)
24
24
  - ARCH have-nots: NFR not mapped to architectural choice (A-04)
25
+ - Domain glossary have-nots: missing avoided aliases, implementation details,
26
+ unresolved ambiguities, undefined relationship terms, behavior-heavy
27
+ definitions (DG-01..DG-05)
25
28
 
26
29
  More mechanical have-nots wired in over time. Interpretive checks (e.g.,
27
30
  "is the architecture actually good") remain agent-mediated.
@@ -40,7 +43,7 @@ More mechanical have-nots wired in over time. Interpretive checks (e.g.,
40
43
  1. Verify `.godpowers/` exists. If not: "Run `/god-init` first."
41
44
  2. Resolve target paths:
42
45
  - With argument: just that file
43
- - Without: scan `.godpowers/{prd,arch,roadmap,stack,design}/` plus
46
+ - Without: scan `.godpowers/{prd,arch,roadmap,stack,domain,design}/` plus
44
47
  `DESIGN.md` and `PRODUCT.md` at project root
45
48
  3. For each target:
46
49
  - Detect artifact type from path
@@ -78,6 +78,8 @@ You are receiving a /god-mode invocation. Your job is to spawn the
78
78
  - Instruction to read `.godpowers/prep/INITIAL-FINDINGS.md` and
79
79
  `.godpowers/prep/IMPORTED-CONTEXT.md` if present before choosing the
80
80
  first planning or build step
81
+ - Instruction to read `.godpowers/preflight/PREFLIGHT.md` if present before
82
+ choosing the first brownfield or bluefield action
81
83
  - Instruction to compute and load the Pillars load set before every major
82
84
  command, because Pillars is the native project context layer
83
85
  - Instruction to run `/god-design` after `/god-prd` and before `/god-arch`
@@ -104,6 +106,9 @@ You are receiving a /god-mode invocation. Your job is to spawn the
104
106
  must be acted on by god-greenfieldifier. The greenfieldifier writes
105
107
  `.godpowers/audit/GREENFIELDIFY-PLAN.md`, pauses before risky canonical
106
108
  artifact rewrites, and updates every affected artifact after approval.
109
+ - Instruction that brownfield and bluefield arcs run `/god-preflight`
110
+ automatically when `.godpowers/preflight/PREFLIGHT.md` is absent.
111
+ Greenfield arcs skip preflight unless the user explicitly requests it.
107
112
 
108
113
  6. Keep the spawn payload private. Do not echo or summarize raw Task input,
109
114
  "Hard instructions", hidden orchestration rules, agent prompts, file
@@ -114,8 +119,8 @@ You are receiving a /god-mode invocation. Your job is to spawn the
114
119
 
115
120
  7. Orchestrator runs the appropriate workflow:
116
121
  - Greenfield -> full-arc
117
- - Brownfield -> brownfield-arc (archaeology -> reconstruct -> debt-assess -> greenfield simulation audit -> greenfieldify plan and approved artifact updates -> proceed)
118
- - Bluefield -> bluefield-arc (org-context -> greenfield simulation audit -> greenfieldify plan and approved artifact updates -> arc with constraints)
122
+ - Brownfield -> brownfield-arc (preflight -> archaeology -> reconstruct -> debt-assess -> greenfield simulation audit -> greenfieldify plan and approved artifact updates -> proceed)
123
+ - Bluefield -> bluefield-arc (org-context -> preflight -> greenfield simulation audit -> greenfieldify plan and approved artifact updates -> arc with constraints)
119
124
 
120
125
  8. Relay only the orchestrator's user-facing output to the user. If the
121
126
  platform displays raw spawn details automatically, immediately follow with a
@@ -172,6 +177,13 @@ and logs decisions to `.godpowers/YOLO-DECISIONS.md`. Pillar sync proposals
172
177
  generated from durable Godpowers artifact changes are auto-applied in this
173
178
  mode and logged as YOLO decisions.
174
179
 
180
+ For brownfield and bluefield, `--yolo` still runs `/god-preflight` first when
181
+ `.godpowers/preflight/PREFLIGHT.md` is absent. The orchestrator then follows
182
+ the preflight report's safest recommended route automatically, logging that
183
+ choice to `.godpowers/YOLO-DECISIONS.md`. Preflight may only pause under
184
+ `--yolo` for Critical security findings or a contradiction that makes route
185
+ selection impossible.
186
+
175
187
  ### --conservative
176
188
  Pass through. Orchestrator pauses at every tier boundary.
177
189
 
@@ -251,9 +251,14 @@ When in steady state, match keywords to workflows:
251
251
  | upgrade, migrate, bump major | /god-upgrade |
252
252
  | docs, documentation, README | /god-docs |
253
253
  | deps, dependencies, audit | /god-update-deps |
254
+ | preflight, intake, audit before arc-ready, audit before pillars | /god-preflight |
254
255
  | audit, score, quality check | /god-audit |
255
256
  | health check, hygiene | /god-hygiene |
256
257
 
258
+ If mode detection indicates brownfield or bluefield and
259
+ `.godpowers/preflight/PREFLIGHT.md` is missing, prefer `/god-preflight` before
260
+ recommending archaeology, reconstruction, arc-ready, pillars, or refactor work.
261
+
257
262
  ## Output Format
258
263
 
259
264
  ```
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: god-preflight
3
+ description: |
4
+ Run a read-only intake audit before arc-ready, pillars, archaeology, or
5
+ reconstruction work. Inventory the codebase, surface blockers, and recommend
6
+ the safest next pass without changing project code.
7
+
8
+ Triggers on: "god preflight", "/god-preflight", "preflight audit",
9
+ "audit before arc-ready", "audit before pillars", "intake audit"
10
+ ---
11
+
12
+ # /god-preflight
13
+
14
+ Read-only intake audit for an existing codebase.
15
+
16
+ ## When to use
17
+
18
+ - Before applying arc-ready direction to an existing repo
19
+ - Before scoring the repo against pillars
20
+ - Before brownfield archaeology or reconstruction
21
+ - When deciding whether to restructure, refactor, initialize Godpowers, or pause
22
+
23
+ ## Purpose
24
+
25
+ This command diagnoses the repo before stronger workflows touch it.
26
+
27
+ It answers:
28
+
29
+ - What kind of project is this?
30
+ - What structure, tooling, tests, docs, CI, deploy paths, and agent instructions exist?
31
+ - What is missing before arc-ready can make good decisions?
32
+ - Which pillar weaknesses are already visible?
33
+ - What areas are risky to refactor before more evidence exists?
34
+ - What is the safest next pass?
35
+
36
+ ## Process
37
+
38
+ 1. Verify the target directory contains code or project configuration.
39
+ 2. Create `.godpowers/preflight/` if needed.
40
+ 3. Inspect the repo read-only:
41
+ - package manifests, lockfiles, build files, test config, CI config
42
+ - source tree shape, entry points, module boundaries, scripts
43
+ - README, docs, ADRs, architecture notes, env examples, AGENTS.md
44
+ - test presence, test command discoverability, coverage signals
45
+ - deploy, observability, security, dependency, and ownership signals
46
+ 4. Produce `.godpowers/preflight/PREFLIGHT.md`.
47
+ 5. Do not edit source files, planning artifacts, configs, or docs outside
48
+ `.godpowers/preflight/`.
49
+
50
+ ## Scoring
51
+
52
+ Score only what can be supported by repo evidence.
53
+
54
+ Use these dimensions:
55
+
56
+ | Dimension | Looks for |
57
+ |---|---|
58
+ | Repo shape | Project type, framework, package manager, entry points, source layout |
59
+ | Arc readiness | Product direction, architecture notes, roadmap, deploy story, decision records |
60
+ | Pillar readiness | Tests, security, docs, observability, maintainability, UX, deployability |
61
+ | Godpowers readiness | Disk artifacts, AGENTS.md, commands, progress state, safe agent boundaries |
62
+ | Refactor risk | Coupling, missing tests, unclear ownership, ambiguous runtime paths |
63
+ | Suite signals | Multi-package or multi-repo structure, shared packages, release coordination |
64
+
65
+ Scores are directional, not final quality grades. The value is the evidence and
66
+ the sequence.
67
+
68
+ ## Output
69
+
70
+ The report must be plain and evidence-backed. Every recommendation must explain
71
+ why it comes before the next one.
72
+
73
+ Write `.godpowers/preflight/PREFLIGHT.md`:
74
+
75
+ ```markdown
76
+ # Godpowers Preflight
77
+
78
+ Date: [timestamp]
79
+ Target: [path]
80
+
81
+ ## Snapshot
82
+
83
+ - DECISION: Project type is [type] because [files or commands].
84
+ - HYPOTHESIS: Primary runtime appears to be [runtime] because [evidence].
85
+ - OPEN QUESTION: [question that blocks confident planning].
86
+
87
+ ## Readiness Scores
88
+
89
+ | Lens | Score | Evidence | Main blocker |
90
+ |---|---:|---|---|
91
+ | Arc-ready | [0-100] | [specific files or absence] | [blocker] |
92
+ | Pillars | [0-100] | [specific files or absence] | [blocker] |
93
+ | Godpowers | [0-100] | [specific files or absence] | [blocker] |
94
+ | Ready-suite | [0-100 or N/A] | [specific files or absence] | [blocker] |
95
+
96
+ ## Inventory
97
+
98
+ - DECISION: [thing found] at `[path]`.
99
+ - HYPOTHESIS: [thing inferred] from `[path]`.
100
+
101
+ ## Blockers Before Arc-Ready
102
+
103
+ 1. DECISION: [blocker].
104
+ Evidence: `[path]` or missing `[path]`.
105
+ Next move: [specific command or artifact].
106
+
107
+ ## Pillar Weaknesses
108
+
109
+ 1. DECISION: [weakness].
110
+ Evidence: `[path]` or missing `[path]`.
111
+ Impact: [why it matters].
112
+
113
+ ## Refactor Risk
114
+
115
+ 1. HYPOTHESIS: [risk].
116
+ Evidence: `[path]`.
117
+ Avoid until: [needed proof or test].
118
+
119
+ ## Recommended Sequence
120
+
121
+ 1. DECISION: Run [next command or task] first because [reason].
122
+ 2. DECISION: Run [next command or task] second because [reason].
123
+ 3. DECISION: Defer [task] until [condition].
124
+ ```
125
+
126
+ ## Routing Guidance
127
+
128
+ Use the report to choose the next pass:
129
+
130
+ | Finding | Suggested next |
131
+ |---|---|
132
+ | Missing basic project state | `/god-init` |
133
+ | Unknown legacy structure | `/god-archaeology` |
134
+ | Existing code lacks planning artifacts | `/god-reconstruct` |
135
+ | Debt dominates delivery risk | `/god-tech-debt` |
136
+ | Artifacts exist but quality is unknown | `/god-audit` |
137
+ | Tests are absent before refactor | `/god-add-tests` |
138
+ | Refactor path is obvious and bounded | `/god-refactor` |
139
+
140
+ ## Guardrails
141
+
142
+ - Build nothing.
143
+ - Do not modify application code.
144
+ - Do not normalize formatting.
145
+ - Do not create roadmap, PRD, architecture, or pillar artifacts.
146
+ - Do not score by vibe. Tie every score to evidence.
147
+ - Prefer "unknown" over confident invention.
@@ -14,9 +14,9 @@ Print version and a short capability summary.
14
14
  ## Output
15
15
 
16
16
  ```
17
- Godpowers v1.0.0
17
+ Godpowers v1.6.0
18
18
  Install: /Users/.../.claude/ (matches package.json)
19
- Surface: 105 skills, 39 agents, 13 workflows, 36 recipes
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
21
21
  External integrations available: impeccable, agent-browser (others lazy)
22
22
  ```