@hasnatools/skills 0.1.15 → 0.1.17

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.
Files changed (2) hide show
  1. package/dist/index.js +282 -68
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -17809,10 +17809,10 @@ var applyOptions = (object, options = {}) => {
17809
17809
  object.level = options.level === undefined ? colorLevel : options.level;
17810
17810
  };
17811
17811
  var chalkFactory = (options) => {
17812
- const chalk = (...strings) => strings.join(" ");
17813
- applyOptions(chalk, options);
17814
- Object.setPrototypeOf(chalk, createChalk.prototype);
17815
- return chalk;
17812
+ const chalk2 = (...strings) => strings.join(" ");
17813
+ applyOptions(chalk2, options);
17814
+ Object.setPrototypeOf(chalk2, createChalk.prototype);
17815
+ return chalk2;
17816
17816
  };
17817
17817
  function createChalk(options) {
17818
17818
  return chalkFactory(options);
@@ -17932,9 +17932,9 @@ var applyStyle = (self, string) => {
17932
17932
  return openAll + string + closeAll;
17933
17933
  };
17934
17934
  Object.defineProperties(createChalk.prototype, styles2);
17935
- var chalk = createChalk();
17935
+ var chalk2 = createChalk();
17936
17936
  var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
17937
- var source_default = chalk;
17937
+ var source_default = chalk2;
17938
17938
 
17939
17939
  // ../../node_modules/.bun/ora@8.2.0/node_modules/ora/index.js
17940
17940
  import process9 from "node:process";
@@ -20709,6 +20709,22 @@ async function getMarketplaceSkills(options) {
20709
20709
  const query = params.toString();
20710
20710
  return apiRequest(`/skills${query ? `?${query}` : ""}`);
20711
20711
  }
20712
+ async function getAllMarketplaceSkills() {
20713
+ const allSkills = [];
20714
+ let page = 1;
20715
+ const limit = 100;
20716
+ let totalPages = 1;
20717
+ while (page <= totalPages) {
20718
+ const result = await getMarketplaceSkills({ page, limit });
20719
+ if (result.error || !result.data) {
20720
+ return { error: result.error || "Failed to fetch skills", status: result.status };
20721
+ }
20722
+ allSkills.push(...result.data.skills);
20723
+ totalPages = result.data.pagination.totalPages;
20724
+ page++;
20725
+ }
20726
+ return { data: { skills: allSkills, total: allSkills.length }, status: 200 };
20727
+ }
20712
20728
  async function getSkill(slug) {
20713
20729
  return apiRequest(`/skills/${slug}`);
20714
20730
  }
@@ -21010,10 +21026,98 @@ async function searchCommand(query) {
21010
21026
  // src/commands/install.ts
21011
21027
  import { existsSync as existsSync3, writeFileSync as writeFileSync3 } from "fs";
21012
21028
  import { join as join3 } from "path";
21029
+
21030
+ // src/lib/theme.ts
21031
+ var colors = {
21032
+ primary: source_default.hex("#6366f1"),
21033
+ primaryBold: source_default.hex("#6366f1").bold,
21034
+ primaryDim: source_default.hex("#818cf8"),
21035
+ primaryBg: source_default.bgHex("#6366f1").white.bold,
21036
+ primaryBgDim: source_default.bgHex("#4f46e5").white,
21037
+ secondary: source_default.hex("#64748b"),
21038
+ secondaryBold: source_default.hex("#64748b").bold,
21039
+ success: source_default.hex("#22c55e"),
21040
+ successBold: source_default.hex("#22c55e").bold,
21041
+ warning: source_default.hex("#eab308"),
21042
+ warningBold: source_default.hex("#eab308").bold,
21043
+ error: source_default.hex("#ef4444"),
21044
+ errorBold: source_default.hex("#ef4444").bold,
21045
+ info: source_default.hex("#3b82f6"),
21046
+ infoBold: source_default.hex("#3b82f6").bold,
21047
+ dim: source_default.dim,
21048
+ bold: source_default.bold,
21049
+ white: source_default.white,
21050
+ gray: source_default.gray,
21051
+ highlight: source_default.hex("#a78bfa"),
21052
+ link: source_default.hex("#60a5fa").underline,
21053
+ code: source_default.hex("#f472b6")
21054
+ };
21055
+ var symbols = {
21056
+ success: colors.success("✓"),
21057
+ error: colors.error("✗"),
21058
+ warning: colors.warning("!"),
21059
+ info: colors.info("i"),
21060
+ arrow: colors.primary("→"),
21061
+ bullet: colors.dim("•"),
21062
+ star: colors.warning("★"),
21063
+ check: colors.success("✓"),
21064
+ cross: colors.error("✗"),
21065
+ pointer: colors.primary("❯")
21066
+ };
21067
+ function header(text, width = 50) {
21068
+ const padding = Math.max(0, width - text.length - 2);
21069
+ const leftPad = Math.floor(padding / 2);
21070
+ const rightPad = padding - leftPad;
21071
+ const paddedText = " ".repeat(leftPad) + text + " ".repeat(rightPad);
21072
+ return colors.primaryBg(` ${paddedText} `);
21073
+ }
21074
+ function keyValue(key, value, keyWidth = 15) {
21075
+ const paddedKey = key.padEnd(keyWidth);
21076
+ return `${colors.dim(paddedKey)} ${value}`;
21077
+ }
21078
+ function successItem(text, indent = 0) {
21079
+ return " ".repeat(indent) + symbols.success + " " + text;
21080
+ }
21081
+ function errorItem(text, indent = 0) {
21082
+ return " ".repeat(indent) + symbols.error + " " + text;
21083
+ }
21084
+ function command(cmd) {
21085
+ return colors.code(cmd);
21086
+ }
21087
+ function path6(p) {
21088
+ return colors.highlight(p);
21089
+ }
21090
+ function skillName(name) {
21091
+ return colors.primaryBold(name);
21092
+ }
21093
+ function count(n) {
21094
+ return colors.primaryBold(String(n));
21095
+ }
21096
+ function progressBar(percent, width = 20) {
21097
+ const filled = Math.round(percent / 100 * width);
21098
+ const empty = width - filled;
21099
+ return colors.primary("█".repeat(filled)) + colors.dim("░".repeat(empty));
21100
+ }
21101
+ function banner(title) {
21102
+ console.log();
21103
+ console.log(header(title));
21104
+ console.log();
21105
+ }
21106
+ function completionBanner(title) {
21107
+ console.log();
21108
+ console.log(header(title));
21109
+ console.log();
21110
+ }
21111
+
21112
+ // src/commands/install.ts
21013
21113
  async function installCommand(slug, options = {}) {
21114
+ if (options.all) {
21115
+ return installAllSkills(options);
21116
+ }
21014
21117
  if (!slug || slug.trim() === "") {
21015
- console.log(source_default.yellow("Please provide a skill name"));
21016
- console.log(source_default.dim("Usage: skills install <name>"));
21118
+ console.log(colors.warning("Please provide a skill name"));
21119
+ console.log(colors.dim("Usage: skills install <name>"));
21120
+ console.log(colors.dim(" skills install --all"));
21017
21121
  return;
21018
21122
  }
21019
21123
  const isLocal = options.local ?? false;
@@ -21022,20 +21126,23 @@ async function installCommand(slug, options = {}) {
21022
21126
  let installDir;
21023
21127
  if (isLocal) {
21024
21128
  if (!hasLocalConfig()) {
21025
- console.log(source_default.yellow("Not in a skills.md project"));
21026
- console.log(source_default.dim("Run `skills init` first or install globally (default)"));
21129
+ console.log(colors.warning("Not in a skills.md project"));
21130
+ console.log(colors.dim("Run `skills init` first or install globally (default)"));
21027
21131
  return;
21028
21132
  }
21029
21133
  installDir = target === "claude" ? getProjectClaudeSkillsDir() : getProjectCodexSkillsDir();
21030
21134
  } else {
21031
21135
  installDir = target === "claude" ? getClaudeSkillsDir() : getCodexSkillsDir();
21032
21136
  }
21033
- const spinner = ora(`Fetching skill "${slug}"...`).start();
21137
+ const spinner = ora({
21138
+ text: `Fetching skill "${slug}"...`,
21139
+ color: "magenta"
21140
+ }).start();
21034
21141
  try {
21035
21142
  const skillResult = await installSkill(slug);
21036
21143
  if (skillResult.error || !skillResult.data) {
21037
- spinner.fail("Skill not found");
21038
- console.error(source_default.red(skillResult.error || `Could not find skill: ${slug}`));
21144
+ spinner.fail(colors.error("Skill not found"));
21145
+ console.error(colors.error(skillResult.error || `Could not find skill: ${slug}`));
21039
21146
  return;
21040
21147
  }
21041
21148
  const skill = skillResult.data;
@@ -21050,28 +21157,131 @@ async function installCommand(slug, options = {}) {
21050
21157
  if (apiKey) {
21051
21158
  await installSkillRemote(slug);
21052
21159
  }
21053
- spinner.succeed(`Installed ${source_default.bold(skill.name)} v${skill.version}`);
21160
+ spinner.succeed(colors.success(`Installed ${skillName(skill.name)} v${skill.version}`));
21054
21161
  console.log();
21055
- console.log(source_default.green("✓") + ` Installed to ${source_default.dim(skillDir)}`);
21056
- console.log(source_default.green("✓") + ` Created exports/ directory`);
21057
- console.log(source_default.green("✓") + ` Created logs/ directory`);
21058
- console.log(source_default.green("✓") + ` Target: ${source_default.bold(target)}`);
21059
- console.log(source_default.green("✓") + ` Scope: ${isLocal ? "project" : "global"}`);
21162
+ console.log(successItem(`Installed to ${path6(skillDir)}`));
21163
+ console.log(successItem("Created exports/ directory"));
21164
+ console.log(successItem("Created logs/ directory"));
21165
+ console.log(successItem(`Target: ${colors.primaryBold(target)}`));
21166
+ console.log(successItem(`Scope: ${colors.primaryBold(isLocal ? "project" : "global")}`));
21060
21167
  console.log();
21061
- console.log(source_default.dim("Usage:"));
21062
- console.log(` skills run ${slug} -- "your prompt or args"`);
21168
+ console.log(colors.dim("Usage:"));
21169
+ console.log(` ${command(`skills run ${slug} -- "your prompt or args"`)}`);
21063
21170
  console.log();
21064
- console.log(source_default.dim("Skill execution happens remotely via API."));
21065
- console.log(source_default.dim("Exports will be saved to: ") + source_default.cyan(`${skillDir}/exports/`));
21171
+ console.log(colors.dim("Skill execution happens remotely via API."));
21172
+ console.log(colors.dim("Exports will be saved to: ") + path6(`${skillDir}/exports/`));
21066
21173
  } catch (error) {
21067
- spinner.fail("Installation failed");
21068
- console.error(source_default.red(error instanceof Error ? error.message : "Unknown error"));
21174
+ spinner.fail(colors.error("Installation failed"));
21175
+ console.error(colors.error(error instanceof Error ? error.message : "Unknown error"));
21176
+ }
21177
+ }
21178
+ async function installAllSkills(options) {
21179
+ const isLocal = options.local ?? false;
21180
+ const target = options.target ?? getDefaultTarget();
21181
+ const apiKey = getApiKey();
21182
+ let installDir;
21183
+ if (isLocal) {
21184
+ if (!hasLocalConfig()) {
21185
+ console.log(colors.warning("Not in a skills.md project"));
21186
+ console.log(colors.dim("Run `skills init` first or install globally (default)"));
21187
+ return;
21188
+ }
21189
+ installDir = target === "claude" ? getProjectClaudeSkillsDir() : getProjectCodexSkillsDir();
21190
+ } else {
21191
+ installDir = target === "claude" ? getClaudeSkillsDir() : getCodexSkillsDir();
21192
+ }
21193
+ banner("Installing All Skills");
21194
+ const fetchSpinner = ora({
21195
+ text: "Fetching skill catalog...",
21196
+ color: "magenta"
21197
+ }).start();
21198
+ try {
21199
+ const result = await getAllMarketplaceSkills();
21200
+ if (result.error || !result.data) {
21201
+ fetchSpinner.fail(colors.error("Failed to fetch skills"));
21202
+ console.error(colors.error(result.error || "Could not fetch skill catalog"));
21203
+ return;
21204
+ }
21205
+ const skills = result.data.skills;
21206
+ const total = skills.length;
21207
+ fetchSpinner.succeed(colors.success(`Found ${count(total)} skills in marketplace`));
21208
+ console.log();
21209
+ console.log(keyValue("Target", colors.primaryBold(target)));
21210
+ console.log(keyValue("Scope", colors.primaryBold(isLocal ? "project" : "global")));
21211
+ console.log(keyValue("Directory", path6(installDir)));
21212
+ console.log();
21213
+ const results = {
21214
+ success: [],
21215
+ failed: [],
21216
+ skipped: []
21217
+ };
21218
+ for (let i = 0;i < skills.length; i++) {
21219
+ const skill = skills[i];
21220
+ const current = i + 1;
21221
+ const percent = Math.round(current / total * 100);
21222
+ const padWidth = String(total).length;
21223
+ const progress = `[${String(current).padStart(padWidth, " ")}/${total}]`;
21224
+ process.stdout.write(`\r${colors.dim(progress)} ${progressBar(percent)} ${colors.dim(`${percent}%`)} Installing ${colors.primary(skill.slug)}...`);
21225
+ process.stdout.write("\x1B[K");
21226
+ try {
21227
+ const skillResult = await installSkill(skill.slug);
21228
+ if (skillResult.error || !skillResult.data) {
21229
+ results.failed.push({ slug: skill.slug, error: skillResult.error || "Not found" });
21230
+ continue;
21231
+ }
21232
+ const skillData = skillResult.data;
21233
+ const skillDir = join3(installDir, `skill-${skill.slug}`);
21234
+ const exportsDir = join3(skillDir, "exports");
21235
+ const logsDir = join3(skillDir, "logs");
21236
+ ensureSkillsDir(skillDir);
21237
+ ensureSkillsDir(exportsDir);
21238
+ ensureSkillsDir(logsDir);
21239
+ writeFileSync3(join3(skillDir, "SKILL.md"), skillData.skillMdContent);
21240
+ if (apiKey) {
21241
+ try {
21242
+ await installSkillRemote(skill.slug);
21243
+ } catch {}
21244
+ }
21245
+ results.success.push(skill.slug);
21246
+ } catch (error) {
21247
+ results.failed.push({
21248
+ slug: skill.slug,
21249
+ error: error instanceof Error ? error.message : "Unknown error"
21250
+ });
21251
+ }
21252
+ }
21253
+ process.stdout.write("\r\x1B[K");
21254
+ completionBanner("Installation Complete");
21255
+ if (results.success.length > 0) {
21256
+ console.log(successItem(`Successfully installed: ${colors.successBold(String(results.success.length))} skills`));
21257
+ }
21258
+ if (results.failed.length > 0) {
21259
+ console.log(errorItem(`Failed to install: ${colors.errorBold(String(results.failed.length))} skills`));
21260
+ console.log();
21261
+ console.log(colors.dim("Failed skills:"));
21262
+ for (const fail of results.failed.slice(0, 10)) {
21263
+ console.log(colors.error(` ${symbols.bullet} ${fail.slug}: ${fail.error}`));
21264
+ }
21265
+ if (results.failed.length > 10) {
21266
+ console.log(colors.dim(` ... and ${results.failed.length - 10} more`));
21267
+ }
21268
+ }
21269
+ console.log();
21270
+ console.log(colors.dim("Installation directory:"));
21271
+ console.log(` ${path6(installDir)}`);
21272
+ console.log();
21273
+ console.log(colors.dim("Run any skill with:"));
21274
+ console.log(` ${command('skills run <skill-name> -- "your prompt"')}`);
21275
+ console.log();
21276
+ } catch (error) {
21277
+ fetchSpinner.fail(colors.error("Installation failed"));
21278
+ console.error(colors.error(error instanceof Error ? error.message : "Unknown error"));
21069
21279
  }
21070
21280
  }
21071
21281
  async function uninstallCommand(slug, options = {}) {
21072
21282
  if (!slug || slug.trim() === "") {
21073
- console.log(source_default.yellow("Please provide a skill name"));
21074
- console.log(source_default.dim("Usage: skills uninstall <name>"));
21283
+ console.log(colors.warning("Please provide a skill name"));
21284
+ console.log(colors.dim("Usage: skills uninstall <name>"));
21075
21285
  return;
21076
21286
  }
21077
21287
  const isLocal = options.local ?? false;
@@ -21079,8 +21289,8 @@ async function uninstallCommand(slug, options = {}) {
21079
21289
  let installDir;
21080
21290
  if (isLocal) {
21081
21291
  if (!hasLocalConfig()) {
21082
- console.log(source_default.yellow("Not in a skills.md project"));
21083
- console.log(source_default.dim("Run `skills init` first or uninstall from global (default)"));
21292
+ console.log(colors.warning("Not in a skills.md project"));
21293
+ console.log(colors.dim("Run `skills init` first or uninstall from global (default)"));
21084
21294
  return;
21085
21295
  }
21086
21296
  installDir = target === "claude" ? getProjectClaudeSkillsDir() : getProjectCodexSkillsDir();
@@ -21091,20 +21301,23 @@ async function uninstallCommand(slug, options = {}) {
21091
21301
  if (!existsSync3(skillDir)) {
21092
21302
  const oldSkillDir = join3(installDir, slug);
21093
21303
  if (!existsSync3(oldSkillDir)) {
21094
- console.log(source_default.yellow(`Skill "${slug}" is not installed`));
21304
+ console.log(colors.warning(`Skill "${slug}" is not installed`));
21095
21305
  return;
21096
21306
  }
21097
21307
  }
21098
- const spinner = ora(`Uninstalling "${slug}"...`).start();
21308
+ const spinner = ora({
21309
+ text: `Uninstalling "${slug}"...`,
21310
+ color: "magenta"
21311
+ }).start();
21099
21312
  try {
21100
21313
  const { rmSync: rmSync2 } = await import("fs");
21101
21314
  rmSync2(skillDir, { recursive: true, force: true });
21102
- spinner.succeed(`Uninstalled ${source_default.bold(slug)}`);
21315
+ spinner.succeed(colors.success(`Uninstalled ${skillName(slug)}`));
21103
21316
  console.log();
21104
- console.log(source_default.green("✓") + ` Removed from ${source_default.dim(skillDir)}`);
21317
+ console.log(successItem(`Removed from ${path6(skillDir)}`));
21105
21318
  } catch (error) {
21106
- spinner.fail("Uninstallation failed");
21107
- console.error(source_default.red(error instanceof Error ? error.message : "Unknown error"));
21319
+ spinner.fail(colors.error("Uninstallation failed"));
21320
+ console.error(colors.error(error instanceof Error ? error.message : "Unknown error"));
21108
21321
  }
21109
21322
  }
21110
21323
 
@@ -21468,8 +21681,8 @@ async function targetCommand(target) {
21468
21681
  setDefaultTarget(target);
21469
21682
  console.log(source_default.green("✓") + ` Default target set to ${source_default.bold(target)}`);
21470
21683
  }
21471
- function getNestedValue(obj, path6) {
21472
- const keys = path6.split(".");
21684
+ function getNestedValue(obj, path7) {
21685
+ const keys = path7.split(".");
21473
21686
  let current = obj;
21474
21687
  for (const key of keys) {
21475
21688
  if (current === null || current === undefined)
@@ -21791,14 +22004,14 @@ var LOCAL_SKILLS = {
21791
22004
  video: "generate-video",
21792
22005
  audio: "generate-audio"
21793
22006
  };
21794
- function findLocalSkill(skillName) {
21795
- const globalDir = join7(homedir3(), ".claude", "skills", skillName);
22007
+ function findLocalSkill(skillName2) {
22008
+ const globalDir = join7(homedir3(), ".claude", "skills", skillName2);
21796
22009
  if (existsSync7(globalDir)) {
21797
22010
  return globalDir;
21798
22011
  }
21799
22012
  const projectRoot = findProjectRoot();
21800
22013
  if (projectRoot) {
21801
- const projectDir = join7(projectRoot, ".claude", "skills", skillName);
22014
+ const projectDir = join7(projectRoot, ".claude", "skills", skillName2);
21802
22015
  if (existsSync7(projectDir)) {
21803
22016
  return projectDir;
21804
22017
  }
@@ -22653,7 +22866,7 @@ function parseFrontmatter2(content) {
22653
22866
  }
22654
22867
  return result;
22655
22868
  }
22656
- async function updateCommand(skillName, options = {}) {
22869
+ async function updateCommand(skillName2, options = {}) {
22657
22870
  const target = options.target ?? getDefaultTarget();
22658
22871
  const skillsDir = target === "claude" ? getClaudeSkillsDir() : getCodexSkillsDir();
22659
22872
  if (!existsSync9(skillsDir)) {
@@ -22672,7 +22885,7 @@ async function updateCommand(skillName, options = {}) {
22672
22885
  const content = readFileSync5(skillMdPath, "utf-8");
22673
22886
  const frontmatter = parseFrontmatter2(content);
22674
22887
  const slug = entry.name.replace("skill-", "");
22675
- if (skillName && slug !== skillName && frontmatter.name !== skillName) {
22888
+ if (skillName2 && slug !== skillName2 && frontmatter.name !== skillName2) {
22676
22889
  continue;
22677
22890
  }
22678
22891
  installedSkills.push({
@@ -22683,8 +22896,8 @@ async function updateCommand(skillName, options = {}) {
22683
22896
  });
22684
22897
  }
22685
22898
  if (installedSkills.length === 0) {
22686
- if (skillName) {
22687
- console.log(source_default.yellow(`Skill "${skillName}" not found`));
22899
+ if (skillName2) {
22900
+ console.log(source_default.yellow(`Skill "${skillName2}" not found`));
22688
22901
  } else {
22689
22902
  console.log(source_default.dim("No skills installed"));
22690
22903
  }
@@ -22922,9 +23135,9 @@ async function doctorCommand() {
22922
23135
  }
22923
23136
 
22924
23137
  // src/index.ts
22925
- var indigo12 = source_default.hex("#6366f1");
23138
+ var indigo12 = colors.primary;
22926
23139
  var program2 = new Command;
22927
- program2.name("skills").description("CLI for skills.md - AI Agent Skills Marketplace").version("0.1.15");
23140
+ program2.name("skills").description("CLI for skills.md - AI Agent Skills Marketplace").version("0.1.17");
22928
23141
  program2.command("init").description("Initialize skills.md in current project").option("-f, --force", "Force re-initialization (removes existing .skills/)").action((options) => {
22929
23142
  initCommand({ force: options.force });
22930
23143
  });
@@ -22941,10 +23154,11 @@ program2.command("marketplace").alias("market").description("Browse skills from
22941
23154
  category: options.category
22942
23155
  });
22943
23156
  });
22944
- program2.command("install <name>").alias("i").description("Install a skill (global by default)").option("-l, --local", "Install to current project instead of global").option("-t, --target <target>", "Target platform (claude, codex)").action((name, options) => {
22945
- installCommand(name, {
23157
+ program2.command("install [name]").alias("i").description("Install a skill or all skills (global by default)").option("-l, --local", "Install to current project instead of global").option("-t, --target <target>", "Target platform (claude, codex)").option("-a, --all", "Install all skills from marketplace").action((name, options) => {
23158
+ installCommand(name || "", {
22946
23159
  local: options.local,
22947
- target: options.target
23160
+ target: options.target,
23161
+ all: options.all
22948
23162
  });
22949
23163
  });
22950
23164
  program2.command("uninstall <name>").alias("remove").description("Uninstall a skill (global by default)").option("-l, --local", "Uninstall from current project instead of global").option("-t, --target <target>", "Target platform (claude, codex)").action((name, options) => {
@@ -23025,64 +23239,64 @@ program2.command("upgrade").description("Upgrade the Skills CLI to the latest ve
23025
23239
  program2.command("doctor").description("Check your environment and diagnose issues").action(doctorCommand);
23026
23240
  program2.addHelpText("after", `
23027
23241
  ${indigo12.bold("Examples:")}
23028
- ${source_default.dim("# Initialize in current project")}
23242
+ ${chalk.dim("# Initialize in current project")}
23029
23243
  $ skills init
23030
23244
 
23031
- ${source_default.dim("# Login to your account")}
23245
+ ${chalk.dim("# Login to your account")}
23032
23246
  $ skills login
23033
23247
 
23034
- ${source_default.dim("# Browse the marketplace")}
23248
+ ${chalk.dim("# Browse the marketplace")}
23035
23249
  $ skills marketplace
23036
23250
 
23037
- ${source_default.dim("# Search for skills")}
23251
+ ${chalk.dim("# Search for skills")}
23038
23252
  $ skills search code review
23039
23253
 
23040
- ${source_default.dim("# Install a skill")}
23254
+ ${chalk.dim("# Install a skill")}
23041
23255
  $ skills install code-review
23042
23256
 
23043
- ${source_default.dim("# Install globally for Claude Code")}
23257
+ ${chalk.dim("# Install globally for Claude Code")}
23044
23258
  $ skills install code-review -g -t claude
23045
23259
 
23046
- ${source_default.dim("# List installed skills")}
23260
+ ${chalk.dim("# List installed skills")}
23047
23261
  $ skills list
23048
23262
 
23049
- ${source_default.dim("# Generate content using a skill")}
23263
+ ${chalk.dim("# Generate content using a skill")}
23050
23264
  $ skills generate image "a sunset over mountains"
23051
23265
 
23052
- ${source_default.dim("# View execution history")}
23266
+ ${chalk.dim("# View execution history")}
23053
23267
  $ skills history
23054
23268
  $ skills history --skill image-generator
23055
23269
  $ skills history --status completed
23056
23270
  $ skills history --local
23057
23271
 
23058
- ${source_default.dim("# View exports for a skill")}
23272
+ ${chalk.dim("# View exports for a skill")}
23059
23273
  $ skills exports image-generator
23060
23274
 
23061
- ${source_default.dim("# View logs for a skill")}
23275
+ ${chalk.dim("# View logs for a skill")}
23062
23276
  $ skills logs code-review
23063
23277
 
23064
- ${source_default.dim("# Submit feedback")}
23278
+ ${chalk.dim("# Submit feedback")}
23065
23279
  $ skills feedback
23066
23280
 
23067
- ${source_default.dim("# Get skill info")}
23281
+ ${chalk.dim("# Get skill info")}
23068
23282
  $ skills info code-review
23069
23283
 
23070
- ${source_default.dim("# Check credits balance")}
23284
+ ${chalk.dim("# Check credits balance")}
23071
23285
  $ skills credits
23072
23286
 
23073
- ${source_default.dim("# Purchase credits")}
23287
+ ${chalk.dim("# Purchase credits")}
23074
23288
  $ skills credits buy 25
23075
23289
 
23076
- ${source_default.dim("# Enable 2FA for CLI purchases")}
23290
+ ${chalk.dim("# Enable 2FA for CLI purchases")}
23077
23291
  $ skills config cli-2fa on
23078
23292
 
23079
- ${source_default.dim("# Update installed skills")}
23293
+ ${chalk.dim("# Update installed skills")}
23080
23294
  $ skills update
23081
23295
 
23082
- ${source_default.dim("# Upgrade CLI")}
23296
+ ${chalk.dim("# Upgrade CLI")}
23083
23297
  $ skills upgrade
23084
23298
 
23085
- ${source_default.dim("# Check environment")}
23299
+ ${chalk.dim("# Check environment")}
23086
23300
  $ skills doctor
23087
23301
 
23088
23302
  ${indigo12.bold("Documentation:")}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasnatools/skills",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "CLI for skills.md - AI Agent Skills Marketplace",
5
5
  "type": "module",
6
6
  "bin": {