murmur8 4.0.1 → 4.1.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/.blueprint/agents/TEAM_MANIFESTO.md +1 -1
- package/README.md +26 -2
- package/package.json +2 -1
- package/src/init.js +41 -5
|
@@ -18,7 +18,7 @@ This is our shared manifesto — for every agent and the human. Read it before y
|
|
|
18
18
|
|
|
19
19
|
## We build things that matter
|
|
20
20
|
|
|
21
|
-
We are not here to generate output. We are here to build a product that makes a real impact on the people or agents who use it. Every line of code, every test, every story should serve that purpose. If it doesn't make things better for the user, we ask why we're doing it. We enjoy building
|
|
21
|
+
We are not here to generate output. We are here to build a product that makes a real impact on the people or agents who use it. Every line of code, every test, every story should serve that purpose. If it doesn't make things better for the user, we ask why we're doing it. We enjoy building great things. We don't just make slop!
|
|
22
22
|
|
|
23
23
|
## We take pride in beautiful code
|
|
24
24
|
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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 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.
|
|
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
7
|
## Upgrading to v4.0
|
|
8
8
|
|
|
@@ -363,6 +363,30 @@ $ npx murmur8 insights
|
|
|
363
363
|
- Avg duration: 14 min → 11 min (improving)
|
|
364
364
|
```
|
|
365
365
|
|
|
366
|
+
## Multi-CLI Support (v4.1)
|
|
367
|
+
|
|
368
|
+
The `/implement-feature` skill works with both **Claude Code** and **GitHub Copilot CLI**. During initialization, murmur8 installs the skill to both locations:
|
|
369
|
+
|
|
370
|
+
| CLI | Location |
|
|
371
|
+
|-----|----------|
|
|
372
|
+
| Claude Code | `.claude/commands/implement-feature.md` |
|
|
373
|
+
| Copilot CLI | `.github/skills/implement-feature/SKILL.md` |
|
|
374
|
+
|
|
375
|
+
The Copilot CLI location is a symlink to the Claude Code master, ensuring both tools use identical skill definitions.
|
|
376
|
+
|
|
377
|
+
### Usage
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# Initialize (installs skill for both CLIs)
|
|
381
|
+
npx murmur8 init
|
|
382
|
+
|
|
383
|
+
# Then use either CLI:
|
|
384
|
+
/implement-feature user-auth # Works in Claude Code
|
|
385
|
+
/implement-feature user-auth # Works in Copilot CLI
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
Both CLIs execute the same pipeline: Alex → Cass → Nigel → Codey. The skill uses each CLI's native agent/task mechanism.
|
|
389
|
+
|
|
366
390
|
## Token Efficiency (v2.7)
|
|
367
391
|
|
|
368
392
|
Version 2.7 introduces several optimizations to reduce token usage:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "murmur8",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.1",
|
|
4
4
|
"description": "Multi-agent workflow framework for automated feature development",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"ai",
|
|
16
16
|
"automation",
|
|
17
17
|
"claude",
|
|
18
|
+
"copilot",
|
|
18
19
|
"feature-development"
|
|
19
20
|
],
|
|
20
21
|
"author": "NewmanJustice",
|
package/src/init.js
CHANGED
|
@@ -41,7 +41,7 @@ function copyDir(src, dest) {
|
|
|
41
41
|
function updateGitignore() {
|
|
42
42
|
const gitignorePath = path.join(TARGET_DIR, '.gitignore');
|
|
43
43
|
const entriesToAdd = [
|
|
44
|
-
'#
|
|
44
|
+
'# murmur8',
|
|
45
45
|
'.claude/implement-queue.json',
|
|
46
46
|
'.claude/pipeline-history.json',
|
|
47
47
|
'.claude/stack-config.json'
|
|
@@ -61,6 +61,40 @@ function updateGitignore() {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Create symlink for Copilot CLI
|
|
66
|
+
* Links .github/skills/implement-feature/SKILL.md -> .claude/commands/implement-feature.md
|
|
67
|
+
*/
|
|
68
|
+
function createCopilotSymlink() {
|
|
69
|
+
const copilotSkillDir = path.join(TARGET_DIR, '.github', 'skills', 'implement-feature');
|
|
70
|
+
const copilotSkillPath = path.join(copilotSkillDir, 'SKILL.md');
|
|
71
|
+
const claudeSkillPath = path.join(TARGET_DIR, '.claude', 'commands', 'implement-feature.md');
|
|
72
|
+
|
|
73
|
+
// Relative path from .github/skills/implement-feature/ to .claude/commands/
|
|
74
|
+
const relativePath = path.relative(copilotSkillDir, claudeSkillPath);
|
|
75
|
+
|
|
76
|
+
// Create directory
|
|
77
|
+
fs.mkdirSync(copilotSkillDir, { recursive: true });
|
|
78
|
+
|
|
79
|
+
// Remove existing symlink or file
|
|
80
|
+
if (fs.existsSync(copilotSkillPath)) {
|
|
81
|
+
fs.unlinkSync(copilotSkillPath);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Create symlink
|
|
85
|
+
try {
|
|
86
|
+
fs.symlinkSync(relativePath, copilotSkillPath);
|
|
87
|
+
console.log('Created Copilot CLI symlink at .github/skills/implement-feature/SKILL.md');
|
|
88
|
+
return true;
|
|
89
|
+
} catch (err) {
|
|
90
|
+
console.warn(`Warning: Could not create symlink: ${err.message}`);
|
|
91
|
+
// Fallback: copy the file instead
|
|
92
|
+
fs.copyFileSync(claudeSkillPath, copilotSkillPath);
|
|
93
|
+
console.log('Copied skill to .github/skills/implement-feature/SKILL.md (symlink failed)');
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
64
98
|
async function init() {
|
|
65
99
|
const blueprintSrc = path.join(PACKAGE_ROOT, '.blueprint');
|
|
66
100
|
const blueprintDest = path.join(TARGET_DIR, '.blueprint');
|
|
@@ -74,25 +108,27 @@ async function init() {
|
|
|
74
108
|
if (fs.existsSync(blueprintDest)) {
|
|
75
109
|
const answer = await prompt('.blueprint directory already exists. Overwrite? (y/N): ');
|
|
76
110
|
if (answer !== 'y' && answer !== 'yes') {
|
|
77
|
-
console.log('Aborted. Use "
|
|
111
|
+
console.log('Aborted. Use "murmur8 update" to update existing installation.');
|
|
78
112
|
return;
|
|
79
113
|
}
|
|
80
114
|
fs.rmSync(blueprintDest, { recursive: true });
|
|
81
115
|
}
|
|
82
116
|
|
|
83
|
-
// Copy skill to .claude/commands/
|
|
117
|
+
// Copy skill to .claude/commands/ (master location)
|
|
84
118
|
fs.mkdirSync(claudeCommandsDir, { recursive: true });
|
|
85
119
|
if (fs.existsSync(skillCommandDest)) {
|
|
86
120
|
const answer = await prompt('.claude/commands/implement-feature.md already exists. Overwrite? (y/N): ');
|
|
87
121
|
if (answer !== 'y' && answer !== 'yes') {
|
|
88
|
-
console.log('Skipping skill
|
|
122
|
+
console.log('Skipping skill installation');
|
|
89
123
|
} else {
|
|
90
124
|
fs.copyFileSync(skillSrc, skillCommandDest);
|
|
91
125
|
console.log('Copied skill to .claude/commands/implement-feature.md');
|
|
126
|
+
createCopilotSymlink();
|
|
92
127
|
}
|
|
93
128
|
} else {
|
|
94
129
|
fs.copyFileSync(skillSrc, skillCommandDest);
|
|
95
130
|
console.log('Copied skill to .claude/commands/implement-feature.md');
|
|
131
|
+
createCopilotSymlink();
|
|
96
132
|
}
|
|
97
133
|
|
|
98
134
|
// Copy .blueprint directory
|
|
@@ -132,7 +168,7 @@ murmur8 initialized successfully!
|
|
|
132
168
|
Next steps:
|
|
133
169
|
1. Review your tech stack with \`npx murmur8 stack-config\`
|
|
134
170
|
2. Add business context documents to .business_context/
|
|
135
|
-
3. Run /implement-feature in Claude Code to start your first feature
|
|
171
|
+
3. Run /implement-feature in Claude Code or Copilot CLI to start your first feature
|
|
136
172
|
`);
|
|
137
173
|
}
|
|
138
174
|
|