mindforge-cc 11.9.7 → 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.
Files changed (63) hide show
  1. package/.agent/mindforge/health.md +7 -4
  2. package/.agent/mindforge/help.md +9 -5
  3. package/.agent/mindforge/install-skill.md +8 -6
  4. package/.agent/mindforge/marketplace.md +6 -0
  5. package/.agent/mindforge/security-scan.md +9 -4
  6. package/.agent/mindforge/skills-index.md +1 -1
  7. package/.agent/mindforge/status.md +5 -4
  8. package/.agent/skills/mindforge-join-discord/SKILL.md +9 -6
  9. package/.claude/commands/mindforge/health.md +7 -4
  10. package/.claude/commands/mindforge/help.md +9 -5
  11. package/.claude/commands/mindforge/install-skill.md +8 -6
  12. package/.claude/commands/mindforge/marketplace.md +6 -0
  13. package/.claude/commands/mindforge/security-scan.md +9 -4
  14. package/.claude/commands/mindforge/skills-index.md +1 -1
  15. package/.claude/commands/mindforge/status.md +5 -4
  16. package/.mindforge/config.json +1 -1
  17. package/.mindforge/dynamic-workflows/scripts/feature-planner.js +12 -0
  18. package/.mindforge/dynamic-workflows/scripts/incident-response.js +6 -0
  19. package/.mindforge/dynamic-workflows/scripts/onboard-codebase.js +9 -0
  20. package/.mindforge/dynamic-workflows/scripts/perf-optimize.js +6 -0
  21. package/.mindforge/dynamic-workflows/scripts/refactor-plan.js +3 -0
  22. package/.mindforge/dynamic-workflows/scripts/release-prep.js +9 -0
  23. package/.mindforge/dynamic-workflows/scripts/tdd-sprint.js +12 -0
  24. package/.mindforge/dynamic-workflows/scripts/verification-loop.js +6 -0
  25. package/.mindforge/org/skills/MANIFEST.md +32 -0
  26. package/.mindforge/personas/mf-executor.md +1 -1
  27. package/.mindforge/personas/mf-memory.md +1 -1
  28. package/.mindforge/personas/mf-tool.md +1 -1
  29. package/.mindforge/personas/swarm-templates.json +10 -20
  30. package/CHANGELOG.md +108 -0
  31. package/MINDFORGE-AGENTIC-SECURITY.md +189 -0
  32. package/MINDFORGE.md +2 -2
  33. package/README.md +271 -80
  34. package/RELEASENOTES.md +57 -0
  35. package/SECURITY.md +3 -2
  36. package/bin/governance/audit-verifier.js +12 -3
  37. package/bin/installer/harness-adapter-compliance.js +1 -1
  38. package/bin/installer-core.js +65 -8
  39. package/bin/mindforge-cli.js +2 -2
  40. package/bin/verify-audit.js +7 -1
  41. package/bin/wizard/theme.js +1 -1
  42. package/changelogs/v11.9.8.md +51 -0
  43. package/changelogs/v11.9.9.md +59 -0
  44. package/docs/References/commands.md +2 -2
  45. package/docs/References/config-reference.md +20 -35
  46. package/docs/References/sdk-api.md +10 -4
  47. package/docs/References/skills-api.md +9 -7
  48. package/docs/commands-reference.md +2 -2
  49. package/docs/faq.md +10 -7
  50. package/docs/getting-started.md +10 -4
  51. package/docs/sdk-reference.md +3 -3
  52. package/docs/security/SECURITY.md +14 -0
  53. package/docs/security/ZTAI-OVERVIEW.md +53 -0
  54. package/docs/security/penetration-test-results.md +36 -0
  55. package/docs/security/threat-model.md +148 -0
  56. package/docs/troubleshooting.md +14 -10
  57. package/docs/user-guide.md +12 -8
  58. package/docs/usp-features.md +60 -0
  59. package/package.json +4 -1
  60. package/subagents/README.md +38 -0
  61. package/.agent/skills/godmode/SKILL.md +0 -396
  62. package/.agent/skills/godmode/references/jailbreak-templates.md +0 -128
  63. 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
