@ichintansoni/skills-master 0.1.11 → 0.1.13

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/bin.js +14 -4
  2. package/package.json +1 -1
package/dist/bin.js CHANGED
@@ -4,7 +4,7 @@
4
4
  import { Command } from "commander";
5
5
 
6
6
  // package.json
7
- var version = "0.1.11";
7
+ var version = "0.1.13";
8
8
 
9
9
  // src/schema/projectConfig.ts
10
10
  import { z } from "zod";
@@ -549,7 +549,13 @@ import matter from "gray-matter";
549
549
  // src/schema/frontmatter.ts
550
550
  import { z as z4 } from "zod";
551
551
  import semver from "semver";
552
- var NAME_RE = /^[a-z0-9-]{1,64}$/;
552
+ var NAME_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
553
+ var NAME_MAX_LENGTH = 64;
554
+ var RESERVED_NAME_WORDS = ["anthropic", "claude"];
555
+ var SkillNameSchema = z4.string().max(NAME_MAX_LENGTH, `must be at most ${NAME_MAX_LENGTH} characters`).regex(NAME_RE, "must be kebab-case ([a-z0-9] words joined by single hyphens)").refine(
556
+ (n) => !RESERVED_NAME_WORDS.some((w) => n.includes(w)),
557
+ `must not contain the reserved words ${RESERVED_NAME_WORDS.map((w) => `"${w}"`).join(" or ")}`
558
+ );
553
559
  var ISO_DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
554
560
  var StabilitySchema = z4.enum(["stable", "emerging", "contested"]);
555
561
  var SkillClassSchema = z4.enum(["code", "design", "lang-tooling", "overview"]);
@@ -566,7 +572,7 @@ var XSkillsMasterSchema = z4.object({
566
572
  platforms: z4.array(z4.string().min(1)).min(1),
567
573
  /** domain-defined version requirements, e.g. { ios: "17", swift: "6.0" }. */
568
574
  requires: z4.record(z4.string(), z4.string()).optional(),
569
- pairs_with: z4.array(z4.string().regex(NAME_RE)).default([]),
575
+ pairs_with: z4.array(SkillNameSchema).default([]),
570
576
  /** citation URLs to canonical docs — never verbatim content. */
571
577
  sources: z4.array(z4.url()).default([]),
572
578
  snapshot_date: z4.string().regex(ISO_DATE_RE, "must be an ISO date (YYYY-MM-DD)"),
@@ -575,7 +581,7 @@ var XSkillsMasterSchema = z4.object({
575
581
  }).strict();
576
582
  var GlobsSchema = z4.union([z4.string(), z4.array(z4.string())]).transform((g) => Array.isArray(g) ? g : [g]).optional();
577
583
  var FrontmatterSchema = z4.looseObject({
578
- name: z4.string().regex(NAME_RE, "must be kebab-case ([a-z0-9-], <=64 chars)"),
584
+ name: SkillNameSchema,
579
585
  description: z4.string().min(1, "description is required").max(1024, "description must be <= 1024 characters"),
580
586
  globs: GlobsSchema,
581
587
  tags: z4.array(z4.string()).default([]),
@@ -2128,6 +2134,10 @@ async function newSkillCommand(opts) {
2128
2134
  const cls = SkillClassSchema.parse(parts[1]);
2129
2135
  const category = parts[2];
2130
2136
  const name = parts[parts.length - 1];
2137
+ const nameCheck = SkillNameSchema.safeParse(name);
2138
+ if (!nameCheck.success) {
2139
+ throw new Error(`Invalid skill name "${name}": ${nameCheck.error.issues[0].message}.`);
2140
+ }
2131
2141
  const content = await resolveContent({ content: opts.content, cwd: opts.cwd });
2132
2142
  const dir = join12(content.root, domain, CLASS_DIR[cls], ...parts.slice(2));
2133
2143
  const skillMd = join12(dir, "SKILL.md");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ichintansoni/skills-master",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Install tool-agnostic Apple & Android development skills into any AI coding tool (Claude Code, Cursor, Copilot, AGENTS.md).",
5
5
  "keywords": [
6
6
  "skills",