@meltstudio/meltctl 4.4.1 → 4.5.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/README.md +2 -2
- package/dist/commands/init.js +30 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,8 +34,8 @@ meltctl version --check
|
|
|
34
34
|
|
|
35
35
|
- `AGENTS.md` — AI agent instructions and project standards
|
|
36
36
|
- `.claude/settings.json` — Claude Code permissions
|
|
37
|
-
- `.claude/skills/melt-{plan,review,pr,debug}/SKILL.md` — Claude Code workflow skills
|
|
38
|
-
- `.cursor/commands/melt-{plan,review,pr,debug}.md` — Cursor workflow commands
|
|
37
|
+
- `.claude/skills/melt-{setup,plan,review,pr,debug}/SKILL.md` — Claude Code workflow skills
|
|
38
|
+
- `.cursor/commands/melt-{setup,plan,review,pr,debug}.md` — Cursor workflow commands
|
|
39
39
|
- `.mcp.json` — MCP server configuration (Chrome DevTools)
|
|
40
40
|
|
|
41
41
|
## Requirements
|
package/dist/commands/init.js
CHANGED
|
@@ -4,6 +4,12 @@ import fs from 'fs-extra';
|
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { authenticatedFetch, isAuthenticated } from '../utils/auth.js';
|
|
6
6
|
const SKILL_FRONTMATTER = {
|
|
7
|
+
setup: `---
|
|
8
|
+
user-invocable: true
|
|
9
|
+
description: Analyze the project and customize AGENTS.md for this codebase
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
`,
|
|
7
13
|
plan: `---
|
|
8
14
|
user-invocable: true
|
|
9
15
|
description: Design an implementation approach before writing code
|
|
@@ -135,7 +141,7 @@ export async function initCommand(options) {
|
|
|
135
141
|
console.log(chalk.bold('Initializing Melt development tools...'));
|
|
136
142
|
console.log();
|
|
137
143
|
const createdFiles = [];
|
|
138
|
-
const workflows = ['plan', 'review', 'pr', 'debug'];
|
|
144
|
+
const workflows = ['setup', 'plan', 'review', 'pr', 'debug'];
|
|
139
145
|
// Shared files (skip on re-init)
|
|
140
146
|
if (!isReInit) {
|
|
141
147
|
const agentsMd = templates['agents-md.md'];
|
|
@@ -145,7 +151,7 @@ export async function initCommand(options) {
|
|
|
145
151
|
}
|
|
146
152
|
const mcpConfig = templates['mcp-configs/base.json'];
|
|
147
153
|
if (mcpConfig) {
|
|
148
|
-
await
|
|
154
|
+
await mergeMcpConfig(cwd, mcpConfig);
|
|
149
155
|
createdFiles.push('.mcp.json');
|
|
150
156
|
}
|
|
151
157
|
await updateGitignore(cwd);
|
|
@@ -167,7 +173,7 @@ export async function initCommand(options) {
|
|
|
167
173
|
await fs.writeFile(path.join(skillDir, 'SKILL.md'), skillContent, 'utf-8');
|
|
168
174
|
}
|
|
169
175
|
}
|
|
170
|
-
createdFiles.push('.claude/skills/melt-{plan,review,pr,debug}/SKILL.md');
|
|
176
|
+
createdFiles.push('.claude/skills/melt-{setup,plan,review,pr,debug}/SKILL.md');
|
|
171
177
|
}
|
|
172
178
|
// Cursor files
|
|
173
179
|
if (tools.cursor) {
|
|
@@ -178,7 +184,7 @@ export async function initCommand(options) {
|
|
|
178
184
|
await fs.writeFile(path.join(cwd, `.cursor/commands/melt-${name}.md`), workflowContent, 'utf-8');
|
|
179
185
|
}
|
|
180
186
|
}
|
|
181
|
-
createdFiles.push('.cursor/commands/melt-{plan,review,pr,debug}.md');
|
|
187
|
+
createdFiles.push('.cursor/commands/melt-{setup,plan,review,pr,debug}.md');
|
|
182
188
|
}
|
|
183
189
|
// Print summary
|
|
184
190
|
console.log(chalk.green('Created files:'));
|
|
@@ -192,12 +198,13 @@ export async function initCommand(options) {
|
|
|
192
198
|
}
|
|
193
199
|
if (!isReInit) {
|
|
194
200
|
console.log(chalk.yellow('Next steps:'));
|
|
195
|
-
console.log(chalk.dim(' 1. Run
|
|
201
|
+
console.log(chalk.dim(' 1. Run /setup to customize AGENTS.md for your project'));
|
|
196
202
|
console.log(chalk.dim(' 2. Commit the generated files'));
|
|
197
203
|
console.log();
|
|
198
204
|
}
|
|
199
205
|
if (tools.claude) {
|
|
200
206
|
console.log(chalk.yellow('Available skills (type / in Claude Code to use):'));
|
|
207
|
+
console.log(chalk.dim(' /setup — Analyze the project and customize AGENTS.md for this codebase'));
|
|
201
208
|
console.log(chalk.dim(' /plan — Design an implementation approach before writing code'));
|
|
202
209
|
console.log(chalk.dim(' /review — Review changes against project standards'));
|
|
203
210
|
console.log(chalk.dim(' /pr — Create a well-structured pull request'));
|
|
@@ -206,6 +213,7 @@ export async function initCommand(options) {
|
|
|
206
213
|
}
|
|
207
214
|
if (tools.cursor) {
|
|
208
215
|
console.log(chalk.yellow('Available commands (use Cmd+Shift+P in Cursor):'));
|
|
216
|
+
console.log(chalk.dim(' melt-setup — Analyze the project and customize AGENTS.md for this codebase'));
|
|
209
217
|
console.log(chalk.dim(' melt-plan — Design an implementation approach before writing code'));
|
|
210
218
|
console.log(chalk.dim(' melt-review — Review changes against project standards'));
|
|
211
219
|
console.log(chalk.dim(' melt-pr — Create a well-structured pull request'));
|
|
@@ -214,6 +222,23 @@ export async function initCommand(options) {
|
|
|
214
222
|
}
|
|
215
223
|
console.log(chalk.green('Done!'));
|
|
216
224
|
}
|
|
225
|
+
async function mergeMcpConfig(cwd, templateContent) {
|
|
226
|
+
const mcpPath = path.join(cwd, '.mcp.json');
|
|
227
|
+
const templateConfig = JSON.parse(templateContent);
|
|
228
|
+
if (await fs.pathExists(mcpPath)) {
|
|
229
|
+
const existingContent = await fs.readFile(mcpPath, 'utf-8');
|
|
230
|
+
const existingConfig = JSON.parse(existingContent);
|
|
231
|
+
// Merge: add our servers without overwriting existing ones
|
|
232
|
+
existingConfig.mcpServers = {
|
|
233
|
+
...existingConfig.mcpServers,
|
|
234
|
+
...templateConfig.mcpServers,
|
|
235
|
+
};
|
|
236
|
+
await fs.writeFile(mcpPath, JSON.stringify(existingConfig, null, 2) + '\n', 'utf-8');
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
await fs.writeFile(mcpPath, templateContent, 'utf-8');
|
|
240
|
+
}
|
|
241
|
+
}
|
|
217
242
|
async function updateGitignore(cwd) {
|
|
218
243
|
const gitignorePath = path.join(cwd, '.gitignore');
|
|
219
244
|
let content = '';
|
package/package.json
CHANGED