- - **PQAS Verification**: Check `bin/governance/quantum-crypto.js` presence
18
- - **Homing Verification**: Check `bin/autonomous/intent-harvester.js` presence
19
- - **Self-Healer Verification**: Check `bin/autonomous/mesh-self-healer.js` presence
20
- - **Policy Check**: Verify `bin/governance/policy-engine.js` is Sovereign-configured
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
- MindForge now operates with **Sovereign Intelligence** enabled by default:
23
- - **PQAS**: Post-Quantum Agentic Security is active. High-risk operations require biometric/executive bypass.
24
- - **Proactive Homing**: The swarm now proactively harvests intent and self-heals reasoning drifts.
25
- - **Integrity**: Every `security-scan` now verifies framework signatures using lattice-based cryptography.
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
- Before scanning user code, verify the integrity of the MindForge Sovereign Engine:
24
- 1. **Quantum Signature Verification**: Run `node bin/governance/quantum-crypto.js --verify .mindforge/engine/`.
25
- 2. **Policy Integrity**: Ensure `bin/governance/policy-engine.js` has not been tampered with (check for illegal bypass additions).
26
- 3. **Result**: If integrity check fails, mark the entire scan as **FAILED (CRITICAL)** and alert the user of a potential framework compromise.
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
- `godmode` · `1password-skill`
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 : [ACTIVE | PASSIVE] (Dilithium-5)
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: Check if `bin/governance/quantum-crypto.js` exists and if `PolicyEngine.js` has `highRiskBypass` enabled.
97
- - Proactive Homing: Check if `bin/autonomous/intent-harvester.js` is active in `AutoRunner.js`.
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
  ```
@@ -1,19 +1,22 @@
1
1
  ---
2
2
  name: "mindforge-join-discord"
3
- description: "Join the MindForge Discord community"
3
+ description: "Find the current MindForge community/support channel"
4
4
  ---
5
5
 
6
6
 
7
7
  <objective>
8
- Display the Discord invite link for the MindForge community server.
8
+ Display the current, working channel for MindForge community discussion and support.
9
9
  </objective>
10
10
 
11
11
  <output>
12
- # Join the MindForge Discord
12
+ # MindForge community & support
13
13
 
14
- Connect with other MindForge users, get help, share what you're building, and stay updated.
14
+ The `discord.gg/mindforge` invite that used to be linked here is no longer valid (verified
15
+ against Discord's own invite API, not just an HTTP redirect check). GitHub Discussions is the
16
+ current, working channel:
15
17
 
16
- **Invite link:** https://discord.gg/mindforge
18
+ **https://github.com/sairam0424/MindForge/discussions**
17
19
 
18
- Click the link or paste it into your browser to join.
20
+ For a specific bug or feature request, use the issue templates instead:
21
+ https://github.com/sairam0424/MindForge/issues/new/choose
19
22
  </output>
@@ -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
- - **PQAS Verification**: Check `bin/governance/quantum-crypto.js` presence
18
- - **Homing Verification**: Check `bin/autonomous/intent-harvester.js` presence
19
- - **Self-Healer Verification**: Check `bin/autonomous/mesh-self-healer.js` presence
20
- - **Policy Check**: Verify `bin/governance/policy-engine.js` is Sovereign-configured
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
- MindForge now operates with **Sovereign Intelligence** enabled by default:
23
- - **PQAS**: Post-Quantum Agentic Security is active. High-risk operations require biometric/executive bypass.
24
- - **Proactive Homing**: The swarm now proactively harvests intent and self-heals reasoning drifts.
25
- - **Integrity**: Every `security-scan` now verifies framework signatures using lattice-based cryptography.
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
- Before scanning user code, verify the integrity of the MindForge Sovereign Engine:
24
- 1. **Quantum Signature Verification**: Run `node bin/governance/quantum-crypto.js --verify .mindforge/engine/`.
25
- 2. **Policy Integrity**: Ensure `bin/governance/policy-engine.js` has not been tampered with (check for illegal bypass additions).
26
- 3. **Result**: If integrity check fails, mark the entire scan as **FAILED (CRITICAL)** and alert the user of a potential framework compromise.
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
- `godmode` · `1password-skill`
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 : [ACTIVE | PASSIVE] (Dilithium-5)
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: Check if `bin/governance/quantum-crypto.js` exists and if `PolicyEngine.js` has `highRiskBypass` enabled.
97
- - Proactive Homing: Check if `bin/autonomous/intent-harvester.js` is active in `AutoRunner.js`.
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
  ```
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "11.9.7",
2
+ "version": "11.9.9",
3
3
  "environment": "development",
4
4
  "governance": {
5
5
  "drift_threshold": 0.75,
@@ -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
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: mf-executor
3
3
  description: Implementation specialist focused on high-fidelity execution of provided plans and code completion.
4
- tools: Read, Write, Bash, multi_replace_file_content
4
+ tools: Read, Write, Edit, Bash
5
5
  color: orange
6
6
  ---
7
7
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: mf-memory
3
3
  description: Long-term memory management and knowledge graph synchronization for persistent context.
4
- tools: Read, Write, commit_memory (Skill-based)
4
+ tools: Read, Write, Grep, Glob
5
5
  color: cyan
6
6
  ---
7
7
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: mf-tool
3
3
  description: Safe interaction layer for external systems, infrastructure, and privileged tool operations.
4
- tools: Bash, Git, Database, API, task_boundary
4
+ tools: Read, Write, Bash, WebFetch
5
5
  color: yellow
6
6
  ---
7
7