murmur8 4.2.0 → 4.3.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.
Files changed (51) hide show
  1. package/.blueprint/agents/AGENT_SPECIFICATION_ALEX.md +33 -3
  2. package/.blueprint/features/feature_config-factory/FEATURE_SPEC.md +138 -0
  3. package/.blueprint/features/feature_config-factory/IMPLEMENTATION_PLAN.md +187 -0
  4. package/.blueprint/features/feature_config-factory/handoff-nigel.md +57 -0
  5. package/.blueprint/features/feature_cost-tracking/FEATURE_SPEC.md +216 -0
  6. package/.blueprint/features/feature_cost-tracking/IMPLEMENTATION_PLAN.md +50 -0
  7. package/.blueprint/features/feature_diff-preview/FEATURE_SPEC.md +182 -0
  8. package/.blueprint/features/feature_diff-preview/IMPLEMENTATION_PLAN.md +42 -0
  9. package/.blueprint/features/feature_extract-prompt-util/FEATURE_SPEC.md +42 -0
  10. package/.blueprint/features/feature_fix-status-icons/FEATURE_SPEC.md +37 -0
  11. package/.blueprint/features/feature_murm-subagent/FEATURE_SPEC.md +137 -0
  12. package/.blueprint/features/feature_murm-subagent/SKILL_CHANGES.md +345 -0
  13. package/.blueprint/features/feature_split-cli-commands/FEATURE_SPEC.md +125 -0
  14. package/.blueprint/features/feature_split-cli-commands/IMPLEMENTATION_PLAN.md +119 -0
  15. package/.blueprint/features/feature_split-cli-commands/handoff-nigel.md +45 -0
  16. package/.blueprint/features/feature_theme-adoption/FEATURE_SPEC.md +143 -0
  17. package/.blueprint/features/feature_theme-adoption/IMPLEMENTATION_PLAN.md +68 -0
  18. package/.blueprint/features/feature_theme-adoption/handoff-nigel.md +35 -0
  19. package/.blueprint/templates/BACKLOG_TEMPLATE.md +46 -0
  20. package/README.md +79 -12
  21. package/SKILL.md +377 -3
  22. package/bin/cli.js +20 -411
  23. package/package.json +1 -1
  24. package/src/commands/cost-config.js +28 -0
  25. package/src/commands/feedback-config.js +32 -0
  26. package/src/commands/help.js +86 -0
  27. package/src/commands/history.js +42 -0
  28. package/src/commands/init.js +12 -0
  29. package/src/commands/insights.js +23 -0
  30. package/src/commands/murm-config.js +52 -0
  31. package/src/commands/murm.js +109 -0
  32. package/src/commands/queue.js +19 -0
  33. package/src/commands/retry-config.js +28 -0
  34. package/src/commands/stack-config.js +32 -0
  35. package/src/commands/update.js +12 -0
  36. package/src/commands/utils.js +25 -0
  37. package/src/commands/validate.js +15 -0
  38. package/src/config-factory.js +190 -0
  39. package/src/cost.js +122 -0
  40. package/src/diff-preview.js +165 -0
  41. package/src/feedback.js +5 -2
  42. package/src/history.js +51 -3
  43. package/src/index.js +25 -0
  44. package/src/init.js +1 -15
  45. package/src/insights.js +19 -16
  46. package/src/retry.js +5 -2
  47. package/src/stack.js +4 -1
  48. package/src/theme.js +6 -5
  49. package/src/update.js +2 -15
  50. package/src/utils.js +26 -0
  51. package/src/validate.js +5 -12
