@ichintansoni/skills-master 0.1.12 → 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.
- package/dist/bin.js +14 -4
- 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.
|
|
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-]
|
|
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(
|
|
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:
|
|
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