murmur8 3.5.0 → 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/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
- '# agent-workflow',
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 "agent-workflow update" to update existing installation.');
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/ for Claude Code discovery
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 command');
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