@@ -0,0 +1,143 @@
1
+ # Feature Specification — Theme Adoption
2
+
3
+ ## 1. Feature Intent
4
+ **Why this feature exists.**
5
+
6
+ - `src/theme.js` provides consistent murmuration-themed formatting (glyphs, colors, progress bars)
7
+ - Currently only used by murm.js for parallel execution output
8
+ - Other CLI output (history, insights, validate, configs) uses plain text
9
+ - Inconsistent visual experience across commands
10
+ - Theme constants and helpers should be reused project-wide
11
+
12
+ > Technical enhancement — adopt theme.js across all CLI output.
13
+
14
+ ---
15
+
16
+ ## 2. Scope
17
+ ### In Scope
18
+ - Use `colorize()` for success/error/warning messages across all commands
19
+ - Use `formatStageStart()` pattern for pipeline stage output in SKILL.md execution
20
+ - Use `progressBar()` where applicable (history stats, insights)
21
+ - Use status icons consistently (checkmarks, X marks, warnings)
22
+ - Respect TTY detection for color output
23
+
24
+ ### Out of Scope
25
+ - Creating new theme elements
26
+ - Changing the banner or glyph design
27
+ - Adding animation or spinners to non-murm commands
28
+ - Changing the fundamental output structure of commands
29
+
30
+ ---
31
+
32
+ ## 3. Actors Involved
33
+ **Who interacts with this feature.**
34
+
35
+ - **CLI User**: Sees consistent, themed output across all commands
36
+ - **Developer**: Uses theme.js helpers instead of inline ANSI codes
37
+
38
+ ---
39
+
40
+ ## 4. Behaviour Overview
41
+ **What the feature does, conceptually.**
42
+
43
+ Before:
44
+ ```
45
+ Retry Configuration
46
+ Max retries: 3
47
+ Window size: 10
48
+ ```
49
+
50
+ After:
51
+ ```
52
+ Retry Configuration
53
+
54
+ Max retries: 3
55
+ Window size: 10
56
+ High failure threshold: 0.2
57
+
58
+ Stage Strategies:
59
+ alex : simplify-prompt -> add-context
60
+ ```
61
+ (With colored headers when TTY detected)
62
+
63
+ **Files to update:**
64
+ - `src/validate.js` — use `colorize()` for pass/fail indicators
65
+ - `src/history.js` — use status icons and colors for status display
66
+ - `src/insights.js` — use `colorize()` for recommendations
67
+ - `src/retry.js` — use `colorize()` in `displayConfig()`
68
+ - `src/feedback.js` — use `colorize()` in `displayConfig()`
69
+ - `src/stack.js` — use `colorize()` in `displayStackConfig()`
70
+
71
+ ---
72
+
73
+ ## 5. State & Lifecycle Interactions
74
+ **How this feature touches the system lifecycle.**
75
+
76
+ - No state changes — output formatting only
77
+ - Respects existing TTY detection patterns
78
+
79
+ ---
80
+
81
+ ## 6. Rules & Decision Logic
82
+ **New or exercised rules.**
83
+
84
+ | Rule | Description |
85
+ |------|-------------|
86
+ | TTY detection | Use `process.stdout.isTTY` to enable/disable colors |
87
+ | Success indicators | Green checkmark (✓) or `colorize(text, 'green')` |
88
+ | Error indicators | Red X (✗) or `colorize(text, 'red')` |
89
+ | Warning indicators | Yellow warning (⚠) or `colorize(text, 'yellow')` |
90
+ | Headers | Cyan for section headers |
91
+
92
+ ---
93
+
94
+ ## 7. Dependencies
95
+ **What this feature relies on.**
96
+
97
+ - `src/theme.js` — already exists with all needed exports
98
+ - No new dependencies
99
+
100
+ ---
101
+
102
+ ## 8. Non-Functional Considerations
103
+
104
+ - **Accessibility**: Plain text fallback when not TTY (pipes, redirects)
105
+ - **Consistency**: Same visual language across all commands
106
+ - **Maintainability**: Centralized theme makes future changes easy
107
+
108
+ ---
109
+
110
+ ## 9. Assumptions & Open Questions
111
+
112
+ **Assumptions:**
113
+ - All modules can safely import from theme.js without circular dependencies
114
+ - TTY detection is sufficient for determining color support
115
+
116
+ **Open Questions:**
117
+ - Should `STATUS_ICONS` in theme.js be updated from `parallel_*` to `murm_*`? (See fix-status-icons in FEATURE_IDEAS.md)
118
+ - Should a `--no-color` flag be added globally?
119
+
120
+ ---
121
+
122
+ ## 10. Impact on System Specification
123
+
124
+ - No impact — visual enhancement only
125
+ - Does not change system boundaries or behaviour
126
+
127
+ ---
128
+
129
+ ## 11. Handover to BA (Cass)
130
+
131
+ **Skip Cass stage** — this is a technical enhancement feature with no user stories needed.
132
+
133
+ Direct handover to Nigel for test creation:
134
+ - Tests should verify output includes expected formatting
135
+ - Tests should verify TTY=false produces plain text
136
+ - Tests should verify no regressions in output content
137
+
138
+ ---
139
+
140
+ ## 12. Change Log (Feature-Level)
141
+ | Date | Change | Reason | Raised By |
142
+ |------|--------|--------|-----------|
143
+ | 2026-03-03 | Initial spec | Consistent CLI theming | Alex |
@@ -0,0 +1,68 @@
1
+ # Implementation Plan — Theme Adoption
2
+
3
+ ## Overview
4
+ Adopt theme.js across all CLI output modules for consistent visual formatting. Replace inline ANSI codes with centralized `colorize()` helper.
5
+
6
+ ## Changes Required
7
+
8
+ ### 1. src/validate.js
9
+ **Current state:** Uses inline ANSI codes for colors
10
+ **Change:** Import `colorize` from theme.js and use it
11
+
12
+ ```javascript
13
+ // Before
14
+ const green = useColor ? '\x1b[32m' : '';
15
+ const red = useColor ? '\x1b[31m' : '';
16
+ const reset = useColor ? '\x1b[0m' : '';
17
+
18
+ // After
19
+ const { colorize } = require('./theme');
20
+ // Use colorize(text, 'green', useColor)
21
+ ```
22
+
23
+ ### 2. src/insights.js
24
+ **Current state:** No theme imports, plain section headers
25
+ **Change:** Import `colorize`, apply to section headers
26
+
27
+ - Header "Pipeline Insights" - cyan
28
+ - Section headers (BOTTLENECK ANALYSIS, etc.) - cyan
29
+ - Recommendations - yellow
30
+
31
+ ### 3. src/retry.js
32
+ **Current state:** Plain text output in displayConfig()
33
+ **Change:** Import `colorize`, apply to header
34
+
35
+ - Header "Retry Configuration" - cyan
36
+ - Section "Stage Strategies" - cyan
37
+
38
+ ### 4. src/feedback.js
39
+ **Current state:** Plain text output in displayConfig()
40
+ **Change:** Import `colorize`, apply to header
41
+
42
+ - Header "Feedback Configuration" - cyan
43
+ - Section "Issue Mappings" - cyan
44
+
45
+ ### 5. src/stack.js
46
+ **Current state:** Plain text output in displayStackConfig()
47
+ **Change:** Import `colorize`, apply to header
48
+
49
+ - Header "Stack Configuration" - cyan
50
+
51
+ ### 6. src/history.js
52
+ **Current state:** Already imports colorize from theme.js
53
+ **Change:** No changes needed - already compliant
54
+
55
+ ## TTY Detection Pattern
56
+ All display functions should:
57
+ 1. Check `process.stdout.isTTY` to determine if colors should be enabled
58
+ 2. Pass this as `useColor` parameter to `colorize()`
59
+
60
+ ## Implementation Order
61
+ 1. validate.js - Replace inline ANSI with colorize import
62
+ 2. insights.js - Add colorize for headers
63
+ 3. retry.js - Add colorize for displayConfig
64
+ 4. feedback.js - Add colorize for displayConfig
65
+ 5. stack.js - Add colorize for displayStackConfig
66
+
67
+ ## Testing
68
+ Run `node --test test/feature_theme-adoption.test.js` after each change.
@@ -0,0 +1,35 @@
1
+ # Nigel Handoff — Theme Adoption
2
+
3
+ ## Summary
4
+ Created test suite for theme adoption across CLI modules. Tests verify:
5
+ - `colorize()` function usage for colored output
6
+ - TTY detection pattern (useColor parameter)
7
+ - Plain text fallback when colors disabled
8
+ - Consistent status icons (checkmark/X)
9
+ - Section headers in config displays
10
+
11
+ ## Test File
12
+ `test/feature_theme-adoption.test.js`
13
+
14
+ ## Test Coverage
15
+ | Module | Tests |
16
+ |--------|-------|
17
+ | theme.js | Exports, colorize behavior |
18
+ | validate.js | formatOutput with/without color |
19
+ | insights.js | Section headers |
20
+ | retry.js | displayConfig output |
21
+ | feedback.js | displayConfig output |
22
+ | stack.js | displayStackConfig output |
23
+
24
+ ## Implementation Notes for Codey
25
+ 1. **validate.js** - Replace inline ANSI codes with `colorize()` import from theme.js
26
+ 2. **insights.js** - Add colorize import, apply to section headers (BOTTLENECK ANALYSIS, etc.)
27
+ 3. **retry.js** - Add colorize import, theme the header and optionally section labels
28
+ 4. **feedback.js** - Add colorize import, theme the header
29
+ 5. **stack.js** - Add colorize import, theme the header
30
+ 6. **history.js** - Already imports colorize, verify consistent usage
31
+
32
+ ## Key Patterns
33
+ - Use `process.stdout.isTTY` to determine `useColor`
34
+ - Pass `useColor` boolean to `colorize(text, color, useColor)`
35
+ - Green for success, red for error, yellow for warning, cyan for headers
@@ -0,0 +1,46 @@
1
+ # Feature Backlog
2
+
3
+ ## Definitions
4
+
5
+ | Priority | Meaning |
6
+ |----------|---------|
7
+ | P0 | Critical — blocker |
8
+ | P1 | High — do soon |
9
+ | P2 | Medium — planned |
10
+ | P3 | Low — future |
11
+
12
+ | Effort | Meaning |
13
+ |--------|---------|
14
+ | S | Small — <1 hour |
15
+ | M | Medium — 1-3 hours |
16
+ | L | Large — 3-8 hours |
17
+ | XL | Extra Large — 1+ days |
18
+
19
+ | Status | Meaning |
20
+ |--------|---------|
21
+ | ⏳ | Ready to implement |
22
+ | 🚧 | In progress |
23
+ | ❓ | Needs clarification |
24
+
25
+ ---
26
+
27
+ ## Backlog
28
+
29
+ | Status | P | E | Slug | Description |
30
+ |--------|---|---|------|-------------|
31
+ | ⏳ | P1 | M | example-feature | Brief description of what this feature does |
32
+
33
+ ---
34
+
35
+ ## Details
36
+
37
+ ### example-feature
38
+
39
+ Additional context only if the one-line description is insufficient. Keep brief.
40
+
41
+ ---
42
+
43
+ ## Notes
44
+
45
+ - Items removed automatically when pipeline completes successfully
46
+ - Run with: `/implement-feature "slug"` or `npx murmur8 murm slug-a slug-b`
package/README.md CHANGED
@@ -1,9 +1,17 @@
1
1
  # murmur8
