murmur8 3.5.0 → 4.0.1

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/README.md CHANGED
@@ -4,6 +4,26 @@ A multi-agent workflow framework for automated feature development. Like a murmu
4
4
 
5
5
  Four specialized AI agents collaborate in sequence to take features from specification to implementation, with built-in feedback loops and self-improvement capabilities.
6
6
 
7
+ ## Upgrading to v4.0
8
+
9
+ v4.0 completes the murmuration theming by renaming all parallel internals. Existing users should be aware of the following breaking changes.
10
+
11
+ ### Breaking changes
12
+
13
+ - **Source file renamed**: `src/parallel.js` → `src/murm.js` — update any direct `require()` / `import` references
14
+ - **Exported functions renamed**: `runParallel` → `runMurm`, `abortParallel` → `abortMurm`, `rollbackParallel` → `rollbackMurm`, `readParallelConfig` → `readMurmConfig`, `writeParallelConfig` → `writeMurmConfig`, `getDefaultParallelConfig` → `getDefaultMurmConfig`, `validateParallelBatch` → `validateMurmBatch`
15
+ - **Status strings renamed**: `parallel_queued` → `murm_queued`, `parallel_running` → `murm_running`, `parallel_failed` → `murm_failed`, `parallel_complete` → `murm_complete` — update any code that matches on these values
16
+ - **On-disk paths renamed**: `.claude/parallel-config.json` → `.claude/murm-config.json`, `.claude/parallel-queue.json` → `.claude/murm-queue.json`, `.claude/parallel.lock` → `.claude/murm.lock`
17
+ - **CLI command renamed**: `parallel-config` → `murm-config`
18
+
19
+ ### Automatic migration
20
+
21
+ Legacy on-disk files (`.claude/parallel-config.json`, `.claude/parallel-queue.json`, `.claude/parallel.lock`) are **automatically migrated** to the new paths on first access. No manual action is needed for existing configs.
22
+
23
+ ### Backward-compatible aliases
24
+
25
+ The CLI commands `parallel`, `murmuration`, and `parallel-config` continue to work as aliases for `murm` and `murm-config` respectively.
26
+
7
27
  ## Agents
8
28
 
9
29
  | Agent | Role |
@@ -83,16 +103,16 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
83
103
  | `npx murmur8 insights --bottlenecks` | View bottleneck analysis |
84
104
  | `npx murmur8 insights --failures` | View failure pattern analysis |
85
105
 
86
- ### Parallel Execution
106
+ ### Murmuration (Parallel Execution)
87
107
 
88
108
  | Command | Description |
89
109
  |---------|-------------|
90
- | `npx murmur8 parallel <slugs...>` | Run multiple features in parallel |
91
- | `npx murmur8 parallel <slugs...> --dry-run` | Preview execution plan |
92
- | `npx murmur8 parallel status` | Show status of running pipelines |
93
- | `npx murmur8 parallel cleanup` | Remove completed worktrees |
94
- | `npx murmur8 parallel-config` | View parallel configuration |
95
- | `npx murmur8 parallel-config set <key> <value>` | Modify parallel settings |
110
+ | `npx murmur8 murm <slugs...>` | Run multiple features in parallel |
111
+ | `npx murmur8 murm <slugs...> --dry-run` | Preview execution plan |
112
+ | `npx murmur8 murm status` | Show status of running pipelines |
113
+ | `npx murmur8 murm cleanup` | Remove completed worktrees |
114
+ | `npx murmur8 murm-config` | View murmuration configuration |
115
+ | `npx murmur8 murm-config set <key> <value>` | Modify murmuration settings |
96
116
 
97
117
  ### Configuration
98
118
 
@@ -106,8 +126,8 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
106
126
  | `npx murmur8 retry-config reset` | Reset to defaults |
107
127
  | `npx murmur8 feedback-config` | View feedback thresholds |
108
128
  | `npx murmur8 feedback-config set <key> <value>` | Modify feedback settings |
109
- | `npx murmur8 parallel-config` | View parallel pipeline configuration |
110
- | `npx murmur8 parallel-config set <key> <value>` | Modify parallel settings |
129
+ | `npx murmur8 murm-config` | View murmuration pipeline configuration |
130
+ | `npx murmur8 murm-config set <key> <value>` | Modify murmuration settings |
111
131
 
112
132
  ## Usage
