murmur8 4.7.0 → 4.7.2

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
@@ -1,10 +1,10 @@
1
1
  # murmur8
2
2
 
3
- Most AI coding tools are a black box. You describe what you want, something happens, and code appears. If it's wrong, you describe it again and hope for better. There's no process, no trail, no shared understanding of why decisions were made.
3
+ AI coding tools can be a black box. You describe what you want, magic happens, and code appears. If it's wrong, you describe it again and hope for better. There's no process, no trail, no shared understanding of why decisions were made.
4
4
 
5
- murmur8 is different. It runs a structured, documented pipeline — the kind a good engineering team would run naturally. Each agent produces real, readable artefacts: a feature spec, user stories, a test plan, an implementation. You can read every one of them, understand the reasoning, and step in at any point. It's not magic. It's a repeatable process that happens to move very fast.
5
+ murmur8 is different. Agents Alex, Cass, Nigel, and Codey run a structured, documented pipeline — the kind a good engineering team would run naturally. Each agent produces real, readable artefacts: a feature spec, user stories, a test plan, an implementation. You can read every one of them, understand the reasoning, and step in at any point. It's not magic. It's a repeatable process that happens to move very fast.
6
6
 
7
- Like a murmuration of starlings, the agents move together — each one responding to what came before, building something greater than any of them could produce alone.
7
+ Like a murmuration of starlings, the agents move together — each one responding to what came before and building upon it.
8
8
 
9
9
  ## The Workflow
10
10
 
@@ -12,7 +12,7 @@ Like a murmuration of starlings, the agents move together — each one respondin
12
12
 
13
13
  Every feature starts with intent. If you're setting up a new project, murmur8 will walk you through creating a system specification interactively — Alex asks questions, you answer, and together you produce a document that grounds everything that follows. If a feature spec doesn't exist yet, the same thing happens at the feature level.
14
14
 
15
- You can also trigger this explicitly with `--interactive`. This is useful when an idea is still fuzzy. Rather than writing a spec yourself, you have a conversation with Alex until the shape of the feature becomes clear. The spec that comes out the other side is yours to review and approve before anything else runs.
15
+ You can also trigger this explicitly with `--interactive` flag. This is useful when an idea is still fuzzy, you can have a conversation with Alex until the shape of the feature becomes clear. The spec that comes out the other side is yours to review and approve before anything else runs.
16
16
 
17
17
  ### The pipeline runs
18
18
 
@@ -24,10 +24,14 @@ At every handoff, the agent writes a summary of what it did, what it decided, an
24
24
 
25
25
  The first run won't always land exactly right. Requirements shift, something was misunderstood, or the implementation reveals a gap in the spec. That's normal.
26
26
 
27
- `/refine-feature` reopens the conversation. Alex reads what was built, you tell it what needs to change, and it proposes an updated spec diff for your approval. From there Cass updates only the affected stories, Nigel updates only the affected tests, and Codey reimplements. The pipeline pauses before Codey runs — you always see the full picture of what's changing before any code is touched.
27
+ `/refine-feature` reopens the conversation. You can discuss with Alex whats not right, provide error logs, or user feedback. Alex reads what was built, and describes what needs to change, and proposes an updated spec diff for your approval. From there Cass updates only the affected stories, Nigel updates only the affected tests, and Codey reimplements. The pipeline pauses before Codey runs — you always see the full picture of what's changing before any code is touched.
28
28
 
29
29
  Every refinement is linked to the run it came from, so the history of a feature — original intent, what changed, and why — is always traceable.
30
30
 
31
+ ### Turning it up to 11
32
+
33
+ If you using the skill with Claude Code or Github Copilot, or via an npx command, you can run multiple of these pipelines at the same time, working independantly on features in parallel. The pipeline looks at whats required and works out how multiple fetaures can be delivered at the same time withough Nigel 1, 2, and 3 treading on each others toes in the code base. The pipeline runs EXACTLY the same way... just mutiple of them at the same time!
34
+
31
35
  ## Quick Start
32
36
 
33
37
  **Inside Claude Code or Copilot CLI:**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "murmur8",
3
- "version": "4.7.0",
3
+ "version": "4.7.2",
4
4
  "description": "Multi-agent workflow framework for automated feature development",
5
5
  "main": "src/index.js",