2
2
 
3
- A multi-agent workflow framework for automated feature development In Claude Code and Copilot CLI. Four specialised AI agents collaborate in sequence to take features from specification to implementation, with built-in feedback loops and self-improvement capabilities.
3
+ A multi-agent workflow framework for automated feature development. Four specialised AI agents collaborate in sequence to take features from specification to implementation, with built-in feedback loops and self-improvement capabilities.
4
4
 
5
5
  Like a murmuration of starlings, individual agents move together as one, each responding to its neighbours to create something greater than the sum of its parts.
6
6
 
7
+ # TLDR - Using murmur8
8
+
9
+ ## Using murmur8 inside Claude Code or Copilot CLI
10
+ Initialize with `npx murmur8 init`, then run `/implement-feature your-feature` in Claude Code or Copilot CLI. Four AI agents collaborate to turn your idea into tested, working code — from spec to implementation. Add up to 3 feature slugs and the murmuration magic will build them in paralell in an isolated git worktree.
11
+
12
+ ## Using murmur8 outside of Claude Code or Copilot CLI
13
+ Initialize with `npx murmur8 init`, then run `npx murmur8 murm feature-a feature-b` from your terminal. Each feature gets an isolated git worktree and runs its own pipeline. Successful features auto-merge to main. Use `--dry-run` to preview the plan first.
14
+
7
15
  ## Upgrading to v4.0
