murmur8 4.1.1 → 4.3.0
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/.blueprint/agents/AGENT_SPECIFICATION_ALEX.md +33 -3
- package/.blueprint/features/feature_config-factory/FEATURE_SPEC.md +138 -0
- package/.blueprint/features/feature_config-factory/IMPLEMENTATION_PLAN.md +187 -0
- package/.blueprint/features/feature_config-factory/handoff-nigel.md +57 -0
- package/.blueprint/features/feature_export-history/FEATURE_SPEC.md +215 -0
- package/.blueprint/features/feature_export-history/IMPLEMENTATION_PLAN.md +48 -0
- package/.blueprint/features/feature_export-history/story-basic-export.md +48 -0
- package/.blueprint/features/feature_export-history/story-date-filter.md +42 -0
- package/.blueprint/features/feature_export-history/story-feature-filter.md +42 -0
- package/.blueprint/features/feature_export-history/story-file-output.md +48 -0
- package/.blueprint/features/feature_export-history/story-status-filter.md +42 -0
- package/.blueprint/features/feature_extract-prompt-util/FEATURE_SPEC.md +42 -0
- package/.blueprint/features/feature_fix-status-icons/FEATURE_SPEC.md +37 -0
- package/.blueprint/features/feature_murm-subagent/FEATURE_SPEC.md +137 -0
- package/.blueprint/features/feature_murm-subagent/SKILL_CHANGES.md +345 -0
- package/.blueprint/features/feature_split-cli-commands/FEATURE_SPEC.md +125 -0
- package/.blueprint/features/feature_split-cli-commands/IMPLEMENTATION_PLAN.md +119 -0
- package/.blueprint/features/feature_split-cli-commands/handoff-nigel.md +45 -0
- package/.blueprint/features/feature_theme-adoption/FEATURE_SPEC.md +143 -0
- package/.blueprint/features/feature_theme-adoption/IMPLEMENTATION_PLAN.md +68 -0
- package/.blueprint/features/feature_theme-adoption/handoff-nigel.md +35 -0
- package/.blueprint/templates/BACKLOG_TEMPLATE.md +46 -0
- package/README.md +26 -10
- package/SKILL.md +377 -3
- package/bin/cli.js +20 -384
- package/package.json +1 -1
- package/src/commands/feedback-config.js +32 -0
- package/src/commands/help.js +81 -0
- package/src/commands/history.js +42 -0
- package/src/commands/init.js +12 -0
- package/src/commands/insights.js +23 -0
- package/src/commands/murm-config.js +52 -0
- package/src/commands/murm.js +109 -0
- package/src/commands/queue.js +19 -0
- package/src/commands/retry-config.js +28 -0
- package/src/commands/stack-config.js +32 -0
- package/src/commands/update.js +12 -0
- package/src/commands/utils.js +24 -0
- package/src/commands/validate.js +15 -0
- package/src/config-factory.js +190 -0
- package/src/feedback.js +5 -2
- package/src/history.js +92 -1
- package/src/init.js +1 -15
- package/src/insights.js +19 -16
- package/src/retry.js +5 -2
- package/src/stack.js +4 -1
- package/src/theme.js +4 -4
- package/src/update.js +2 -15
- package/src/utils.js +26 -0
- 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
|
|
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.
|
|
@@ -98,6 +106,13 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
|
|
|
98
106
|
| `npx murmur8 history --stats` | View aggregate statistics |
|
|
99
107
|
| `npx murmur8 history --all` | View all runs |
|
|
100
108
|
| `npx murmur8 history clear` | Clear history |
|
|
109
|
+
| `npx murmur8 history export` | Export history as CSV (default) |
|
|
110
|
+
| `npx murmur8 history export --format=json` | Export as JSON |
|
|
111
|
+
| `npx murmur8 history export --since=YYYY-MM-DD` | Filter by start date |
|
|
112
|
+
| `npx murmur8 history export --until=YYYY-MM-DD` | Filter by end date |
|
|
113
|
+
| `npx murmur8 history export --status=<status>` | Filter by status (success/failed/paused) |
|
|
114
|
+
| `npx murmur8 history export --feature=<slug>` | Filter by feature slug |
|
|
115
|
+
| `npx murmur8 history export --output=<path>` | Write to file instead of stdout |
|
|
101
116
|
| `npx murmur8 insights` | Analyze patterns and get recommendations |
|
|
102
117
|
| `npx murmur8 insights --feedback` | View feedback correlation analysis |
|
|
103
118
|
| `npx murmur8 insights --bottlenecks` | View bottleneck analysis |
|
|
@@ -129,20 +144,21 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
|
|
|
129
144
|
| `npx murmur8 murm-config` | View murmuration pipeline configuration |
|
|
130
145
|
| `npx murmur8 murm-config set <key> <value>` | Modify murmuration settings |
|
|
131
146
|
|
|
132
|
-
##
|
|
147
|
+
## Skill usage
|
|
133
148
|
|
|
134
149
|
Run the pipeline with the `/implement-feature` skill in Claude Code:
|
|
135
150
|
|
|
136
151
|
```bash
|
|
137
152
|
/implement-feature # Interactive
|
|
138
|
-
/implement-feature "
|
|
139
|
-
/implement-feature "
|
|
140
|
-
/implement-feature "
|
|
141
|
-
/implement-feature "
|
|
142
|
-
/implement-feature "
|
|
143
|
-
/implement-feature "
|
|
144
|
-
/implement-feature "
|
|
145
|
-
/implement-feature "
|
|
153
|
+
/implement-feature "Your Slug" # New feature
|
|
154
|
+
/implement-feature "Your Slug" --no-feedback # Skip feedback collection
|
|
155
|
+
/implement-feature "Your Slug" --no-validate # Skip pre-flight validation
|
|
156
|
+
/implement-feature "Your Slug" --no-history # Skip history recording
|
|
157
|
+
/implement-feature "Your Slug" --no-commit # Skip auto-commit
|
|
158
|
+
/implement-feature "Your Slug" --pause-after=alex|cass|nigel|codey-plan
|
|
159
|
+
/implement-feature "Your Slug" --with-stories # Force include Cass stage
|
|
160
|
+
/implement-feature "Your Slug" --skip-stories # Force skip Cass stage
|
|
161
|
+
/implement-feature "Your Slug A" "Your Slug B" "Your Slug C" # Runs murmuration with sub agents within a single instance of the CLI.
|
|
146
162
|
```
|
|
147
163
|
|
|
148
164
|
## Smart Story Routing (v2.7)
|