mindforge-cc 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,11 @@
3
3
  All notable changes to MindForge are documented here.
4
4
  Format follows [Keep a Changelog](https://keepachangelog.com).
5
5
 
6
+ ## [1.0.5] — v1.0.5 Minimal Install Option — 2026-03-22
7
+
8
+ ### Added
9
+ - `--minimal` flag to install only essential project scaffolding.
10
+
6
11
  ## [1.0.4] — v1.0.4 Antigravity Install Fix — 2026-03-22
7
12
 
8
13
  ### Fixed
package/README.md CHANGED
@@ -47,6 +47,11 @@ Optional: add bin utilities on local install
47
47
  npx mindforge-cc@latest --claude --local --with-utils
48
48
  ```
49
49
 
50
+ Optional: minimal project scaffolding
51
+ ```bash
52
+ npx mindforge-cc@latest --claude --local --minimal
53
+ ```
54
+
50
55
  ### Both runtimes
51
56
  ```bash
52
57
  npx mindforge-cc@latest --all --global
package/bin/install.js CHANGED
@@ -15,7 +15,7 @@
15
15
  * Runtime flags: --claude | --antigravity | --all
16
16
  * Scope flags: --global (-g) | --local (-l)
17
17
  * Action flags: --install (default) | --update | --uninstall | --check
18
- * Control flags: --skip-wizard | --dry-run | --verbose | --force | --with-utils
18
+ * Control flags: --skip-wizard | --dry-run | --verbose | --force | --with-utils | --minimal
19
19
  */
20
20
 
21
21
  'use strict';
@@ -53,7 +53,7 @@ const NON_INTERACTIVE_FLAGS = [
53
53
  '--claude', '--antigravity', '--all',
54
54
  '--global', '-g', '--local', '-l',
55
55
  '--uninstall', '--update', '--check',
56
- '--skip-wizard', '--dry-run', '--with-utils',
56
+ '--skip-wizard', '--dry-run', '--with-utils', '--minimal',
57
57
  ];
58
58
 
59
59
  const IS_NON_INTERACTIVE =
@@ -103,6 +103,7 @@ function printHelp() {
103
103
  --force Override existing installation without backup
104
104
  --skip-wizard Skip interactive wizard even in TTY
105
105
  --with-utils Install local bin/ utilities (optional)
106
+ --minimal Install only essential project scaffolding
106
107
  --verbose Detailed output
107
108
  --version, -v Print version
108
109
  --help, -h Print this help
@@ -147,7 +147,13 @@ function verifyInstall(baseDir, cmdsDir, runtime, scope) {
147
147
 
148
148
  // ── Install single runtime ────────────────────────────────────────────────────
149
149
  async function install(runtime, scope, options = {}) {
150
- const { dryRun = false, force = false, verbose = false, withUtils = false } = options;
150
+ const {
151
+ dryRun = false,
152
+ force = false,
153
+ verbose = false,
154
+ withUtils = false,
155
+ minimal = false,
156
+ } = options;
151
157
  const cfg = RUNTIMES[runtime];
152
158
  const baseDir = resolveBaseDir(runtime, scope);
153
159
  const cmdsDir = norm(path.join(baseDir, cfg.commandsSubdir));
@@ -193,8 +199,29 @@ async function install(runtime, scope, options = {}) {
193
199
  const forgeSrc = src('.mindforge');
194
200
  const forgeDst = path.join(process.cwd(), '.mindforge');
195
201
  if (fsu.exists(forgeSrc)) {
196
- fsu.copyDir(forgeSrc, forgeDst, { excludePatterns: SENSITIVE_EXCLUDE });
197
- console.log(` ✅ .mindforge/ (framework engine)`);
202
+ if (minimal) {
203
+ const minimalEntries = new Set([
204
+ 'MINDFORGE-SCHEMA.json',
205
+ 'engine',
206
+ 'org',
207
+ 'governance',
208
+ 'integrations',
209
+ 'personas',
210
+ 'skills',
211
+ 'team',
212
+ ]);
213
+ fsu.ensureDir(forgeDst);
214
+ for (const entry of fs.readdirSync(forgeSrc, { withFileTypes: true })) {
215
+ if (!minimalEntries.has(entry.name)) continue;
216
+ const s = path.join(forgeSrc, entry.name);
217
+ const d = path.join(forgeDst, entry.name);
218
+ entry.isDirectory() ? fsu.copyDir(s, d, { excludePatterns: SENSITIVE_EXCLUDE }) : fsu.copy(s, d);
219
+ }
220
+ console.log(` ✅ .mindforge/ (minimal core)`);
221
+ } else {
222
+ fsu.copyDir(forgeSrc, forgeDst, { excludePatterns: SENSITIVE_EXCLUDE });
223
+ console.log(` ✅ .mindforge/ (framework engine)`);
224
+ }
198
225
  }
199
226
 
200
227
  // .planning/ — create only if it doesn't already exist (preserve project state)
@@ -202,8 +229,18 @@ async function install(runtime, scope, options = {}) {
202
229
  if (!fsu.exists(planningDst)) {
203
230
  const planningSrc = src('.planning');
204
231
  if (fsu.exists(planningSrc)) {
205
- fsu.copyDir(planningSrc, planningDst, { excludePatterns: SENSITIVE_EXCLUDE });
206
- console.log(` ✅ .planning/ (state templates)`);
232
+ if (minimal) {
233
+ fsu.ensureDir(planningDst);
234
+ ['STATE.md', 'HANDOFF.json', 'PROJECT.md'].forEach((name) => {
235
+ const s = path.join(planningSrc, name);
236
+ const d = path.join(planningDst, name);
237
+ if (fsu.exists(s)) fsu.copy(s, d);
238
+ });
239
+ console.log(` ✅ .planning/ (minimal state)`);
240
+ } else {
241
+ fsu.copyDir(planningSrc, planningDst, { excludePatterns: SENSITIVE_EXCLUDE });
242
+ console.log(` ✅ .planning/ (state templates)`);
243
+ }
207
244
  }
208
245
  } else {
209
246
  console.log(` ⏭️ .planning/ already exists — preserved (run /mindforge:health to verify)`);
@@ -279,10 +316,11 @@ async function run(args) {
279
316
  const force = args.includes('--force');
280
317
  const verbose = args.includes('--verbose');
281
318
  const withUtils = args.includes('--with-utils');
319
+ const minimal = args.includes('--minimal');
282
320
  const isUninstall = args.includes('--uninstall');
283
321
  const isUpdate = args.includes('--update');
284
322
  const isCheck = args.includes('--check');
285
- const options = { dryRun, force, verbose, withUtils };
323
+ const options = { dryRun, force, verbose, withUtils, minimal };
286
324
 
287
325
  console.log(`\n⚡ MindForge v${VERSION} — Enterprise Agentic Framework\n`);
288
326
 
@@ -232,10 +232,11 @@ async function main() {
232
232
  const runtimes = await selectRuntime(rl, env.runtimes);
233
233
  const scope = await selectScope(rl);
234
234
  const { config, credGuidance } = await configureFeatures(rl);
235
+ const minimal = await askYesNo(rl, 'Install minimal project scaffolding?', false);
235
236
  const withUtils = await askYesNo(rl, 'Install optional bin/ utilities?', false);
236
237
  rl.close();
237
238
 
238
- await install(runtimes, scope, { withUtils });
239
+ await install(runtimes, scope, { withUtils, minimal });
239
240
  await generator.writeIntegrationsConfig(config);
240
241
  printNextSteps(runtimes, scope, credGuidance);
241
242
  } catch (err) {
@@ -20,6 +20,11 @@ Optional utilities:
20
20
  npx mindforge-cc@latest --claude --local --with-utils
21
21
  ```
22
22
 
23
+ Minimal scaffolding:
24
+ ```bash
25
+ npx mindforge-cc@latest --claude --local --minimal
26
+ ```
27
+
23
28
  ### Antigravity
24
29
  ```bash
25
30
  npx mindforge-cc@latest --antigravity --global
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindforge-cc",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "MindForge - Enterprise Agentic Framework for Claude Code and Antigravity",
5
5
  "bin": {
6
6
  "mindforge-cc": "bin/install.js"