8
16
 
9
17
  v4.0 completes the murmuration theming by renaming all parallel internals. Existing users should be aware of the following breaking changes.
@@ -95,7 +103,9 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
95
103
  | Command | Description |
96
104
  |---------|-------------|
97
105
  | `npx murmur8 history` | View recent pipeline runs |
106
+ | `npx murmur8 history --cost` | View runs with cost breakdown |
98
107
  | `npx murmur8 history --stats` | View aggregate statistics |
108
+ | `npx murmur8 history --stats --cost` | View stats with cost metrics |
99
109
  | `npx murmur8 history --all` | View all runs |
100
110
  | `npx murmur8 history clear` | Clear history |
101
111
  | `npx murmur8 history export` | Export history as CSV (default) |
@@ -128,6 +138,9 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
128
138
  | `npx murmur8 stack-config` | View detected tech stack |
129
139
  | `npx murmur8 stack-config set <key> <value>` | Modify stack settings (language, frameworks, testRunner, etc.) |
130
140
  | `npx murmur8 stack-config reset` | Reset to empty defaults |
141
+ | `npx murmur8 cost-config` | View cost tracking pricing |
142
+ | `npx murmur8 cost-config set <key> <value>` | Modify pricing (inputPrice, outputPrice) |
143
+ | `npx murmur8 cost-config reset` | Reset to default Claude pricing |
131
144
  | `npx murmur8 retry-config` | View retry configuration |