113
133
 
@@ -227,7 +247,7 @@ murmur8 includes these built-in modules for observability and self-improvement:
227
247
  | **handoff** | Structured summaries between agents for token efficiency |
228
248
  | **business-context** | Lazy loading of business context based on feature needs |
229
249
  | **tools** | Tool schemas and validation for Claude native features |
230
- | **parallel** | Parallel pipeline execution using git worktrees |
250
+ | **murm** | Murmuration pipeline execution using git worktrees |
231
251
  | **stack** | Configurable tech stack detection and configuration |
232
252
 
233
253
  ### How They Work Together
@@ -290,8 +310,8 @@ your-project/
290
310
  │ ├── pipeline-history.json # Execution history (gitignored)
291
311
  │ ├── retry-config.json # Retry configuration (gitignored)
292
312
  │ ├── feedback-config.json # Feedback thresholds (gitignored)
293
- │ ├── parallel-config.json # Parallel execution config (gitignored)
294
- │ ├── parallel-queue.json # Parallel pipeline state (gitignored)
313
+ │ ├── murm-config.json # Murmuration execution config (gitignored)
314
+ │ ├── murm-queue.json # Murmuration pipeline state (gitignored)
295
315
  │ ├── stack-config.json # Tech stack configuration (gitignored)
296
316
  │ └── implement-queue.json # Pipeline queue state (gitignored)
297
317
  └── test/
@@ -359,14 +379,14 @@ Version 2.7 introduces several optimizations to reduce token usage:
359
379
 
360
380
  **Total estimated savings: 10,000+ tokens per pipeline run** (more for technical features)
361
381
 
362
- ## Parallel Execution with Git Worktrees
382
+ ## Murmuration
363
383
 
364
384
  Run multiple feature pipelines simultaneously using git worktrees for isolation. Each feature gets its own worktree and branch, allowing true parallel development without conflicts.
365
385
 
366
386
  ### How It Works
367
387
 
368
388
  ```
369
- murmur8 parallel user-auth dashboard notifications
389
+ murmur8 murm <slug-a> <slug-b> <slug-c>
370
390
 
371
391
 
372
392
  ┌───────────────────────────────────────┐
@@ -384,19 +404,19 @@ murmur8 parallel user-auth dashboard notifications
384
404
  ┌───────────────────────────────────────┐
385
405
  │ Create Isolated Worktrees │
386
406
  │ │
387
- │ .claude/worktrees/feat-user-auth/
388
- │ └─ branch: feature/user-auth
407
+ │ .claude/worktrees/feat-<slug-a>/
408
+ │ └─ branch: feature/<slug-a>
389
409
  │ │
390
- │ .claude/worktrees/feat-dashboard/
391
- │ └─ branch: feature/dashboard
410
+ │ .claude/worktrees/feat-<slug-b>/
411
+ │ └─ branch: feature/<slug-b>
392
412
  │ │
393
- │ .claude/worktrees/feat-notifications/│
394
- │ └─ branch: feature/notifications
413
+ │ .claude/worktrees/feat-<slug-c>/ │
414
+ │ └─ branch: feature/<slug-c>
395
415
  └───────────────────────────────────────┘
396
416
 
397
417
 
398
418
  ┌───────────────────────────────────────┐
399
- │ Spawn Parallel Pipelines
419
+ │ Spawn Pipelines
400
420
  │ (max 3 concurrent by default) │
401
421
  │ │
402
422
  │ Each runs: Alex → Nigel → Codey │
@@ -416,22 +436,22 @@ murmur8 parallel user-auth dashboard notifications
416
436
 
417
437
  ```bash
418
438
  # Run 3 features in parallel (default concurrency)
419
- npx murmur8 parallel user-auth dashboard notifications
439
+ npx murmur8 murm <slug-a> <slug-b> <slug-c>
420
440
 
421
441
  # Preview what would happen without executing
422
- npx murmur8 parallel user-auth dashboard --dry-run
442
+ npx murmur8 murm <slug-a> <slug-b> --dry-run
423
443
 
424
444
  # Limit concurrent pipelines
425
- npx murmur8 parallel feat-a feat-b feat-c feat-d --max-concurrency=2
445
+ npx murmur8 murm <slug-a> <slug-b> <slug-c> <slug-d> --max-concurrency=2
426
446
 
427
447
  # Check status of running pipelines
