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.
- package/CHANGELOG.md +70 -5
- package/README.md +10 -6
- package/RELEASE.md +36 -23
- package/SKILL.md +9 -0
- package/agents/god-architect.md +17 -1
- package/agents/god-auditor.md +67 -6
- package/agents/god-docs-writer.md +5 -0
- package/agents/god-explorer.md +38 -2
- package/agents/god-orchestrator.md +24 -4
- package/agents/god-pm.md +10 -0
- package/agents/god-roadmapper.md +11 -0
- package/agents/god-stack-selector.md +8 -0
- package/lib/artifact-linter.js +3 -1
- package/lib/have-nots-validator.js +174 -0
- package/package.json +2 -2
- package/references/HAVE-NOTS.md +24 -0
- package/routing/god-mode.yaml +2 -1
- package/routing/god-preflight.yaml +36 -0
- package/routing/recipes/bluefield-org-aware.yaml +2 -0
- package/routing/recipes/brownfield-onboarding.yaml +4 -2
- package/skills/god-discuss.md +30 -6
- package/skills/god-doctor.md +2 -2
- package/skills/god-init.md +2 -2
- package/skills/god-lint.md +4 -1
- package/skills/god-mode.md +14 -2
- package/skills/god-next.md +5 -0
- package/skills/god-preflight.md +147 -0
- package/skills/god-version.md +2 -2
- package/templates/ARCH.md +3 -0
- package/templates/DOMAIN-GLOSSARY.md +50 -0
- package/workflows/bluefield-arc.yaml +13 -3
- package/workflows/brownfield-arc.yaml +13 -4
package/lib/artifact-linter.js
CHANGED
|
@@ -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.
|
|
4
|
-
"description": "AI-powered development system:
|
|
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
|
},
|
package/references/HAVE-NOTS.md
CHANGED
|
@@ -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
|
package/routing/god-mode.yaml
CHANGED
|
@@ -17,7 +17,8 @@ execution:
|
|
|
17
17
|
reads:
|
|
18
18
|
- .godpowers/prep/INITIAL-FINDINGS.md
|
|
19
19
|
- .godpowers/prep/IMPORTED-CONTEXT.md
|
|
20
|
-
|
|
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;
|
|
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;
|
|
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"
|
package/skills/god-discuss.md
CHANGED
|
@@ -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.
|
|
30
|
-
3.
|
|
31
|
-
4.
|
|
32
|
-
5.
|
|
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
|
|
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
|
```
|
package/skills/god-doctor.md
CHANGED
|
@@ -46,9 +46,9 @@ Plain-text report grouped by severity:
|
|
|
46
46
|
GODPOWERS DOCTOR
|
|
47
47
|
|
|
48
48
|
Install: claude (~/.claude/)
|
|
49
|
-
[OK]
|
|
49
|
+
[OK] 106 skills installed
|
|
50
50
|
[OK] 39 agents installed
|
|
51
|
-
[OK] VERSION matches (1.
|
|
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/
|
package/skills/god-init.md
CHANGED
|
@@ -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
|
|
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
|
package/skills/god-lint.md
CHANGED
|
@@ -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
|
package/skills/god-mode.md
CHANGED
|
@@ -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
|
|
package/skills/god-next.md
CHANGED
|
@@ -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.
|
package/skills/god-version.md
CHANGED
|
@@ -14,9 +14,9 @@ Print version and a short capability summary.
|
|
|
14
14
|
## Output
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
Godpowers v1.
|
|
17
|
+
Godpowers v1.6.0
|
|
18
18
|
Install: /Users/.../.claude/ (matches package.json)
|
|
19
|
-
Surface:
|
|
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
|
```
|