132
145
  | `npx murmur8 retry-config set <key> <value>` | Modify retry settings |
133
146
  | `npx murmur8 retry-config reset` | Reset to defaults |
@@ -136,20 +149,22 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
136
149
  | `npx murmur8 murm-config` | View murmuration pipeline configuration |
137
150
  | `npx murmur8 murm-config set <key> <value>` | Modify murmuration settings |
138
151
 
139
- ## Usage
152
+ ## Skill usage
140
153
 
141
154
  Run the pipeline with the `/implement-feature` skill in Claude Code:
142
155
 
143
156
  ```bash
144
157
  /implement-feature # Interactive
145
- /implement-feature "user-auth" # New feature
146
- /implement-feature "user-auth" --no-feedback # Skip feedback collection
147
- /implement-feature "user-auth" --no-validate # Skip pre-flight validation
148
- /implement-feature "user-auth" --no-history # Skip history recording
149
- /implement-feature "user-auth" --no-commit # Skip auto-commit
150
- /implement-feature "user-auth" --pause-after=alex|cass|nigel|codey-plan
151
- /implement-feature "user-auth" --with-stories # Force include Cass stage
152
- /implement-feature "user-auth" --skip-stories # Force skip Cass stage
158
+ /implement-feature "Your Slug" # New feature
159
+ /implement-feature "Your Slug" --no-feedback # Skip feedback collection
160
+ /implement-feature "Your Slug" --no-validate # Skip pre-flight validation
161
+ /implement-feature "Your Slug" --no-history # Skip history recording
162
+ /implement-feature "Your Slug" --no-commit # Skip auto-commit
163
+ /implement-feature "Your Slug" --no-diff-preview # Skip diff preview before commit
164
+ /implement-feature "Your Slug" --pause-after=alex|cass|nigel|codey-plan
165
+ /implement-feature "Your Slug" --with-stories # Force include Cass stage
166
+ /implement-feature "Your Slug" --skip-stories # Force skip Cass stage
167
+ /implement-feature "Your Slug A" "Your Slug B" "Your Slug C" # Runs murmuration with sub agents within a single instance of the CLI.
153
168
  ```
154
169
 
155
170
  ## Smart Story Routing (v2.7)
@@ -234,8 +249,15 @@ The pipeline includes validation, smart routing, feedback loops, and history tra
234
249
 
235
250
 
236
251
  ┌─────────────────────────────────────────────────────────────────┐
252
+ │ Diff Preview (unless --no-diff-preview) │
253
+ │ • Show file changes (added/modified/deleted) │
254
+ │ • User confirms: commit / abort / view full diff │
255
+ └─────────────────────────────────────────────────────────────────┘
256
+
257
+
258
+ ┌─────────────────────────────────────────────────────────────────┐
237
259
  │ Auto-commit → Record to History │
