@skillsmith/cli 0.4.3 → 0.5.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.
Files changed (75) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/commands/audit.d.ts +19 -0
  3. package/dist/src/commands/audit.d.ts.map +1 -0
  4. package/dist/src/commands/audit.js +134 -0
  5. package/dist/src/commands/audit.js.map +1 -0
  6. package/dist/src/commands/audit.test.d.ts +8 -0
  7. package/dist/src/commands/audit.test.d.ts.map +1 -0
  8. package/dist/src/commands/audit.test.js +97 -0
  9. package/dist/src/commands/audit.test.js.map +1 -0
  10. package/dist/src/commands/author/init.d.ts.map +1 -1
  11. package/dist/src/commands/author/init.js +4 -9
  12. package/dist/src/commands/author/init.js.map +1 -1
  13. package/dist/src/commands/create.d.ts +42 -0
  14. package/dist/src/commands/create.d.ts.map +1 -0
  15. package/dist/src/commands/create.js +325 -0
  16. package/dist/src/commands/create.js.map +1 -0
  17. package/dist/src/commands/diff.d.ts +17 -0
  18. package/dist/src/commands/diff.d.ts.map +1 -0
  19. package/dist/src/commands/diff.js +191 -0
  20. package/dist/src/commands/diff.js.map +1 -0
  21. package/dist/src/commands/diff.test.d.ts +6 -0
  22. package/dist/src/commands/diff.test.d.ts.map +1 -0
  23. package/dist/src/commands/diff.test.js +275 -0
  24. package/dist/src/commands/diff.test.js.map +1 -0
  25. package/dist/src/commands/index.d.ts +4 -0
  26. package/dist/src/commands/index.d.ts.map +1 -1
  27. package/dist/src/commands/index.js +7 -0
  28. package/dist/src/commands/index.js.map +1 -1
  29. package/dist/src/commands/manage.d.ts.map +1 -1
  30. package/dist/src/commands/manage.js +16 -8
  31. package/dist/src/commands/manage.js.map +1 -1
  32. package/dist/src/commands/pin.d.ts +24 -0
  33. package/dist/src/commands/pin.d.ts.map +1 -0
  34. package/dist/src/commands/pin.js +123 -0
  35. package/dist/src/commands/pin.js.map +1 -0
  36. package/dist/src/commands/pin.test.d.ts +6 -0
  37. package/dist/src/commands/pin.test.d.ts.map +1 -0
  38. package/dist/src/commands/pin.test.js +206 -0
  39. package/dist/src/commands/pin.test.js.map +1 -0
  40. package/dist/src/commands/sync.d.ts.map +1 -1
  41. package/dist/src/commands/sync.js +3 -2
  42. package/dist/src/commands/sync.js.map +1 -1
  43. package/dist/src/index.js +9 -1
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/templates/changelog.md.template.d.ts +8 -0
  46. package/dist/src/templates/changelog.md.template.d.ts.map +1 -0
  47. package/dist/src/templates/changelog.md.template.js +19 -0
  48. package/dist/src/templates/changelog.md.template.js.map +1 -0
  49. package/dist/src/templates/index.d.ts +1 -0
  50. package/dist/src/templates/index.d.ts.map +1 -1
  51. package/dist/src/templates/index.js +1 -0
  52. package/dist/src/templates/index.js.map +1 -1
  53. package/dist/src/templates/skill.md.template.d.ts +1 -1
  54. package/dist/src/templates/skill.md.template.d.ts.map +1 -1
  55. package/dist/src/templates/skill.md.template.js +1 -3
  56. package/dist/src/templates/skill.md.template.js.map +1 -1
  57. package/dist/src/utils/license-validation.js +1 -1
  58. package/dist/src/utils/license-validation.js.map +1 -1
  59. package/dist/src/utils/manifest.d.ts +46 -0
  60. package/dist/src/utils/manifest.d.ts.map +1 -0
  61. package/dist/src/utils/manifest.js +55 -0
  62. package/dist/src/utils/manifest.js.map +1 -0
  63. package/dist/src/utils/skill-name.d.ts +19 -0
  64. package/dist/src/utils/skill-name.d.ts.map +1 -0
  65. package/dist/src/utils/skill-name.js +26 -0
  66. package/dist/src/utils/skill-name.js.map +1 -0
  67. package/dist/src/utils/skills-directory.d.ts +12 -3
  68. package/dist/src/utils/skills-directory.d.ts.map +1 -1
  69. package/dist/src/utils/skills-directory.js +62 -7
  70. package/dist/src/utils/skills-directory.js.map +1 -1
  71. package/dist/tests/create.test.d.ts +5 -0
  72. package/dist/tests/create.test.d.ts.map +1 -0
  73. package/dist/tests/create.test.js +449 -0
  74. package/dist/tests/create.test.js.map +1 -0
  75. package/package.json +2 -2
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared skill name validation utilities.
3
+ *
4
+ * Used by both `skillsmith author init` and `skillsmith create` to enforce
5
+ * a consistent, registry-safe naming convention across all scaffolding paths.
6
+ */
7
+ /**
8
+ * Valid skill names: lowercase letters, digits, and hyphens only.
9
+ * Must start with a lowercase letter.
10
+ * Matches the Skillsmith registry slug format.
11
+ */
12
+ export declare const VALID_SKILL_NAME_RE: RegExp;
13
+ /**
14
+ * Validate a skill name against the canonical Skillsmith naming convention.
15
+ *
16
+ * @returns `true` if valid, or a string error message if invalid.
17
+ */
18
+ export declare function validateSkillName(name: string): true | string;
19
+ //# sourceMappingURL=skill-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-name.d.ts","sourceRoot":"","sources":["../../../src/utils/skill-name.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAsB,CAAA;AAEtD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAM7D"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared skill name validation utilities.
3
+ *
4
+ * Used by both `skillsmith author init` and `skillsmith create` to enforce
5
+ * a consistent, registry-safe naming convention across all scaffolding paths.
6
+ */
7
+ /**
8
+ * Valid skill names: lowercase letters, digits, and hyphens only.
9
+ * Must start with a lowercase letter.
10
+ * Matches the Skillsmith registry slug format.
11
+ */
12
+ export const VALID_SKILL_NAME_RE = /^[a-z][a-z0-9-]*$/;
13
+ /**
14
+ * Validate a skill name against the canonical Skillsmith naming convention.
15
+ *
16
+ * @returns `true` if valid, or a string error message if invalid.
17
+ */
18
+ export function validateSkillName(name) {
19
+ if (!name.trim())
20
+ return 'Skill name is required';
21
+ if (!VALID_SKILL_NAME_RE.test(name)) {
22
+ return 'Skill name must start with a lowercase letter and contain only lowercase letters, digits, and hyphens (e.g. my-skill)';
23
+ }
24
+ return true;
25
+ }
26
+ //# sourceMappingURL=skill-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-name.js","sourceRoot":"","sources":["../../../src/utils/skill-name.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,wBAAwB,CAAA;IACjD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,uHAAuH,CAAA;IAChI,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -12,14 +12,23 @@ export interface InstalledSkill {
12
12
  hasUpdates: boolean;
