claude-skills-cli 0.0.5 → 0.0.7
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 +34 -9
- package/dist/commands/init.js +5 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +1 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/stats.js +1 -1
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/validate.js +24 -3
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/watch.js +82 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/core/validator.js +169 -321
- package/dist/core/validator.js.map +1 -1
- package/dist/index.js +23 -12
- package/dist/index.js.map +1 -1
- package/dist/skills/skill-creator/SKILL.md +26 -108
- package/dist/skills/skill-creator/references/cli-reference.md +35 -35
- package/dist/skills/skill-creator/references/development-process.md +208 -0
- package/dist/skills/skill-creator/references/skill-examples.md +1 -1
- package/dist/validators/alignment-validator.js +54 -0
- package/dist/validators/alignment-validator.js.map +1 -0
- package/dist/validators/content-validator.js +144 -0
- package/dist/validators/content-validator.js.map +1 -0
- package/dist/validators/description-validator.js +136 -0
- package/dist/validators/description-validator.js.map +1 -0
- package/dist/validators/file-structure-validator.js +125 -0
- package/dist/validators/file-structure-validator.js.map +1 -0
- package/dist/validators/frontmatter-validator.js +114 -0
- package/dist/validators/frontmatter-validator.js.map +1 -0
- package/dist/validators/references-validator.js +125 -0
- package/dist/validators/references-validator.js.map +1 -0
- package/dist/validators/text-analysis.js +71 -0
- package/dist/validators/text-analysis.js.map +1 -0
- package/docs/CLI-IMPROVEMENTS.md +960 -0
- package/docs/SKILL-CREATOR-UPDATES.md +1071 -0
- package/docs/SKILL-DEVELOPMENT.md +10 -10
- package/docs/SKILLS-ARCHITECTURE.md +1 -1
- package/docs/SKILLS-ECOSYSTEM-ANALYSIS.md +509 -0
- package/docs/SKILLS-OPPORTUNITIES.md +652 -0
- package/package.json +4 -4
- package/dist/skills/skill-creator/skill-creator/SKILL.md +0 -143
- package/dist/skills/skill-creator/skill-creator/references/anthropic-resources.md +0 -504
- package/dist/skills/skill-creator/skill-creator/references/cli-reference.md +0 -507
- package/dist/skills/skill-creator/skill-creator/references/skill-examples.md +0 -413
- package/dist/skills/skill-creator/skill-creator/references/writing-guide.md +0 -619
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,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;AAE1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,SAAS,SAAS;IACjB,OAAO,CAAC,GAAG,CACV,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,136 +8,54 @@ description:
|
|
|
8
8
|
|
|
9
9
|
# Skill Creator
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## Quick Start
|
|
14
|
-
|
|
15
|
-
Creating a minimal skill:
|
|
16
|
-
|
|
17
|
-
1. Create directory: `.claude/skills/my-skill/`
|
|
18
|
-
2. Create `SKILL.md` with frontmatter (name, description) and body
|
|
19
|
-
3. Test in conversation
|
|
20
|
-
4. Add references/ as content grows
|
|
11
|
+
Create effective Claude Skills using progressive disclosure.
|
|
21
12
|
|
|
22
13
|
## When to Create a Skill
|
|
23
14
|
|
|
24
15
|
Create a skill when you notice:
|
|
25
16
|
|
|
26
|
-
- **Repeating context** across conversations (
|
|
17
|
+
- **Repeating context** across conversations (schemas, patterns,
|
|
27
18
|
rules)
|
|
28
19
|
- **Domain expertise** needed repeatedly (API integration, framework
|
|
29
20
|
conventions)
|
|
30
|
-
- **Project-specific knowledge**
|
|
31
|
-
|
|
32
|
-
Example: "I keep explaining this database schema" → Create a
|
|
33
|
-
database-schema skill.
|
|
34
|
-
|
|
35
|
-
## Skill Architecture
|
|
21
|
+
- **Project-specific knowledge** Claude should know automatically
|
|
36
22
|
|
|
37
|
-
|
|
23
|
+
## Skill Structure
|
|
38
24
|
|
|
39
25
|
```
|
|
40
26
|
my-skill/
|
|
41
|
-
├── SKILL.md #
|
|
42
|
-
├── references/ #
|
|
43
|
-
├── scripts/ #
|
|
44
|
-
└── assets/ #
|
|
27
|
+
├── SKILL.md # Core instructions + metadata
|
|
28
|
+
├── references/ # Detailed docs (loaded as needed)
|
|
29
|
+
├── scripts/ # Executable operations
|
|
30
|
+
└── assets/ # Templates, images, files
|
|
45
31
|
```
|
|
46
32
|
|
|
47
|
-
**SKILL.md** - Core instructions with YAML frontmatter (name,
|
|
48
|
-
description) + markdown body
|
|
49
|
-
|
|
50
|
-
**references/** - Detailed docs loaded only when Claude needs them
|
|
51
|
-
(schemas, API docs, guides)
|
|
52
|
-
|
|
53
|
-
**scripts/** - Deterministic operations Claude can execute without
|
|
54
|
-
generating code (validation, generation)
|
|
55
|
-
|
|
56
|
-
**assets/** - Files used directly in output without loading into
|
|
57
|
-
context (templates, images)
|
|
58
|
-
|
|
59
33
|
## Progressive Disclosure
|
|
60
34
|
|
|
61
35
|
Skills load in 3 levels:
|
|
62
36
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
with core patterns and links
|
|
68
|
-
|
|
69
|
-
**Level 3: Resources** (unlimited, as needed) - references/ scripts/
|
|
70
|
-
assets/ loaded only when used
|
|
71
|
-
|
|
72
|
-
**Key principle**: Keep Levels 1 & 2 lean. Move details to Level 3.
|
|
73
|
-
|
|
74
|
-
## Development Process
|
|
37
|
+
1. **Metadata** (~27 tokens) - YAML frontmatter for triggering
|
|
38
|
+
2. **Instructions** (<680 tokens) - SKILL.md body with core patterns
|
|
39
|
+
3. **Resources** (unlimited) - references/ scripts/ assets/ loaded on
|
|
40
|
+
demand
|
|
75
41
|
|
|
76
|
-
1
|
|
77
|
-
2. **Gather** - Collect 3-5 concrete examples of skill usage
|
|
78
|
-
3. **Plan** - Decide what goes in SKILL.md vs references/ vs scripts/
|
|
79
|
-
4. **Structure** - Create directory with SKILL.md and needed
|
|
80
|
-
subdirectories
|
|
81
|
-
5. **Write** - Craft description, then SKILL.md body following
|
|
82
|
-
patterns
|
|
83
|
-
6. **Enhance** - Add references, scripts, assets as needed
|
|
84
|
-
7. **Iterate** - Test in conversations, refine based on actual usage
|
|
42
|
+
**Key**: Keep Levels 1 & 2 lean. Move details to Level 3.
|
|
85
43
|
|
|
86
|
-
##
|
|
87
|
-
|
|
88
|
-
**Descriptions**: Include "Use when..." triggers, <200 chars optimal.
|
|
89
|
-
Format: [Domain] + [Operations] + [Trigger keywords]
|
|
90
|
-
|
|
91
|
-
**SKILL.md Body**: Target ~50 lines, max ~150. Structure: Quick
|
|
92
|
-
Start + Core Patterns (3-5) + Links. Use imperative voice, concrete
|
|
93
|
-
examples.
|
|
94
|
-
|
|
95
|
-
**References**: Detailed docs with no size limit. Use descriptive
|
|
96
|
-
filenames.
|
|
97
|
-
|
|
98
|
-
## Common Patterns
|
|
99
|
-
|
|
100
|
-
**Succeeds**: Domain expertise, concrete examples, keyword-rich
|
|
101
|
-
descriptions, clear triggers, scripts for deterministic tasks
|
|
102
|
-
|
|
103
|
-
**Fails**: Generic descriptions, bloated SKILL.md, second person
|
|
104
|
-
voice, missing triggers, vague content
|
|
105
|
-
|
|
106
|
-
See [skill-examples.md](references/skill-examples.md) for detailed
|
|
107
|
-
patterns.
|
|
108
|
-
|
|
109
|
-
## Implementation
|
|
110
|
-
|
|
111
|
-
Skills can be created manually (mkdir, touch SKILL.md) or using tools
|
|
112
|
-
like `claude-skills-cli`.
|
|
44
|
+
## Quick Start
|
|
113
45
|
|
|
114
|
-
|
|
46
|
+
1. Create directory: `.claude/skills/my-skill/`
|
|
47
|
+
2. Create `SKILL.md` with frontmatter and body
|
|
48
|
+
3. Test in conversation
|
|
49
|
+
4. Add references/ as content grows
|
|
115
50
|
|
|
116
51
|
## Reference Documentation
|
|
117
52
|
|
|
118
|
-
|
|
119
|
-
|
|
53
|
+
- [writing-guide.md](references/writing-guide.md) - Writing effective
|
|
54
|
+
skills
|
|
55
|
+
- [development-process.md](references/development-process.md) -
|
|
56
|
+
Step-by-step workflow
|
|
57
|
+
- [skill-examples.md](references/skill-examples.md) - Patterns and
|
|
58
|
+
examples
|
|
59
|
+
- [cli-reference.md](references/cli-reference.md) - CLI tool usage
|
|
120
60
|
- [anthropic-resources.md](references/anthropic-resources.md) -
|
|
121
|
-
Official
|
|
122
|
-
- [writing-guide.md](references/writing-guide.md) - Voice, structure,
|
|
123
|
-
and code examples
|
|
124
|
-
- [skill-examples.md](references/skill-examples.md) - Real-world
|
|
125
|
-
patterns and anti-patterns
|
|
126
|
-
- [cli-reference.md](references/cli-reference.md) - Tool commands
|
|
127
|
-
(claude-skills-cli)
|
|
128
|
-
- [cli-feedback.md](references/cli-feedback.md) - Real-world CLI usage
|
|
129
|
-
patterns
|
|
130
|
-
|
|
131
|
-
## Notes
|
|
132
|
-
|
|
133
|
-
- Skills are iterative - start minimal, refine through real usage
|
|
134
|
-
- Description drives discovery - invest time in crafting it
|
|
135
|
-
- Test in actual conversations to validate effectiveness
|
|
136
|
-
- Progressive disclosure is key - resist urge to front-load everything
|
|
137
|
-
|
|
138
|
-
<!--
|
|
139
|
-
PROGRESSIVE DISCLOSURE:
|
|
140
|
-
- This is Level 2 - principles and architecture only
|
|
141
|
-
- Tool-specific details are in references/
|
|
142
|
-
- Target: ~75 lines for optimal scannability
|
|
143
|
-
-->
|
|
61
|
+
Official best practices
|
|
@@ -9,13 +9,13 @@ Complete command-line reference for the `claude-skills-cli` tool
|
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
11
|
npm install -g claude-skills-cli
|
|
12
|
-
claude-skills --version
|
|
12
|
+
claude-skills-cli --version
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
### Using npx (No Installation)
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
npx claude-skills <command>
|
|
18
|
+
npx claude-skills-cli <command>
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
### Using pnpm
|
|
@@ -32,9 +32,9 @@ npm install --save-dev claude-skills-cli
|
|
|
32
32
|
# Use via package.json scripts
|
|
33
33
|
{
|
|
34
34
|
"scripts": {
|
|
35
|
-
"skill:init": "claude-skills init",
|
|
36
|
-
"skill:validate": "claude-skills validate",
|
|
37
|
-
"skill:package": "claude-skills package"
|
|
35
|
+
"skill:init": "claude-skills-cli init",
|
|
36
|
+
"skill:validate": "claude-skills-cli validate",
|
|
37
|
+
"skill:package": "claude-skills-cli package"
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
```
|
|
@@ -50,7 +50,7 @@ Create a new skill directory with standard structure.
|
|
|
50
50
|
#### Syntax
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
claude-skills init [options]
|
|
53
|
+
claude-skills-cli init [options]
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
#### Options
|
|
@@ -67,17 +67,17 @@ claude-skills init [options]
|
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
69
|
# Create skill with default location (.claude/skills/)
|
|
70
|
-
npx claude-skills init --name my-skill
|
|
70
|
+
npx claude-skills-cli init --name my-skill
|
|
71
71
|
|
|
72
72
|
# With description
|
|
73
|
-
npx claude-skills init --name my-skill \
|
|
73
|
+
npx claude-skills-cli init --name my-skill \
|
|
74
74
|
--description "SQLite queries. Use when writing database operations"
|
|
75
75
|
|
|
76
76
|
# Custom path
|
|
77
|
-
npx claude-skills init --path /custom/path/my-skill
|
|
77
|
+
npx claude-skills-cli init --path /custom/path/my-skill
|
|
78
78
|
|
|
79
79
|
# Custom path with description
|
|
80
|
-
npx claude-skills init --path /custom/path/my-skill \
|
|
80
|
+
npx claude-skills-cli init --path /custom/path/my-skill \
|
|
81
81
|
--description "Brief description"
|
|
82
82
|
```
|
|
83
83
|
|
|
@@ -109,7 +109,7 @@ Next steps:
|
|
|
109
109
|
3. Add executable scripts to scripts/
|
|
110
110
|
4. Remove example files you don't need
|
|
111
111
|
|
|
112
|
-
Validate with: claude-skills validate .claude/skills/my-skill
|
|
112
|
+
Validate with: claude-skills-cli validate .claude/skills/my-skill
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
---
|
|
@@ -121,7 +121,7 @@ Validate skill structure and progressive disclosure compliance.
|
|
|
121
121
|
#### Syntax
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
|
-
claude-skills validate <skill_path> [options]
|
|
124
|
+
claude-skills-cli validate <skill_path> [options]
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
#### Arguments
|
|
@@ -140,14 +140,14 @@ claude-skills validate <skill_path> [options]
|
|
|
140
140
|
|
|
141
141
|
```bash
|
|
142
142
|
# Validate skill
|
|
143
|
-
npx claude-skills validate .claude/skills/my-skill
|
|
143
|
+
npx claude-skills-cli validate .claude/skills/my-skill
|
|
144
144
|
|
|
145
145
|
# Strict mode (warnings = errors)
|
|
146
|
-
npx claude-skills validate .claude/skills/my-skill --strict
|
|
146
|
+
npx claude-skills-cli validate .claude/skills/my-skill --strict
|
|
147
147
|
|
|
148
148
|
# Validate multiple skills
|
|
149
|
-
npx claude-skills validate .claude/skills/skill-1
|
|
150
|
-
npx claude-skills validate .claude/skills/skill-2
|
|
149
|
+
npx claude-skills-cli validate .claude/skills/skill-1
|
|
150
|
+
npx claude-skills-cli validate .claude/skills/skill-2
|
|
151
151
|
```
|
|
152
152
|
|
|
153
153
|
#### Validation Checks
|
|
@@ -255,7 +255,7 @@ Package skill into a zip file for distribution.
|
|
|
255
255
|
#### Syntax
|
|
256
256
|
|
|
257
257
|
```bash
|
|
258
|
-
claude-skills package <skill_path> [options]
|
|
258
|
+
claude-skills-cli package <skill_path> [options]
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
#### Arguments
|
|
@@ -275,13 +275,13 @@ claude-skills package <skill_path> [options]
|
|
|
275
275
|
|
|
276
276
|
```bash
|
|
277
277
|
# Package skill (validates first)
|
|
278
|
-
npx claude-skills package .claude/skills/my-skill
|
|
278
|
+
npx claude-skills-cli package .claude/skills/my-skill
|
|
279
279
|
|
|
280
280
|
# Custom output directory
|
|
281
|
-
npx claude-skills package .claude/skills/my-skill --output builds/
|
|
281
|
+
npx claude-skills-cli package .claude/skills/my-skill --output builds/
|
|
282
282
|
|
|
283
283
|
# Skip validation (not recommended)
|
|
284
|
-
npx claude-skills package .claude/skills/my-skill --skip-validation
|
|
284
|
+
npx claude-skills-cli package .claude/skills/my-skill --skip-validation
|
|
285
285
|
```
|
|
286
286
|
|
|
287
287
|
#### Excluded Files
|
|
@@ -325,7 +325,7 @@ The created zip can be:
|
|
|
325
325
|
|
|
326
326
|
```bash
|
|
327
327
|
# 1. Create skill
|
|
328
|
-
npx claude-skills init --name database-queries \
|
|
328
|
+
npx claude-skills-cli init --name database-queries \
|
|
329
329
|
--description "SQLite queries. Use when writing SELECT, INSERT, UPDATE"
|
|
330
330
|
|
|
331
331
|
# 2. Edit SKILL.md
|
|
@@ -335,13 +335,13 @@ vim .claude/skills/database-queries/SKILL.md
|
|
|
335
335
|
vim .claude/skills/database-queries/references/schema.md
|
|
336
336
|
|
|
337
337
|
# 4. Validate
|
|
338
|
-
npx claude-skills validate .claude/skills/database-queries
|
|
338
|
+
npx claude-skills-cli validate .claude/skills/database-queries
|
|
339
339
|
|
|
340
340
|
# 5. Fix any issues, re-validate
|
|
341
|
-
npx claude-skills validate .claude/skills/database-queries
|
|
341
|
+
npx claude-skills-cli validate .claude/skills/database-queries
|
|
342
342
|
|
|
343
343
|
# 6. Package
|
|
344
|
-
npx claude-skills package .claude/skills/database-queries
|
|
344
|
+
npx claude-skills-cli package .claude/skills/database-queries
|
|
345
345
|
```
|
|
346
346
|
|
|
347
347
|
### Strict Validation in CI
|
|
@@ -350,7 +350,7 @@ npx claude-skills package .claude/skills/database-queries
|
|
|
350
350
|
# package.json
|
|
351
351
|
{
|
|
352
352
|
"scripts": {
|
|
353
|
-
"test:skills": "claude-skills validate .claude/skills/* --strict"
|
|
353
|
+
"test:skills": "claude-skills-cli validate .claude/skills/* --strict"
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
356
|
|
|
@@ -364,7 +364,7 @@ npm run test:skills
|
|
|
364
364
|
# Bash script to validate all skills
|
|
365
365
|
for skill in .claude/skills/*/; do
|
|
366
366
|
echo "Validating $skill"
|
|
367
|
-
npx claude-skills validate "$skill" || exit 1
|
|
367
|
+
npx claude-skills-cli validate "$skill" || exit 1
|
|
368
368
|
done
|
|
369
369
|
```
|
|
370
370
|
|
|
@@ -372,8 +372,8 @@ done
|
|
|
372
372
|
|
|
373
373
|
```bash
|
|
374
374
|
# One-liner with validation
|
|
375
|
-
npx claude-skills init --name my-skill --description "Brief desc" && \
|
|
376
|
-
npx claude-skills validate .claude/skills/my-skill
|
|
375
|
+
npx claude-skills-cli init --name my-skill --description "Brief desc" && \
|
|
376
|
+
npx claude-skills-cli validate .claude/skills/my-skill
|
|
377
377
|
```
|
|
378
378
|
|
|
379
379
|
---
|
|
@@ -473,10 +473,10 @@ description: Database helper
|
|
|
473
473
|
```json
|
|
474
474
|
{
|
|
475
475
|
"scripts": {
|
|
476
|
-
"skill:new": "claude-skills init",
|
|
477
|
-
"skill:validate": "claude-skills validate .claude/skills/*",
|
|
478
|
-
"skill:validate:strict": "claude-skills validate .claude/skills/* --strict",
|
|
479
|
-
"skill:package": "claude-skills package",
|
|
476
|
+
"skill:new": "claude-skills-cli init",
|
|
477
|
+
"skill:validate": "claude-skills-cli validate .claude/skills/*",
|
|
478
|
+
"skill:validate:strict": "claude-skills-cli validate .claude/skills/* --strict",
|
|
479
|
+
"skill:package": "claude-skills-cli package",
|
|
480
480
|
"skill:check": "npm run skill:validate:strict"
|
|
481
481
|
},
|
|
482
482
|
"devDependencies": {
|
|
@@ -491,11 +491,11 @@ description: Database helper
|
|
|
491
491
|
|
|
492
492
|
```bash
|
|
493
493
|
# Check CLI version
|
|
494
|
-
npx claude-skills --version
|
|
494
|
+
npx claude-skills-cli --version
|
|
495
495
|
|
|
496
496
|
# Show help
|
|
497
|
-
npx claude-skills --help
|
|
498
|
-
npx claude-skills init --help
|
|
497
|
+
npx claude-skills-cli --help
|
|
498
|
+
npx claude-skills-cli init --help
|
|
499
499
|
```
|
|
500
500
|
|
|
501
501
|
---
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Development Process
|
|
2
|
+
|
|
3
|
+
Step-by-step workflow for creating effective Claude Skills.
|
|
4
|
+
|
|
5
|
+
## The Seven Steps
|
|
6
|
+
|
|
7
|
+
### 1. Recognize
|
|
8
|
+
|
|
9
|
+
Notice when you're repeatedly providing the same context or domain
|
|
10
|
+
knowledge:
|
|
11
|
+
|
|
12
|
+
- Explaining the same database schema multiple times
|
|
13
|
+
- Providing API integration details in every conversation
|
|
14
|
+
- Sharing framework-specific conventions repeatedly
|
|
15
|
+
- Teaching the same domain concepts
|
|
16
|
+
|
|
17
|
+
**Signal**: "I've explained this 3+ times in different conversations"
|
|
18
|
+
|
|
19
|
+
### 2. Gather
|
|
20
|
+
|
|
21
|
+
Collect 3-5 concrete examples of how you've used this knowledge:
|
|
22
|
+
|
|
23
|
+
- Save conversation snippets showing the repeated context
|
|
24
|
+
- Document the specific questions or tasks that triggered the need
|
|
25
|
+
- Note the exact information you provided each time
|
|
26
|
+
- Identify common patterns across usage
|
|
27
|
+
|
|
28
|
+
**Output**: A collection of real usage examples
|
|
29
|
+
|
|
30
|
+
### 3. Plan
|
|
31
|
+
|
|
32
|
+
Decide information hierarchy:
|
|
33
|
+
|
|
34
|
+
**SKILL.md (Level 2)** - Core patterns only:
|
|
35
|
+
|
|
36
|
+
- What the skill does
|
|
37
|
+
- When to use it
|
|
38
|
+
- Essential structure/commands
|
|
39
|
+
- Links to references
|
|
40
|
+
|
|
41
|
+
**references/ (Level 3)** - Detailed docs:
|
|
42
|
+
|
|
43
|
+
- Complete API documentation
|
|
44
|
+
- Detailed examples and tutorials
|
|
45
|
+
- Background and theory
|
|
46
|
+
- Edge cases and troubleshooting
|
|
47
|
+
|
|
48
|
+
**scripts/ (Level 3)** - Deterministic operations:
|
|
49
|
+
|
|
50
|
+
- Validation logic
|
|
51
|
+
- Code generation
|
|
52
|
+
- File transformations
|
|
53
|
+
- Data processing
|
|
54
|
+
|
|
55
|
+
**assets/ (Level 3)** - Static resources:
|
|
56
|
+
|
|
57
|
+
- Templates
|
|
58
|
+
- Configuration files
|
|
59
|
+
- Images and diagrams
|
|
60
|
+
|
|
61
|
+
### 4. Structure
|
|
62
|
+
|
|
63
|
+
Create the directory structure:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
mkdir -p .claude/skills/my-skill/{references,scripts,assets}
|
|
67
|
+
touch .claude/skills/my-skill/SKILL.md
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 5. Write
|
|
71
|
+
|
|
72
|
+
#### Write Description First
|
|
73
|
+
|
|
74
|
+
The description is critical for skill discovery. Format:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
[Domain/Context] [operations/capabilities]. Use when [trigger scenarios].
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Examples:
|
|
81
|
+
|
|
82
|
+
- ✅ "PostgreSQL schema and query patterns. Use when designing
|
|
83
|
+
databases, writing queries, or optimizing performance."
|
|
84
|
+
- ✅ "Next.js 14 App Router conventions. Use when building Next.js
|
|
85
|
+
apps, configuring routes, or implementing server components."
|
|
86
|
+
- ❌ "A skill for databases" (too vague)
|
|
87
|
+
- ❌ "This skill helps you work with PostgreSQL databases" (second
|
|
88
|
+
person)
|
|
89
|
+
|
|
90
|
+
Target: <200 chars for optimal Level 1 efficiency
|
|
91
|
+
|
|
92
|
+
#### Write SKILL.md Body
|
|
93
|
+
|
|
94
|
+
Structure:
|
|
95
|
+
|
|
96
|
+
1. **Brief intro** (1-2 lines) - What this skill provides
|
|
97
|
+
2. **When to use** (3-5 bullets) - Triggering scenarios
|
|
98
|
+
3. **Core patterns** (3-5 sections) - Essential knowledge
|
|
99
|
+
4. **Links to references** - Point to detailed docs
|
|
100
|
+
|
|
101
|
+
Guidelines:
|
|
102
|
+
|
|
103
|
+
- Use imperative voice ("Use X for Y", not "You should use X")
|
|
104
|
+
- Provide concrete examples, not abstract concepts
|
|
105
|
+
- Keep it scannable with clear headings
|
|
106
|
+
- Target ~50 lines, max ~150 lines
|
|
107
|
+
- Link liberally to references/
|
|
108
|
+
|
|
109
|
+
#### Write References
|
|
110
|
+
|
|
111
|
+
No size limits - be as detailed as needed:
|
|
112
|
+
|
|
113
|
+
- Use descriptive filenames (api-endpoints.md, not reference.md)
|
|
114
|
+
- Structure with clear headings
|
|
115
|
+
- Include code examples
|
|
116
|
+
- Cover edge cases
|
|
117
|
+
- Provide context and rationale
|
|
118
|
+
|
|
119
|
+
### 6. Enhance
|
|
120
|
+
|
|
121
|
+
Add progressive enhancements:
|
|
122
|
+
|
|
123
|
+
**Scripts** - When operations are:
|
|
124
|
+
|
|
125
|
+
- Deterministic (same input = same output)
|
|
126
|
+
- Complex (would require Claude to generate code)
|
|
127
|
+
- Reusable (used frequently)
|
|
128
|
+
|
|
129
|
+
Examples: validators, code generators, formatters
|
|
130
|
+
|
|
131
|
+
**Assets** - When you need:
|
|
132
|
+
|
|
133
|
+
- Templates (boilerplate code, config files)
|
|
134
|
+
- Static files (images, data files)
|
|
135
|
+
- Resources that shouldn't be loaded into context
|
|
136
|
+
|
|
137
|
+
### 7. Iterate
|
|
138
|
+
|
|
139
|
+
Test and refine:
|
|
140
|
+
|
|
141
|
+
**Testing**:
|
|
142
|
+
|
|
143
|
+
- Start a new conversation
|
|
144
|
+
- Trigger the skill naturally (don't force it)
|
|
145
|
+
- Observe if Claude loads it appropriately
|
|
146
|
+
- Check if the content is helpful and sufficient
|
|
147
|
+
|
|
148
|
+
**Refining**:
|
|
149
|
+
|
|
150
|
+
- If skill loads too often → Make description more specific
|
|
151
|
+
- If skill never loads → Add trigger keywords to description
|
|
152
|
+
- If Claude asks for info that's in references → Add links in SKILL.md
|
|
153
|
+
- If SKILL.md feels bloated → Move content to references
|
|
154
|
+
- If you're repeating the same complex operation → Create a script
|
|
155
|
+
|
|
156
|
+
**Iteration Cycle**:
|
|
157
|
+
|
|
158
|
+
1. Use skill in real conversations
|
|
159
|
+
2. Note friction points and gaps
|
|
160
|
+
3. Refactor structure and content
|
|
161
|
+
4. Test again
|
|
162
|
+
|
|
163
|
+
## Common Pitfalls
|
|
164
|
+
|
|
165
|
+
**Starting Too Big**
|
|
166
|
+
|
|
167
|
+
- ❌ Writing 500 lines before testing
|
|
168
|
+
- ✅ Start with 30-line SKILL.md, iterate
|
|
169
|
+
|
|
170
|
+
**Generic Descriptions**
|
|
171
|
+
|
|
172
|
+
- ❌ "Helps with coding tasks"
|
|
173
|
+
- ✅ "React hooks patterns and performance optimization. Use when
|
|
174
|
+
building React components or debugging re-renders."
|
|
175
|
+
|
|
176
|
+
**Bloated SKILL.md**
|
|
177
|
+
|
|
178
|
+
- ❌ Including complete API docs in SKILL.md
|
|
179
|
+
- ✅ Core patterns in SKILL.md, full docs in references/
|
|
180
|
+
|
|
181
|
+
**Missing Triggers**
|
|
182
|
+
|
|
183
|
+
- ❌ Description with no "Use when..." clause
|
|
184
|
+
- ✅ Clear triggering scenarios in description
|
|
185
|
+
|
|
186
|
+
**Second Person Voice**
|
|
187
|
+
|
|
188
|
+
- ❌ "You should use this pattern when you need..."
|
|
189
|
+
- ✅ "Use this pattern when..."
|
|
190
|
+
|
|
191
|
+
## Success Criteria
|
|
192
|
+
|
|
193
|
+
A well-designed skill:
|
|
194
|
+
|
|
195
|
+
- ✅ Loads automatically when relevant (no manual triggering)
|
|
196
|
+
- ✅ Provides exactly the context needed (not too much, not too
|
|
197
|
+
little)
|
|
198
|
+
- ✅ Improves with each conversation (you notice missing pieces)
|
|
199
|
+
- ✅ Saves you time (no more re-explaining the same concepts)
|
|
200
|
+
|
|
201
|
+
## Tips
|
|
202
|
+
|
|
203
|
+
- **Start minimal**: Better to add than to remove
|
|
204
|
+
- **Test early**: Don't perfect in isolation
|
|
205
|
+
- **Use real examples**: Concrete beats abstract
|
|
206
|
+
- **Trust progressive disclosure**: Claude will ask for references
|
|
207
|
+
when needed
|
|
208
|
+
- **Iterate based on usage**: Let real conversations drive refinement
|
|
@@ -396,7 +396,7 @@ Before considering a skill "done":
|
|
|
396
396
|
- [ ] Detailed docs in references/
|
|
397
397
|
- [ ] Scripts for repeated code
|
|
398
398
|
- [ ] Assets for templates
|
|
399
|
-
- [ ] Validated with `npx claude-skills validate`
|
|
399
|
+
- [ ] Validated with `npx claude-skills-cli validate`
|
|
400
400
|
- [ ] Tested in real conversations
|
|
401
401
|
- [ ] No TODO placeholders
|
|
402
402
|
- [ ] Imperative voice throughout
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alignment validation - checks description and content alignment
|
|
3
|
+
*/
|
|
4
|
+
import { extract_keywords } from './text-analysis.js';
|
|
5
|
+
/**
|
|
6
|
+
* Analyze description and content alignment
|
|
7
|
+
*/
|
|
8
|
+
export function analyze_alignment(description, body) {
|
|
9
|
+
const desc_keywords = extract_keywords(description);
|
|
10
|
+
const content_keywords = extract_keywords(body);
|
|
11
|
+
const overlap = desc_keywords.filter((k) => content_keywords.includes(k));
|
|
12
|
+
const desc_only = desc_keywords.filter((k) => !content_keywords.includes(k));
|
|
13
|
+
const content_only = content_keywords
|
|
14
|
+
.filter((k) => !desc_keywords.includes(k))
|
|
15
|
+
.slice(0, 20);
|
|
16
|
+
const overlap_ratio = desc_keywords.length > 0
|
|
17
|
+
? overlap.length / desc_keywords.length
|
|
18
|
+
: 0;
|
|
19
|
+
let severity = 'good';
|
|
20
|
+
let explanation = 'Description aligns well with content';
|
|
21
|
+
if (overlap_ratio < 0.2 && desc_keywords.length > 5) {
|
|
22
|
+
severity = 'critical';
|
|
23
|
+
explanation = `Very low keyword overlap (${Math.round(overlap_ratio * 100)}%). Description may not match skill content.`;
|
|
24
|
+
}
|
|
25
|
+
else if (overlap_ratio < 0.3 && desc_keywords.length > 5) {
|
|
26
|
+
severity = 'moderate';
|
|
27
|
+
explanation = `Low keyword overlap (${Math.round(overlap_ratio * 100)}%). Description may not accurately reflect skill content.`;
|
|
28
|
+
}
|
|
29
|
+
const keywords = {
|
|
30
|
+
description_keywords: desc_keywords,
|
|
31
|
+
content_keywords: content_keywords.slice(0, 30),
|
|
32
|
+
overlap,
|
|
33
|
+
description_only: desc_only,
|
|
34
|
+
content_only,
|
|
35
|
+
};
|
|
36
|
+
const alignment = {
|
|
37
|
+
severity,
|
|
38
|
+
description_focus: desc_keywords.slice(0, 10),
|
|
39
|
+
content_focus: content_keywords.slice(0, 10),
|
|
40
|
+
matches: overlap,
|
|
41
|
+
mismatches: desc_only,
|
|
42
|
+
explanation,
|
|
43
|
+
};
|
|
44
|
+
const warnings = [];
|
|
45
|
+
if (overlap_ratio < 0.3 && desc_keywords.length > 5) {
|
|
46
|
+
warnings.push({
|
|
47
|
+
type: 'low_overlap',
|
|
48
|
+
message: `Low keyword overlap between description and content (${Math.round(overlap_ratio * 100)}%)\n` +
|
|
49
|
+
` → Description may not accurately reflect skill content`,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return { keywords, alignment, warnings };
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=alignment-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignment-validator.js","sourceRoot":"","sources":["../../src/validators/alignment-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AActD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAChC,WAAmB,EACnB,IAAY;IAEZ,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1C,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5B,CAAC;IACF,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpC,CAAC;IACF,MAAM,YAAY,GAAG,gBAAgB;SACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACzC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEf,MAAM,aAAa,GAClB,aAAa,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;QACvC,CAAC,CAAC,CAAC,CAAC;IAEN,IAAI,QAAQ,GAAqC,MAAM,CAAC;IACxD,IAAI,WAAW,GAAG,sCAAsC,CAAC;IAEzD,IAAI,aAAa,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,QAAQ,GAAG,UAAU,CAAC;QACtB,WAAW,GAAG,6BAA6B,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,8CAA8C,CAAC;IAC1H,CAAC;SAAM,IAAI,aAAa,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,QAAQ,GAAG,UAAU,CAAC;QACtB,WAAW,GAAG,wBAAwB,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,2DAA2D,CAAC;IAClI,CAAC;IAED,MAAM,QAAQ,GAAoB;QACjC,oBAAoB,EAAE,aAAa;QACnC,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/C,OAAO;QACP,gBAAgB,EAAE,SAAS;QAC3B,YAAY;KACZ,CAAC;IAEF,MAAM,SAAS,GAAsB;QACpC,QAAQ;QACR,iBAAiB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7C,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,SAAS;QACrB,WAAW;KACX,CAAC;IAEF,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,IAAI,aAAa,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EACN,wDAAwD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM;gBAC7F,0DAA0D;SAC3D,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC"}
|