428
- npx murmur8 parallel status
448
+ npx murmur8 murm status
429
449
 
430
450
  # Skip pre-flight feature validation
431
- npx murmur8 parallel user-auth dashboard --skip-preflight
451
+ npx murmur8 murm <slug-a> <slug-b> --skip-preflight
432
452
 
433
453
  # Clean up completed/aborted worktrees
434
- npx murmur8 parallel cleanup
454
+ npx murmur8 murm cleanup
435
455
  ```
436
456
 
437
457
  ### Pre-flight Batch Validation (v2.8)
@@ -439,7 +459,7 @@ npx murmur8 parallel cleanup
439
459
  Before parallel execution, the system validates the batch to prevent wasted resources:
440
460
 
441
461
  ```
442
- $ npx murmur8 parallel feat-a feat-b feat-c --dry-run
462
+ $ npx murmur8 murm feat-a feat-b feat-c --dry-run
443
463
 
444
464
  Pre-flight Validation
445
465
  =====================
@@ -484,11 +504,11 @@ Suggested commands:
484
504
 
485
505
  ### Configuration
486
506
 
487
- The parallel module is **CLI-agnostic** — configure it to work with different AI coding tools:
507
+ The murmuration module is **CLI-agnostic** — configure it to work with different AI coding tools:
488
508
 
489
509
  ```bash
490
510
  # View current configuration
491
- npx murmur8 parallel-config
511
+ npx murmur8 murm-config
492
512
 
493
513
  # Output:
494
514
  # cli: npx claude
@@ -496,7 +516,7 @@ npx murmur8 parallel-config
496
516
  # skillFlags: --no-commit
497
517
  # worktreeDir: .claude/worktrees
498
518
  # maxConcurrency: 3
499
- # queueFile: .claude/parallel-queue.json
519
+ # queueFile: .claude/murm-queue.json
500
520
  ```
501
521
 
502
522
  #### Configuration Options
@@ -511,31 +531,31 @@ npx murmur8 parallel-config
511
531
  | `maxFeatures` | `10` | Maximum features per batch |
512
532
  | `timeout` | `30` | Timeout per pipeline (minutes) |
513
533
  | `minDiskSpaceMB` | `500` | Minimum disk space warning threshold |
514
- | `queueFile` | `.claude/parallel-queue.json` | State persistence file |
534
+ | `queueFile` | `.claude/murm-queue.json` | State persistence file |
515
535
 
516
536
  #### Examples for Different CLIs
517
537
 
518
538
  ```bash
519
539
  # Claude Code (default)
520
- npx murmur8 parallel-config set cli "npx claude"
521
- npx murmur8 parallel-config set skill "/implement-feature"
540
+ npx murmur8 murm-config set cli "npx claude"
541
+ npx murmur8 murm-config set skill "/implement-feature"
522
542
 
523
543
  # Cursor
524
- npx murmur8 parallel-config set cli "cursor"
525
- npx murmur8 parallel-config set skill "composer"
526
- npx murmur8 parallel-config set skillFlags ""
544
+ npx murmur8 murm-config set cli "cursor"
545
+ npx murmur8 murm-config set skill "composer"
546
+ npx murmur8 murm-config set skillFlags ""
527
547
 
528
548
  # Aider
529
- npx murmur8 parallel-config set cli "aider"
530
- npx murmur8 parallel-config set skill "--message"
531
- npx murmur8 parallel-config set skillFlags "implement feature:"
549
+ npx murmur8 murm-config set cli "aider"
550
+ npx murmur8 murm-config set skill "--message"
551
+ npx murmur8 murm-config set skillFlags "implement feature:"
532
552
 
533
553
  # Custom agent script
534
- npx murmur8 parallel-config set cli "./my-agent.sh"
535
- npx murmur8 parallel-config set skill "run"
554
+ npx murmur8 murm-config set cli "./my-agent.sh"
555
+ npx murmur8 murm-config set skill "run"
536
556
 
537
557
  # Reset to defaults
538
- npx murmur8 parallel-config reset
558
+ npx murmur8 murm-config reset
539
559
  ```
540
560
 
541
561
  ### State Management
@@ -543,10 +563,10 @@ npx murmur8 parallel-config reset
543
563
  Each feature progresses through these states:
544
564
 