13
13
  }
14
14
  /**
15
- * Get skills from a specific directory
15
+ * Get skills from a specific directory.
16
+ *
17
+ * When dbPath is provided, opens the skill_versions table to determine
18
+ * whether a newer content hash has been recorded since the skill was installed.
19
+ * Falls back to hasUpdates: false when the database is unavailable.
20
+ *
21
+ * @param skillsDir Directory to scan for installed skills
22
+ * @param dbPath Optional path to the Skillsmith SQLite database
16
23
  */
17
- export declare function getSkillsFromDirectory(skillsDir: string): Promise<InstalledSkill[]>;
24
+ export declare function getSkillsFromDirectory(skillsDir: string, dbPath?: string): Promise<InstalledSkill[]>;
18
25
  /**
19
26
  * Get list of installed skills from both global (~/.claude/skills) and
20
27
  * local (.claude/skills) directories.
21
28
  *
22
29
  * SMI-1630: Local skills take precedence over global skills with the same name.
30
+ *
31
+ * @param dbPath Optional path to the Skillsmith SQLite database for update detection
23
32
  */
24
- export declare function getInstalledSkills(): Promise<InstalledSkill[]>;
33
+ export declare function getInstalledSkills(dbPath?: string): Promise<InstalledSkill[]>;
25
34
  //# sourceMappingURL=skills-directory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills-directory.d.ts","sourceRoot":"","sources":["../../../src/utils/skills-directory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;CACpB;AAoBD;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAqDzF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAqBpE"}
