skillui 1.1.4 → 1.1.5
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/cli.js +25 -8
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -104561,7 +104561,7 @@ gradient.pastel = pastel;
|
|
|
104561
104561
|
// src/ui.ts
|
|
104562
104562
|
var import_cli_progress = __toESM(require_cli_progress());
|
|
104563
104563
|
var path15 = __toESM(require("path"));
|
|
104564
|
-
var VERSION = "1.1.
|
|
104564
|
+
var VERSION = "1.1.5";
|
|
104565
104565
|
function padAnsi(str, width) {
|
|
104566
104566
|
const raw = stripAnsi(str);
|
|
104567
104567
|
return str + " ".repeat(Math.max(0, width - raw.length));
|
|
@@ -104755,7 +104755,7 @@ function showUltraPlaywrightError() {
|
|
|
104755
104755
|
console.log("");
|
|
104756
104756
|
}
|
|
104757
104757
|
function showResults(data) {
|
|
104758
|
-
const { profile, animations, skillFilePath, designMdPath, projectName } = data;
|
|
104758
|
+
const { profile, animations, skillFilePath, designMdPath, projectName, skillInstalled } = data;
|
|
104759
104759
|
const fontCount = new Set(profile.typography.map((t) => t.fontFamily)).size;
|
|
104760
104760
|
const framework = profile.frameworks.map((f) => f.name).join(", ") || "none detected";
|
|
104761
104761
|
const darkMode = profile.designTraits.hasDarkMode ? "detected" : "not detected";
|
|
@@ -104806,17 +104806,17 @@ function showResults(data) {
|
|
|
104806
104806
|
}));
|
|
104807
104807
|
console.log("");
|
|
104808
104808
|
}
|
|
104809
|
+
const skillLine = skillInstalled ? source_default.hex("#4ade80")(" \u2713 Skill auto-installed") + source_default.dim(" \u2014 type ") + source_default.hex("#38bdf8")("/skills") + source_default.dim(" in Claude Code to see it") : source_default.dim(" Copy SKILL.md to ") + source_default.hex("#38bdf8")("~/.claude/skills/" + projectName + ".md");
|
|
104809
104810
|
const nextSteps = [
|
|
104810
|
-
|
|
104811
|
-
" " + source_default.hex("#38bdf8")("claude skill install ./" + projectName + ".skill"),
|
|
104811
|
+
skillLine,
|
|
104812
104812
|
"",
|
|
104813
|
-
source_default.dim("
|
|
104814
|
-
" " + source_default.dim('"Build me a UI that matches
|
|
104813
|
+
source_default.dim(" Then ask Claude:"),
|
|
104814
|
+
" " + source_default.dim('"Build me a UI that matches the ' + projectName + ' design system"')
|
|
104815
104815
|
].join("\n");
|
|
104816
104816
|
console.log(boxen(nextSteps, {
|
|
104817
104817
|
title: source_default.bold(" Next steps "),
|
|
104818
104818
|
borderStyle: "round",
|
|
104819
|
-
borderColor: "yellow",
|
|
104819
|
+
borderColor: skillInstalled ? "green" : "yellow",
|
|
104820
104820
|
width: 76,
|
|
104821
104821
|
padding: { top: 0, bottom: 0, left: 0, right: 1 }
|
|
104822
104822
|
}));
|
|
@@ -104973,12 +104973,14 @@ program2.name("skillui").description("Reverse-engineer design systems from any p
|
|
|
104973
104973
|
succeedSpinner(spWrite, "DESIGN.md", designMdPath);
|
|
104974
104974
|
}
|
|
104975
104975
|
let skillFilePath;
|
|
104976
|
+
let skillInstalled = false;
|
|
104976
104977
|
if (shouldWriteSkill) {
|
|
104977
104978
|
const spSkill = startSpinner("Bundling .skill package...");
|
|
104978
104979
|
try {
|
|
104979
104980
|
const result = await generateSkill(profile, designMdContent, path16.resolve(opts.out), screenshotPath, ultraAnimations);
|
|
104980
104981
|
skillFilePath = result.skillFile;
|
|
104981
104982
|
succeedSpinner(spSkill, ".skill package", skillFilePath);
|
|
104983
|
+
skillInstalled = installSkillForClaude(result.skillDir, safeName);
|
|
104982
104984
|
} catch (e) {
|
|
104983
104985
|
failSpinner(spSkill, ".skill package", e.message);
|
|
104984
104986
|
throw e;
|
|
@@ -104989,7 +104991,8 @@ program2.name("skillui").description("Reverse-engineer design systems from any p
|
|
|
104989
104991
|
animations: ultraAnimations ?? void 0,
|
|
104990
104992
|
skillFilePath,
|
|
104991
104993
|
designMdPath,
|
|
104992
|
-
projectName: safeName
|
|
104994
|
+
projectName: safeName,
|
|
104995
|
+
skillInstalled
|
|
104993
104996
|
});
|
|
104994
104997
|
} catch (err) {
|
|
104995
104998
|
console.error(`
|
|
@@ -104999,6 +105002,20 @@ program2.name("skillui").description("Reverse-engineer design systems from any p
|
|
|
104999
105002
|
}
|
|
105000
105003
|
});
|
|
105001
105004
|
program2.parse();
|
|
105005
|
+
function installSkillForClaude(skillDir, safeName) {
|
|
105006
|
+
try {
|
|
105007
|
+
const skillMdSrc = path16.join(skillDir, "SKILL.md");
|
|
105008
|
+
if (!fs14.existsSync(skillMdSrc)) return false;
|
|
105009
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || "";
|
|
105010
|
+
const claudeSkillsDir = path16.join(homeDir, ".claude", "skills");
|
|
105011
|
+
fs14.mkdirSync(claudeSkillsDir, { recursive: true });
|
|
105012
|
+
const dest = path16.join(claudeSkillsDir, `${safeName}.md`);
|
|
105013
|
+
fs14.copyFileSync(skillMdSrc, dest);
|
|
105014
|
+
return true;
|
|
105015
|
+
} catch {
|
|
105016
|
+
return false;
|
|
105017
|
+
}
|
|
105018
|
+
}
|
|
105002
105019
|
/*! Bundled license information:
|
|
105003
105020
|
|
|
105004
105021
|
tmp/lib/tmp.js:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillui",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "Reverse-engineer design systems from any website, repo, or project. Extracts colors, fonts, spacing, animations, and components — packaged as a .skill file for Claude. Pure static analysis, zero AI, zero API keys.",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|