@meltstudio/meltctl 5.16.0 → 5.18.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/dist/index.js +20 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -7450,7 +7450,7 @@ var CLI_VERSION;
|
|
|
7450
7450
|
var init_version = __esm({
|
|
7451
7451
|
"src/utils/version.ts"() {
|
|
7452
7452
|
"use strict";
|
|
7453
|
-
CLI_VERSION = "5.
|
|
7453
|
+
CLI_VERSION = "5.18.0";
|
|
7454
7454
|
}
|
|
7455
7455
|
});
|
|
7456
7456
|
|
|
@@ -42622,6 +42622,10 @@ async function getClient() {
|
|
|
42622
42622
|
// src/commands/skills.ts
|
|
42623
42623
|
var MARKER_FILE = ".melt-skills.json";
|
|
42624
42624
|
function getSkillsRoot() {
|
|
42625
|
+
const configDir = process.env["CLAUDE_CONFIG_DIR"];
|
|
42626
|
+
if (configDir) {
|
|
42627
|
+
return path5.join(configDir, "skills");
|
|
42628
|
+
}
|
|
42625
42629
|
return path5.join(os5.homedir(), ".claude", "skills");
|
|
42626
42630
|
}
|
|
42627
42631
|
function getSkillsRoots() {
|
|
@@ -42733,7 +42737,7 @@ async function skillsInstallCommand(opts) {
|
|
|
42733
42737
|
);
|
|
42734
42738
|
process.exit(1);
|
|
42735
42739
|
}
|
|
42736
|
-
const roots = getSkillsRoots();
|
|
42740
|
+
const roots = opts.path ? [path5.resolve(opts.path)] : getSkillsRoots();
|
|
42737
42741
|
const stale = opts.force ? roots : roots.filter((root) => readMarker(root)?.version !== manifest.version);
|
|
42738
42742
|
if (stale.length === 0) {
|
|
42739
42743
|
console.log(
|
|
@@ -43233,6 +43237,7 @@ function detectAuditType(filename) {
|
|
|
43233
43237
|
const lower = filename.toLowerCase();
|
|
43234
43238
|
if (lower.includes("security-audit")) return "security-audit";
|
|
43235
43239
|
if (lower.includes("ux-audit")) return "ux-audit";
|
|
43240
|
+
if (lower.includes("cost-audit")) return "cost-audit";
|
|
43236
43241
|
return "audit";
|
|
43237
43242
|
}
|
|
43238
43243
|
async function autoDetectAuditFile() {
|
|
@@ -43320,7 +43325,8 @@ async function auditListCommand(options) {
|
|
|
43320
43325
|
const typeLabels = {
|
|
43321
43326
|
audit: "Tech Audit",
|
|
43322
43327
|
"ux-audit": "UX Audit",
|
|
43323
|
-
"security-audit": "Security"
|
|
43328
|
+
"security-audit": "Security",
|
|
43329
|
+
"cost-audit": "Cost Audit"
|
|
43324
43330
|
};
|
|
43325
43331
|
if (options.latest) {
|
|
43326
43332
|
console.log(source_default.bold(`
|
|
@@ -43366,7 +43372,7 @@ function printLatestAuditRow(r, typeLabels) {
|
|
|
43366
43372
|
});
|
|
43367
43373
|
const repo = r.repository ?? r.project;
|
|
43368
43374
|
const label = typeLabels[r.type] ?? r.type;
|
|
43369
|
-
const typeColor = r.type === "ux-audit" ? source_default.yellow : r.type === "security-audit" ? source_default.red : source_default.magenta;
|
|
43375
|
+
const typeColor = r.type === "ux-audit" ? source_default.yellow : r.type === "security-audit" ? source_default.red : r.type === "cost-audit" ? source_default.cyan : source_default.magenta;
|
|
43370
43376
|
const ageText = daysAgo === 0 ? "today" : `${daysAgo}d ago`;
|
|
43371
43377
|
const isSecurityAudit = r.type === "security-audit";
|
|
43372
43378
|
const ageColor = isSecurityAudit ? daysAgo <= 30 ? source_default.green : daysAgo <= 90 ? source_default.yellow : source_default.red : daysAgo <= 7 ? source_default.green : daysAgo <= 30 ? source_default.yellow : source_default.red;
|
|
@@ -43384,7 +43390,7 @@ function printAuditRow(r, typeLabels) {
|
|
|
43384
43390
|
});
|
|
43385
43391
|
const repo = r.repository ?? r.project;
|
|
43386
43392
|
const label = typeLabels[r.type] ?? r.type;
|
|
43387
|
-
const typeColor = r.type === "ux-audit" ? source_default.yellow : r.type === "security-audit" ? source_default.red : source_default.magenta;
|
|
43393
|
+
const typeColor = r.type === "ux-audit" ? source_default.yellow : r.type === "security-audit" ? source_default.red : r.type === "cost-audit" ? source_default.cyan : source_default.magenta;
|
|
43388
43394
|
console.log(
|
|
43389
43395
|
` ${source_default.dim(r.id.slice(0, 8).padEnd(10))} ${typeColor(label.padEnd(12))} ${source_default.white(repo.padEnd(40))} ${source_default.dim(r.author.padEnd(30))} ${source_default.dim(date5)}`
|
|
43390
43396
|
);
|
|
@@ -43409,7 +43415,8 @@ async function auditViewCommand(id, options) {
|
|
|
43409
43415
|
const typeLabels = {
|
|
43410
43416
|
audit: "Tech Audit",
|
|
43411
43417
|
"ux-audit": "UX Audit",
|
|
43412
|
-
"security-audit": "Security Audit"
|
|
43418
|
+
"security-audit": "Security Audit",
|
|
43419
|
+
"cost-audit": "Cost Audit"
|
|
43413
43420
|
};
|
|
43414
43421
|
const label = typeLabels[audit2.type] ?? audit2.type;
|
|
43415
43422
|
const date5 = new Date(audit2.createdAt).toLocaleDateString("en-US", {
|
|
@@ -56049,10 +56056,11 @@ ${source_default.dim(" /melt-dev-debug Systematically investigate an
|
|
|
56049
56056
|
${source_default.dim(" /melt-dev-tech-audit Run a project compliance audit")}
|
|
56050
56057
|
${source_default.dim(" /melt-dev-ux-audit Review UI against usability heuristics")}
|
|
56051
56058
|
${source_default.dim(" /melt-dev-security-audit Run a security posture audit across the platform")}
|
|
56059
|
+
${source_default.dim(" /melt-dev-cost-audit Run an AWS cost optimization audit")}
|
|
56052
56060
|
${source_default.dim(" /melt-dev-help Answer questions about the development playbook")}
|
|
56053
56061
|
|
|
56054
56062
|
${source_default.bold("Setup")}
|
|
56055
|
-
${source_default.dim(" skills install Install the dev skills (/melt-dev-*) into Claude Code (+ Cursor)")}
|
|
56063
|
+
${source_default.dim(" skills install Install the dev skills (/melt-dev-*) into Claude Code (+ Cursor; respects CLAUDE_CONFIG_DIR, or --path <dir>)")}
|
|
56056
56064
|
|
|
56057
56065
|
${source_default.bold("Admin Commands")} ${source_default.dim("(used by skills and team managers):")}
|
|
56058
56066
|
${source_default.dim(" audit submit [file] Submit an audit report")}
|
|
@@ -56093,7 +56101,9 @@ program2.command("mcp").description(
|
|
|
56093
56101
|
await mcpCommand();
|
|
56094
56102
|
});
|
|
56095
56103
|
var skills = program2.command("skills").description("install the Melt dev skills (/melt-dev-*) into Claude Code");
|
|
56096
|
-
skills.command("install").description(
|
|
56104
|
+
skills.command("install").description(
|
|
56105
|
+
"install the Melt dev skills into ~/.claude/skills/ (re-run to update; respects CLAUDE_CONFIG_DIR)"
|
|
56106
|
+
).option("--force", "reinstall even if already up to date").option("--path <dir>", "install into this directory only (overrides CLAUDE_CONFIG_DIR)").action(async (options) => {
|
|
56097
56107
|
await skillsInstallCommand(options);
|
|
56098
56108
|
});
|
|
56099
56109
|
var project = program2.command("project").description("manage project configuration").addHelpText(
|
|
@@ -56126,12 +56136,13 @@ ${source_default.dim("Related skills (run in your AI coding tool):")}
|
|
|
56126
56136
|
${source_default.dim(" /melt-dev-tech-audit Run a project compliance audit")}
|
|
56127
56137
|
${source_default.dim(" /melt-dev-ux-audit Review UI against usability heuristics")}
|
|
56128
56138
|
${source_default.dim(" /melt-dev-security-audit Run a security posture audit across the platform")}
|
|
56139
|
+
${source_default.dim(" /melt-dev-cost-audit Run an AWS cost optimization audit")}
|
|
56129
56140
|
`
|
|
56130
56141
|
);
|
|
56131
56142
|
audit.command("submit").description("submit an audit report from a markdown file").argument("[file]", "path to the audit file (auto-detects from .audits/ if omitted)").action(async (file2) => {
|
|
56132
56143
|
await auditSubmitCommand(file2);
|
|
56133
56144
|
});
|
|
56134
|
-
audit.command("list").description("list submitted audits (Team Managers only)").option("--type <type>", "filter by type (audit, ux-audit, security-audit)").option("--repository <repo>", "filter by repository (owner/repo)").option("--latest", "show only the latest audit per project and type").option("--limit <n>", "max results (default 50, max 200)").action(async (options) => {
|
|
56145
|
+
audit.command("list").description("list submitted audits (Team Managers only)").option("--type <type>", "filter by type (audit, ux-audit, security-audit, cost-audit)").option("--repository <repo>", "filter by repository (owner/repo)").option("--latest", "show only the latest audit per project and type").option("--limit <n>", "max results (default 50, max 200)").action(async (options) => {
|
|
56135
56146
|
await auditListCommand(options);
|
|
56136
56147
|
});
|
|
56137
56148
|
audit.command("view").description("view a submitted audit by ID (Team Managers only)").argument("<id>", "audit ID").option("-o, --output <file>", "save to file instead of printing").action(async (id, options) => {
|
package/package.json
CHANGED