6
6
  "bin": {
package/src/init.js CHANGED
@@ -94,8 +94,10 @@ async function init() {
94
94
  const businessContextSrc = path.join(PACKAGE_ROOT, '.business_context');
95
95
  const businessContextDest = path.join(TARGET_DIR, '.business_context');
96
96
  const skillSrc = path.join(PACKAGE_ROOT, 'SKILL.md');
97
+ const refineSkillSrc = path.join(PACKAGE_ROOT, 'REFINE_SKILL.md');
97
98
  const claudeCommandsDir = path.join(TARGET_DIR, '.claude', 'commands');
98
99
  const skillCommandDest = path.join(claudeCommandsDir, 'implement-feature.md');
100
+ const refineSkillCommandDest = path.join(claudeCommandsDir, 'refine-feature.md');
99
101
 
100
102
  // Check if .blueprint already exists
101
103
  if (fs.existsSync(blueprintDest)) {
@@ -130,6 +132,12 @@ async function init() {
130
132
  createCopilotSymlink();
131
133
  }
132
134
 
135
+ // Copy refine-feature skill to .claude/commands/
136
+ if (fs.existsSync(refineSkillSrc)) {
137
+ fs.copyFileSync(refineSkillSrc, refineSkillCommandDest);
138
+ console.log('Copied skill to .claude/commands/refine-feature.md');
139
+ }
140
+
133
141
  // Copy framework directories only (not user content directories)
134
142
  console.log('Copying .blueprint directory...');
135
143
  fs.mkdirSync(blueprintDest, { recursive: true });
package/src/update.js CHANGED
@@ -42,6 +42,8 @@ async function update() {
42
42
  const blueprintSrc = path.join(PACKAGE_ROOT, '.blueprint');
43
43
  const skillSrc = path.join(PACKAGE_ROOT, 'SKILL.md');
44
44
  const skillDest = path.join(TARGET_DIR, 'SKILL.md');
45
+ const refineSkillSrc = path.join(PACKAGE_ROOT, 'REFINE_SKILL.md');
46
+ const refineSkillDest = path.join(TARGET_DIR, 'REFINE_SKILL.md');
45
47
 
46
48
  // Check if running in the package source directory (dev mode)
47
49
  if (PACKAGE_ROOT === TARGET_DIR) {
@@ -73,17 +75,26 @@ async function update() {
73
75
  }
74
76
  }
75
77
 
76
- // Update SKILL.md and .claude/commands/implement-feature.md
77
- const answer = await prompt('\nUpdate SKILL.md and .claude/commands/implement-feature.md? (Y/n): ');
78
+ // Update skill files and .claude/commands/
79
+ const answer = await prompt('\nUpdate skill files and .claude/commands/? (Y/n): ');
78
80
  if (answer !== 'n' && answer !== 'no') {
79
81
  fs.copyFileSync(skillSrc, skillDest);
80
82
  console.log('Updated SKILL.md');
81
83
 
82
- // Also update the Claude Code skill command
83
- const skillCommandDest = path.join(TARGET_DIR, '.claude', 'commands', 'implement-feature.md');
84
- if (fs.existsSync(path.dirname(skillCommandDest))) {
85
- fs.copyFileSync(skillSrc, skillCommandDest);
84
+ if (fs.existsSync(refineSkillSrc)) {
85
+ fs.copyFileSync(refineSkillSrc, refineSkillDest);
86
+ console.log('Updated REFINE_SKILL.md');
87
+ }
88
+
89
+ const claudeCommandsDir = path.join(TARGET_DIR, '.claude', 'commands');
90
+ if (fs.existsSync(claudeCommandsDir)) {
91
+ fs.copyFileSync(skillSrc, path.join(claudeCommandsDir, 'implement-feature.md'));
86
92
  console.log('Updated .claude/commands/implement-feature.md');
93
+
94
+ if (fs.existsSync(refineSkillSrc)) {
95
+ fs.copyFileSync(refineSkillSrc, path.join(claudeCommandsDir, 'refine-feature.md'));
96
+ console.log('Updated .claude/commands/refine-feature.md');
97
+ }
87
98
  }
88
99
  }
89
100
 
@@ -96,7 +107,9 @@ Updated:
96
107
  - .blueprint/templates/
97
108
  - .blueprint/ways_of_working/
98
109
  - SKILL.md
110
+ - REFINE_SKILL.md
99
111
  - .claude/commands/implement-feature.md (if exists)
112
+ - .claude/commands/refine-feature.md (if exists)
100
113
 
101
114
  Preserved:
102
115
  - .blueprint/features/