@codemcp/agentskills-cli 0.0.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.
Files changed (46) hide show
  1. package/LICENSE +19 -0
  2. package/dist/__tests__/cli.test.d.ts +2 -0
  3. package/dist/__tests__/cli.test.d.ts.map +1 -0
  4. package/dist/__tests__/cli.test.js +210 -0
  5. package/dist/__tests__/cli.test.js.map +1 -0
  6. package/dist/cli.d.ts +6 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +66 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/__tests__/add.test.d.ts +2 -0
  11. package/dist/commands/__tests__/add.test.d.ts.map +1 -0
  12. package/dist/commands/__tests__/add.test.js +363 -0
  13. package/dist/commands/__tests__/add.test.js.map +1 -0
  14. package/dist/commands/__tests__/install.test.d.ts +2 -0
  15. package/dist/commands/__tests__/install.test.d.ts.map +1 -0
  16. package/dist/commands/__tests__/install.test.js +587 -0
  17. package/dist/commands/__tests__/install.test.js.map +1 -0
  18. package/dist/commands/__tests__/list.test.d.ts +2 -0
  19. package/dist/commands/__tests__/list.test.d.ts.map +1 -0
  20. package/dist/commands/__tests__/list.test.js +69 -0
  21. package/dist/commands/__tests__/list.test.js.map +1 -0
  22. package/dist/commands/__tests__/validate.test.d.ts +2 -0
  23. package/dist/commands/__tests__/validate.test.d.ts.map +1 -0
  24. package/dist/commands/__tests__/validate.test.js +858 -0
  25. package/dist/commands/__tests__/validate.test.js.map +1 -0
  26. package/dist/commands/add.d.ts +28 -0
  27. package/dist/commands/add.d.ts.map +1 -0
  28. package/dist/commands/add.js +65 -0
  29. package/dist/commands/add.js.map +1 -0
  30. package/dist/commands/install.d.ts +16 -0
  31. package/dist/commands/install.d.ts.map +1 -0
  32. package/dist/commands/install.js +125 -0
  33. package/dist/commands/install.js.map +1 -0
  34. package/dist/commands/list.d.ts +4 -0
  35. package/dist/commands/list.d.ts.map +1 -0
  36. package/dist/commands/list.js +41 -0
  37. package/dist/commands/list.js.map +1 -0
  38. package/dist/commands/validate.d.ts +26 -0
  39. package/dist/commands/validate.d.ts.map +1 -0
  40. package/dist/commands/validate.js +244 -0
  41. package/dist/commands/validate.js.map +1 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +10 -0
  45. package/dist/index.js.map +1 -0
  46. package/package.json +57 -0
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Validate command implementation
3
+ *
4
+ * This command validates Agent Skills definitions either individually or in bulk.
5
+ * It uses @codemcp/agentskills-core's SkillParser and SkillValidator to check skills
6
+ * for correctness and compliance with the Agent Skills standard.
7
+ *
8
+ * Usage:
9
+ * agentskills validate [path] [options]
10
+ *
11
+ * Options:
12
+ * --strict Enable strict validation (treat warnings as errors)
13
+ * --fix Auto-fix issues if possible (not yet implemented)
14
+ */
15
+ import { parseSkill, validateSkill } from "@codemcp/agentskills-core";
16
+ import { promises as fs } from "fs";
17
+ import { join } from "path";
18
+ import chalk from "chalk";
19
+ /**
20
+ * Validate command entry point
21
+ *
22
+ * @param path - Optional path to skill or directory to validate
23
+ * @param options - Command options
24
+ */
25
+ export async function validateCommand(path, options) {
26
+ try {
27
+ // Show --fix message if flag is present
28
+ if (options.fix) {
29
+ console.log(chalk.yellow("Auto-fix is not implemented yet"));
30
+ console.log("");
31
+ }
32
+ // Resolve paths to validate
33
+ const skillPaths = await resolvePaths(path);
34
+ if (skillPaths.length === 0) {
35
+ console.log("No skills found");
36
+ process.exit(0);
37
+ return;
38
+ }
39
+ // Validate all skills
40
+ const results = [];
41
+ for (const skillPath of skillPaths) {
42
+ const result = await validateSingleSkill(skillPath, options);
43
+ results.push(result);
44
+ }
45
+ // Display results
46
+ let hasErrors = false;
47
+ for (const result of results) {
48
+ if (result.success) {
49
+ formatSuccess(result.name, result.warnings);
50
+ }
51
+ else {
52
+ formatError(result.name, result.errors);
53
+ hasErrors = true;
54
+ }
55
+ }
56
+ // Display summary if multiple skills
57
+ if (skillPaths.length > 1) {
58
+ const valid = results.filter((r) => r.success).length;
59
+ const invalid = results.length - valid;
60
+ formatSummary(results.length, valid, invalid);
61
+ }
62
+ // Exit with appropriate code
63
+ process.exit(hasErrors ? 1 : 0);
64
+ }
65
+ catch (error) {
66
+ // Handle unexpected errors
67
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
68
+ console.error(chalk.red(`Error: ${errorMessage}`));
69
+ process.exit(1);
70
+ }
71
+ }
72
+ /**
73
+ * Resolve paths to validate based on input
74
+ */
75
+ async function resolvePaths(path) {
76
+ if (!path) {
77
+ // No path provided - would normally load from config
78
+ // For now, return empty array
79
+ return [];
80
+ }
81
+ try {
82
+ const stat = await fs.stat(path);
83
+ if (stat.isFile()) {
84
+ // Direct SKILL.md file
85
+ if (path.endsWith("SKILL.md")) {
86
+ return [path];
87
+ }
88
+ else {
89
+ throw new Error(`Path not found: ${path}`);
90
+ }
91
+ }
92
+ else if (stat.isDirectory()) {
93
+ // Check if directory contains SKILL.md
94
+ const skillPath = join(path, "SKILL.md");
95
+ try {
96
+ await fs.access(skillPath);
97
+ // Single skill directory
98
+ return [skillPath];
99
+ }
100
+ catch {
101
+ // Not a single skill dir, search for all skills
102
+ const skills = await findAllSkills(path);
103
+ if (skills.length === 0) {
104
+ // Check if this looks like it should have been a single skill directory
105
+ const entries = await fs.readdir(path);
106
+ // If directory has exactly 1 file and it's a markdown file, likely meant to be a skill dir
107
+ if (entries.length === 1 && entries[0].endsWith(".md")) {
108
+ // Single markdown file that's not SKILL.md - probably meant to be a skill
109
+ throw new Error(`No SKILL.md found in ${path}`);
110
+ }
111
+ // Otherwise, just no skills found (return empty array, will show message)
112
+ }
113
+ return skills;
114
+ }
115
+ }
116
+ }
117
+ catch (error) {
118
+ const errorCode = error && typeof error === "object" && "code" in error
119
+ ? error.code
120
+ : undefined;
121
+ if (errorCode === "ENOENT") {
122
+ throw new Error(`Path not found: ${path}`);
123
+ }
124
+ else if (errorCode === "EACCES") {
125
+ throw new Error(`Permission denied: ${path}`);
126
+ }
127
+ throw error;
128
+ }
129
+ return [];
130
+ }
131
+ /**
132
+ * Recursively find all SKILL.md files in a directory
133
+ */
134
+ async function findAllSkills(dir) {
135
+ const skills = [];
136
+ async function walk(currentDir) {
137
+ try {
138
+ const entries = await fs.readdir(currentDir, { withFileTypes: true });
139
+ for (const entry of entries) {
140
+ const fullPath = join(currentDir, entry.name);
141
+ if (entry.isDirectory()) {
142
+ // Recurse into subdirectories
143
+ await walk(fullPath);
144
+ }
145
+ else if (entry.name === "SKILL.md") {
146
+ skills.push(fullPath);
147
+ }
148
+ }
149
+ }
150
+ catch (error) {
151
+ const errorCode = error && typeof error === "object" && "code" in error
152
+ ? error.code
153
+ : undefined;
154
+ if (errorCode === "EACCES") {
155
+ throw new Error(`Permission denied: ${currentDir}`);
156
+ }
157
+ throw error;
158
+ }
159
+ }
160
+ await walk(dir);
161
+ return skills;
162
+ }
163
+ /**
164
+ * Validate a single skill file
165
+ */
166
+ async function validateSingleSkill(skillPath, options) {
167
+ try {
168
+ // Check if file exists and has SKILL.md
169
+ if (!skillPath.endsWith("SKILL.md")) {
170
+ return {
171
+ success: false,
172
+ errors: [`No SKILL.md found in ${skillPath}`],
173
+ warnings: []
174
+ };
175
+ }
176
+ // Parse the skill
177
+ const parseResult = await parseSkill(skillPath);
178
+ if (!parseResult.success) {
179
+ // Parse error
180
+ return {
181
+ success: false,
182
+ errors: [parseResult.error.message],
183
+ warnings: []
184
+ };
185
+ }
186
+ // Validate the skill
187
+ const validationResult = validateSkill(parseResult.skill);
188
+ const errors = validationResult.errors.map((e) => e.message);
189
+ const warnings = validationResult.warnings.map((w) => w.message);
190
+ // In strict mode, warnings become errors
191
+ if (options.strict && warnings.length > 0) {
192
+ return {
193
+ success: false,
194
+ name: parseResult.skill.metadata.name,
195
+ errors: [...errors, ...warnings],
196
+ warnings: []
197
+ };
198
+ }
199
+ return {
200
+ success: validationResult.valid,
201
+ name: parseResult.skill.metadata.name,
202
+ errors,
203
+ warnings
204
+ };
205
+ }
206
+ catch (error) {
207
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
208
+ return {
209
+ success: false,
210
+ errors: [errorMessage],
211
+ warnings: []
212
+ };
213
+ }
214
+ }
215
+ /**
216
+ * Format success message with optional warnings
217
+ */
218
+ function formatSuccess(skillName, warnings) {
219
+ console.log(chalk.green(`✓ Skill '${skillName}' is valid`));
220
+ if (warnings.length > 0) {
221
+ warnings.forEach((warning) => {
222
+ console.log(chalk.yellow(` ⚠ Warning: ${warning}`));
223
+ });
224
+ }
225
+ }
226
+ /**
227
+ * Format error message with details
228
+ */
229
+ function formatError(skillName, errors) {
230
+ const name = skillName || "unknown";
231
+ console.error(chalk.red(`✗ Skill '${name}' failed validation:`));
232
+ errors.forEach((error) => {
233
+ console.error(chalk.red(` - ${error}`));
234
+ });
235
+ }
236
+ /**
237
+ * Format summary statistics
238
+ */
239
+ function formatSummary(total, valid, invalid) {
240
+ const skillWord = total === 1 ? "skill" : "skills";
241
+ console.log("");
242
+ console.log(`Validated ${total} ${skillWord}: ${valid} valid, ${invalid} invalid`);
243
+ }
244
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ import { createCLI } from "./cli.js";
2
+ const program = createCLI();
3
+ try {
4
+ await program.parseAsync(process.argv);
5
+ }
6
+ catch (error) {
7
+ console.error("Error:", error);
8
+ process.exit(1);
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;AAE5B,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@codemcp/agentskills-cli",
3
+ "version": "0.0.5",
4
+ "description": "Command-line interface for Agent Skills management",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "agentskills": "./dist/index.js"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "dependencies": {
21
+ "chalk": "^5.3.0",
22
+ "commander": "^12.0.0",
23
+ "ora": "^8.0.1",
24
+ "@codemcp/agentskills-core": "0.0.5"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "^22.10.7",
28
+ "@typescript-eslint/eslint-plugin": "^8.21.0",
29
+ "@typescript-eslint/parser": "^8.21.0",
30
+ "eslint": "^9.18.0",
31
+ "eslint-config-prettier": "^10.0.1",
32
+ "prettier": "^3.4.2",
33
+ "rimraf": "^6.0.1",
34
+ "typescript": "^5.7.3",
35
+ "typescript-eslint": "8.21.0",
36
+ "vitest": "^3.0.3"
37
+ },
38
+ "keywords": [
39
+ "agentskills",
40
+ "cli",
41
+ "skills-management"
42
+ ],
43
+ "author": "Oliver Jägle <github@beimir.net>",
44
+ "license": "MIT",
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.build.json",
47
+ "dev": "tsc -p tsconfig.build.json --watch",
48
+ "clean:build": "rimraf dist",
49
+ "lint": "eslint .",
50
+ "lint:fix": "eslint . --fix",
51
+ "format": "prettier --check .",
52
+ "format:fix": "prettier --write .",
53
+ "test": "vitest run",
54
+ "test:watch": "vitest",
55
+ "typecheck": "tsc --noEmit"
56
+ }
57
+ }