238
- │ • Duration, feedback scores, outcome
260
+ │ • Duration, feedback scores, token cost, outcome
239
261
  └─────────────────────────────────────────────────────────────────┘
240
262
  ```
241
263
 
@@ -246,7 +268,7 @@ murmur8 includes these built-in modules for observability and self-improvement:
246
268
  | Module | Purpose |
247
269
  |--------|---------|
248
270
  | **validate** | Pre-flight checks before pipeline runs |
249
- | **history** | Records execution data (timing, status, feedback) |
271
+ | **history** | Records execution data (timing, status, feedback, cost) |
250
272
  | **insights** | Analyzes patterns, detects bottlenecks, recommends improvements |
251
273
  | **retry** | Smart retry strategies based on failure history |
252
274
  | **feedback** | Agent-to-agent quality assessment with correlation tracking |
@@ -256,6 +278,8 @@ murmur8 includes these built-in modules for observability and self-improvement:
256
278
  | **tools** | Tool schemas and validation for Claude native features |
257
279
  | **murm** | Murmuration pipeline execution using git worktrees |
258
280
  | **stack** | Configurable tech stack detection and configuration |
281
+ | **cost** | Token usage tracking and cost estimation per stage |
282
+ | **diff-preview** | Pre-commit change review with user confirmation |
259
283
 
260
284
  ### How They Work Together
261
285
 
@@ -264,8 +288,12 @@ Pipeline Run
264
288
 
265
289
  ├──► history.js records timing at each stage
266
290
 
291
+ ├──► cost.js tracks token usage per stage
292
+
267
293
  ├──► feedback.js collects quality ratings between stages
268
294
 
295
+ ├──► diff-preview.js shows changes before commit
296
+
269
297
  └──► On completion/failure, data stored in pipeline-history.json
270
298
 
271
299
 
@@ -317,6 +345,7 @@ your-project/
317
345
  │ ├── pipeline-history.json # Execution history (gitignored)
318
346
  │ ├── retry-config.json # Retry configuration (gitignored)
319
347
  │ ├── feedback-config.json # Feedback thresholds (gitignored)
348
+ │ ├── cost-config.json # Cost tracking pricing (gitignored)
320
349
  │ ├── murm-config.json # Murmuration execution config (gitignored)
321
350
  │ ├── murm-queue.json # Murmuration pipeline state (gitignored)
322
351
  │ ├── stack-config.json # Tech stack configuration (gitignored)
@@ -410,6 +439,44 @@ Version 2.7 introduces several optimizations to reduce token usage:
410
439
 
411
440
  **Total estimated savings: 10,000+ tokens per pipeline run** (more for technical features)
412
441
 
442
+ ## Cost Tracking
443
+
444
+ Track token usage and estimated costs per pipeline stage:
445
+
446
+ ```bash
447
+ # View costs in history
448
+ npx murmur8 history --cost
449
+
450
+ SLUG STATUS DURATION TOTAL COST
451
+ user-auth success 12m 30s $0.088
452
+ api-validation success 8m 15s $0.062
453
+
454
+ # View cost statistics
455
+ npx murmur8 history --stats --cost
456
+
457
+ Avg cost per run: $0.075
458
+ Total cost (all runs): $1.12
459
+ Most expensive stage: codey-implement
460
+ ```
461
+
462
+ ### Configuration
463
+
464
+ Default pricing uses Claude Sonnet rates ($3/M input, $15/M output):
465
+
466
+ ```bash
467
+ # View current pricing
468
+ npx murmur8 cost-config
469
+
470
+ # Customize pricing (per million tokens)
471
+ npx murmur8 cost-config set inputPrice 3
472
+ npx murmur8 cost-config set outputPrice 15
473
+
474
+ # Reset to defaults
475
+ npx murmur8 cost-config reset
476
+ ```
477
+
478
+ Cost data is stored in `pipeline-history.json` alongside timing and feedback data.
479
+
413
480
  ## Murmuration
414
481
 
415
482
  Run multiple feature pipelines simultaneously using git worktrees for isolation. Each feature gets its own worktree and branch, allowing true parallel development without conflicts.