claude-skills-cli 0.0.14 → 0.0.16
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/README.md +15 -4
- package/dist/commands/validate.js +4 -2
- package/dist/commands/validate.js.map +1 -1
- package/dist/core/validator.js +19 -4
- package/dist/core/validator.js.map +1 -1
- package/dist/help.js +302 -0
- package/dist/help.js.map +1 -0
- package/dist/index.js +35 -48
- package/dist/index.js.map +1 -1
- package/dist/utils/output.js +33 -21
- package/dist/utils/output.js.map +1 -1
- package/dist/validators/content-validator.js +29 -17
- package/dist/validators/content-validator.js.map +1 -1
- package/dist/validators/references-validator.js +15 -2
- package/dist/validators/references-validator.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -53,10 +53,20 @@ Use `--with-examples` for example files.
|
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
pnpx claude-skills-cli validate .claude/skills/my-skill
|
|
56
|
+
pnpx claude-skills-cli validate .claude/skills/my-skill --lenient
|
|
57
|
+
pnpx claude-skills-cli validate .claude/skills/my-skill --loose
|
|
56
58
|
pnpx claude-skills-cli validate .claude/skills/my-skill --strict
|
|
57
59
|
pnpx claude-skills-cli validate .claude/skills/my-skill --format json
|
|
58
60
|
```
|
|
59
61
|
|
|
62
|
+
**Validation Modes:**
|
|
63
|
+
|
|
64
|
+
| Mode | Max Lines | Use Case |
|
|
65
|
+
| ----------- | --------- | ------------------------- |
|
|
66
|
+
| (default) | 50 | Strict best practices |
|
|
67
|
+
| `--lenient` | 150 | More flexibility |
|
|
68
|
+
| `--loose` | 500 | Anthropic official limits |
|
|
69
|
+
|
|
60
70
|
Comprehensive validation including:
|
|
61
71
|
|
|
62
72
|
**Structure & Format:**
|
|
@@ -74,8 +84,9 @@ Comprehensive validation including:
|
|
|
74
84
|
|
|
75
85
|
**Level 2 (SKILL.md Body):**
|
|
76
86
|
|
|
77
|
-
- Line count (
|
|
78
|
-
|
|
87
|
+
- Line count (50 max default, use `--lenient` for 150, `--loose`
|
|
88
|
+
for 500)
|
|
89
|
+
- Word count (<1000 max default)
|
|
79
90
|
- Token estimates (<6500 budget)
|
|
80
91
|
- Code blocks (1-2 optimal)
|
|
81
92
|
- Sections (3-5 recommended)
|
|
@@ -87,8 +98,8 @@ Comprehensive validation including:
|
|
|
87
98
|
- Nesting depth analysis
|
|
88
99
|
- Progressive disclosure structure
|
|
89
100
|
|
|
90
|
-
Use `--strict` to fail on warnings, `--
|
|
91
|
-
use.
|
|
101
|
+
Use `--strict` to fail on warnings, `--lenient`/`--loose` for relaxed
|
|
102
|
+
limits, `--format json` for programmatic use.
|
|
92
103
|
|
|
93
104
|
### doctor
|
|
94
105
|
|
|
@@ -2,11 +2,13 @@ import { basename } from 'node:path';
|
|
|
2
2
|
import { SkillValidator } from '../core/validator.js';
|
|
3
3
|
import { display_validation_stats, error, info, success, } from '../utils/output.js';
|
|
4
4
|
export function validate_command(options) {
|
|
5
|
-
const { skill_path, strict, format = 'text' } = options;
|
|
5
|
+
const { skill_path, strict, format = 'text', lenient = false, loose = false, } = options;
|
|
6
6
|
// Normalize path by removing trailing slashes before extracting basename
|
|
7
7
|
const normalized_path = skill_path.replace(/\/+$/, '');
|
|
8
8
|
const skill_name = basename(normalized_path);
|
|
9
|
-
|
|
9
|
+
// Determine validation mode: loose > lenient > strict (default)
|
|
10
|
+
const mode = loose ? 'loose' : lenient ? 'lenient' : 'strict';
|
|
11
|
+
const validator = new SkillValidator(skill_path, { mode });
|
|
10
12
|
const result = validator.validate_all();
|
|
11
13
|
// JSON output
|
|
12
14
|
if (format === 'json') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EACN,wBAAwB,EACxB,KAAK,EACL,IAAI,EACJ,OAAO,GACP,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACxD,MAAM,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/core/validator.js
CHANGED
|
@@ -9,6 +9,7 @@ import { extract_frontmatter, validate_frontmatter_structure, validate_hard_limi
|
|
|
9
9
|
import { validate_references } from '../validators/references-validator.js';
|
|
10
10
|
export class SkillValidator {
|
|
11
11
|
skill_path;
|
|
12
|
+
options;
|
|
12
13
|
errors = [];
|
|
13
14
|
warnings = [];
|
|
14
15
|
stats = {
|
|
@@ -79,8 +80,9 @@ export class SkillValidator {
|
|
|
79
80
|
},
|
|
80
81
|
},
|
|
81
82
|
};
|
|
82
|
-
constructor(skill_path) {
|
|
83
|
+
constructor(skill_path, options = {}) {
|
|
83
84
|
this.skill_path = skill_path;
|
|
85
|
+
this.options = options;
|
|
84
86
|
}
|
|
85
87
|
error(msg) {
|
|
86
88
|
this.errors.push(`❌ ${msg}`);
|
|
@@ -170,7 +172,9 @@ export class SkillValidator {
|
|
|
170
172
|
alignment_result.alignment;
|
|
171
173
|
alignment_result.warnings.forEach((warn) => this.warning(warn.message));
|
|
172
174
|
// Validate content (progressive disclosure)
|
|
173
|
-
const content_validation = validate_content(body
|
|
175
|
+
const content_validation = validate_content(body, {
|
|
176
|
+
mode: this.options.mode,
|
|
177
|
+
});
|
|
174
178
|
this.stats.word_count = content_validation.stats.word_count;
|
|
175
179
|
this.stats.estimated_tokens =
|
|
176
180
|
content_validation.stats.estimated_tokens;
|
|
@@ -209,13 +213,24 @@ export class SkillValidator {
|
|
|
209
213
|
const assets_result = validate_assets(this.skill_path);
|
|
210
214
|
assets_result.warnings.forEach((warn) => this.warning(warn.message));
|
|
211
215
|
// Populate progressive disclosure structured validation
|
|
216
|
+
// Use mode-specific limits: strict (50), lenient (150), loose (500)
|
|
217
|
+
const line_limit = this.options.mode === 'loose'
|
|
218
|
+
? 500
|
|
219
|
+
: this.options.mode === 'lenient'
|
|
220
|
+
? 150
|
|
221
|
+
: 50;
|
|
222
|
+
const word_limit = this.options.mode === 'loose'
|
|
223
|
+
? 5000
|
|
224
|
+
: this.options.mode === 'lenient'
|
|
225
|
+
? 2000
|
|
226
|
+
: 1000;
|
|
212
227
|
this.structured_validation.progressive_disclosure = {
|
|
213
228
|
skill_md_size: {
|
|
214
229
|
lines: this.stats.line_count,
|
|
215
230
|
words: this.stats.word_count,
|
|
216
231
|
tokens: this.stats.estimated_tokens,
|
|
217
|
-
exceeds_line_limit: this.stats.line_count >
|
|
218
|
-
exceeds_word_limit: this.stats.word_count >
|
|
232
|
+
exceeds_line_limit: this.stats.line_count > line_limit,
|
|
233
|
+
exceeds_word_limit: this.stats.word_count > word_limit,
|
|
219
234
|
},
|
|
220
235
|
references: refs_result.validation,
|
|
221
236
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,GAC5B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACN,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GAChB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACN,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/help.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
// Help data structures and formatting for commands
|
|
2
|
+
export const INIT_HELP = {
|
|
3
|
+
command: 'init',
|
|
4
|
+
description: 'Create a new skill',
|
|
5
|
+
usage: 'claude-skills-cli init [options]',
|
|
6
|
+
options: [
|
|
7
|
+
{
|
|
8
|
+
flag: '--name',
|
|
9
|
+
type: 'string',
|
|
10
|
+
required: true,
|
|
11
|
+
description: 'Skill name (kebab-case, lowercase)',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
flag: '--description',
|
|
15
|
+
type: 'string',
|
|
16
|
+
required: true,
|
|
17
|
+
description: 'Brief description with trigger keywords',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
flag: '--path',
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Custom path (alternative to --name)',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
flag: '--with-examples',
|
|
26
|
+
type: 'boolean',
|
|
27
|
+
description: 'Include example files (scripts/, assets/)',
|
|
28
|
+
},
|
|
29
|
+
{ flag: '--help, -h', description: 'Show this help' },
|
|
30
|
+
],
|
|
31
|
+
examples: [
|
|
32
|
+
'claude-skills-cli init --name my-skill --description "Brief description"',
|
|
33
|
+
'claude-skills-cli init --name my-skill --description "..." --with-examples',
|
|
34
|
+
'claude-skills-cli init --path /custom/path/my-skill --description "..."',
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
export const INSTALL_HELP = {
|
|
38
|
+
command: 'install',
|
|
39
|
+
description: 'Install a bundled skill',
|
|
40
|
+
usage: 'claude-skills-cli install <skill-name> [options]',
|
|
41
|
+
options: [
|
|
42
|
+
{
|
|
43
|
+
flag: '<skill-name>',
|
|
44
|
+
required: true,
|
|
45
|
+
description: 'Name of bundled skill (e.g., skill-creator)',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
flag: '--force',
|
|
49
|
+
type: 'boolean',
|
|
50
|
+
description: 'Replace existing skill without prompting',
|
|
51
|
+
},
|
|
52
|
+
{ flag: '--help, -h', description: 'Show this help' },
|
|
53
|
+
],
|
|
54
|
+
examples: [
|
|
55
|
+
'claude-skills-cli install skill-creator',
|
|
56
|
+
'claude-skills-cli install skill-creator --force',
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
export const VALIDATE_HELP = {
|
|
60
|
+
command: 'validate',
|
|
61
|
+
description: 'Validate a skill',
|
|
62
|
+
usage: 'claude-skills-cli validate <skill-path> [options]',
|
|
63
|
+
options: [
|
|
64
|
+
{
|
|
65
|
+
flag: '<skill-path>',
|
|
66
|
+
required: true,
|
|
67
|
+
description: 'Path to skill directory',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
flag: '--format',
|
|
71
|
+
type: 'json|text',
|
|
72
|
+
description: 'Output format (default: text)',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
flag: '--strict',
|
|
76
|
+
type: 'boolean',
|
|
77
|
+
description: 'Fail validation if warnings present',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
flag: '--lenient',
|
|
81
|
+
type: 'boolean',
|
|
82
|
+
description: 'Use relaxed limits (150 lines max)',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
flag: '--loose',
|
|
86
|
+
type: 'boolean',
|
|
87
|
+
description: 'Use Anthropic official limits (500 lines max)',
|
|
88
|
+
},
|
|
89
|
+
{ flag: '--help, -h', description: 'Show this help' },
|
|
90
|
+
],
|
|
91
|
+
examples: [
|
|
92
|
+
'claude-skills-cli validate .claude/skills/my-skill',
|
|
93
|
+
'claude-skills-cli validate .claude/skills/my-skill --lenient',
|
|
94
|
+
'claude-skills-cli validate .claude/skills/my-skill --loose',
|
|
95
|
+
'claude-skills-cli validate .claude/skills/my-skill --format json',
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
export const DOCTOR_HELP = {
|
|
99
|
+
command: 'doctor',
|
|
100
|
+
description: 'Fix common skill issues automatically',
|
|
101
|
+
usage: 'claude-skills-cli doctor <skill-path>',
|
|
102
|
+
options: [
|
|
103
|
+
{
|
|
104
|
+
flag: '<skill-path>',
|
|
105
|
+
required: true,
|
|
106
|
+
description: 'Path to skill directory',
|
|
107
|
+
},
|
|
108
|
+
{ flag: '--help, -h', description: 'Show this help' },
|
|
109
|
+
],
|
|
110
|
+
examples: ['claude-skills-cli doctor .claude/skills/my-skill'],
|
|
111
|
+
};
|
|
112
|
+
export const PACKAGE_HELP = {
|
|
113
|
+
command: 'package',
|
|
114
|
+
description: 'Package a skill to zip',
|
|
115
|
+
usage: 'claude-skills-cli package <skill-path> [options]',
|
|
116
|
+
options: [
|
|
117
|
+
{
|
|
118
|
+
flag: '<skill-path>',
|
|
119
|
+
required: true,
|
|
120
|
+
description: 'Path to skill directory',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
flag: '--output',
|
|
124
|
+
type: 'string',
|
|
125
|
+
description: 'Output path for zip file',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
flag: '--skip-validation',
|
|
129
|
+
type: 'boolean',
|
|
130
|
+
description: 'Skip validation before packaging',
|
|
131
|
+
},
|
|
132
|
+
{ flag: '--help, -h', description: 'Show this help' },
|
|
133
|
+
],
|
|
134
|
+
examples: [
|
|
135
|
+
'claude-skills-cli package .claude/skills/my-skill',
|
|
136
|
+
'claude-skills-cli package .claude/skills/my-skill --output my-skill.zip',
|
|
137
|
+
],
|
|
138
|
+
};
|
|
139
|
+
export const STATS_HELP = {
|
|
140
|
+
command: 'stats',
|
|
141
|
+
description: 'Show overview of all skills in a directory',
|
|
142
|
+
usage: 'claude-skills-cli stats [directory]',
|
|
143
|
+
options: [
|
|
144
|
+
{
|
|
145
|
+
flag: '[directory]',
|
|
146
|
+
description: 'Directory containing skills (default: .claude/skills)',
|
|
147
|
+
},
|
|
148
|
+
{ flag: '--help, -h', description: 'Show this help' },
|
|
149
|
+
],
|
|
150
|
+
examples: [
|
|
151
|
+
'claude-skills-cli stats',
|
|
152
|
+
'claude-skills-cli stats .claude/skills',
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
export const ADD_HOOK_HELP = {
|
|
156
|
+
command: 'add-hook',
|
|
157
|
+
description: 'Add skill activation hook to .claude/settings.json',
|
|
158
|
+
usage: 'claude-skills-cli add-hook [options]',
|
|
159
|
+
options: [
|
|
160
|
+
{
|
|
161
|
+
flag: '--type',
|
|
162
|
+
type: 'forced-eval|llm-eval|simple-script|simple-inline',
|
|
163
|
+
description: 'Hook type (default: forced-eval)',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
flag: '--project',
|
|
167
|
+
type: 'boolean',
|
|
168
|
+
description: 'Install in project .claude/settings.json',
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
flag: '--local',
|
|
172
|
+
type: 'boolean',
|
|
173
|
+
description: 'Install in project .claude/settings.local.json',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
flag: '--force',
|
|
177
|
+
type: 'boolean',
|
|
178
|
+
description: 'Replace existing hook without prompting',
|
|
179
|
+
},
|
|
180
|
+
{ flag: '--help, -h', description: 'Show this help' },
|
|
181
|
+
],
|
|
182
|
+
examples: [
|
|
183
|
+
'claude-skills-cli add-hook',
|
|
184
|
+
'claude-skills-cli add-hook --type llm-eval',
|
|
185
|
+
'claude-skills-cli add-hook --project',
|
|
186
|
+
'claude-skills-cli add-hook --type forced-eval --force',
|
|
187
|
+
],
|
|
188
|
+
};
|
|
189
|
+
export const MAIN_HELP = {
|
|
190
|
+
name: 'claude-skills-cli',
|
|
191
|
+
description: 'CLI toolkit for creating Claude Agent Skills',
|
|
192
|
+
usage: 'claude-skills-cli <command> [options]',
|
|
193
|
+
commands: [
|
|
194
|
+
{ command: 'init', description: 'Create a new skill' },
|
|
195
|
+
{
|
|
196
|
+
command: 'install',
|
|
197
|
+
description: 'Install a bundled skill (e.g., skill-creator)',
|
|
198
|
+
},
|
|
199
|
+
{ command: 'validate', description: 'Validate a skill' },
|
|
200
|
+
{
|
|
201
|
+
command: 'doctor',
|
|
202
|
+
description: 'Fix common skill issues automatically',
|
|
203
|
+
},
|
|
204
|
+
{ command: 'package', description: 'Package a skill to zip' },
|
|
205
|
+
{
|
|
206
|
+
command: 'stats',
|
|
207
|
+
description: 'Show overview of all skills in a directory',
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
command: 'add-hook',
|
|
211
|
+
description: 'Add skill activation hook to .claude/settings.json',
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
globalOptions: [
|
|
215
|
+
{ flag: '--help, -h', description: 'Show help' },
|
|
216
|
+
{ flag: '--version, -v', description: 'Show version' },
|
|
217
|
+
{
|
|
218
|
+
flag: '--format',
|
|
219
|
+
type: 'text|json',
|
|
220
|
+
description: 'Output format for help (default: text)',
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
examples: [
|
|
224
|
+
'claude-skills-cli init --name my-skill --description "Description"',
|
|
225
|
+
'claude-skills-cli validate .claude/skills/my-skill',
|
|
226
|
+
'claude-skills-cli add-hook',
|
|
227
|
+
'claude-skills-cli --help --format json',
|
|
228
|
+
],
|
|
229
|
+
notes: [
|
|
230
|
+
'IMPORTANT FOR LLMs:',
|
|
231
|
+
' ALWAYS run validate after creating or editing a skill:',
|
|
232
|
+
' claude-skills-cli validate <skill-path>',
|
|
233
|
+
' Skills MUST pass validation before use.',
|
|
234
|
+
' Fix all errors immediately. Address warnings promptly.',
|
|
235
|
+
],
|
|
236
|
+
};
|
|
237
|
+
export function show_command_help(help, format) {
|
|
238
|
+
if (format === 'json') {
|
|
239
|
+
console.log(JSON.stringify(help, null, 2));
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
// Text format (human-friendly)
|
|
243
|
+
console.log(`claude-skills-cli ${help.command} - ${help.description}\n`);
|
|
244
|
+
console.log('Usage:');
|
|
245
|
+
console.log(` ${help.usage}\n`);
|
|
246
|
+
if (help.options.length > 0) {
|
|
247
|
+
console.log('Options:');
|
|
248
|
+
for (const opt of help.options) {
|
|
249
|
+
const flag_part = opt.flag.padEnd(20);
|
|
250
|
+
const type_part = opt.type ? `<${opt.type}>`.padEnd(15) : '';
|
|
251
|
+
const req_part = opt.required ? '[required]'.padEnd(12) : '';
|
|
252
|
+
console.log(` ${flag_part}${type_part}${opt.description}`);
|
|
253
|
+
}
|
|
254
|
+
console.log('');
|
|
255
|
+
}
|
|
256
|
+
if (help.examples.length > 0) {
|
|
257
|
+
console.log('Examples:');
|
|
258
|
+
for (const example of help.examples) {
|
|
259
|
+
console.log(` ${example}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
export function show_main_help(format) {
|
|
264
|
+
if (format === 'json') {
|
|
265
|
+
console.log(JSON.stringify(MAIN_HELP, null, 2));
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
// Text format (human-friendly)
|
|
269
|
+
console.log(`${MAIN_HELP.name} - ${MAIN_HELP.description}\n`);
|
|
270
|
+
console.log('Usage:');
|
|
271
|
+
console.log(` ${MAIN_HELP.usage}\n`);
|
|
272
|
+
if (MAIN_HELP.commands.length > 0) {
|
|
273
|
+
console.log('Commands:');
|
|
274
|
+
for (const cmd of MAIN_HELP.commands) {
|
|
275
|
+
const cmd_part = cmd.command.padEnd(12);
|
|
276
|
+
console.log(` ${cmd_part}${cmd.description}`);
|
|
277
|
+
}
|
|
278
|
+
console.log('');
|
|
279
|
+
}
|
|
280
|
+
if (MAIN_HELP.globalOptions.length > 0) {
|
|
281
|
+
console.log('Global Options:');
|
|
282
|
+
for (const opt of MAIN_HELP.globalOptions) {
|
|
283
|
+
const flag_part = opt.flag.padEnd(20);
|
|
284
|
+
const type_part = opt.type ? `<${opt.type}>`.padEnd(15) : '';
|
|
285
|
+
console.log(` ${flag_part}${type_part}${opt.description}`);
|
|
286
|
+
}
|
|
287
|
+
console.log('');
|
|
288
|
+
}
|
|
289
|
+
if (MAIN_HELP.examples.length > 0) {
|
|
290
|
+
console.log('Examples:');
|
|
291
|
+
for (const example of MAIN_HELP.examples) {
|
|
292
|
+
console.log(` ${example}`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (MAIN_HELP.notes && MAIN_HELP.notes.length > 0) {
|
|
296
|
+
console.log('');
|
|
297
|
+
for (const note of MAIN_HELP.notes) {
|
|
298
|
+
console.log(note);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,53 +6,9 @@ import { install_command } from './commands/install.js';
|
|
|
6
6
|
import { package_command } from './commands/package.js';
|
|
7
7
|
import { stats_command } from './commands/stats.js';
|
|
8
8
|
import { validate_command } from './commands/validate.js';
|
|
9
|
+
import { ADD_HOOK_HELP, DOCTOR_HELP, INIT_HELP, INSTALL_HELP, PACKAGE_HELP, STATS_HELP, VALIDATE_HELP, show_command_help, show_main_help, } from './help.js';
|
|
9
10
|
const args = process.argv.slice(2);
|
|
10
11
|
const command = args[0];
|
|
11
|
-
function show_help() {
|
|
12
|
-
console.log('claude-skills-cli - CLI toolkit for creating Claude Agent Skills\n');
|
|
13
|
-
console.log('Usage:');
|
|
14
|
-
console.log(' claude-skills-cli <command> [options]\n');
|
|
15
|
-
console.log('Commands:');
|
|
16
|
-
console.log(' init Create a new skill');
|
|
17
|
-
console.log(' install Install a bundled skill (e.g., skill-creator)');
|
|
18
|
-
console.log(' validate Validate a skill');
|
|
19
|
-
console.log(' doctor Fix common skill issues automatically');
|
|
20
|
-
console.log(' package Package a skill to zip');
|
|
21
|
-
console.log(' stats Show overview of all skills in a directory');
|
|
22
|
-
console.log(' add-hook Add skill activation hook to .claude/settings.json\n');
|
|
23
|
-
console.log('Options:');
|
|
24
|
-
console.log(' --help, -h Show help');
|
|
25
|
-
console.log(' --version, -v Show version');
|
|
26
|
-
console.log(' --with-examples Include example files when creating skill');
|
|
27
|
-
console.log(' --format <type> Output format: text (default) or json');
|
|
28
|
-
console.log(' --strict Fail validation if warnings present');
|
|
29
|
-
console.log(' --force Replace existing hook without prompting\n');
|
|
30
|
-
console.log('Examples:');
|
|
31
|
-
console.log(' claude-skills-cli init --name my-skill --description "Description"');
|
|
32
|
-
console.log(' claude-skills-cli init --name my-skill --description "..." --with-examples');
|
|
33
|
-
console.log(' claude-skills-cli install skill-creator');
|
|
34
|
-
console.log(' claude-skills-cli validate .claude/skills/my-skill');
|
|
35
|
-
console.log(' claude-skills-cli validate .claude/skills/my-skill --format json');
|
|
36
|
-
console.log(' claude-skills-cli validate .claude/skills/my-skill --strict');
|
|
37
|
-
console.log(' claude-skills-cli doctor .claude/skills/my-skill');
|
|
38
|
-
console.log(' claude-skills-cli package .claude/skills/my-skill');
|
|
39
|
-
console.log(' claude-skills-cli stats .claude/skills');
|
|
40
|
-
console.log(' claude-skills-cli add-hook # Global, forced-eval (84%)');
|
|
41
|
-
console.log(' claude-skills-cli add-hook --type llm-eval # Global, LLM eval (80%)');
|
|
42
|
-
console.log(' claude-skills-cli add-hook --type forced-eval --project # Project, forced-eval');
|
|
43
|
-
console.log(' claude-skills-cli add-hook --type simple-script --local # Local, simple script');
|
|
44
|
-
console.log(' claude-skills-cli add-hook --type forced-eval --force # Replace existing hook');
|
|
45
|
-
console.log('\nHook Types (--type):');
|
|
46
|
-
console.log(' forced-eval 84% success - Mandatory 3-step evaluation (default)');
|
|
47
|
-
console.log(' llm-eval 80% success - Claude API pre-evaluation (requires API key)');
|
|
48
|
-
console.log(' simple-script 20% success - Basic script file');
|
|
49
|
-
console.log(' simple-inline 20% success - Echo command in settings.json');
|
|
50
|
-
console.log('\n⚠️ IMPORTANT FOR LLMs:');
|
|
51
|
-
console.log(' ALWAYS run validate after creating or editing a skill:');
|
|
52
|
-
console.log(' claude-skills-cli validate <skill-path>');
|
|
53
|
-
console.log(' Skills MUST pass validation before use.');
|
|
54
|
-
console.log(' Fix all errors immediately. Address warnings promptly.');
|
|
55
|
-
}
|
|
56
12
|
function parse_args(args) {
|
|
57
13
|
const parsed = {};
|
|
58
14
|
const positional = [];
|
|
@@ -91,7 +47,8 @@ function parse_args(args) {
|
|
|
91
47
|
}
|
|
92
48
|
async function main() {
|
|
93
49
|
if (!command || command === '--help' || command === '-h') {
|
|
94
|
-
|
|
50
|
+
const parsed = parse_args(args.slice(1));
|
|
51
|
+
show_main_help(parsed.format);
|
|
95
52
|
process.exit(0);
|
|
96
53
|
}
|
|
97
54
|
if (command === '--version' || command === '-v') {
|
|
@@ -101,6 +58,10 @@ async function main() {
|
|
|
101
58
|
const parsed = parse_args(args.slice(1));
|
|
102
59
|
switch (command) {
|
|
103
60
|
case 'init':
|
|
61
|
+
if (parsed.help === true || parsed.h === true) {
|
|
62
|
+
show_command_help(INIT_HELP, parsed.format);
|
|
63
|
+
process.exit(0);
|
|
64
|
+
}
|
|
104
65
|
init_command({
|
|
105
66
|
name: parsed.name,
|
|
106
67
|
description: parsed.description,
|
|
@@ -109,6 +70,10 @@ async function main() {
|
|
|
109
70
|
});
|
|
110
71
|
break;
|
|
111
72
|
case 'install': {
|
|
73
|
+
if (parsed.help === true || parsed.h === true) {
|
|
74
|
+
show_command_help(INSTALL_HELP, parsed.format);
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
112
77
|
const skill_name = parsed._positional;
|
|
113
78
|
install_command({
|
|
114
79
|
skill_name,
|
|
@@ -118,9 +83,13 @@ async function main() {
|
|
|
118
83
|
}
|
|
119
84
|
case 'validate': {
|
|
120
85
|
const skill_path = parsed._positional;
|
|
86
|
+
if (parsed.help === true || parsed.h === true) {
|
|
87
|
+
show_command_help(VALIDATE_HELP, parsed.format);
|
|
88
|
+
process.exit(0);
|
|
89
|
+
}
|
|
121
90
|
if (!skill_path) {
|
|
122
91
|
console.error('Error: skill path required');
|
|
123
|
-
console.log('\nUsage: claude-skills-cli validate <skill_path> [--format json] [--strict]');
|
|
92
|
+
console.log('\nUsage: claude-skills-cli validate <skill_path> [--format json] [--strict] [--lenient] [--loose]');
|
|
124
93
|
process.exit(1);
|
|
125
94
|
}
|
|
126
95
|
const format = parsed.format;
|
|
@@ -128,10 +97,16 @@ async function main() {
|
|
|
128
97
|
skill_path,
|
|
129
98
|
strict: parsed.strict === true,
|
|
130
99
|
format: format === 'json' ? 'json' : 'text',
|
|
100
|
+
lenient: parsed.lenient === true,
|
|
101
|
+
loose: parsed.loose === true,
|
|
131
102
|
});
|
|
132
103
|
break;
|
|
133
104
|
}
|
|
134
105
|
case 'doctor': {
|
|
106
|
+
if (parsed.help === true || parsed.h === true) {
|
|
107
|
+
show_command_help(DOCTOR_HELP, parsed.format);
|
|
108
|
+
process.exit(0);
|
|
109
|
+
}
|
|
135
110
|
const skill_path = parsed._positional;
|
|
136
111
|
if (!skill_path) {
|
|
137
112
|
console.error('Error: skill path required');
|
|
@@ -145,6 +120,10 @@ async function main() {
|
|
|
145
120
|
}
|
|
146
121
|
case 'package': {
|
|
147
122
|
const skill_path = parsed._positional;
|
|
123
|
+
if (parsed.help === true || parsed.h === true) {
|
|
124
|
+
show_command_help(PACKAGE_HELP, parsed.format);
|
|
125
|
+
process.exit(0);
|
|
126
|
+
}
|
|
148
127
|
if (!skill_path) {
|
|
149
128
|
console.error('Error: skill path required');
|
|
150
129
|
console.log('\nUsage: claude-skills-cli package <skill_path>');
|
|
@@ -158,6 +137,10 @@ async function main() {
|
|
|
158
137
|
break;
|
|
159
138
|
}
|
|
160
139
|
case 'stats': {
|
|
140
|
+
if (parsed.help === true || parsed.h === true) {
|
|
141
|
+
show_command_help(STATS_HELP, parsed.format);
|
|
142
|
+
process.exit(0);
|
|
143
|
+
}
|
|
161
144
|
const directory = parsed._positional;
|
|
162
145
|
stats_command({
|
|
163
146
|
directory,
|
|
@@ -165,6 +148,10 @@ async function main() {
|
|
|
165
148
|
break;
|
|
166
149
|
}
|
|
167
150
|
case 'add-hook':
|
|
151
|
+
if (parsed.help === true || parsed.h === true) {
|
|
152
|
+
show_command_help(ADD_HOOK_HELP, parsed.format);
|
|
153
|
+
process.exit(0);
|
|
154
|
+
}
|
|
168
155
|
add_hook_command({
|
|
169
156
|
local: parsed.local === true,
|
|
170
157
|
project: parsed.project === true,
|
|
@@ -175,7 +162,7 @@ async function main() {
|
|
|
175
162
|
default:
|
|
176
163
|
console.error(`Unknown command: ${command}`);
|
|
177
164
|
console.log('');
|
|
178
|
-
|
|
165
|
+
show_main_help(parsed.format);
|
|
179
166
|
process.exit(1);
|
|
180
167
|
}
|
|
181
168
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/output.js
CHANGED
|
@@ -23,24 +23,36 @@ export function display_validation_stats(stats) {
|
|
|
23
23
|
console.log(` ${chalk.dim('(Target: <200 chars, <30 tokens for Level 1 efficiency)')}`);
|
|
24
24
|
// Level 2: SKILL.md Body
|
|
25
25
|
console.log(chalk.bold('\n Level 2 (SKILL.md Body - Loaded when triggered):'));
|
|
26
|
-
// Line count
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
26
|
+
// Line count (strict defaults: max 50)
|
|
27
|
+
let line_status;
|
|
28
|
+
if (stats.line_count <= 30) {
|
|
29
|
+
line_status = chalk.green('✅ Excellent');
|
|
30
|
+
}
|
|
31
|
+
else if (stats.line_count <= 40) {
|
|
32
|
+
line_status = chalk.green('✅ Good');
|
|
33
|
+
}
|
|
34
|
+
else if (stats.line_count <= 50) {
|
|
35
|
+
line_status = chalk.yellow('⚠️ Consider splitting');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
line_status = chalk.red('❌ Too large');
|
|
39
|
+
}
|
|
40
|
+
console.log(` Lines: ${stats.line_count} (max: 50) ${line_status}`);
|
|
41
|
+
// Word count with recommendations (strict defaults: max 1000)
|
|
42
|
+
let word_status;
|
|
43
|
+
if (stats.word_count < 300) {
|
|
44
|
+
word_status = chalk.green('✅ Excellent');
|
|
45
|
+
}
|
|
46
|
+
else if (stats.word_count < 500) {
|
|
47
|
+
word_status = chalk.green('✅ Good');
|
|
48
|
+
}
|
|
49
|
+
else if (stats.word_count < 1000) {
|
|
50
|
+
word_status = chalk.yellow('⚠️ Consider splitting');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
word_status = chalk.red('❌ Too large');
|
|
54
|
+
}
|
|
55
|
+
console.log(` Words: ${stats.word_count} (max: 1000) ${word_status}`);
|
|
44
56
|
// Token estimation
|
|
45
57
|
const token_budget = 6500; // Level 2 budget (~5000 words * 1.3)
|
|
46
58
|
const token_status = stats.estimated_tokens < token_budget
|
|
@@ -71,12 +83,12 @@ export function display_validation_stats(stats) {
|
|
|
71
83
|
// Level 3 info
|
|
72
84
|
console.log(chalk.bold('\n Level 3+ (References - Loaded as needed):'));
|
|
73
85
|
console.log(` ${chalk.dim('Use references/ directory for detailed docs (unlimited size)')}`);
|
|
74
|
-
// Overall assessment
|
|
86
|
+
// Overall assessment (based on strict defaults)
|
|
75
87
|
console.log(chalk.bold('\n Overall Assessment:'));
|
|
76
|
-
if (stats.line_count <=
|
|
88
|
+
if (stats.line_count <= 30 && stats.description_length <= 200) {
|
|
77
89
|
console.log(chalk.green(' ✅ Excellent progressive disclosure!'));
|
|
78
90
|
}
|
|
79
|
-
else if (stats.line_count <=
|
|
91
|
+
else if (stats.line_count <= 50 &&
|
|
80
92
|
stats.description_length <= 300) {
|
|
81
93
|
console.log(chalk.green(' ✅ Good progressive disclosure'));
|
|
82
94
|
}
|
package/dist/utils/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACvC,KAAsB;IAEtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAE9D,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,MAAM,WAAW,GAChB,KAAK,CAAC,kBAAkB,IAAI,GAAG;QAC9B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,kBAAkB,IAAI,GAAG;YAChC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE7B,OAAO,CAAC,GAAG,CACV,oBAAoB,KAAK,CAAC,kBAAkB,YAAY,KAAK,CAAC,kBAAkB,WAAW,WAAW,EAAE,CACxG,CAAC;IACF,OAAO,CAAC,GAAG,CACV,OAAO,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,EAAE,CAC7E,CAAC;IAEF,yBAAyB;IACzB,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,IAAI,CACT,sDAAsD,CACtD,CACD,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,21 @@
|
|
|
2
2
|
* Content validation (Level 2 progressive disclosure)
|
|
3
3
|
*/
|
|
4
4
|
import { count_words, estimate_tokens, strip_html_comments, } from './text-analysis.js';
|
|
5
|
-
// Progressive disclosure limits
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
// Progressive disclosure limits - three tiers
|
|
6
|
+
const LIMITS = {
|
|
7
|
+
strict: {
|
|
8
|
+
lines: { excellent: 30, good: 40, max: 50 },
|
|
9
|
+
words: { excellent: 300, good: 500, max: 1000 },
|
|
10
|
+
},
|
|
11
|
+
lenient: {
|
|
12
|
+
lines: { excellent: 50, good: 100, max: 150 },
|
|
13
|
+
words: { excellent: 500, good: 1000, max: 2000 },
|
|
14
|
+
},
|
|
15
|
+
loose: {
|
|
16
|
+
lines: { excellent: 100, good: 200, max: 500 },
|
|
17
|
+
words: { excellent: 1000, good: 2000, max: 5000 },
|
|
18
|
+
},
|
|
19
|
+
};
|
|
8
20
|
/**
|
|
9
21
|
* Analyze content structure and patterns
|
|
10
22
|
*/
|
|
@@ -28,7 +40,9 @@ export function analyze_content_structure(body) {
|
|
|
28
40
|
/**
|
|
29
41
|
* Validate progressive disclosure (word count, token budget, and line count)
|
|
30
42
|
*/
|
|
31
|
-
export function validate_content(body) {
|
|
43
|
+
export function validate_content(body, options = {}) {
|
|
44
|
+
const { mode = 'strict' } = options;
|
|
45
|
+
const limits = LIMITS[mode];
|
|
32
46
|
const word_count = count_words(body);
|
|
33
47
|
const estimated_tokens = estimate_tokens(word_count);
|
|
34
48
|
// Strip HTML comments before counting lines (progressive disclosure guidance shouldn't inflate count)
|
|
@@ -46,37 +60,35 @@ export function validate_content(body) {
|
|
|
46
60
|
warnings: [],
|
|
47
61
|
errors: [],
|
|
48
62
|
};
|
|
49
|
-
//
|
|
50
|
-
if (word_count >
|
|
63
|
+
// Word count validation
|
|
64
|
+
if (word_count > limits.words.max) {
|
|
51
65
|
validation.errors.push({
|
|
52
66
|
type: 'word_count',
|
|
53
|
-
message: `SKILL.md body has ${word_count} words (MAX: ${
|
|
67
|
+
message: `SKILL.md body has ${word_count} words (MAX: ${limits.words.max})\n` +
|
|
54
68
|
` → Move detailed content to references/ directory for Level 3 loading\n` +
|
|
55
69
|
` → This is a hard limit - skills must be concise`,
|
|
56
70
|
});
|
|
57
71
|
}
|
|
58
|
-
|
|
59
|
-
else if (word_count > RECOMMENDED_WORDS) {
|
|
72
|
+
else if (word_count > limits.words.good) {
|
|
60
73
|
validation.warnings.push({
|
|
61
74
|
type: 'word_count',
|
|
62
|
-
message: `SKILL.md body has ${word_count} words (recommended: <${
|
|
75
|
+
message: `SKILL.md body has ${word_count} words (recommended: <${limits.words.good}, max: ${limits.words.max})\n` +
|
|
63
76
|
` → Consider moving examples/docs to references/ for better token efficiency`,
|
|
64
77
|
});
|
|
65
78
|
}
|
|
66
79
|
// Line count validation (Level 2 progressive disclosure)
|
|
67
|
-
|
|
68
|
-
if (line_count > 50) {
|
|
80
|
+
if (line_count > limits.lines.max) {
|
|
69
81
|
validation.errors.push({
|
|
70
82
|
type: 'line_count',
|
|
71
|
-
message: `SKILL.md body is ${line_count} lines (MAX:
|
|
83
|
+
message: `SKILL.md body is ${line_count} lines (MAX: ${limits.lines.max})\n` +
|
|
72
84
|
` → Move detailed content to references/ directory\n` +
|
|
73
85
|
` → This is a hard limit - skills must be concise`,
|
|
74
86
|
});
|
|
75
87
|
}
|
|
76
|
-
else if (line_count >
|
|
88
|
+
else if (line_count > limits.lines.good) {
|
|
77
89
|
validation.warnings.push({
|
|
78
90
|
type: 'line_count',
|
|
79
|
-
message: `SKILL.md body is ${line_count} lines (recommended:
|
|
91
|
+
message: `SKILL.md body is ${line_count} lines (recommended: <${limits.lines.good}, max: ${limits.lines.max})\n` +
|
|
80
92
|
` → Consider moving examples to references/ for Level 3 loading`,
|
|
81
93
|
});
|
|
82
94
|
}
|
|
@@ -114,9 +126,9 @@ export function validate_content(body) {
|
|
|
114
126
|
` → Add one minimal working example to help Claude get started quickly`,
|
|
115
127
|
});
|
|
116
128
|
}
|
|
117
|
-
// Check for references/ links when body is long
|
|
129
|
+
// Check for references/ links when body is long (warn when exceeding good threshold)
|
|
118
130
|
const has_references = body.includes('references/');
|
|
119
|
-
if (!has_references && line_count >
|
|
131
|
+
if (!has_references && line_count > limits.lines.good) {
|
|
120
132
|
validation.warnings.push({
|
|
121
133
|
type: 'no_references',
|
|
122
134
|
message: `No references/ links found but SKILL.md is ${line_count} lines\n` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-validator.js","sourceRoot":"","sources":["../../src/validators/content-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACN,WAAW,EACX,eAAe,EACf,mBAAmB,GACnB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"content-validator.js","sourceRoot":"","sources":["../../src/validators/content-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
+
/**
|
|
7
|
+
* Strip fenced code blocks from content to avoid parsing example links
|
|
8
|
+
*/
|
|
9
|
+
function strip_code_blocks(content) {
|
|
10
|
+
// Remove fenced code blocks (``` or ~~~)
|
|
11
|
+
return content.replace(/```[\s\S]*?```|~~~[\s\S]*?~~~/g, '');
|
|
12
|
+
}
|
|
6
13
|
/**
|
|
7
14
|
* Check nesting depth of reference files
|
|
8
15
|
*/
|
|
@@ -16,8 +23,12 @@ function check_reference_nesting(skill_path, file_path, visited = new Set()) {
|
|
|
16
23
|
return { depth: 0, references: [] };
|
|
17
24
|
}
|
|
18
25
|
const content = readFileSync(full_path, 'utf-8');
|
|
26
|
+
// Strip code blocks to avoid parsing example links inside them
|
|
27
|
+
const content_without_code = strip_code_blocks(content);
|
|
19
28
|
const reference_pattern = /\[([^\]]+)\]\((references\/[^)]+\.md)\)/g;
|
|
20
|
-
const matches = [
|
|
29
|
+
const matches = [
|
|
30
|
+
...content_without_code.matchAll(reference_pattern),
|
|
31
|
+
];
|
|
21
32
|
const references = matches.map((m) => m[2]);
|
|
22
33
|
if (references.length === 0) {
|
|
23
34
|
return { depth: 1, references: [] };
|
|
@@ -69,10 +80,12 @@ export function validate_references(skill_path) {
|
|
|
69
80
|
// Level 3 validation: Check that all referenced files exist
|
|
70
81
|
if (existsSync(skill_md_path)) {
|
|
71
82
|
const skill_content = readFileSync(skill_md_path, 'utf-8');
|
|
83
|
+
// Strip code blocks to avoid parsing example links inside them
|
|
84
|
+
const content_without_code = strip_code_blocks(skill_content);
|
|
72
85
|
// Extract markdown links to references/ directory
|
|
73
86
|
// Matches: [text](references/file.md) or [text](references/subdir/file.md)
|
|
74
87
|
const reference_link_pattern = /\[([^\]]+)\]\((references\/[^)]+\.md)\)/g;
|
|
75
|
-
const matches =
|
|
88
|
+
const matches = content_without_code.matchAll(reference_link_pattern);
|
|
76
89
|
for (const match of matches) {
|
|
77
90
|
const link_text = match[1];
|
|
78
91
|
const file_path = match[2]; // e.g., "references/examples.md"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references-validator.js","sourceRoot":"","sources":["../../src/validators/references-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA4BjC;;GAEG;AACH,SAAS,uBAAuB,CAC/B,UAAkB,EAClB,SAAiB,EACjB,UAAuB,IAAI,GAAG,EAAE;IAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,iBAAiB,GACtB,0CAA0C,CAAC;IAC5C,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"references-validator.js","sourceRoot":"","sources":["../../src/validators/references-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA4BjC;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACzC,yCAAyC;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC/B,UAAkB,EAClB,SAAiB,EACjB,UAAuB,IAAI,GAAG,EAAE;IAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,+DAA+D;IAC/D,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,iBAAiB,GACtB,0CAA0C,CAAC;IAC5C,MAAM,OAAO,GAAG;QACf,GAAG,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACnD,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,sCAAsC;IACtC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,uBAAuB,CACrC,UAAU,EACV,GAAG,EACH,IAAI,GAAG,CAAC,OAAO,CAAC,CAChB,CAAC;QACF,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAClC,UAAkB;IAElB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,YAAY,GAAuB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,0CAA0C;IAC1C,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE9B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,2CAA2C;aACpD,CAAC,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAE3D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAChC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,QAAQ,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,mBAAmB,OAAO,6BAA6B;qBAChE,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,4DAA4D;IAC5D,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3D,+DAA+D;QAC/D,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAE9D,kDAAkD;QAClD,2EAA2E;QAC3E,MAAM,sBAAsB,GAC3B,0CAA0C,CAAC;QAC5C,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAC5C,sBAAsB,CACtB,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAE9C,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEjC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,cAAc;oBACpB,OAAO,EACN,8BAA8B,SAAS,IAAI;wBAC3C,qBAAqB,SAAS,KAAK;wBACnC,+CAA+C;iBAChD,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,sBAAsB;gBACtB,MAAM,OAAO,GAAG,uBAAuB,CACtC,UAAU,EACV,SAAS,CACT,CAAC;gBACF,IAAI,OAAO,GAAkB,IAAI,CAAC;gBAElC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,GAAG,kBAAkB,OAAO,CAAC,KAAK,kEAAkE,CAAC;oBAC5G,QAAQ,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,eAAe;wBACrB,OAAO,EACN,GAAG,SAAS,sBAAsB,OAAO,CAAC,KAAK,qBAAqB;4BACpE,8DAA8D;qBAC/D,CAAC,CAAC;gBACJ,CAAC;gBAED,YAAY,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,OAAO;iBACP,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACvD,CAAC;IAEF,MAAM,UAAU,GAAyB;QACxC,WAAW;QACX,gBAAgB;QAChB,aAAa;QACb,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,YAAY;QACrB,iBAAiB,EAChB,YAAY,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;KACL,CAAC;IAEF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-skills-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"description": "CLI toolkit for creating and managing Claude Agent Skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@changesets/cli": "^2.29.7",
|
|
42
|
-
"@types/node": "^24.
|
|
42
|
+
"@types/node": "^24.10.1",
|
|
43
43
|
"@types/archiver": "^7.0.0",
|
|
44
44
|
"prettier": "^3.6.2",
|
|
45
45
|
"typescript": "^5.9.3"
|