545
565
  ```
546
- parallel_queued → worktree_created → parallel_running → merge_pending → parallel_complete
547
- │ │
548
- ▼ ▼
549
- parallel_failed merge_conflict
566
+ murm_queued → worktree_created → murm_running → merge_pending → murm_complete
567
+ │ │
568
+ ▼ ▼
569
+ murm_failed merge_conflict
550
570
  ```
551
571
 
552
572
  - **Successful features**: Merged to main, worktree cleaned up
package/SKILL.md CHANGED
@@ -189,6 +189,8 @@ historyEntry = {
189
189
 
190
190
  ## Step 6: Spawn Alex Agent
191
191
 
192
+ **Announce:** `} Alex — creating feature spec`
193
+
192
194
  **History:** Record `stages.alex.startedAt` before spawning.
193
195
 
194
196
  **Runtime prompt:** `.blueprint/prompts/alex-runtime.md`
@@ -281,6 +283,8 @@ Then continue with your task.
281
283
 
282
284
  ## Step 7: Spawn Cass Agent
283
285
 
286
+ **Announce:** ` } Cass — writing user stories`
287
+
284
288
  **History:** Record `stages.cass.startedAt` before spawning.
285
289
 
286
290
  **Runtime prompt:** `.blueprint/prompts/cass-runtime.md`
@@ -379,6 +383,8 @@ Then continue with your task.
379
383
 
380
384
  ## Step 8: Spawn Nigel Agent
381
385
 
386
+ **Announce:** ` } Nigel — building tests`
387
+
382
388
  **History:** Record `stages.nigel.startedAt` before spawning.
383
389
 
384
390
  **Runtime prompt:** `.blueprint/prompts/nigel-runtime.md`
@@ -480,6 +486,8 @@ Then continue with your task.
480
486
 
481
487
  ## Step 9: Spawn Codey Agent (Plan)
482
488
 
489
+ **Announce:** ` } Codey — drafting implementation plan`
490
+
483
491
  **History:** Record `stages.codeyPlan.startedAt` before spawning.
484
492
 
485
493
  **Runtime prompt:** `.blueprint/prompts/codey-plan-runtime.md`
@@ -536,6 +544,8 @@ For detailed guidance, see: .blueprint/agents/AGENT_DEVELOPER_CODEY.md
536
544
 
537
545
  ## Step 10: Spawn Codey Agent (Implement)
538
546
 
547
+ **Announce:** ` } Codey — implementing feature`
548
+
539
549
  **History:** Record `stages.codeyImplement.startedAt` before spawning.
540
550
 
541
551
  **Runtime prompt:** `.blueprint/prompts/codey-implement-runtime.md`
@@ -631,7 +641,13 @@ historyEntry.commitHash = "{hash}";
631
641
 
632
642
  **Display summary:**
633
643
  ```
634
- ## Completed
644
+ } Alex — creating feature spec ✓
645
+ } Cass — writing user stories ✓
646
+ } Nigel — building tests ✓
647
+ } Codey — drafting plan ✓
648
+ } Codey — implementing feature ✓
649
+
650
+ ## Landed
635
651
  - feature_{slug}
636
652
  - Stories: N
637
653
  - Tests: N (all passing)
package/bin/cli.js CHANGED
@@ -22,18 +22,18 @@ const {
22
22
  formatStatus,
23
23
  getDefaultConfig,
24
24
  splitByLimit,
25
- runParallel,
25
+ runMurm,
26
26
  loadQueue,
27
27
  cleanupWorktrees,
28
- readParallelConfig,
29
- writeParallelConfig,
30
- getDefaultParallelConfig,
31
- abortParallel,
28
+ readMurmConfig,
29
+ writeMurmConfig,
30
+ getDefaultMurmConfig,
31
+ abortMurm,
32
32
  getLockInfo,
33
33
  getDetailedStatus,
34
34
  formatDetailedStatus,
35
- rollbackParallel
36
- } = require('../src/parallel');
35
+ rollbackMurm
36
+ } = require('../src/murm');
37
37
 
38
38
  const args = process.argv.slice(2);
39
39
  const command = args[0];
@@ -170,30 +170,30 @@ const commands = {
170
170
  },
171
171
  description: 'View or modify project tech stack configuration'
172
172
  },
173
- 'parallel-config': {
173
+ 'murm-config': {
174
174
  fn: () => {
175
175
  if (subArg === 'set') {
176
176
  const key = args[2];
177
177
  const value = args[3];
178
178
  if (!key || !value) {
179
- console.error('Usage: parallel-config set <key> <value>');
179
+ console.error('Usage: murm-config set <key> <value>');
180
180
  console.error('Valid keys: cli, skill, skillFlags, worktreeDir, maxConcurrency, queueFile');
181
181
  process.exit(1);
182
182
  }
183
- const config = readParallelConfig();
183
+ const config = readMurmConfig();
184
184
  if (key === 'maxConcurrency') {
185
185
  config[key] = parseInt(value, 10);
186
186
  } else {
187
187
  config[key] = value;
188
188
  }
189
- writeParallelConfig(config);
189
+ writeMurmConfig(config);
190
190
  console.log(`Set ${key} = ${value}`);
191
191
  } else if (subArg === 'reset') {
192
- writeParallelConfig(getDefaultParallelConfig());
193
- console.log('Parallel configuration reset to defaults.');
192
+ writeMurmConfig(getDefaultMurmConfig());
193
+ console.log('Murmuration configuration reset to defaults.');
194
194
  } else {
195
- const config = readParallelConfig();
196
- console.log('Parallel Configuration\n');
195
+ const config = readMurmConfig();
196
+ console.log('Murmuration Configuration\n');
197
197
  console.log(` cli: ${config.cli}`);
198
198
  console.log(` skill: ${config.skill}`);
199
199
  console.log(` skillFlags: ${config.skillFlags}`);
@@ -203,10 +203,15 @@ const commands = {
203
203
  console.log(` timeout: ${config.timeout} min`);
204
204
  console.log(` minDiskSpaceMB: ${config.minDiskSpaceMB}`);
205
205
  console.log(` queueFile: ${config.queueFile}`);
206
- console.log('\nTo change: murmur8 parallel-config set <key> <value>');
206
+ console.log('\nTo change: murmur8 murm-config set <key> <value>');
207
+ console.log('Run pipelines: murmur8 murm <slug1> <slug2> ...');
207
208
  }
208
209
  },
209
- description: 'View or modify parallel pipeline configuration'
210
+ description: 'View or modify murmuration pipeline configuration'
211
+ },
212
+ 'parallel-config': {
213
+ fn: null, // alias — set below
214
+ description: 'View or modify murmuration pipeline configuration (alias for murm-config)'
210
215
  },
211
216
  parallel: {
212
217
  fn: async () => {
@@ -222,29 +227,29 @@ const commands = {
222
227
 
223
228
  if (!queue.features || queue.features.length === 0) {
224
229
  if (lock) {
225
- console.log(`Parallel execution in progress (PID: ${lock.pid})`);
230
+ console.log(`Murmuration execution in progress (PID: ${lock.pid})`);
226
231
  console.log(`Started: ${lock.startedAt}`);
227
232
  console.log(`Features: ${lock.features.join(', ')}`);
228
233
  } else {
229
- console.log('No parallel pipelines active.');
234
+ console.log('No murmuration pipelines active.');
230
235
  }
231
236
  return;
232
237
  }
233
238
 
234
- console.log('Parallel Pipeline Status\n');
239
+ console.log('Murmuration Pipeline Status\n');
235
240
  console.log(formatStatus(queue.features));
236
241
  const summary = {
237
- running: queue.features.filter(f => f.status === 'parallel_running').length,
238
- pending: queue.features.filter(f => f.status === 'parallel_queued').length,
239
- completed: queue.features.filter(f => f.status === 'parallel_complete').length,
240
- failed: queue.features.filter(f => f.status === 'parallel_failed').length,
242
+ running: queue.features.filter(f => f.status === 'murm_running').length,
243
+ pending: queue.features.filter(f => f.status === 'murm_queued').length,
244
+ completed: queue.features.filter(f => f.status === 'murm_complete').length,
245
+ failed: queue.features.filter(f => f.status === 'murm_failed').length,
241
246
  conflicts: queue.features.filter(f => f.status === 'merge_conflict').length
242
247
  };
243
248
  console.log(`\nRunning: ${summary.running} | Pending: ${summary.pending} | Completed: ${summary.completed} | Failed: ${summary.failed} | Conflicts: ${summary.conflicts}`);
244
249
 
245
250
  // Show log paths for running/failed
246
251
  const withLogs = queue.features.filter(f =>
247
- f.logPath && (f.status === 'parallel_running' || f.status === 'parallel_failed')
252
+ f.logPath && (f.status === 'murm_running' || f.status === 'murm_failed')
248
253
  );
249
254
  if (withLogs.length > 0) {
250
255
  console.log('\nLog files:');
@@ -256,17 +261,17 @@ const commands = {
256
261
  } else if (subArg === 'rollback') {
257
262
  const dryRunFlag = args.includes('--dry-run');
258
263
  const forceFlag = args.includes('--force');
259
- await rollbackParallel({ dryRun: dryRunFlag, force: forceFlag });
264
+ await rollbackMurm({ dryRun: dryRunFlag, force: forceFlag });
260
265
  } else if (subArg === 'cleanup') {
261
266
  const cleaned = await cleanupWorktrees();
262
267
  console.log(`Cleaned ${cleaned} worktree(s).`);
263
268
  } else if (subArg === 'abort') {
264
269
  const cleanupFlag = args.includes('--cleanup');
265
- await abortParallel({ cleanup: cleanupFlag });
270
+ await abortMurm({ cleanup: cleanupFlag });
266
271
  } else {
267
272
  const slugs = args.slice(1).filter(a => !a.startsWith('--') && !a.startsWith('-'));
268
273
  if (slugs.length === 0) {
269
- console.error('Usage: murmur8 parallel <slug1> <slug2> ... [options]');
274
+ console.error('Usage: murmur8 murm <slug1> <slug2> ... [options]');
270
275
  console.error('\nOptions:');
271
276
  console.error(' --dry-run Preview execution plan without running');
272
277
  console.error(' --yes, -y Skip confirmation prompt');
@@ -275,9 +280,9 @@ const commands = {
275
280
  console.error(' --skip-preflight Skip feature validation checks');
276
281
  console.error(' --max-concurrency=N Set max parallel pipelines (default: 3)');
277
282
  console.error('\nSubcommands:');
278
- console.error(' parallel status Show status of all pipelines');
279
- console.error(' parallel abort Stop all running pipelines');
280
- console.error(' parallel cleanup Remove completed/aborted worktrees');
283
+ console.error(' murm status Show status of all pipelines');
284
+ console.error(' murm abort Stop all running pipelines');
285
+ console.error(' murm cleanup Remove completed/aborted worktrees');
281
286
  process.exit(1);
282
287
  }
283
288
 
@@ -292,18 +297,31 @@ const commands = {
292
297
  if (maxFlag) {
293
298
  options.maxConcurrency = parseInt(maxFlag.split('=')[1], 10);
294
299
  }
295
- const result = await runParallel(slugs, options);
300
+ const result = await runMurm(slugs, options);
296
301
  process.exit(result.success ? 0 : 1);
297
302
  }
298
303
  },
299
304
  description: 'Run multiple feature pipelines in parallel using git worktrees'
300
305
  },
306
+ murm: {
307
+ fn: null, // alias — set below
308
+ description: 'Run multiple feature pipelines in parallel (murmuration)'
309
+ },
310
+ murmuration: {
311
+ fn: null, // alias — set below
312
+ description: 'Run multiple feature pipelines in parallel (murmuration)'
313
+ },
301
314
  help: {
302
315
  fn: showHelp,
303
316
  description: 'Show this help message'
304
317
  }
305
318
  };
306
319
 
320
+ // Wire aliases
321
+ commands.murm.fn = commands.parallel.fn;
322
+ commands.murmuration.fn = commands.parallel.fn;
323
+ commands['parallel-config'].fn = commands['murm-config'].fn;
324
+
307
325
  function showHelp() {
308
326
  console.log(`
309
327
  murmur8 - Multi-agent workflow framework
@@ -335,23 +353,26 @@ Commands:
335
353
  stack-config View current tech stack configuration
336
354
  stack-config set <key> <value> Modify a config value (language, runtime, frameworks, etc.)
337
355
  stack-config reset Reset tech stack configuration to defaults
338
- parallel <slugs...> Run multiple feature pipelines in parallel
339
- parallel <slugs...> --dry-run Show execution plan without running
340
- parallel <slugs...> --yes Skip confirmation prompt
341
- parallel <slugs...> --verbose Stream output to console
342
- parallel <slugs...> --skip-preflight Skip feature validation checks
343
- parallel status Show status of all parallel pipelines
344
- parallel status --detailed Show progress bars and stage info
345
- parallel abort Stop all running pipelines
346
- parallel abort --cleanup Stop all and remove worktrees
347
- parallel rollback Undo completed merges and cleanup failures
348
- parallel rollback --dry-run Preview what would be rolled back
349
- parallel cleanup Remove completed/aborted worktrees
350
- parallel-config View parallel pipeline configuration
351
- parallel-config set <key> <value> Modify config (cli, skill, skillFlags, etc.)
352
- parallel-config reset Reset parallel configuration to defaults
356
+ murm <slugs...> Run multiple feature pipelines in parallel (murmuration)
357
+ murm <slugs...> --dry-run Show execution plan without running
358
+ murm <slugs...> --yes Skip confirmation prompt
359
+ murm <slugs...> --verbose Stream output to console
360
+ murm <slugs...> --skip-preflight Skip feature validation checks
361
+ murm status Show status of all parallel pipelines
362
+ murm status --detailed Show progress bars and stage info
363
+ murm abort Stop all running pipelines
364
+ murm abort --cleanup Stop all and remove worktrees
365
+ murm rollback Undo completed merges and cleanup failures
366
+ murm rollback --dry-run Preview what would be rolled back
367
+ murm cleanup Remove completed/aborted worktrees
368
+ murm-config View murmuration pipeline configuration
369
+ murm-config set <key> <value> Modify config (cli, skill, skillFlags, etc.)
370
+ murm-config reset Reset murmuration configuration to defaults
353
371
  help Show this help message
354
372
 
373
+ Aliases: parallel, murmuration (same as murm)
374
+ parallel-config (same as murm-config)
375
+
355
376
  Examples:
356
377
  npx murmur8 init
357
378
  npx murmur8 update
@@ -360,7 +381,7 @@ Examples:
360
381
  npx murmur8 history
361
382
  npx murmur8 history --stats
362
383
  npx murmur8 insights --feedback
363
- npx murmur8 feedback-config
384
+ npx murmur8 murm user-auth dashboard --dry-run
364
385
  `);
365
386
  }
366
387
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "murmur8",
3
- "version": "3.5.0",
3
+ "version": "4.0.1",
4
4
  "description": "Multi-agent workflow framework for automated feature development",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -20,7 +20,7 @@
20
20
  "author": "NewmanJustice",
21
21
  "repository": {
22
22
  "type": "git",
23
- "url": "git+https://github.com/NewmanJustice/agent-workflow.git"
23
+ "url": "git+https://github.com/NewmanJustice/murmur8.git"
24
24
  },
25
25
  "license": "MIT",
26
26
  "engines": {
package/src/history.js CHANGED
@@ -1,6 +1,7 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
3
  const readline = require('readline');
4
+ const { colorize } = require('./theme');
4
5
 
5
6
  const HISTORY_FILE = '.claude/pipeline-history.json';
6
7
 
@@ -104,17 +105,6 @@ function formatDate(isoString) {
104
105
  return date.toISOString().replace('T', ' ').slice(0, 19);
105
106
  }
106
107
 
107
- function colorize(text, color, useColor) {
108
- if (!useColor) return text;
109
- const colors = {
110
- green: '\x1b[32m',
111
- red: '\x1b[31m',
112
- yellow: '\x1b[33m',
113
- reset: '\x1b[0m'
114
- };
115
- return `${colors[color] || ''}${text}${colors.reset}`;
116
- }
117
-
118
108
  function displayHistory(options = {}) {
119
109
  const showAll = options.all || false;
120
110
  const useColor = options.color !== false && process.stdout.isTTY;
package/src/index.js CHANGED
@@ -82,6 +82,7 @@ const {
82
82
  displayStackConfig
83
83
  } = require('./stack');
84
84
  const tools = require('./tools');
85
+ const theme = require('./theme');
85
86
 
86
87
  module.exports = {
87
88
  init,
@@ -146,6 +147,8 @@ module.exports = {
146
147
  displayStackConfig,
147
148
  // Tools module (model native features)
148
149
  tools,
150
+ // Theme module (murmuration visual theming)
151
+ theme,
149
152
  // Interactive mode exports
150
153
  parseInteractiveFlags,
151
154
  shouldEnterInteractiveMode,