mindforge-cc 11.9.8 → 11.9.9
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/.agent/mindforge/health.md +7 -4
- package/.agent/mindforge/help.md +9 -5
- package/.agent/mindforge/install-skill.md +8 -6
- package/.agent/mindforge/marketplace.md +6 -0
- package/.agent/mindforge/security-scan.md +9 -4
- package/.agent/mindforge/skills-index.md +1 -1
- package/.agent/mindforge/status.md +5 -4
- package/.claude/commands/mindforge/health.md +7 -4
- package/.claude/commands/mindforge/help.md +9 -5
- package/.claude/commands/mindforge/install-skill.md +8 -6
- package/.claude/commands/mindforge/marketplace.md +6 -0
- package/.claude/commands/mindforge/security-scan.md +9 -4
- package/.claude/commands/mindforge/skills-index.md +1 -1
- package/.claude/commands/mindforge/status.md +5 -4
- package/.mindforge/config.json +1 -1
- package/.mindforge/dynamic-workflows/scripts/feature-planner.js +12 -0
- package/.mindforge/dynamic-workflows/scripts/incident-response.js +6 -0
- package/.mindforge/dynamic-workflows/scripts/onboard-codebase.js +9 -0
- package/.mindforge/dynamic-workflows/scripts/perf-optimize.js +6 -0
- package/.mindforge/dynamic-workflows/scripts/refactor-plan.js +3 -0
- package/.mindforge/dynamic-workflows/scripts/release-prep.js +9 -0
- package/.mindforge/dynamic-workflows/scripts/tdd-sprint.js +12 -0
- package/.mindforge/dynamic-workflows/scripts/verification-loop.js +6 -0
- package/.mindforge/org/skills/MANIFEST.md +32 -0
- package/.mindforge/personas/mf-executor.md +1 -1
- package/.mindforge/personas/mf-memory.md +1 -1
- package/.mindforge/personas/mf-tool.md +1 -1
- package/.mindforge/personas/swarm-templates.json +10 -20
- package/CHANGELOG.md +58 -0
- package/MINDFORGE-AGENTIC-SECURITY.md +189 -0
- package/MINDFORGE.md +2 -2
- package/README.md +134 -87
- package/RELEASENOTES.md +28 -0
- package/SECURITY.md +1 -1
- package/bin/governance/audit-verifier.js +12 -3
- package/bin/installer/harness-adapter-compliance.js +1 -1
- package/bin/installer-core.js +58 -14
- package/bin/mindforge-cli.js +2 -2
- package/bin/verify-audit.js +7 -1
- package/changelogs/v11.9.9.md +59 -0
- package/docs/References/commands.md +2 -2
- package/docs/References/config-reference.md +20 -35
- package/docs/References/sdk-api.md +10 -4
- package/docs/References/skills-api.md +9 -7
- package/docs/commands-reference.md +2 -2
- package/docs/faq.md +2 -2
- package/docs/getting-started.md +9 -3
- package/docs/sdk-reference.md +3 -3
- package/docs/security/SECURITY.md +14 -0
- package/docs/security/ZTAI-OVERVIEW.md +53 -0
- package/docs/security/penetration-test-results.md +36 -0
- package/docs/security/threat-model.md +148 -0
- package/docs/troubleshooting.md +14 -10
- package/docs/user-guide.md +12 -8
- package/docs/usp-features.md +60 -0
- package/package.json +4 -1
- package/subagents/README.md +38 -0
- package/.agent/skills/godmode/SKILL.md +0 -396
- package/.agent/skills/godmode/references/jailbreak-templates.md +0 -128
- package/.agent/skills/godmode/references/refusal-detection.md +0 -142
|
@@ -14,10 +14,13 @@ Run all seven health-engine categories from `.mindforge/intelligence/health-engi
|
|
|
14
14
|
- informational signals
|
|
15
15
|
|
|
16
16
|
## Sovereign Intelligence Checks (v6.2.0-alpha)
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
- **
|
|
20
|
-
|
|
17
|
+
These are file-presence checks only, not functional verification — PQAS is simulated/inactive by
|
|
18
|
+
default (`pqas_enabled=false` in `.mindforge/config.json`; see MINDFORGE.md `[PQAS_ENFORCED]`).
|
|
19
|
+
- **PQAS file present**: Check `bin/governance/quantum-crypto.js` exists (the module itself has no
|
|
20
|
+
CLI entrypoint and performs no framework-signature verification)
|
|
21
|
+
- **Homing file present**: Check `bin/autonomous/intent-harvester.js` exists
|
|
22
|
+
- **Self-Healer file present**: Check `bin/autonomous/mesh-self-healer.js` exists
|
|
23
|
+
- **Policy check**: Read `bin/governance/policy-engine.js` for illegal bypass additions
|
|
21
24
|
|
|
22
25
|
## Flags
|
|
23
26
|
- `--repair`: apply safe auto-repair only
|
package/.agent/mindforge/help.md
CHANGED
|
@@ -18,11 +18,15 @@ If `.planning/PROJECT.md` is missing, treat the project as "Not initialised".
|
|
|
18
18
|
| /mindforge:init-project | ... |
|
|
19
19
|
| ... | ... |
|
|
20
20
|
|
|
21
|
-
## Sovereign Intelligence (v6.2.0-alpha)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
## Sovereign Intelligence (v6.2.0-alpha) — status
|
|
22
|
+
- **PQAS**: Post-Quantum Agentic Security is simulated/inactive by default (`pqas_enabled=false`,
|
|
23
|
+
gated behind `experimental.pqc_demo` in `.mindforge/config.json`; see MINDFORGE.md
|
|
24
|
+
`[PQAS_ENFORCED]`). There is no biometric/executive bypass gate. Tier-3 trust uses real Ed25519
|
|
25
|
+
signing, not PQAS.
|
|
26
|
+
- **Proactive Homing**: advisory framing around `bin/autonomous/intent-harvester.js` — not a
|
|
27
|
+
verified drift-detection guarantee.
|
|
28
|
+
- **Integrity**: `/mindforge:security-scan` does not verify framework signatures via lattice-based
|
|
29
|
+
cryptography — see that command's own Step 1.5 for what it actually checks.
|
|
26
30
|
|
|
27
31
|
4. After the table, print:
|
|
28
32
|
"Current project: [read PROJECT.md first line, or 'Not initialised']"
|
|
@@ -13,16 +13,18 @@ Steps:
|
|
|
13
13
|
node bin/mindforge-cli.js validate-skill ./SKILL.md
|
|
14
14
|
```
|
|
15
15
|
5. Run injection guard check (handled by validator).
|
|
16
|
-
6. Install to tier directory
|
|
16
|
+
6. Install to tier directory (the literal `install` action token is required —
|
|
17
|
+
`bin/skill-registry.js` deliberately has no default action, to stop an
|
|
18
|
+
unvalidated write from happening by accident):
|
|
17
19
|
```bash
|
|
18
|
-
node bin/mindforge-cli.js install-skill [skill-name] --tier [1|2|3]
|
|
20
|
+
node bin/mindforge-cli.js install-skill install [skill-name] --tier [1|2|3]
|
|
19
21
|
```
|
|
20
|
-
7. Register in MANIFEST.md:
|
|
22
|
+
7. Register in MANIFEST.md (same deliberate requirement — literal `register` token):
|
|
21
23
|
```bash
|
|
22
|
-
node bin/mindforge-cli.js register-skill [skill-name] [version] [tier]
|
|
24
|
+
node bin/mindforge-cli.js register-skill register [skill-name] [version] [tier]
|
|
23
25
|
```
|
|
24
|
-
8. Write AUDIT entry:
|
|
26
|
+
8. Write AUDIT entry (same — literal `audit` token):
|
|
25
27
|
```bash
|
|
26
|
-
node bin/mindforge-cli.js audit-skill [skill-name] [version] [tier]
|
|
28
|
+
node bin/mindforge-cli.js audit-skill audit [skill-name] [version] [tier]
|
|
27
29
|
```
|
|
28
30
|
9. Confirm: "Run /mindforge:skills validate to verify installation"
|
|
@@ -13,6 +13,12 @@ marketplace — a curated layer on top of the npm registry.
|
|
|
13
13
|
The marketplace is the shortcut: instead of learning from documentation yourself,
|
|
14
14
|
install skills that the community has already created, validated, and battle-tested.
|
|
15
15
|
|
|
16
|
+
**Status: no packages are published today.** Checked live against the npm registry —
|
|
17
|
+
zero `mindforge-skill-*` packages exist. Every result, install count, and quality score
|
|
18
|
+
shown in the examples below (`prisma-advanced`, `847 installs this week`, etc.) is
|
|
19
|
+
illustrative sample output showing the intended format once skills are published, not
|
|
20
|
+
a result you can reproduce right now.
|
|
21
|
+
|
|
16
22
|
## Sub-commands
|
|
17
23
|
|
|
18
24
|
### search [query]
|
|
@@ -20,10 +20,15 @@ This command runs entirely in security mode. Do not switch personas.
|
|
|
20
20
|
|
|
21
21
|
## Step 1.5 — Sovereign Integrity Check (v6.2.0-alpha)
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
`bin/governance/quantum-crypto.js` has no CLI entrypoint — running it with `--verify` (or any
|
|
24
|
+
argument) silently ignores the argument and exits 0. It cannot detect tampering and must not be
|
|
25
|
+
treated as a gate. Do the one integrity check that is real instead:
|
|
26
|
+
1. **Policy Integrity**: Read `bin/governance/policy-engine.js` and check for illegal bypass
|
|
27
|
+
additions (e.g. an unconditional `return true` short-circuit, a hardcoded allowlist added
|
|
28
|
+
outside `.mindforge/config.json`).
|
|
29
|
+
2. **Result**: If policy tampering is found, mark the entire scan as **FAILED (CRITICAL)** and
|
|
30
|
+
alert the user of a potential framework compromise. Do not fail the scan based on the
|
|
31
|
+
quantum-crypto step — it performs no real verification.
|
|
27
32
|
|
|
28
33
|
```bash
|
|
29
34
|
# Default: staged + unstaged changes
|
|
@@ -94,7 +94,7 @@ Lists all skills available in this MindForge installation. Skills in the **Engin
|
|
|
94
94
|
`llm-wiki` · `polymarket` · `parallel-cli`
|
|
95
95
|
|
|
96
96
|
### Security
|
|
97
|
-
`
|
|
97
|
+
`1password-skill`
|
|
98
98
|
|
|
99
99
|
### Creative
|
|
100
100
|
`hyperframes` · `article-illustrator` · `comic-creator` · `video-orchestrator`
|
|
@@ -88,13 +88,14 @@ Open Issues
|
|
|
88
88
|
```
|
|
89
89
|
Sovereign Intelligence (v6.2.0-alpha)
|
|
90
90
|
───────────────────────────────────────────────────────
|
|
91
|
-
🛡️ PQAS Security :
|
|
91
|
+
🛡️ PQAS Security : SIMULATED / INACTIVE (pqas_enabled=false — see MINDFORGE.md [PQAS_ENFORCED])
|
|
92
92
|
🎯 Proactive Homing: [ENABLED | DISABLED]
|
|
93
93
|
🧠 Drift Recovery : [N] remediation events
|
|
94
|
-
🧬 Biometric Gate : [LOCKED | BYPASSED]
|
|
95
94
|
```
|
|
96
|
-
- PQAS Status:
|
|
97
|
-
|
|
95
|
+
- PQAS Status: report from MINDFORGE.md `[PQAS_ENFORCED]` and `.mindforge/config.json`
|
|
96
|
+
`pqas_enabled` — never report ACTIVE unless that config key is literally `true`. There is no
|
|
97
|
+
biometric gate; do not report one.
|
|
98
|
+
- Proactive Homing: Check if `bin/autonomous/intent-harvester.js` is active in `bin/autonomous/auto-runner.js`.
|
|
98
99
|
|
|
99
100
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
100
101
|
```
|
|
@@ -14,10 +14,13 @@ Run all seven health-engine categories from `.mindforge/intelligence/health-engi
|
|
|
14
14
|
- informational signals
|
|
15
15
|
|
|
16
16
|
## Sovereign Intelligence Checks (v6.2.0-alpha)
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
- **
|
|
20
|
-
|
|
17
|
+
These are file-presence checks only, not functional verification — PQAS is simulated/inactive by
|
|
18
|
+
default (`pqas_enabled=false` in `.mindforge/config.json`; see MINDFORGE.md `[PQAS_ENFORCED]`).
|
|
19
|
+
- **PQAS file present**: Check `bin/governance/quantum-crypto.js` exists (the module itself has no
|
|
20
|
+
CLI entrypoint and performs no framework-signature verification)
|
|
21
|
+
- **Homing file present**: Check `bin/autonomous/intent-harvester.js` exists
|
|
22
|
+
- **Self-Healer file present**: Check `bin/autonomous/mesh-self-healer.js` exists
|
|
23
|
+
- **Policy check**: Read `bin/governance/policy-engine.js` for illegal bypass additions
|
|
21
24
|
|
|
22
25
|
## Flags
|
|
23
26
|
- `--repair`: apply safe auto-repair only
|
|
@@ -18,11 +18,15 @@ If `.planning/PROJECT.md` is missing, treat the project as "Not initialised".
|
|
|
18
18
|
| /mindforge:init-project | ... |
|
|
19
19
|
| ... | ... |
|
|
20
20
|
|
|
21
|
-
## Sovereign Intelligence (v6.2.0-alpha)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
## Sovereign Intelligence (v6.2.0-alpha) — status
|
|
22
|
+
- **PQAS**: Post-Quantum Agentic Security is simulated/inactive by default (`pqas_enabled=false`,
|
|
23
|
+
gated behind `experimental.pqc_demo` in `.mindforge/config.json`; see MINDFORGE.md
|
|
24
|
+
`[PQAS_ENFORCED]`). There is no biometric/executive bypass gate. Tier-3 trust uses real Ed25519
|
|
25
|
+
signing, not PQAS.
|
|
26
|
+
- **Proactive Homing**: advisory framing around `bin/autonomous/intent-harvester.js` — not a
|
|
27
|
+
verified drift-detection guarantee.
|
|
28
|
+
- **Integrity**: `/mindforge:security-scan` does not verify framework signatures via lattice-based
|
|
29
|
+
cryptography — see that command's own Step 1.5 for what it actually checks.
|
|
26
30
|
|
|
27
31
|
4. After the table, print:
|
|
28
32
|
"Current project: [read PROJECT.md first line, or 'Not initialised']"
|
|
@@ -13,16 +13,18 @@ Steps:
|
|
|
13
13
|
node bin/mindforge-cli.js validate-skill ./SKILL.md
|
|
14
14
|
```
|
|
15
15
|
5. Run injection guard check (handled by validator).
|
|
16
|
-
6. Install to tier directory
|
|
16
|
+
6. Install to tier directory (the literal `install` action token is required —
|
|
17
|
+
`bin/skill-registry.js` deliberately has no default action, to stop an
|
|
18
|
+
unvalidated write from happening by accident):
|
|
17
19
|
```bash
|
|
18
|
-
node bin/mindforge-cli.js install-skill [skill-name] --tier [1|2|3]
|
|
20
|
+
node bin/mindforge-cli.js install-skill install [skill-name] --tier [1|2|3]
|
|
19
21
|
```
|
|
20
|
-
7. Register in MANIFEST.md:
|
|
22
|
+
7. Register in MANIFEST.md (same deliberate requirement — literal `register` token):
|
|
21
23
|
```bash
|
|
22
|
-
node bin/mindforge-cli.js register-skill [skill-name] [version] [tier]
|
|
24
|
+
node bin/mindforge-cli.js register-skill register [skill-name] [version] [tier]
|
|
23
25
|
```
|
|
24
|
-
8. Write AUDIT entry:
|
|
26
|
+
8. Write AUDIT entry (same — literal `audit` token):
|
|
25
27
|
```bash
|
|
26
|
-
node bin/mindforge-cli.js audit-skill [skill-name] [version] [tier]
|
|
28
|
+
node bin/mindforge-cli.js audit-skill audit [skill-name] [version] [tier]
|
|
27
29
|
```
|
|
28
30
|
9. Confirm: "Run /mindforge:skills validate to verify installation"
|
|
@@ -13,6 +13,12 @@ marketplace — a curated layer on top of the npm registry.
|
|
|
13
13
|
The marketplace is the shortcut: instead of learning from documentation yourself,
|
|
14
14
|
install skills that the community has already created, validated, and battle-tested.
|
|
15
15
|
|
|
16
|
+
**Status: no packages are published today.** Checked live against the npm registry —
|
|
17
|
+
zero `mindforge-skill-*` packages exist. Every result, install count, and quality score
|
|
18
|
+
shown in the examples below (`prisma-advanced`, `847 installs this week`, etc.) is
|
|
19
|
+
illustrative sample output showing the intended format once skills are published, not
|
|
20
|
+
a result you can reproduce right now.
|
|
21
|
+
|
|
16
22
|
## Sub-commands
|
|
17
23
|
|
|
18
24
|
### search [query]
|
|
@@ -20,10 +20,15 @@ This command runs entirely in security mode. Do not switch personas.
|
|
|
20
20
|
|
|
21
21
|
## Step 1.5 — Sovereign Integrity Check (v6.2.0-alpha)
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
`bin/governance/quantum-crypto.js` has no CLI entrypoint — running it with `--verify` (or any
|
|
24
|
+
argument) silently ignores the argument and exits 0. It cannot detect tampering and must not be
|
|
25
|
+
treated as a gate. Do the one integrity check that is real instead:
|
|
26
|
+
1. **Policy Integrity**: Read `bin/governance/policy-engine.js` and check for illegal bypass
|
|
27
|
+
additions (e.g. an unconditional `return true` short-circuit, a hardcoded allowlist added
|
|
28
|
+
outside `.mindforge/config.json`).
|
|
29
|
+
2. **Result**: If policy tampering is found, mark the entire scan as **FAILED (CRITICAL)** and
|
|
30
|
+
alert the user of a potential framework compromise. Do not fail the scan based on the
|
|
31
|
+
quantum-crypto step — it performs no real verification.
|
|
27
32
|
|
|
28
33
|
```bash
|
|
29
34
|
# Default: staged + unstaged changes
|
|
@@ -94,7 +94,7 @@ Lists all skills available in this MindForge installation. Skills in the **Engin
|
|
|
94
94
|
`llm-wiki` · `polymarket` · `parallel-cli`
|
|
95
95
|
|
|
96
96
|
### Security
|
|
97
|
-
`
|
|
97
|
+
`1password-skill`
|
|
98
98
|
|
|
99
99
|
### Creative
|
|
100
100
|
`hyperframes` · `article-illustrator` · `comic-creator` · `video-orchestrator`
|
|
@@ -88,13 +88,14 @@ Open Issues
|
|
|
88
88
|
```
|
|
89
89
|
Sovereign Intelligence (v6.2.0-alpha)
|
|
90
90
|
───────────────────────────────────────────────────────
|
|
91
|
-
🛡️ PQAS Security :
|
|
91
|
+
🛡️ PQAS Security : SIMULATED / INACTIVE (pqas_enabled=false — see MINDFORGE.md [PQAS_ENFORCED])
|
|
92
92
|
🎯 Proactive Homing: [ENABLED | DISABLED]
|
|
93
93
|
🧠 Drift Recovery : [N] remediation events
|
|
94
|
-
🧬 Biometric Gate : [LOCKED | BYPASSED]
|
|
95
94
|
```
|
|
96
|
-
- PQAS Status:
|
|
97
|
-
|
|
95
|
+
- PQAS Status: report from MINDFORGE.md `[PQAS_ENFORCED]` and `.mindforge/config.json`
|
|
96
|
+
`pqas_enabled` — never report ACTIVE unless that config key is literally `true`. There is no
|
|
97
|
+
biometric gate; do not report one.
|
|
98
|
+
- Proactive Homing: Check if `bin/autonomous/intent-harvester.js` is active in `bin/autonomous/auto-runner.js`.
|
|
98
99
|
|
|
99
100
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
100
101
|
```
|
package/.mindforge/config.json
CHANGED
|
@@ -77,6 +77,9 @@ const brief = await agent(
|
|
|
77
77
|
`Create a feature brief for: "${feature}". Clarify the core problem, target users, measurable success criteria, and explicit out-of-scope items.`,
|
|
78
78
|
{ schema: BRIEF_SCHEMA, label: 'brief' }
|
|
79
79
|
);
|
|
80
|
+
if (!brief) {
|
|
81
|
+
return { feature, error: 'brief-agent-null' };
|
|
82
|
+
}
|
|
80
83
|
|
|
81
84
|
phase('PRD');
|
|
82
85
|
const briefText = `Feature: ${brief.featureName}\nProblem: ${brief.problem}\nUsers: ${brief.targetUsers}\nSuccess: ${brief.successCriteria.join(', ')}`;
|
|
@@ -84,6 +87,9 @@ const prd = await agent(
|
|
|
84
87
|
`Write a product requirements document for this feature:\n${briefText}\n\nInclude functional requirements (must/should/could), non-functional requirements, and acceptance criteria.`,
|
|
85
88
|
{ schema: PRD_SCHEMA, label: 'prd' }
|
|
86
89
|
);
|
|
90
|
+
if (!prd) {
|
|
91
|
+
return { feature, brief, error: 'prd-agent-null' };
|
|
92
|
+
}
|
|
87
93
|
|
|
88
94
|
phase('Architecture');
|
|
89
95
|
const reqSummary = prd.requirements.slice(0, 8).map(r => `${r.id} [${r.priority}]: ${r.description}`).join('\n');
|
|
@@ -91,6 +97,9 @@ const arch = await agent(
|
|
|
91
97
|
`Design the technical architecture for this feature:\nBrief: ${briefText}\nRequirements:\n${reqSummary}\n\nIdentify the implementation approach, components, data flow, files to create/modify, and key risks.`,
|
|
92
98
|
{ schema: ARCH_SCHEMA, label: 'architecture' }
|
|
93
99
|
);
|
|
100
|
+
if (!arch) {
|
|
101
|
+
return { feature, brief, prd, error: 'arch-agent-null' };
|
|
102
|
+
}
|
|
94
103
|
|
|
95
104
|
phase('Stories');
|
|
96
105
|
const archSummary = `Approach: ${arch.approach}\nNew files: ${arch.newFiles.join(', ')}\nModified: ${arch.modifiedFiles.join(', ')}`;
|
|
@@ -98,5 +107,8 @@ const stories = await agent(
|
|
|
98
107
|
`Break this feature into user stories:\nBrief: ${briefText}\nArchitecture: ${archSummary}\n\nWrite stories in "As a [user], I want [goal], so that [benefit]" format with acceptance criteria and t-shirt size estimates (XS/S/M/L/XL).`,
|
|
99
108
|
{ schema: STORIES_SCHEMA, label: 'stories' }
|
|
100
109
|
);
|
|
110
|
+
if (!stories) {
|
|
111
|
+
return { feature, brief, prd, architecture: arch, error: 'stories-agent-null' };
|
|
112
|
+
}
|
|
101
113
|
|
|
102
114
|
return { feature, brief, prd, architecture: arch, stories: stories.stories };
|
|
@@ -65,6 +65,9 @@ const characterization = await agent(
|
|
|
65
65
|
`Characterize this production incident: "${incident}"\n\nDetermine severity (P0=total outage, P1=major degradation, P2=partial impact, P3=minor), list affected systems, symptoms, and your initial hypothesis about the root cause.`,
|
|
66
66
|
{ schema: CHARACTERIZE_SCHEMA, label: 'characterize' }
|
|
67
67
|
);
|
|
68
|
+
if (!characterization) {
|
|
69
|
+
return { incident, error: 'characterization-agent-null' };
|
|
70
|
+
}
|
|
68
71
|
log(`[${characterization.severity}] ${characterization.incidentTitle} — ${characterization.symptoms.length} symptoms identified`);
|
|
69
72
|
|
|
70
73
|
phase('Investigate');
|
|
@@ -87,6 +90,9 @@ const mitigation = await agent(
|
|
|
87
90
|
`Based on these investigation findings, identify IMMEDIATE mitigation actions:\n${investigationSummary}\n\nPrioritize actions that restore service quickly. Include rollback steps and estimate recovery time.`,
|
|
88
91
|
{ schema: MITIGATE_SCHEMA, label: 'mitigate' }
|
|
89
92
|
);
|
|
93
|
+
if (!mitigation) {
|
|
94
|
+
return { incident, characterization, investigations: investigations.filter(Boolean), error: 'mitigation-agent-null' };
|
|
95
|
+
}
|
|
90
96
|
|
|
91
97
|
phase('RCA');
|
|
92
98
|
const allContext = `Incident: ${characterization.incidentTitle}\nInvestigations:\n${investigationSummary}\nMitigation: ${mitigation.immediateActions.map(a => a.action).join(', ')}`;
|
|
@@ -67,6 +67,9 @@ const map = await agent(
|
|
|
67
67
|
`Map the structure of this codebase: "${repo}"\n\nIdentify: primary language, frameworks, entry points (main files, index, CLI), test frameworks, and the purpose of each top-level directory. Be specific — list actual file paths.`,
|
|
68
68
|
{ schema: MAP_SCHEMA, label: 'map' }
|
|
69
69
|
);
|
|
70
|
+
if (!map) {
|
|
71
|
+
return { repo, error: 'map-agent-null' };
|
|
72
|
+
}
|
|
70
73
|
log(`${map.primaryLanguage} codebase, ${map.frameworks.join('+')} — ${map.keyDirectories.length} key directories`);
|
|
71
74
|
|
|
72
75
|
phase('Domain');
|
|
@@ -75,6 +78,9 @@ const domain = await agent(
|
|
|
75
78
|
`Identify the business domains and core abstractions in: "${repo}"\n${mapSummary}\n\nWhat problem does this software solve? What are the main domain concepts? What are the key abstractions (models, services, controllers, etc.)?`,
|
|
76
79
|
{ schema: DOMAIN_SCHEMA, label: 'domain' }
|
|
77
80
|
);
|
|
81
|
+
if (!domain) {
|
|
82
|
+
return { repo, map, error: 'domain-agent-null' };
|
|
83
|
+
}
|
|
78
84
|
log(`${domain.domains.length} domains: ${domain.domains.map(d => d.name).join(', ')}`);
|
|
79
85
|
|
|
80
86
|
phase('Architecture');
|
|
@@ -83,6 +89,9 @@ const arch = await agent(
|
|
|
83
89
|
`Map the technical architecture of: "${repo}"\n${domainSummary}\n\nWhat architecture style (MVC, layered, event-driven, microservices)? What are the layers? How does data flow? What key patterns and gotchas should a new developer know?`,
|
|
84
90
|
{ schema: ARCH_SCHEMA, label: 'architecture' }
|
|
85
91
|
);
|
|
92
|
+
if (!arch) {
|
|
93
|
+
return { repo, map, domain, error: 'arch-agent-null' };
|
|
94
|
+
}
|
|
86
95
|
|
|
87
96
|
phase('Tour');
|
|
88
97
|
const archSummary = `Style: ${arch.architectureStyle}\nLayers: ${arch.layers.map(l => l.name).join(' → ')}\nPatterns: ${arch.keyPatterns.join(', ')}`;
|
|
@@ -84,6 +84,9 @@ const profile = await agent(
|
|
|
84
84
|
`Identify the slowest code paths and performance bottleneck hypothesis for: "${target}"\n\nWhat are the likely slow endpoints/functions? What profiling commands should be run? What is your initial bottleneck hypothesis?`,
|
|
85
85
|
{ schema: PROFILE_SCHEMA, label: 'profile' }
|
|
86
86
|
);
|
|
87
|
+
if (!profile) {
|
|
88
|
+
return { target, error: 'profile-agent-null' };
|
|
89
|
+
}
|
|
87
90
|
log(`${profile.slowestPaths.length} slow paths identified, hypothesis: ${profile.bottleneckHypothesis.slice(0, 80)}`);
|
|
88
91
|
|
|
89
92
|
phase('Identify');
|
|
@@ -108,6 +111,9 @@ const fixPlan = await agent(
|
|
|
108
111
|
`Prioritize this performance fix backlog by impact-to-effort ratio:\n${issueList}\n\nRank by: high impact + low effort first. List quick wins (can implement in <1 hour) separately. Include implementation guidance for each.`,
|
|
109
112
|
{ schema: FIX_PLAN_SCHEMA, label: 'plan' }
|
|
110
113
|
);
|
|
114
|
+
if (!fixPlan) {
|
|
115
|
+
return { target, profile, bottlenecks: bottlenecks.filter(Boolean), error: 'fixPlan-agent-null' };
|
|
116
|
+
}
|
|
111
117
|
|
|
112
118
|
phase('Benchmark');
|
|
113
119
|
const topFixes = fixPlan.prioritized.slice(0, 5).map(f => `${f.rank}. ${f.fix} (expected: ${f.expectedImprovement})`).join('\n');
|
|
@@ -101,6 +101,9 @@ const prioritized = await agent(
|
|
|
101
101
|
`Prioritize this refactoring backlog by risk. Items with narrow blast radius + good test coverage = tackle first (low risk). Wide blast radius + no coverage = tackle last or skip.\n\nDebts:\n${debtList}`,
|
|
102
102
|
{ schema: PRIORITY_SCHEMA, label: 'prioritize' }
|
|
103
103
|
);
|
|
104
|
+
if (!prioritized) {
|
|
105
|
+
return { target, debtItems: allDebts.length, error: 'prioritized-agent-null' };
|
|
106
|
+
}
|
|
104
107
|
|
|
105
108
|
phase('Sequence');
|
|
106
109
|
const topItems = prioritized.prioritized.slice(0, 10).map(p => `${p.rank}. [${p.risk}] ${p.description}: ${p.rationale}`).join('\n');
|
|
@@ -64,6 +64,9 @@ const readiness = await agent(
|
|
|
64
64
|
`Check release readiness for: "${context}"\n\nVerify: are there uncommitted changes? Any failing tests? Any security vulnerabilities in dependencies? Any open critical bugs that should block release? List any blockers and warnings.`,
|
|
65
65
|
{ schema: READINESS_SCHEMA, label: 'check' }
|
|
66
66
|
);
|
|
67
|
+
if (!readiness) {
|
|
68
|
+
return { context, error: 'readiness-agent-null' };
|
|
69
|
+
}
|
|
67
70
|
if (!readiness.ready && readiness.blockers.length > 0) {
|
|
68
71
|
log(`BLOCKED: ${readiness.blockers.join(', ')}`);
|
|
69
72
|
}
|
|
@@ -74,6 +77,9 @@ const changelog = await agent(
|
|
|
74
77
|
`Generate a changelog for this release of: "${context}"\n\nAnalyze recent commits (look for conventional commit format: feat/fix/chore/refactor/docs/test/perf/ci). Separate into: breaking changes, new features, bug fixes, chores. Write a highlights summary (2-3 sentences).`,
|
|
75
78
|
{ schema: CHANGELOG_SCHEMA, label: 'changelog' }
|
|
76
79
|
);
|
|
80
|
+
if (!changelog) {
|
|
81
|
+
return { context, readiness, error: 'changelog-agent-null' };
|
|
82
|
+
}
|
|
77
83
|
log(`Changelog: ${changelog.breaking.length} breaking, ${changelog.features.length} features, ${changelog.fixes.length} fixes`);
|
|
78
84
|
|
|
79
85
|
phase('Bump');
|
|
@@ -82,6 +88,9 @@ const version = await agent(
|
|
|
82
88
|
`Determine the next semantic version for: "${context}"\nChanges: ${changelogSummary}\nHighlights: ${changelog.highlights}\n\nUse semver rules: breaking change = major bump, new features = minor bump, fixes only = patch bump. List all files that need version updated.`,
|
|
83
89
|
{ schema: VERSION_SCHEMA, label: 'bump' }
|
|
84
90
|
);
|
|
91
|
+
if (!version) {
|
|
92
|
+
return { context, readiness, changelog, error: 'version-agent-null' };
|
|
93
|
+
}
|
|
85
94
|
log(`Version: ${version.current} → ${version.next} (${version.bumpType})`);
|
|
86
95
|
|
|
87
96
|
phase('PR');
|
|
@@ -65,6 +65,9 @@ const spec = await agent(
|
|
|
65
65
|
`Write a precise behavioral specification for: "${requirement}"\n\nUse Given-When-Then format. Be explicit about inputs, outputs, and edge cases. List what is OUT of scope to keep this focused.`,
|
|
66
66
|
{ schema: SPEC_SCHEMA, label: 'spec' }
|
|
67
67
|
);
|
|
68
|
+
if (!spec) {
|
|
69
|
+
return { requirement, error: 'spec-agent-null' };
|
|
70
|
+
}
|
|
68
71
|
log(`Spec: ${spec.behaviorName} | ${spec.acceptanceCriteria.length} acceptance criteria, ${spec.edgeCases.length} edge cases`);
|
|
69
72
|
|
|
70
73
|
phase('Red');
|
|
@@ -73,6 +76,9 @@ const test = await agent(
|
|
|
73
76
|
`Write a FAILING test for this behavior specification:\n${specText}\n\nWrite the minimal test that will fail because the implementation doesn't exist yet. Explain WHY it fails. Use the project's test framework (detect from file extensions or state Jest/Vitest/Node assert).`,
|
|
74
77
|
{ schema: TEST_SCHEMA, label: 'red' }
|
|
75
78
|
);
|
|
79
|
+
if (!test) {
|
|
80
|
+
return { requirement, spec, error: 'test-agent-null' };
|
|
81
|
+
}
|
|
76
82
|
log(`[RED] Test: "${test.testDescription}" — fails because: ${test.whyItFails}`);
|
|
77
83
|
|
|
78
84
|
phase('Green');
|
|
@@ -81,6 +87,9 @@ const impl = await agent(
|
|
|
81
87
|
`Write the MINIMUM implementation to make this test pass:\n${testContext}\n\nWrite ONLY what is needed to make the test go green. No extra features, no future-proofing. Explain why this is the minimal solution.`,
|
|
82
88
|
{ schema: IMPL_SCHEMA, label: 'green' }
|
|
83
89
|
);
|
|
90
|
+
if (!impl) {
|
|
91
|
+
return { requirement, spec, test, error: 'impl-agent-null' };
|
|
92
|
+
}
|
|
84
93
|
log(`[GREEN] Minimal implementation: ${impl.minimalityRationale}`);
|
|
85
94
|
|
|
86
95
|
phase('Refactor');
|
|
@@ -89,6 +98,9 @@ const refactored = await agent(
|
|
|
89
98
|
`Refactor this passing implementation for clarity and maintainability, keeping all tests green:\n${greenContext}\n\nList specific improvements made (naming, structure, extraction, simplification). The tests MUST still pass after refactoring.`,
|
|
90
99
|
{ schema: REFACTOR_SCHEMA, label: 'refactor' }
|
|
91
100
|
);
|
|
101
|
+
if (!refactored) {
|
|
102
|
+
return { requirement, spec, test, implementation: impl, error: 'refactored-agent-null' };
|
|
103
|
+
}
|
|
92
104
|
log(`[REFACTOR] ${refactored.improvements.length} improvements, tests still pass: ${refactored.testsStillPass}`);
|
|
93
105
|
|
|
94
106
|
return {
|
|
@@ -96,10 +96,16 @@ for (let round = 1; round <= maxRounds; round++) {
|
|
|
96
96
|
: `Task: ${task}\n${metric ? `Metric the scorer will grade against: ${metric}\n` : 'State the metric you are optimizing for, then '}Produce a first complete attempt at the artifact.`;
|
|
97
97
|
|
|
98
98
|
const revision = await agent(revisePrompt, { label: `implement:r${round}`, phase: 'Round', schema: REVISE_SCHEMA });
|
|
99
|
+
if (!revision) {
|
|
100
|
+
return { task, metric: metric || '(scorer-inferred)', finalArtifact: currentArtifact, scoreHistory: scoreHistory.map((s, i) => ({ round: i + 1, score: s.score, topFixes: s.topFixes })), error: 'revision-agent-null' };
|
|
101
|
+
}
|
|
99
102
|
currentArtifact = revision.artifact;
|
|
100
103
|
|
|
101
104
|
const scorePrompt = `Score this artifact against the task's metric. Be strict and consistent with how you'd score any round of this same task — same rubric every time, do not grade on a curve relative to the previous round.\n\nTask: ${task}\n${metric ? `Metric: ${metric}\n` : ''}\nArtifact:\n${currentArtifact}`;
|
|
102
105
|
const scored = await agent(scorePrompt, { label: `score:r${round}`, phase: 'Round', schema: SCORE_SCHEMA });
|
|
106
|
+
if (!scored) {
|
|
107
|
+
return { task, metric: metric || '(scorer-inferred)', finalArtifact: currentArtifact, scoreHistory: scoreHistory.map((s, i) => ({ round: i + 1, score: s.score, topFixes: s.topFixes })), error: 'scored-agent-null' };
|
|
108
|
+
}
|
|
103
109
|
|
|
104
110
|
scoreHistory.push(scored);
|
|
105
111
|
log(`Round ${round}: score ${scored.score}/100`);
|
|
@@ -148,6 +148,38 @@ This file tracks all active, validated, and legacy skills within the MindForge e
|
|
|
148
148
|
| dns-architecture | .mindforge/skills/dns-architecture/SKILL.md | stable |
|
|
149
149
|
| cdn-optimization | .mindforge/skills/cdn-optimization/SKILL.md | stable |
|
|
150
150
|
| database-sharding-advanced | .mindforge/skills/database-sharding-advanced/SKILL.md | stable |
|
|
151
|
+
| agent-architecture-audit | .mindforge/skills/agent-architecture-audit/SKILL.md | stable |
|
|
152
|
+
| arxiv | .mindforge/skills/arxiv/SKILL.md | stable |
|
|
153
|
+
| blogwatcher | .mindforge/skills/blogwatcher/SKILL.md | stable |
|
|
154
|
+
| code-wiki | .mindforge/skills/code-wiki/SKILL.md | stable |
|
|
155
|
+
| codebase-inspection | .mindforge/skills/codebase-inspection/SKILL.md | stable |
|
|
156
|
+
| concept-diagrams | .mindforge/skills/concept-diagrams/SKILL.md | stable |
|
|
157
|
+
| creative-ideation | .mindforge/skills/creative-ideation/SKILL.md | stable |
|
|
158
|
+
| domain-intel | .mindforge/skills/domain-intel/SKILL.md | stable |
|
|
159
|
+
| duckduckgo-search | .mindforge/skills/duckduckgo-search/SKILL.md | stable |
|
|
160
|
+
| github-code-review | .mindforge/skills/github-code-review/SKILL.md | stable |
|
|
161
|
+
| github-issues | .mindforge/skills/github-issues/SKILL.md | stable |
|
|
162
|
+
| github-pr-workflow | .mindforge/skills/github-pr-workflow/SKILL.md | stable |
|
|
163
|
+
| jupyter-live-kernel | .mindforge/skills/jupyter-live-kernel/SKILL.md | stable |
|
|
164
|
+
| kanban-orchestrator | .mindforge/skills/kanban-orchestrator/SKILL.md | stable |
|
|
165
|
+
| kanban-worker | .mindforge/skills/kanban-worker/SKILL.md | stable |
|
|
166
|
+
| meme-generation | .mindforge/skills/meme-generation/SKILL.md | stable |
|
|
167
|
+
| obsidian | .mindforge/skills/obsidian/SKILL.md | stable |
|
|
168
|
+
| orch-pipeline | .mindforge/skills/orch-pipeline/SKILL.md | stable |
|
|
169
|
+
| osint-investigation | .mindforge/skills/osint-investigation/SKILL.md | stable |
|
|
170
|
+
| oss-forensics | .mindforge/skills/oss-forensics/SKILL.md | stable |
|
|
171
|
+
| pixel-art | .mindforge/skills/pixel-art/SKILL.md | stable |
|
|
172
|
+
| plan | .mindforge/skills/plan/SKILL.md | stable |
|
|
173
|
+
| requesting-code-review | .mindforge/skills/requesting-code-review/SKILL.md | stable |
|
|
174
|
+
| research-paper-writing | .mindforge/skills/research-paper-writing/SKILL.md | stable |
|
|
175
|
+
| scrapling | .mindforge/skills/scrapling/SKILL.md | stable |
|
|
176
|
+
| sherlock | .mindforge/skills/sherlock/SKILL.md | stable |
|
|
177
|
+
| simplify-code | .mindforge/skills/simplify-code/SKILL.md | stable |
|
|
178
|
+
| spike | .mindforge/skills/spike/SKILL.md | stable |
|
|
179
|
+
| subagent-driven-development | .mindforge/skills/subagent-driven-development/SKILL.md | stable |
|
|
180
|
+
| systematic-debugging | .mindforge/skills/systematic-debugging/SKILL.md | stable |
|
|
181
|
+
| test-driven-development | .mindforge/skills/test-driven-development/SKILL.md | stable |
|
|
182
|
+
| web-pentest | .mindforge/skills/web-pentest/SKILL.md | stable |
|
|
151
183
|
|
|
152
184
|
## Multi-Agent Skills
|
|
153
185
|
|