@intentsolutionsio/skill-creator 5.0.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 (39) hide show
  1. package/.claude-plugin/plugin.json +17 -0
  2. package/README.md +55 -0
  3. package/package.json +38 -0
  4. package/scripts/validate-skill.py +1132 -0
  5. package/skills/agent-creator/SKILL.md +305 -0
  6. package/skills/agent-creator/references/anthropic-agent-spec.md +89 -0
  7. package/skills/skill-creator/SKILL.md +267 -0
  8. package/skills/skill-creator/agents/analyzer.md +279 -0
  9. package/skills/skill-creator/agents/comparator.md +207 -0
  10. package/skills/skill-creator/agents/grader.md +228 -0
  11. package/skills/skill-creator/assets/eval_review.html +146 -0
  12. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  13. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  14. package/skills/skill-creator/references/advanced-eval-workflow.md +320 -0
  15. package/skills/skill-creator/references/anthropic-comparison.md +93 -0
  16. package/skills/skill-creator/references/ard-template.md +47 -0
  17. package/skills/skill-creator/references/creation-guide.md +305 -0
  18. package/skills/skill-creator/references/errors-template.md +27 -0
  19. package/skills/skill-creator/references/examples-template.md +40 -0
  20. package/skills/skill-creator/references/frontmatter-spec.md +531 -0
  21. package/skills/skill-creator/references/implementation-template.md +42 -0
  22. package/skills/skill-creator/references/output-patterns.md +193 -0
  23. package/skills/skill-creator/references/prd-template.md +55 -0
  24. package/skills/skill-creator/references/schemas.md +430 -0
  25. package/skills/skill-creator/references/source-of-truth.md +658 -0
  26. package/skills/skill-creator/references/validation-rules.md +528 -0
  27. package/skills/skill-creator/references/workflows.md +233 -0
  28. package/skills/skill-creator/scripts/__init__.py +0 -0
  29. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  30. package/skills/skill-creator/scripts/generate_report.py +326 -0
  31. package/skills/skill-creator/scripts/improve_description.py +247 -0
  32. package/skills/skill-creator/scripts/package_skill.py +136 -0
  33. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  34. package/skills/skill-creator/scripts/run_eval.py +344 -0
  35. package/skills/skill-creator/scripts/run_loop.py +329 -0
  36. package/skills/skill-creator/scripts/utils.py +47 -0
  37. package/skills/skill-creator/scripts/validate-skill.py +87 -0
  38. package/skills/skill-creator/templates/agent-template.md +99 -0
  39. package/skills/skill-creator/templates/skill-template.md +122 -0
