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.
- 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/.agent/skills/mindforge-join-discord/SKILL.md +9 -6
- 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 +108 -0
- package/MINDFORGE-AGENTIC-SECURITY.md +189 -0
- package/MINDFORGE.md +2 -2
- package/README.md +271 -80
- package/RELEASENOTES.md +57 -0
- package/SECURITY.md +3 -2
- package/bin/governance/audit-verifier.js +12 -3
- package/bin/installer/harness-adapter-compliance.js +1 -1
- package/bin/installer-core.js +65 -8
- package/bin/mindforge-cli.js +2 -2
- package/bin/verify-audit.js +7 -1
- package/bin/wizard/theme.js +1 -1
- package/changelogs/v11.9.8.md +51 -0
- 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 +10 -7
- package/docs/getting-started.md +10 -4
- 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
package/README.md
CHANGED
|
@@ -1,50 +1,60 @@
|
|
|
1
1
|
# MindForge
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/mindforge-cc)
|
|
3
|
+
[](https://www.npmjs.com/package/mindforge-cc)
|
|
4
|
+
[](https://github.com/sairam0424/MindForge/actions/workflows/mindforge-ci.yml)
|
|
5
|
+
[](#what-is-actually-enforced)
|
|
6
|
+
|
|
4
7
|
[](https://www.npmjs.com/package/mindforge-cc)
|
|
5
8
|
[](LICENSE)
|
|
6
9
|
[](package.json)
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+

|
|
12
|
+

|
|
13
|
+

|
|
14
|
+

|
|
15
|
+

|
|
16
|
+

|
|
17
|
+
|
|
18
|
+
**A governance and orchestration layer for Claude Code** (and Antigravity, Cursor, Copilot,
|
|
19
|
+
Gemini, OpenCode).
|
|
9
20
|
|
|
10
|
-
|
|
21
|
+
Claude Code alone runs one agent in one context. MindForge adds the parts that don't fit in a
|
|
22
|
+
single context window: skills that auto-load by trigger, personas you can call by name, a
|
|
23
|
+
wave-based executor that fans work out to fresh-context subagents and commits per task, a
|
|
24
|
+
tamper-evident audit chain, and cost-aware routing across providers. Install it once and get
|
|
25
|
+
`/mindforge:plan-phase` → `/mindforge:execute-phase` → `/mindforge:verify-phase` → `/mindforge:ship`
|
|
26
|
+
as your actual working loop, not a slogan.
|
|
11
27
|
|
|
12
|
-
|
|
28
|
+
221 commands · 354 skills · 216 personas · 164 subagents · 35 workflows
|
|
29
|
+
|
|
30
|
+
**Jump to:** [Latest release](#latest-release) · [What you get](#what-you-get) · [What is actually enforced](#what-is-actually-enforced) · [Install](#install) · [Verify](#verify) · [Quick start (new)](#quick-start-new-project) · [Quick start (existing)](#quick-start-existing-codebase) · [How it fits together](#how-it-fits-together) · [Documentation](#documentation) · [Core workflow](#core-workflow) · [Dynamic workflows](#dynamic-workflow-library) · [Updates](#updates-and-migrations) · [Token usage](#token-usage-profiling) · [License](#license)
|
|
13
31
|
|
|
14
32
|
---
|
|
15
33
|
|
|
16
|
-
##
|
|
34
|
+
## What you get
|
|
17
35
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
time since 11.8.0, with provenance. **v11.9.4**, before that, is where the hook gates
|
|
34
|
-
started actually registering: 11.9.3
|
|
35
|
-
shipped the code and then declined to run it on essentially every project. Measured against
|
|
36
|
-
the published tarballs — 11.9.3: **11 hook scripts installed, 0 registered**; 11.9.4:
|
|
37
|
-
**8 registered, 3 deny-class verified blocking**. That **behaviour change under a patch
|
|
38
|
-
bump** still applies — the installer writes `.claude/settings.json` where it previously
|
|
39
|
-
declined, merging append-only and backing up first. See the BREAKING section in
|
|
40
|
-
[CHANGELOG.md](./CHANGELOG.md).
|
|
36
|
+
| | Capability | Detail |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| 🧩 | **221 slash commands** | `/mindforge:plan-phase`, `/mindforge:execute-phase`, `/mindforge:ship`, and 218 more — [full reference](docs/commands-reference.md) |
|
|
39
|
+
| 🛠️ | **354 skills** | 232 auto-triggered by keyword match (engine tier) + 122 explicit, invoked by name (extended tier) |
|
|
40
|
+
| 🎭 | **216 personas** | In-session role overlays via `/mindforge:agent <name>` — same context, different behavioral spec |
|
|
41
|
+
| 🤖 | **164 subagents** | Genuine isolated-context Claude-Code-native subagent definitions — a separate mechanism from personas, see [docs/PERSONAS.md](docs/PERSONAS.md); 152 adapted from [VoltAgent's `awesome-claude-code-subagents`](https://github.com/VoltAgent/awesome-claude-code-subagents) (MIT), attribution in [subagents/README.md](subagents/README.md) |
|
|
42
|
+
| 🔀 | **35 dynamic workflows** | Multi-agent fan-out scripts across 5 tiers (Research, Dev, Ops, Intelligence, Beast) — [workflow atlas](docs/workflow-atlas.md) |
|
|
43
|
+
| 🔒 | **Tamper-evident audit chain** | SHA-256 hash-linked `.planning/AUDIT.jsonl`; verify independently with `node bin/verify-audit.js` |
|
|
44
|
+
| 🔍 | **Multi-model cross-review + decision council** | Two-model adversarial PR review (`/mindforge:pr-review`) and a 4-voice consensus council (`/mindforge:council`) — `bin/review/`, `bin/engine/council-runtime.js` |
|
|
45
|
+
| 💸 | **Cost-aware model routing** | Anthropic / OpenAI / Gemini / Bedrock / Ollama, routed by task difficulty tier |
|
|
46
|
+
| 🧠 | **Local-first knowledge graph** | Zero-native-dependency SQLite (`sql.js` / WASM) — no native build step |
|
|
47
|
+
| 📊 | **Live dashboard** | Express + SSE at `localhost:7339` |
|
|
48
|
+
|
|
49
|
+
Ships three ways: an npm package (`npx mindforge-cc@latest`), a Claude Code plugin marketplace
|
|
50
|
+
entry, and an MCP server.
|
|
41
51
|
|
|
42
52
|
---
|
|
43
53
|
|
|
44
54
|
## What is actually enforced
|
|
45
55
|
|
|
46
|
-
Read this before
|
|
47
|
-
instructions — commands, skills, personas, protocols — and those are advisory: they work by
|
|
56
|
+
Read this before you rely on anything below blocking a bad command. MindForge ships a large
|
|
57
|
+
corpus of agent instructions — commands, skills, personas, protocols — and those are advisory: they work by
|
|
48
58
|
being in the model's context, and a model can decline them. The parts that would *block* an
|
|
49
59
|
action are hooks. Through 11.9.2 **no channel registered them.** 11.9.3 added the registration code
|
|
50
60
|
but it declined to run on almost every project, so in practice nothing was enforced there either.
|
|
@@ -60,7 +70,7 @@ but it declined to run on almost every project, so in practice nothing was enfor
|
|
|
60
70
|
|
|
61
71
|
What that means, measured rather than asserted:
|
|
62
72
|
|
|
63
|
-
- **The `npx` channel generates the config it never used to ship.** `files[]` has
|
|
73
|
+
- **The `npx` channel generates the config it never used to ship.** `files[]` has 52 entries and
|
|
64
74
|
none of them contains `settings`, so no settings file is *published* — instead
|
|
65
75
|
`bin/installer/hook-registration.js` writes one at install time, merging append-only into any
|
|
66
76
|
file you already have. Measured on a confined install: **8 hooks registered** into
|
|
@@ -73,11 +83,12 @@ What that means, measured rather than asserted:
|
|
|
73
83
|
`plugins/mindforge/hooks/hooks.json` resolve under the plugin root, and driving the dispatcher by
|
|
74
84
|
hand returns **exit 2** for `mindforge-block-no-verify` and `mindforge-config-protection`.
|
|
75
85
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
> [!WARNING]
|
|
87
|
+
> Still **not** enforced, deliberately and with a printed reason for each: any runtime other than
|
|
88
|
+
> Claude Code (Cursor, Copilot, Gemini/Antigravity, OpenCode), `--global` scope, a self-install
|
|
89
|
+
> inside a MindForge checkout, and Windows. Writing a Claude-schema config into `.cursor/` without an
|
|
90
|
+
> execution-verified hook contract would be decorative. Every outcome, including "not registered", is
|
|
91
|
+
> printed by the installer and written to `.mindforge/hook-registration.json`.
|
|
81
92
|
|
|
82
93
|
Three things gate whether a registered hook is *live*, none of them in MindForge's control: the
|
|
83
94
|
harness must be **restarted** (hooks are snapshotted at session start), the project must be
|
|
@@ -96,36 +107,108 @@ instructions — review what you install. The audit chain is verifiable today
|
|
|
96
107
|
|
|
97
108
|
## Install
|
|
98
109
|
|
|
99
|
-
|
|
100
|
-
|
|
110
|
+
Pick whichever matches how you work — all of these are real, live channels.
|
|
111
|
+
|
|
112
|
+
On a typical connection, `npx mindforge-cc@latest --claude --local` finishes in well under 10
|
|
113
|
+
seconds (measured: ~5.4s locally) — reproduce with `time npx mindforge-cc@latest --claude --local`
|
|
114
|
+
in an empty directory. Install makes zero model calls; you don't spend a token or a dollar until
|
|
115
|
+
you run a command that dispatches to a subagent.
|
|
116
|
+
|
|
117
|
+
### `npx` (recommended)
|
|
118
|
+
|
|
119
|
+
Writes `.mindforge/` governance, memory, and planning into your project:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
npx mindforge-cc@latest --claude --local # Claude Code, this project only
|
|
123
|
+
npx mindforge-cc@latest --antigravity --local # Antigravity, this project only
|
|
124
|
+
npx mindforge-cc@latest # interactive wizard, pre-selects a detected runtime
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
The bare form only detects anything inside an interactive TTY wizard session, where it pre-selects
|
|
128
|
+
— you still confirm — whichever runtime it finds. Run it non-interactively (CI, piped, scripted,
|
|
129
|
+
or anywhere `stdin` isn't a TTY) and it skips the wizard entirely and installs `--claude` by
|
|
130
|
+
default, regardless of what's actually on the machine.
|
|
131
|
+
|
|
132
|
+
**Global** (system-wide, for your primary AI coding runtime):
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npx mindforge-cc@latest --claude --global
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
(`npm install -g mindforge-cc@latest` only puts the `mindforge-cc`/`mindforge` binaries on your
|
|
139
|
+
PATH — it doesn't select a runtime or write anything. Run the command above, or the equivalent
|
|
140
|
+
`mindforge-cc --claude --global` once installed, to actually scaffold a global setup.)
|
|
141
|
+
|
|
142
|
+
**Other runtimes** — same flag pattern, swap `--global`/`--local`:
|
|
143
|
+
|
|
144
|
+
| Runtime | Flag |
|
|
145
|
+
|---|---|
|
|
146
|
+
| Claude Code | `--claude` |
|
|
147
|
+
| Antigravity | `--antigravity` |
|
|
148
|
+
| Cursor | `--cursor` |
|
|
149
|
+
| GitHub Copilot | `--copilot` |
|
|
150
|
+
| Gemini CLI | `--gemini` |
|
|
151
|
+
|
|
152
|
+
**Advanced:** `--runtime claude,cursor` (combined runtimes) · `--with-utils` (installs local `bin/` utilities) · `--minimal` (essential scaffolding only, no persona library) · `--force` (rewrite an existing `.mindforge/MINDFORGE-SCHEMA.json` with the current, stricter schema)
|
|
153
|
+
|
|
154
|
+
### Claude Code plugin marketplace
|
|
155
|
+
|
|
156
|
+
No project files written — the plugin's hooks fire, see [What is actually enforced](#what-is-actually-enforced) for what that does and does not cover.
|
|
101
157
|
|
|
102
158
|
```bash
|
|
103
159
|
/plugin marketplace add sairam0424/MindForge
|
|
104
160
|
/plugin install mindforge@mindforge
|
|
105
161
|
```
|
|
106
162
|
|
|
107
|
-
|
|
163
|
+
Prefer just a slice (e.g. Python agents)? `mindforge-lang@mindforge` and 9 other focused packs exist — see [docs/plugin-installation.md](docs/plugin-installation.md) for all 10, token-budget guidance, and team setup.
|
|
164
|
+
|
|
165
|
+
### Standalone MCP server
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
claude mcp add mindforge -- npx -y mindforge-mcp-server
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Exposes 8 tools over stdio (6 read-only, 1 guarded write, 1 guarded browse proxy). Also listed on
|
|
172
|
+
the [MCP Registry](https://registry.modelcontextprotocol.io) as `io.github.sairam0424/mindforge`
|
|
173
|
+
— that entry is republished manually and can lag; check what it actually serves before relying on
|
|
174
|
+
it, or install `mindforge-mcp-server` from npm directly to pin a version.
|
|
175
|
+
|
|
176
|
+
### Homebrew
|
|
108
177
|
|
|
109
178
|
```bash
|
|
110
|
-
|
|
179
|
+
brew install sairam0424/tap/mindforge
|
|
111
180
|
```
|
|
112
181
|
|
|
113
|
-
|
|
182
|
+
### SDK
|
|
114
183
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
184
|
+
Build on MindForge programmatically:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm i mindforge-sdk
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
> [!NOTE]
|
|
191
|
+
> **Upgrading from 11.9.x?** The installer does not overwrite an existing
|
|
192
|
+
> `.mindforge/MINDFORGE-SCHEMA.json`, so 11.9.2's armed config validator keeps the older
|
|
193
|
+
> permissive schema on a plain upgrade — run with `--force` for the stricter gate. The daily cost
|
|
194
|
+
> cap declared as `[COST_HARD_LIMIT_USD]` in `MINDFORGE.md` was **not enforced** in 11.9.2 (11.9.3
|
|
195
|
+
> arms it), and an upgrade never rewrites an existing `MINDFORGE.md` — add
|
|
196
|
+
> `[COST_HARD_LIMIT_USD] = 25.00` yourself if yours predates the key.
|
|
197
|
+
|
|
198
|
+
Full install matrix, plugin packs, and team-setup guidance: [docs/getting-started.md](docs/getting-started.md).
|
|
121
199
|
|
|
122
200
|
---
|
|
123
201
|
|
|
124
202
|
## Verify
|
|
125
203
|
|
|
204
|
+
These `/mindforge:*` commands require the Claude Code plugin or an `npx`/Homebrew framework
|
|
205
|
+
install — the standalone MCP server exposes MCP tools instead, and `mindforge-sdk` exposes a
|
|
206
|
+
programmatic API; neither installs these slash commands.
|
|
207
|
+
|
|
126
208
|
```bash
|
|
127
209
|
/mindforge:health # framework + installation health check
|
|
128
|
-
/mindforge:health --repair #
|
|
210
|
+
/mindforge:health --repair # documented in the command spec, but NOT wired into the CLI
|
|
211
|
+
# backing path — silently ignored, output is byte-identical to plain health
|
|
129
212
|
/mindforge:status # project status snapshot
|
|
130
213
|
/mindforge:next # auto-discover your first task
|
|
131
214
|
```
|
|
@@ -154,31 +237,121 @@ Full verification walkthrough: [docs/quick-verify.md](docs/quick-verify.md).
|
|
|
154
237
|
|
|
155
238
|
---
|
|
156
239
|
|
|
240
|
+
## Latest release
|
|
241
|
+
|
|
242
|
+
**v11.9.9** (2026-09-23) — Release-readiness audit: 5 CRITICAL + 9 HIGH findings fixed. An
|
|
243
|
+
8-agent audit workflow tested every surface (commands, skills, personas, subagents,
|
|
244
|
+
dynamic workflows, CLI/MCP, live install/verify/health) as a release gate before pointing
|
|
245
|
+
real external users at the project. Every finding was independently re-verified against
|
|
246
|
+
live code before fixing, not trusted from the audit report alone. Five were ship-blocking:
|
|
247
|
+
a real LLM jailbreak toolkit (`godmode`) shipping unconditionally in the package is gone;
|
|
248
|
+
`help.md`/`status.md`/`health.md`/`security-scan.md` stop claiming PQAS/biometric/
|
|
249
|
+
lattice-crypto verification is "active by default" when the code says the opposite;
|
|
250
|
+
`--minimal` now actually skips the persona set instead of shipping all 218 files anyway; a
|
|
251
|
+
"Sovereign Integrity Check" that called a CLI flag on a script with no CLI entrypoint (and
|
|
252
|
+
so could never fail) is replaced with a real check; and a dead 4-line stub standing in for
|
|
253
|
+
"232 auto-triggered skills" is now disclosed as what it is. Nine more: corrected CLI
|
|
254
|
+
invocation docs, disclosed the marketplace's zero published packages, crash-guards on 8
|
|
255
|
+
dynamic workflows, 32 unregistered skills added to the manifest, 3 personas granting
|
|
256
|
+
tools that don't exist fixed, 11 dangling swarm-template references reconciled, `health`
|
|
257
|
+
wired to a real integrity check, and a brand-new install's audit log no longer reporting a
|
|
258
|
+
false "BROKEN" status. See [RELEASENOTES.md](./RELEASENOTES.md) or
|
|
259
|
+
[CHANGELOG.md](./CHANGELOG.md).
|
|
260
|
+
|
|
261
|
+
<details>
|
|
262
|
+
<summary><strong>Earlier releases</strong></summary>
|
|
263
|
+
|
|
264
|
+
**v11.9.8** fixed two real bugs found by a literal, end-to-end README audit (113 claims
|
|
265
|
+
checked, 98 held up): `--runtime claude,cursor` crashed the installer outright, and
|
|
266
|
+
`--minimal` claimed "no persona library" but shipped all 216 anyway. The other twelve
|
|
267
|
+
findings were documentation catching up to what the code actually does. The previous
|
|
268
|
+
release, **v11.9.7**, fixed a version self-contradiction and a false "Enabled"
|
|
269
|
+
claim in the install banner, a dead `docs.mindforge.cc` link, and a persona-count doc
|
|
270
|
+
regression (218 → back to the correct 216) introduced by v11.9.6's own honesty pass.
|
|
271
|
+
**v11.9.6** was the release-readiness pass before pointing real, external users at the
|
|
272
|
+
project for the first time: fixed a crash in `/mindforge:learn`, a token-leak in the
|
|
273
|
+
browser daemon, three dashboard panels that silently rendered nothing, a stale Homebrew
|
|
274
|
+
formula, and docs describing PQAS/ZTAI/"Pillar"-numbered subsystems as live guarantees when
|
|
275
|
+
the code already self-labels them simulated. **v11.9.5** fixed a release pipeline that
|
|
276
|
+
could strand itself mid-publish and shipped `mindforge-sdk` for the first time since
|
|
277
|
+
11.8.0, with provenance. **v11.9.4**, before that, is where the hook gates started actually
|
|
278
|
+
registering: 11.9.3 shipped the code and then declined to run it on essentially every
|
|
279
|
+
project. Measured against the published tarballs — 11.9.3: **11 hook scripts installed, 0
|
|
280
|
+
registered**; 11.9.4: **8 registered, 3 deny-class verified blocking**. That **behaviour
|
|
281
|
+
change under a patch bump** still applies — the installer writes `.claude/settings.json`
|
|
282
|
+
where it previously declined, merging append-only and backing up first. See the BREAKING
|
|
283
|
+
section in [CHANGELOG.md](./CHANGELOG.md).
|
|
284
|
+
|
|
285
|
+
</details>
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## How it fits together
|
|
290
|
+
|
|
291
|
+
```
|
|
292
|
+
/mindforge:plan-phase N
|
|
293
|
+
|
|
|
294
|
+
v
|
|
295
|
+
Skill Loader (trigger-match, tier: Project > Org > Core)
|
|
296
|
+
|
|
|
297
|
+
v
|
|
298
|
+
Context Injector (<=60K tokens) --> Cost Router
|
|
299
|
+
| (Haiku / Sonnet / Opus / Gemini,
|
|
300
|
+
v by task difficulty)
|
|
301
|
+
Fresh-context Subagent (implement -> self-verify -> commit)
|
|
302
|
+
|
|
|
303
|
+
v
|
|
304
|
+
Verification (build / typecheck / lint / test / security / diff)
|
|
305
|
+
pass | fail
|
|
306
|
+
+--------------+--------------+
|
|
307
|
+
v v
|
|
308
|
+
Handoff (.planning/HANDOFF.json Temporal rollback -> sets status
|
|
309
|
+
+ AUDIT.jsonl) "awaiting_regeneration"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
The fail path is real but partial: `bin/hindsight-injector.js` rolls back `.planning/` state and sets
|
|
313
|
+
`auto-state.json.status = "awaiting_regeneration"` — verified, and hash-chained into the audit log
|
|
314
|
+
like everything else. What is **not** currently true: nothing in `bin/` reads that status back out
|
|
315
|
+
to automatically re-trigger the wave (`awaiting_regeneration` has one writer, zero readers today) —
|
|
316
|
+
regeneration after a rollback is a manual step, not a closed loop.
|
|
317
|
+
|
|
318
|
+
Four layers underlie this, top to bottom: **Interface** (`.claude/`, `.agent/` — the 221 slash
|
|
319
|
+
commands and hooks), **Engine specs** (`.mindforge/` — 232 of the 354 skills plus 216 personas and
|
|
320
|
+
`config.json` runtime knobs; the other 122 skills are extended-tier, under `.agent/skills/`),
|
|
321
|
+
**Execution** (`bin/`, ~32K raw / ~25K stripped-of-comments LOC — the wave executor, governance,
|
|
322
|
+
memory, and dashboard code that actually runs), and **Persistence** (`.planning/` — `STATE.md`,
|
|
323
|
+
the audit chain, resumable `HANDOFF.json`). Edit behavior in layer 2 where possible; layer 3 is
|
|
324
|
+
the only place with real enforcement, per *What is actually enforced* above.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
157
328
|
## Documentation
|
|
158
329
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
330
|
+
Six categories, read in this order the first time:
|
|
331
|
+
|
|
332
|
+
| Category | Doc | Read this when |
|
|
333
|
+
|---|---|---|
|
|
334
|
+
| Start here | [Getting started](docs/getting-started.md) | Installing for the first time |
|
|
335
|
+
| Start here | [Quick verify](docs/quick-verify.md) | Right after install — confirm it actually works |
|
|
336
|
+
| Start here | [User guide](docs/user-guide.md) | Learning the day-to-day command loop |
|
|
337
|
+
| Start here | [Full tutorial](docs/tutorial.md) | Want a guided walkthrough instead of reference docs |
|
|
338
|
+
| Reference | [Commands (full)](docs/commands-reference.md) / [Commands (quick)](docs/References/commands.md) | Looking up a specific `/mindforge:*` command |
|
|
339
|
+
| Reference | [Config reference](docs/References/config-reference.md) | Editing `MINDFORGE.md` — this doc doesn't cover `.mindforge/config.json` |
|
|
340
|
+
| Reference | [SDK API](docs/References/sdk-api.md) / [Skills API](docs/References/skills-api.md) | Building on `mindforge-sdk` or authoring a new skill |
|
|
341
|
+
| Reference | [Audit events](docs/References/audit-events.md) | Parsing `.planning/AUDIT.jsonl` |
|
|
342
|
+
| Reference | [Workflow atlas](docs/workflow-atlas.md) | Choosing one of the 35 dynamic workflows |
|
|
343
|
+
| Reference | [Requirements](docs/requirements.md) | Checking supported Node/OS versions before install |
|
|
344
|
+
| When something's wrong | [Troubleshooting](docs/troubleshooting.md) | A command or hook isn't behaving as documented |
|
|
345
|
+
| When something's wrong | [FAQ](docs/faq.md) | Common questions before filing an issue |
|
|
346
|
+
| When something's wrong | [Upgrade guide](docs/upgrade.md) | Moving between major/minor versions |
|
|
347
|
+
| Security | [SECURITY.md](SECURITY.md) | Reporting a vulnerability; credentials are read from env vars and never committed |
|
|
348
|
+
| Security | [Threat model](docs/security/threat-model.md) | Historical only — scoped to the v1.0.0 predecessor, not re-reviewed against v11.x; see [SECURITY.md](SECURITY.md) for what's actually enforced today |
|
|
349
|
+
| Contributing | [Architecture](docs/architecture/README.md) | Understanding the codebase before sending a PR |
|
|
350
|
+
| Contributing | [Contributing guide](CONTRIBUTING.md) | Sending a PR |
|
|
351
|
+
| Contributing | [CI quickstart](docs/ci-quickstart.md) | Understanding what CI checks before you push |
|
|
352
|
+
| Contributing | [Release checklist](docs/release-checklist-guide.md) | Cutting a release |
|
|
353
|
+
| Reference | [USPs and features](docs/usp-features.md) | The same "measured, not asserted" honesty pass applied to what's actually shipped — no competitor comparison |
|
|
354
|
+
| Release notes | [RELEASENOTES.md](RELEASENOTES.md) | What changed, in prose, per version |
|
|
182
355
|
|
|
183
356
|
---
|
|
184
357
|
|
|
@@ -187,7 +360,7 @@ Full verification walkthrough: [docs/quick-verify.md](docs/quick-verify.md).
|
|
|
187
360
|
| Command | What it does |
|
|
188
361
|
| :--- | :--- |
|
|
189
362
|
| `/mindforge:init-project` | Requirements interview → creates `PROJECT.md`, `REQUIREMENTS.md`, `STATE.md` |
|
|
190
|
-
| `/mindforge:plan-phase 1
|
|
363
|
+
| `/mindforge:plan-phase 1` | Discuss scope, research the domain in parallel, create atomic XML task plans |
|
|
191
364
|
| `/mindforge:execute-phase 1` | Wave-based parallel execution, one commit per task, automated verification |
|
|
192
365
|
| `/mindforge:verify-phase 1` | Human acceptance testing, debug agent on failures, UAT sign-off |
|
|
193
366
|
| `/mindforge:ship 1` | Changelog generation, final quality gates, PR creation |
|
|
@@ -207,13 +380,18 @@ Full, verified 35-workflow table by tier: [docs/workflow-atlas.md](docs/workflow
|
|
|
207
380
|
|
|
208
381
|
---
|
|
209
382
|
|
|
210
|
-
|
|
383
|
+
<details>
|
|
384
|
+
<summary><strong>Execution modes</strong></summary>
|
|
211
385
|
|
|
212
386
|
MindForge supports multiple interaction models to fit your engineering workflow:
|
|
213
387
|
|
|
214
388
|
- **In-IDE Orchestration**: Use `/mindforge:agent <persona>` for real-time delegation.
|
|
215
389
|
- **Enterprise Workflows**: Specialized commands like `/mindforge:wf-tdd-sprint` and `/mindforge:plan-phase`.
|
|
216
|
-
- **CLI Automation**:
|
|
390
|
+
- **CLI Automation**: `node bin/mindforge-cli.js spawn <persona>` exists but is a v1.0 stub — it
|
|
391
|
+
prints "NOT IMPLEMENTED in v1.0" and exits 1, redirecting you to `/mindforge:auto` or
|
|
392
|
+
`/mindforge:next` instead.
|
|
393
|
+
|
|
394
|
+
</details>
|
|
217
395
|
|
|
218
396
|
---
|
|
219
397
|
|
|
@@ -223,27 +401,40 @@ Run `/mindforge:update` (add `--apply` to install) — see [docs/upgrade.md](doc
|
|
|
223
401
|
|
|
224
402
|
---
|
|
225
403
|
|
|
226
|
-
|
|
404
|
+
<details>
|
|
405
|
+
<summary><strong>Plugin system (v1.0.0)</strong></summary>
|
|
227
406
|
|
|
228
|
-
Plugins extend MindForge via the `mindforge-plugin-*` namespace.
|
|
407
|
+
Plugins extend MindForge via the `mindforge-plugin-*` namespace. No packages are currently
|
|
408
|
+
published under it — this is the mechanism, not a catalog.
|
|
229
409
|
|
|
230
|
-
```
|
|
410
|
+
```bash
|
|
231
411
|
/mindforge:plugins list
|
|
232
412
|
/mindforge:plugins install mindforge-plugin-<name>
|
|
233
413
|
/mindforge:plugins validate
|
|
234
414
|
```
|
|
235
415
|
|
|
416
|
+
</details>
|
|
417
|
+
|
|
236
418
|
---
|
|
237
419
|
|
|
238
420
|
## Token usage profiling
|
|
239
421
|
|
|
240
422
|
```
|
|
241
|
-
/mindforge:tokens --
|
|
423
|
+
/mindforge:tokens --optimise
|
|
242
424
|
```
|
|
243
|
-
|
|
425
|
+
(`--profile` doesn't exist; real flags are `--phase N`, `--session ID`, `--window short|medium|long`,
|
|
426
|
+
and `--optimise`.) See `.mindforge/production/token-optimiser.md`.
|
|
427
|
+
|
|
428
|
+
Installing and running `/mindforge:plan-phase`/`/mindforge:execute-phase` costs real model calls
|
|
429
|
+
once a subagent starts working — install itself does not (`npx mindforge-cc@latest` never calls
|
|
430
|
+
a model). Spend is capped by `[COST_HARD_LIMIT_USD]` in `MINDFORGE.md` (default `25.00`),
|
|
431
|
+
enforced in code by `bin/models/cost-tracker.js`'s `preflight()` before each call goes out — not a
|
|
432
|
+
policy statement. The per-project token/cost *reports* from `/mindforge:tokens` and
|
|
433
|
+
`.mindforge/production/token-optimiser.md` are heuristic estimates (`file size / 4`), explicitly
|
|
434
|
+
logged with `measured: false`.
|
|
244
435
|
|
|
245
436
|
---
|
|
246
437
|
|
|
247
438
|
## License
|
|
248
439
|
|
|
249
|
-
MIT © 2026
|
|
440
|
+
MIT © 2026 Sairam Ugge (GitHub: Sairam0000)
|
package/RELEASENOTES.md
CHANGED
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## v11.9.9 — 2026-09-23 — Release-readiness audit: 5 CRITICAL + 9 HIGH findings fixed
|
|
4
|
+
|
|
5
|
+
### Why this release exists
|
|
6
|
+
|
|
7
|
+
An 8-agent audit workflow tested every MindForge surface — slash commands, skills,
|
|
8
|
+
personas, subagents, dynamic workflows, CLI/MCP, and a live install/verify/health cycle —
|
|
9
|
+
as a release gate before shipping to real external users. Every finding was independently
|
|
10
|
+
re-verified against live code and commands before being fixed, not trusted from the audit
|
|
11
|
+
report alone.
|
|
12
|
+
|
|
13
|
+
### The user-visible part
|
|
14
|
+
|
|
15
|
+
**Five CRITICAL findings, all ship-blocking:** a real, complete LLM jailbreak toolkit
|
|
16
|
+
(`godmode`) that was shipping unconditionally in the published package is gone; `help.md`,
|
|
17
|
+
`status.md`, `health.md`, and `security-scan.md` stop claiming PQAS/biometric/lattice-crypto
|
|
18
|
+
verification is "active by default" when the code itself says it's simulated and off;
|
|
19
|
+
`--minimal` now actually skips the persona set instead of shipping all 218 files anyway; a
|
|
20
|
+
"Sovereign Integrity Check" that called a CLI flag on a script with no CLI entrypoint (and
|
|
21
|
+
so could never fail) is replaced with a real check; and a dead 4-line stub standing in for
|
|
22
|
+
"232 auto-triggered skills" is now disclosed as what it is.
|
|
23
|
+
|
|
24
|
+
**Nine HIGH-severity findings:** corrected CLI invocation docs, disclosed the marketplace
|
|
25
|
+
has zero published packages today, added crash-guards to 8 dynamic workflows, registered 32
|
|
26
|
+
skills that existed on disk but were never in the manifest, fixed three personas granting
|
|
27
|
+
tools that don't exist, reconciled 11 dangling swarm-template references, wired the `health`
|
|
28
|
+
command to an actual integrity check, and stopped a brand-new install's audit log from
|
|
29
|
+
reporting a false "BROKEN" status.
|
|
30
|
+
|
|
31
|
+
## v11.9.8 — 2026-09-21 — What the README claims, verified line by line
|
|
32
|
+
|
|
33
|
+
### Why this release exists
|
|
34
|
+
|
|
35
|
+
v11.9.7 shipped a full README rewrite. This release is what happened when that rewrite got
|
|
36
|
+
a literal, end-to-end audit — every command it documents actually run in a real environment
|
|
37
|
+
(real `npx` installs, a real Homebrew install/uninstall cycle, a real `npm i mindforge-sdk`,
|
|
38
|
+
live registry checks) rather than re-read for plausibility. Of 113 claims checked, 98 held
|
|
39
|
+
up, 14 didn't, and 1 couldn't be verified either way.
|
|
40
|
+
|
|
41
|
+
### The user-visible part
|
|
42
|
+
|
|
43
|
+
**Two of the 14 were real bugs, not just wording.** `--runtime claude,cursor` — or any
|
|
44
|
+
comma-separated runtime list — crashed the installer outright; it's fixed, and an unknown
|
|
45
|
+
runtime name now exits cleanly with a clear message instead of a raw crash. `--minimal`
|
|
46
|
+
claimed "no persona library" but silently installed all 216 personas anyway; it now
|
|
47
|
+
installs none, as documented.
|
|
48
|
+
|
|
49
|
+
**The other twelve are documentation catching up to what the code actually does:** the
|
|
50
|
+
bare `npx mindforge-cc@latest` "auto-detects your runtime" claim (real detection only
|
|
51
|
+
happens inside the interactive wizard, and even there you still confirm it — every
|
|
52
|
+
non-interactive run defaults to `--claude`), an `--ads` flag on `/mindforge:plan-phase`
|
|
53
|
+
that was never real, `/mindforge:health --repair` silently doing nothing, a `--profile`
|
|
54
|
+
flag on `/mindforge:tokens` that doesn't exist, a CLI `spawn` command that's a v1.0 stub,
|
|
55
|
+
the License section's copyright holder, the skill-tier split in the architecture diagram,
|
|
56
|
+
the `bin/` line-count figure, three Documentation-table rows that overstated what their
|
|
57
|
+
linked docs actually cover, and the `mindforge-plugin-*` namespace, which has zero
|
|
58
|
+
packages published under it today.
|
|
59
|
+
|
|
3
60
|
## v11.9.7 — 2026-09-20 — The install banner stops contradicting itself
|
|
4
61
|
|
|
5
62
|
### Why this release exists
|
package/SECURITY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Security Policy
|
|
2
2
|
|
|
3
|
-
> **Current version:** 11.9.
|
|
3
|
+
> **Current version:** 11.9.9 | **npm audit:** 0 vulnerabilities across root, sdk, mcp-server
|
|
4
4
|
|
|
5
5
|
## Supported Versions
|
|
6
6
|
|
|
@@ -90,7 +90,8 @@ We follow responsible disclosure practices. We will credit reporters in the rele
|
|
|
90
90
|
### Supply Chain
|
|
91
91
|
|
|
92
92
|
- **Zero native dependencies** — The removal of `better-sqlite3` eliminates the entire native compilation toolchain (node-gyp, Python, C++ compiler) from the install process, reducing the attack surface.
|
|
93
|
-
- **Dependabot enabled** — Automated weekly scans for vulnerable npm dependencies and monthly GitHub Actions version updates.
|
|
93
|
+
- **Dependabot enabled** — Automated weekly scans for vulnerable npm dependencies (root, `sdk/`, and `mcp-server/` each tracked independently) and monthly GitHub Actions version updates.
|
|
94
|
+
- **SBOM available** — GitHub generates a full SPDX software bill of materials from the dependency graph; export it from the repo's Insights tab, or via the API: `gh api repos/sairam0424/MindForge/dependency-graph/sbom/generate-report` returns an `sbom_url`, poll it until it 302s to a download. (The older single-call `.../dependency-graph/sbom` endpoint still works today but GitHub is retiring it on 2026-11-13 — use the generate/fetch flow above for anything meant to keep working past that date.)
|
|
94
95
|
- **CODEOWNERS enforcement** — Changes to `bin/governance/`, `bin/engine/`, and the SDK require review from designated security owners.
|
|
95
96
|
- **.npmignore** — Prevents accidental publication of secrets, test fixtures, planning state, and intelligence logs.
|
|
96
97
|
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* MindForge — Audit chain verifier (UC-04). Fail-closed: any break => valid:false.
|
|
3
|
+
* MindForge — Audit chain verifier (UC-04). Fail-closed: any break => valid:false. An ABSENT log
|
|
4
|
+
* (ENOENT) is reported separately via `missing: true` rather than folded into the generic
|
|
5
|
+
* `unreadable:` reason below — a project that has never written an audit entry is not evidence of
|
|
6
|
+
* tampering, and callers (bin/verify-audit.js) use the distinction to avoid crying "BROKEN" at a
|
|
7
|
+
* brand-new user who has done nothing wrong.
|
|
4
8
|
*
|
|
5
9
|
* Walks the JSONL audit log line-by-line and re-derives each entry's hash from its
|
|
6
10
|
* content plus the prior entry's hash. The chain is valid only if EVERY link holds:
|
|
@@ -32,12 +36,17 @@ function hashEntry(entry, previousHash) {
|
|
|
32
36
|
/**
|
|
33
37
|
* Verifies the integrity of a hash-chained audit log. Fail-closed.
|
|
34
38
|
* @param {string} auditPath — path to the AUDIT.jsonl file
|
|
35
|
-
* @returns {{ valid: boolean, count: number, brokenAt?: number, reason?: string }}
|
|
39
|
+
* @returns {{ valid: boolean, count: number, brokenAt?: number, reason?: string, missing?: boolean }}
|
|
36
40
|
*/
|
|
37
41
|
function verifyAuditChain(auditPath) {
|
|
38
42
|
let lines;
|
|
39
43
|
try { lines = fs.readFileSync(auditPath, 'utf8').split('\n').filter(Boolean); }
|
|
40
|
-
catch (e) {
|
|
44
|
+
catch (e) {
|
|
45
|
+
if (e.code === 'ENOENT') {
|
|
46
|
+
return { valid: false, count: 0, missing: true, reason: 'no audit log yet — nothing has been audited' };
|
|
47
|
+
}
|
|
48
|
+
return { valid: false, count: 0, brokenAt: 0, reason: `unreadable: ${e.message}` };
|
|
49
|
+
}
|
|
41
50
|
|
|
42
51
|
let previousHash = null;
|
|
43
52
|
for (let i = 0; i < lines.length; i++) {
|
|
@@ -84,7 +84,7 @@ function freezeRecord(record) {
|
|
|
84
84
|
*/
|
|
85
85
|
function sharedAssetTrees(base, { hooks = 11 } = {}) {
|
|
86
86
|
return [
|
|
87
|
-
{ asset: 'skills', dir: `${base}/skills`, min_files:
|
|
87
|
+
{ asset: 'skills', dir: `${base}/skills`, min_files: 279, verbatim_subset_of: '.agent/skills' },
|
|
88
88
|
{ asset: 'hooks', dir: `${base}/hooks`, min_files: hooks, verbatim_subset_of: '.agent/hooks' },
|
|
89
89
|
{ asset: 'personas', dir: `${base}/personas`, min_files: 218, verbatim_subset_of: '.mindforge/personas' },
|
|
90
90
|
{ asset: 'docs references', dir: `${base}/docs/references`, min_files: 20, verbatim_subset_of: 'docs/References' },
|