1
+ {"version":3,"file":"skills-directory.d.ts","sourceRoot":"","sources":["../../../src/utils/skills-directory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAA;AAGzB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;CACpB;AAoBD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,EAAE,CAAC,CAgG3B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAsBnF"}
@@ -3,9 +3,11 @@
3
3
  * from the global and local ~/.claude/skills directories.
4
4
  */
5
5
  import { readdir, readFile, stat } from 'fs/promises';
6
+ import { createHash } from 'crypto';
6
7
  import { join } from 'path';
7
8
  import { homedir } from 'os';
8
- import { SkillParser } from '@skillsmith/core';
9
+ import { SkillParser, createDatabase, SkillVersionRepository, } from '@skillsmith/core';
10
+ import { DEFAULT_DB_PATH } from '../config.js';
9
11
  /**
10
12
  * SMI-1630: Search both global and local skill directories
11
13
  *
@@ -23,10 +25,31 @@ function getLocalSkillsDir() {
23
25
  return join(process.cwd(), '.claude', 'skills');
24
26
  }
25
27
  /**
26
- * Get skills from a specific directory
28
+ * Get skills from a specific directory.
29
+ *
30
+ * When dbPath is provided, opens the skill_versions table to determine
31
+ * whether a newer content hash has been recorded since the skill was installed.
32
+ * Falls back to hasUpdates: false when the database is unavailable.
33
+ *
34
+ * @param skillsDir Directory to scan for installed skills
35
+ * @param dbPath Optional path to the Skillsmith SQLite database
27
36
  */
28
- export async function getSkillsFromDirectory(skillsDir) {
37
+ export async function getSkillsFromDirectory(skillsDir, dbPath) {
29
38
  const skills = [];
39
+ // Open the version repository if a db path was provided
40
+ let versionRepo = null;
41
+ let dbConn = null;
42
+ if (dbPath) {
43
+ try {
44
+ dbConn = createDatabase(dbPath);
45
+ versionRepo = new SkillVersionRepository(dbConn);
46
+ }
47
+ catch {
48
+ // DB not available yet — fall back to hasUpdates: false
49
+ versionRepo = null;
50
+ dbConn = null;
51
+ }
52
+ }
30
53
  try {
31
54
  const entries = await readdir(skillsDir, { withFileTypes: true });
32
55
  for (const entry of entries) {
@@ -38,13 +61,39 @@ export async function getSkillsFromDirectory(skillsDir) {
38
61
  const content = await readFile(skillMdPath, 'utf-8');
39
62
  const parser = new SkillParser();
40
63
  const parsed = parser.parse(content);
64
+ // Determine hasUpdates by comparing the current SKILL.md hash to the
65
+ // most-recently recorded hash in skill_versions for this skill id.
66
+ let hasUpdates = false;
67
+ if (versionRepo && parsed) {
68
+ try {
69
+ const parsedAny = parsed;
70
+ const skillId = parsedAny['id'] ?? entry.name;
71
+ const latestVersion = await versionRepo.getLatestVersion(skillId);
72
+ if (latestVersion) {
73
+ const currentHash = createHash('sha256').update(content, 'utf8').digest('hex');
74
+ const storedHash = parsedAny['contentHash'] ??
75
+ parsedAny['originalContentHash'] ??
76
+ '';
77
+ // hasUpdates = latest recorded hash differs from what we have locally
78
+ hasUpdates = storedHash !== '' && latestVersion.content_hash !== storedHash;
79
+ // If we have no stored hash, compare against current content hash
80
+ if (!storedHash) {
81
+ hasUpdates = latestVersion.content_hash !== currentHash;
82
+ }
83
+ }
84
+ }
85
+ catch {
86
+ // Version check failed — safe to ignore, fall back to false
87
+ hasUpdates = false;
88
+ }
89
+ }
41
90
  skills.push({
42
91
  name: parsed?.name || entry.name,
43
92
  path: skillPath,
44
93
  version: parsed?.version || null,
45
94
  trustTier: parsed ? parser.inferTrustTier(parsed) : 'unknown',
46
95
  installDate: skillMdStat.mtime.toISOString().split('T')[0] || 'Unknown',
47
- hasUpdates: false, // Would check remote for updates
96
+ hasUpdates,
48
97
  });
49
98
  }
50
99
  catch (error) {
@@ -73,6 +122,9 @@ export async function getSkillsFromDirectory(skillsDir) {
73
122
  throw error;
74
123
  }
75
124
  }
125
+ finally {
126
+ dbConn?.close();
127
+ }
76
128
  return skills;
77
129
  }
78
130
  /**
@@ -80,12 +132,15 @@ export async function getSkillsFromDirectory(skillsDir) {
80
132
  * local (.claude/skills) directories.
81
133
  *
82
134
  * SMI-1630: Local skills take precedence over global skills with the same name.
135
+ *
136
+ * @param dbPath Optional path to the Skillsmith SQLite database for update detection
83
137
  */
84
- export async function getInstalledSkills() {
138
+ export async function getInstalledSkills(dbPath) {
139
+ const resolvedDbPath = dbPath ?? DEFAULT_DB_PATH;
85
140
  // Get skills from both directories
86
141
  const [globalSkills, localSkills] = await Promise.all([
87
- getSkillsFromDirectory(GLOBAL_SKILLS_DIR),
88
- getSkillsFromDirectory(getLocalSkillsDir()),
142
+ getSkillsFromDirectory(GLOBAL_SKILLS_DIR, resolvedDbPath),
143
+ getSkillsFromDirectory(getLocalSkillsDir(), resolvedDbPath),
89
144
  ]);
90
145
  // Create a map for deduplication, local skills take precedence
91
146
  const skillMap = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"skills-directory.js","sourceRoot":"","sources":["../../../src/utils/skills-directory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills-directory.js","sourceRoot":"","sources":["../../../src/utils/skills-directory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * SMI-3083: skillsmith create command tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=create.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.test.d.ts","sourceRoot":"","sources":["../../tests/create.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}