@@ -0,0 +1,531 @@
1
+ # Frontmatter Field Specification
2
+
3
+ Complete reference for SKILL.md and agent frontmatter fields.
4
+
5
+ **Source**: https://code.claude.com/docs/en/skills (Anthropic, 2026)
6
+
7
+ ---
8
+
9
+ ## Skill Frontmatter — Anthropic Standard (11 fields)
10
+
11
+ ### name
12
+
13
+ - **Type**: string
14
+ - **Default**: directory name (if omitted)
15
+ - **Format**: kebab-case (lowercase letters, numbers, hyphens)
16
+ - **Length**: 1-64 characters
17
+ - **Rules**:
18
+ - Must start with a letter
19
+ - Must end with letter or number
20
+ - No consecutive hyphens (`my--skill`)
21
+ - No start/end hyphens (`-my-skill`, `my-skill-`)
22
+ - Must match containing directory name
23
+ - No reserved words in isolation (`anthropic`, `claude`)
24
+ - No XML tags (`<`, `>`) — breaks frontmatter parsing
25
+ - Gerund naming preferred (`processing-pdfs`, `analyzing-data`)
26
+
27
+ ```yaml
28
+ name: email-composer # Good
29
+ name: processing-pdfs # Good - gerund style
30
+ name: code-review-v2 # Good
31
+ name: EmailComposer # Bad - not kebab-case
32
+ name: -my-skill # Bad - starts with hyphen
33
+ name: my--skill # Bad - consecutive hyphens
34
+ ```
35
+
36
+ ### description
37
+
38
+ - **Type**: string (multi-line with `|` supported)
39
+ - **Default**: first paragraph of skill body (if omitted)
40
+ - **Length**: 1-1024 characters
41
+ - **Purpose**: Tells Claude what the skill does AND when to activate it
42
+ - **Rules**:
43
+ - MUST be third person ("Generates...", "Analyzes...")
44
+ - MUST include what it does AND when to use it
45
+ - MUST include specific keywords for discovery
46
+ - MUST NOT use first person (I can, I will, I'm, I help)
47
+ - MUST NOT use second person (You can, You should, You will)
48
+ - MUST NOT contain XML tags (`<`, `>`) — breaks frontmatter parsing
49
+ - MUST NOT contain reserved words as standalone identifiers (`anthropic`, `claude`)
50
+ - MUST NOT contain system prompt injection patterns (behavioral instructions belong in SKILL.md body, not description)
51
+ - SHOULD include action verbs (analyze, create, generate, build, debug, optimize, validate)
52
+ - SHOULD reference slash command if user-invocable
53
+
54
+ ```yaml
55
+ # Good - clear what + when + keywords
56
+ description: |
57
+ Generate PDF reports from markdown with professional styling and TOC.
58
+ Use when converting documentation to distributable format.
59
+
60
+ # Good - specific keywords, natural when-to-use
61
+ description: |
62
+ Analyze Python code for security vulnerabilities, dependency risks, and
63
+ OWASP compliance issues. Activates during security audits or pre-deployment
64
+ code reviews. Trigger with "/security-scan" or "scan for vulnerabilities".
65
+
66
+ # Bad - first person
67
+ description: "I help you create PDFs"
68
+
69
+ # Bad - no when-to-use context
70
+ description: "Generates PDF reports"
71
+
72
+ # Bad - too vague, no keywords
73
+ description: "A helpful tool for documents"
74
+ ```
75
+
76
+ **System prompt injection warning**: The `description` field is loaded into Claude's system prompt at startup for skill discovery. It must describe *what* and *when* only. Never include behavioral instructions ("Always respond in JSON", "Never use profanity"), persona definitions ("You are an expert..."), or override patterns ("Ignore previous instructions"). These belong in the SKILL.md body, not the description.
77
+
78
+ ### allowed-tools
79
+
80
+ - **Type**: string (comma or space-delimited)
81
+ - **Purpose**: Pre-approved tools the skill can use without user confirmation
82
+ - **Valid tools**: `Read`, `Write`, `Edit`, `Bash`, `Glob`, `Grep`, `WebFetch`, `WebSearch`, `Task`, `TodoWrite`, `NotebookEdit`, `AskUserQuestion`, `Skill`
83
+ - **MCP tools**: `ServerName:tool_name` format
84
+
85
+ ```yaml
86
+ # Scoped Bash (best practice)
87
+ allowed-tools: "Read,Write,Glob,Grep,Bash(git:*),Bash(npm:*)"
88
+
89
+ # With MCP tool
90
+ allowed-tools: "Read,Write,MyMCPServer:fetch_data"
91
+
92
+ # Unscoped Bash (avoid - security risk)
93
+ allowed-tools: "Read,Write,Bash" # Warning in Standard, Error in Enterprise
94
+ ```
95
+
96
+ **Bash Scoping Patterns**:
97
+ ```yaml
98
+ Bash(git:*) # All git commands
99
+ Bash(npm:*) # All npm commands
100
+ Bash(python:*) # All python commands
101
+ Bash(mkdir:*) # Directory creation
102
+ Bash(chmod:*) # Permission changes
103
+ Bash(curl:*) # HTTP requests
104
+ Bash(npx:*) # npx execution
105
+ Bash(pnpm:*) # pnpm commands
106
+ ```
107
+
108
+ ### model
109
+
110
+ - **Type**: string
111
+ - **Default**: inherit (uses parent/caller model)
112
+ - **Values**: `sonnet`, `haiku`, `opus`, `inherit`, or full model ID
113
+ - **Purpose**: Override the LLM model used when this skill runs
114
+
115
+ ```yaml
116
+ model: inherit # Use caller's model (recommended)
117
+ model: opus # Force Opus for complex tasks
118
+ model: haiku # Use Haiku for fast, simple tasks
119
+ model: sonnet # Use Sonnet for balanced tasks
120
+ ```
121
+
122
+ **Avoid hardcoded model IDs** like `claude-opus-4-5-20251101` — they break on deprecation.
123
+
124
+ ### effort
125
+
126
+ - **Type**: string
127
+ - **Default**: (inherits from caller)
128
+ - **Values**: `low`, `medium`, `high`, `max`
129
+ - **Purpose**: Override model reasoning effort level
130
+ - **Note**: `max` is only available with Opus 4.6
131
+
132
+ ```yaml
133
+ effort: high # More reasoning for complex tasks
134
+ effort: low # Fast responses for simple tasks
135
+ ```
136
+
137
+ ### argument-hint
138
+
139
+ - **Type**: string
140
+ - **Purpose**: Autocomplete hint shown after `/skill-name` in the command palette
141
+ - **When to use**: When skill accepts arguments via `$ARGUMENTS`
142
+
143
+ ```yaml
144
+ argument-hint: "[issue-number]"
145
+ argument-hint: "[file-path]"
146
+ argument-hint: "[search-query]"
147
+ argument-hint: "<component-name>"
148
+ ```
149
+
150
+ ### context
151
+
152
+ - **Type**: string
153
+ - **Values**: `fork` (only valid value)
154
+ - **Purpose**: Execute skill in isolated subagent context
155
+ - **When to use**: Long-running tasks, tasks that need isolation from main conversation
156
+
157
+ ```yaml
158
+ context: fork # Run in subagent
159
+ ```
160
+
161
+ ### agent
162
+
163
+ - **Type**: string
164
+ - **Requires**: `context: fork` must also be set
165
+ - **Purpose**: Specify subagent type when running in fork context
166
+ - **Values**: `Explore`, `Plan`, `general-purpose`, or custom agent name
167
+
168
+ ```yaml
169
+ context: fork
170
+ agent: Explore # Fast codebase exploration
171
+ ```
172
+
173
+ ### user-invocable
174
+
175
+ - **Type**: boolean
176
+ - **Default**: true
177
+ - **Purpose**: Control visibility in `/` command menu
178
+ - **When to use**: Set `false` for background knowledge skills that inform behavior
179
+
180
+ ```yaml
181
+ user-invocable: false # Hidden from / menu, loaded as background knowledge
182
+ user-invocable: true # Visible in / menu (default)
183
+ ```
184
+
185
+ ### disable-model-invocation
186
+
187
+ - **Type**: boolean
188
+ - **Default**: false
189
+ - **Purpose**: Prevent Claude from auto-activating; require explicit `/name` invocation
190
+
191
+ ```yaml
192
+ disable-model-invocation: true # Only via /skill-name
193
+ disable-model-invocation: false # Can activate via natural language (default)
194
+ ```
195
+
196
+ ### hooks
197
+
198
+ - **Type**: object
199
+ - **Purpose**: Skill-scoped lifecycle hooks
200
+ - **Events**: `PreToolUse`, `PostToolUse`, `Stop`, `SubagentStop`, `SessionStart`, `SessionEnd`
201
+
202
+ ```yaml
203
+ hooks:
204
+ PreToolUse:
205
+ - command: "echo 'Tool about to be used'"
206
+ event: PreToolUse
207
+ PostToolUse:
208
+ - command: "${CLAUDE_PLUGIN_ROOT}/scripts/post-check.sh"
209
+ event: PostToolUse
210
+ ```
211
+
212
+ ---
213
+
214
+ ## Enterprise Additions (5 fields, marketplace-required)
215
+
216
+ These fields are NOT part of the Anthropic runtime spec but are required by the Tons of Skills marketplace validator for published plugins. The 100-point enterprise grading system scores these at the top level.
217
+
218
+ ### version
219
+
220
+ - **Type**: string
221
+ - **Format**: Semver (`X.Y.Z`)
222
+ - **Purpose**: Skill version for tracking updates and marketplace display
223
+
224
+ ```yaml
225
+ version: 1.0.0
226
+ version: 2.3.1
227
+ ```
228
+
229
+ ### author
230
+
231
+ - **Type**: string
232
+ - **Format**: `Name <email>` (email required for Enterprise tier)
233
+ - **Purpose**: Skill author identification
234
+
235
+ ```yaml
236
+ author: Jeremy Longshore <jeremy@intentsolutions.io>
237
+ ```
238
+
239
+ ### license
240
+
241
+ - **Type**: string
242
+ - **Format**: SPDX identifier or bundled file reference
243
+ - **Purpose**: License for the skill
244
+
245
+ ```yaml
246
+ license: MIT
247
+ license: Apache-2.0
248
+ license: Complete terms in LICENSE.txt
249
+ ```
250
+
251
+ ### compatible-with
252
+
253
+ - **Type**: string (comma-separated)
254
+ - **Purpose**: Platforms this skill is compatible with
255
+ - **Valid values**: `claude-code`, `codex`, `openclaw`, `aider`, `continue`, `cursor`, `windsurf`
256
+
257
+ ```yaml
258
+ compatible-with: claude-code, codex, openclaw
259
+ compatible-with: claude-code
260
+ ```
261
+
262
+ ### tags
263
+
264
+ - **Type**: array of strings
265
+ - **Purpose**: Discovery tags for categorization and search
266
+
267
+ ```yaml
268
+ tags: [devops, ci, automation]
269
+ tags: [security, python, code-review]
270
+ ```
271
+
272
+ **Total skill frontmatter**: 16 fields (11 Anthropic + 5 enterprise)
273
+
274
+ ---
275
+
276
+ ## Agent Frontmatter — Anthropic Standard (14 fields)
277
+
278
+ Agent files live in `agents/*.md`. Key difference from skills: agents use `disallowedTools` (denylist) while skills use `allowed-tools` (allowlist).
279
+
280
+ ### name
281
+
282
+ - **Type**: string
283
+ - **Required**: Yes
284
+ - **Purpose**: Unique identifier for the agent
285
+
286
+ ```yaml
287
+ name: code-reviewer
288
+ ```
289
+
290
+ ### description
291
+
292
+ - **Type**: string
293
+ - **Required**: Yes
294
+ - **Length**: 20-200 characters
295
+ - **Purpose**: Agent's specialty — shown in agent selection UI
296
+
297
+ ```yaml
298
+ description: "Reviews code for bugs, performance issues, and style violations"
299
+ ```
300
+
301
+ ### model
302
+
303
+ - **Type**: string
304
+ - **Values**: `sonnet`, `haiku`, `opus`, `inherit`
305
+ - **Purpose**: Override LLM model for this agent
306
+
307
+ ```yaml
308
+ model: opus
309
+ ```
310
+
311
+ ### effort
312
+
313
+ - **Type**: string
314
+ - **Values**: `low`, `medium`, `high`, `max`
315
+ - **Purpose**: Override reasoning effort for agent turns
316
+
317
+ ```yaml
318
+ effort: high
319
+ ```
320
+
321
+ ### maxTurns
322
+
323
+ - **Type**: integer
324
+ - **Purpose**: Max agentic loop iterations before stopping
325
+ - **Added**: v2.1.78
326
+
327
+ ```yaml
328
+ maxTurns: 10
329
+ maxTurns: 25
330
+ ```
331
+
332
+ ### tools
333
+
334
+ - **Type**: string (comma-separated)
335
+ - **Purpose**: Tool allowlist (same format as skill `allowed-tools`)
336
+
337
+ ```yaml
338
+ tools: "Read,Glob,Grep,Bash(git:*)"
339
+ ```
340
+
341
+ ### disallowedTools
342
+
343
+ - **Type**: string (comma-separated)
344
+ - **Purpose**: Tool denylist — block specific tools (opposite of allowlist)
345
+
346
+ ```yaml
347
+ disallowedTools: "mcp__dangerous_server,Write"
348
+ ```
349
+
350
+ ### skills
351
+
352
+ - **Type**: array
353
+ - **Purpose**: Skill names to preload when agent activates
354
+
355
+ ```yaml
356
+ skills: [code-review, test-generator]
357
+ ```
358
+
359
+ ### mcpServers
360
+
361
+ - **Type**: object or array
362
+ - **Purpose**: MCP server configurations available to the agent
363
+ - **Plugin restriction**: NOT supported in plugin agents (ignored silently by runtime)
364
+
365
+ ```yaml
366
+ mcpServers:
367
+ myserver:
368
+ command: "node"
369
+ args: ["server.js"]
370
+ ```
371
+
372
+ ### hooks
373
+
374
+ - **Type**: object
375
+ - **Purpose**: Agent-scoped lifecycle hooks
376
+ - **Plugin restriction**: NOT supported in plugin agents (ignored silently by runtime)
377
+
378
+ ```yaml
379
+ hooks:
380
+ PreToolUse:
381
+ - command: "echo 'pre-hook'"
382
+ ```
383
+
384
+ ### memory
385
+
386
+ - **Type**: string
387
+ - **Values**: `user`, `project`, `local`
388
+ - **Purpose**: Memory persistence scope for the agent
389
+
390
+ ```yaml
391
+ memory: project
392
+ ```
393
+
394
+ ### background
395
+
396
+ - **Type**: boolean
397
+ - **Purpose**: Run agent as a background task
398
+
399
+ ```yaml
400
+ background: true
401
+ ```
402
+
403
+ ### isolation
404
+
405
+ - **Type**: string
406
+ - **Values**: `worktree` (only valid value)
407
+ - **Purpose**: Run agent in an isolated git worktree
408
+
409
+ ```yaml
410
+ isolation: worktree
411
+ ```
412
+
413
+ ### permissionMode
414
+
415
+ - **Type**: string
416
+ - **Values**: `default`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`
417
+ - **Purpose**: Permission behavior for the agent
418
+ - **Plugin restriction**: NOT supported in plugin agents (ignored silently by runtime)
419
+
420
+ ```yaml
421
+ permissionMode: acceptEdits
422
+ ```
423
+
424
+ ---
425
+
426
+ ## plugin.json Field Summary (8 allowed fields)
427
+
428
+ The `.claude-plugin/plugin.json` manifest defines plugin identity. CI rejects any fields not in this list.
429
+
430
+ | Field | Type | Required | Purpose |
431
+ |-------|------|----------|---------|
432
+ | `name` | string | Yes | Plugin name (kebab-case) |
433
+ | `version` | string | Yes | Semver version |
434
+ | `description` | string | Yes | Plugin description |
435
+ | `author` | string | Yes | Author name or `Name <email>` |
436
+ | `repository` | string | No | GitHub repository URL |
437
+ | `homepage` | string | No | Plugin homepage URL |
438
+ | `license` | string | No | SPDX license identifier |
439
+ | `keywords` | array | No | Discovery keywords |
440
+
441
+ ```json
442
+ {
443
+ "name": "my-plugin",
444
+ "version": "2.0.0",
445
+ "description": "What this plugin does",
446
+ "author": "Name <email>",
447
+ "repository": "https://github.com/user/repo",
448
+ "license": "MIT",
449
+ "keywords": ["devops", "automation"]
450
+ }
451
+ ```
452
+
453
+ ---
454
+
455
+ ## Deprecated / Invalid Fields
456
+
457
+ | Field | Status | Notes |
458
+ |-------|--------|-------|
459
+ | `when_to_use` | Deprecated | Move content to `description` |
460
+ | `mode` | Deprecated | Use `disable-model-invocation` instead |
461
+ | `compatibility` | Invalid | AgentSkills.io field, not in Anthropic spec. Document requirements in skill body instead. |
462
+ | `metadata` | Invalid | AgentSkills.io field, not in Anthropic spec. Use top-level fields (`author`, `version`, `license`, `tags`). |
463
+ | `capabilities` | Invalid | Invented field, never part of any spec |
464
+ | `expertise_level` | Invalid | Invented field, never part of any spec |
465
+ | `activation_priority` | Invalid | Invented field, never part of any spec |
466
+
467
+ The marketplace validator will flag these fields as errors in Enterprise tier validation.
468
+
469
+ ---
470
+
471
+ ## Recommended Field Order
472
+
473
+ ### Skill (SKILL.md)
474
+
475
+ ```yaml
476
+ ---
477
+ # Anthropic standard
478
+ name: skill-name
479
+ description: |
480
+ What it does. Use when [scenario].
481
+ Trigger with "/skill-name" or "[natural phrase]".
482
+ allowed-tools: "Read,Write,Glob,Grep,Bash(git:*)"
483
+ model: inherit
484
+ # effort: high
485
+ argument-hint: "[arg]"
486
+ # context: fork
487
+ # agent: general-purpose
488
+ user-invocable: true
489
+ disable-model-invocation: false
490
+ # hooks: {}
491
+
492
+ # Enterprise additions (marketplace-required)
493
+ version: 1.0.0
494
+ author: Name <email>
495
+ license: MIT
496
+ compatible-with: claude-code, codex, openclaw
497
+ tags: [devops, automation]
498
+ ---
499
+ ```
500
+
501
+ ### Agent (agents/*.md)
502
+
503
+ ```yaml
504
+ ---
505
+ # Required
506
+ name: agent-name
507
+ description: "20-200 char description of the agent's specialty"
508
+
509
+ # Model control
510
+ model: opus
511
+ effort: high
512
+ maxTurns: 15
513
+
514
+ # Tool access
515
+ tools: "Read,Write,Glob,Grep,Bash(git:*)"
516
+ # disallowedTools: "mcp__dangerous_server"
517
+
518
+ # Preloaded skills
519
+ # skills: [code-review, test-generator]
520
+
521
+ # Execution
522
+ # background: false
523
+ # isolation: worktree
524
+ # memory: project
525
+
526
+ # NOT supported in plugin agents (ignored by runtime):
527
+ # hooks: {}
528
+ # mcpServers: {}
529
+ # permissionMode: default
530
+ ---
531
+ ```
@@ -0,0 +1,42 @@
1
+ # Implementation Template
2
+
3
+ Standard implementation guide for all marketplace skills. Every references/implementation.md MUST follow this format.
4
+
5
+ ---
6
+
7
+ ```markdown
8
+ # {Skill Name} — Implementation Guide
9
+
10
+ ## How the Skill Works
11
+
12
+ {3-5 numbered steps describing the skill's internal workflow from invocation to output.}
13
+
14
+ ## Project/File Structure
15
+
16
+ \`\`\`
17
+ {Directory tree showing what the skill creates, reads, or manages}
18
+ \`\`\`
19
+
20
+ ## Core Patterns
21
+
22
+ {Explain the main technical patterns used. Code blocks showing real implementations.}
23
+
24
+ ## Configuration Reference
25
+
26
+ | Setting | Required | Default | Purpose |
27
+ |---------|----------|---------|---------|
28
+ | {env var or config key} | {Yes/No} | {value} | {what it controls} |
29
+
30
+ ## Testing Strategy
31
+
32
+ {How to validate the skill's output — commands to run, what to check, pass/fail criteria.}
33
+
34
+ ## Deployment Pipeline
35
+
36
+ {If applicable: local dev → staging → production flow with commands at each stage.}
37
+ ```
38
+
39
+ Rules:
40
+ - Write from the perspective of how this specific skill works, not generic patterns
41
+ - Include real commands, real API calls, real config values
42
+ - Keep under 200 lines — this is a reference, not a textbook