claude-skills-cli 0.0.13 → 0.0.14

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 CHANGED
@@ -46,8 +46,8 @@ pnpx claude-skills-cli init --name my-skill --description "Brief description wit
46
46
  pnpx claude-skills-cli init --name my-skill --description "..." --with-examples
47
47
  ```
48
48
 
49
- Creates minimal skill scaffolding by default (SKILL.md, README.md,
50
- references/). Use `--with-examples` for example files.
49
+ Creates minimal skill scaffolding by default (SKILL.md, references/).
50
+ Use `--with-examples` for example files.
51
51
 
52
52
  ### validate
53
53
 
@@ -1,5 +1,5 @@
1
1
  import { join } from 'node:path';
2
- import { README_TEMPLATE, REFERENCE_TEMPLATE, SCRIPT_TEMPLATE, SKILL_MD_TEMPLATE, } from '../core/templates.js';
2
+ import { REFERENCE_TEMPLATE, SCRIPT_TEMPLATE, SKILL_MD_TEMPLATE, } from '../core/templates.js';
3
3
  import { ensure_dir, is_lowercase, make_executable, to_title_case, write_file, } from '../utils/fs.js';
4
4
  import { error, success } from '../utils/output.js';
5
5
  export function init_command(options) {
@@ -46,9 +46,6 @@ function create_skill(path, name, description, with_examples = false) {
46
46
  const title = to_title_case(name);
47
47
  const skill_md = SKILL_MD_TEMPLATE(name, description, title, with_examples);
48
48
  write_file(join(path, 'SKILL.md'), skill_md);
49
- // Create README
50
- const readme_md = README_TEMPLATE(title, description);
51
- write_file(join(path, 'README.md'), readme_md);
52
49
  // Only create example files if requested
53
50
  if (with_examples) {
54
51
  // Create example directories
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -188,21 +188,6 @@ function main() {
188
188
 
189
189
  main();
190
190
  `;
191
- export const README_TEMPLATE = (title, description) => `# ${title}
192
-
193
- ${description}
194
-
195
- ## Structure
196
-
197
- - \`SKILL.md\` - Main skill instructions
198
- - \`references/\` - Detailed documentation loaded as needed
199
- - \`scripts/\` - Executable code for deterministic operations
200
- - \`assets/\` - Templates, images, or other resources
201
-
202
- ## Usage
203
-
204
- This skill is automatically discovered by Claude when relevant to the task.
205
- `;
206
191
  // Hook templates for skill activation
207
192
  export const SIMPLE_HOOK_TEMPLATE = () => `#!/bin/bash
208
193
  echo 'INSTRUCTION: If the prompt matches any available skill keywords, use Skill(skill-name) to activate it.'
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,IAAY,EACZ,WAAmB,EACnB,KAAa,EACb,mBAA4B,KAAK,EAChC,EAAE;IACH,MAAM,gBAAgB,GAAG;QAClB,IAAI;;;eAGG,WAAW;;;IAGtB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDR,CAAC;IAED,MAAM,aAAa,GAAG;QACf,IAAI;;;eAGG,WAAW;;;IAGtB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDR,CAAC;IAED,OAAO,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,KAAa,EACZ,EAAE,CAAC,KAAK,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDd,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,QAAgB,EACf,EAAE,CAAC;;;;;;YAMO,QAAQ;;;;;;;;CAQnB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,KAAa,EACb,WAAmB,EAClB,EAAE,CAAC,KAAK,KAAK;;EAEb,WAAW;;;;;;;;;;;;CAYZ,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC;;CAEzC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC9C,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6J3C,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,IAAY,EACZ,WAAmB,EACnB,KAAa,EACb,mBAA4B,KAAK,EAChC,EAAE;IACH,MAAM,gBAAgB,GAAG;QAClB,IAAI;;;eAGG,WAAW;;;IAGtB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDR,CAAC;IAED,MAAM,aAAa,GAAG;QACf,IAAI;;;eAGG,WAAW;;;IAGtB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDR,CAAC;IAED,OAAO,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,KAAa,EACZ,EAAE,CAAC,KAAK,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDd,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,QAAgB,EACf,EAAE,CAAC;;;;;;YAMO,QAAQ;;;;;;;;CAQnB,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC;;CAEzC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC9C,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6J3C,CAAC"}
@@ -86,7 +86,6 @@ npx claude-skills-cli init --path /custom/path/my-skill \
86
86
  ```
87
87
  .claude/skills/my-skill/
88
88
  ├── SKILL.md # Main skill instructions
89
- ├── README.md # Skill documentation
90
89
  └── references/ # Level 3 detailed documentation
91
90
  ```
92
91
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-skills-cli",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "description": "CLI toolkit for creating and managing Claude Agent Skills",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,45 +0,0 @@
1
- import chalk from 'chalk';
2
- import { generate_hook_config, get_settings_location_message, has_skill_reminder_hook, } from '../utils/settings.js';
3
- export function hook_config_command(options) {
4
- const hook_type = options.sessionStart
5
- ? 'session-start'
6
- : 'user-prompt';
7
- console.log(chalk.cyan.bold('\n📋 Skill Activation Hook Configuration\n'));
8
- // Check if hook already exists
9
- if (has_skill_reminder_hook()) {
10
- console.log(chalk.green('✅ Skill reminder hook already detected in your settings!\n'));
11
- console.log(chalk.dim('You already have a hook that references .claude/skills/.'));
12
- console.log(chalk.dim('If you want to modify it, edit your settings file directly.'));
13
- return;
14
- }
15
- // Display the configuration
16
- console.log(chalk.white(`Copy this to ${chalk.bold(get_settings_location_message())}:\n`));
17
- const config = generate_hook_config(hook_type);
18
- console.log(chalk.cyan(config));
19
- // Explain what it does
20
- console.log(chalk.bold('\n💡 What this does:\n'));
21
- if (hook_type === 'session-start') {
22
- console.log(chalk.white(' • Fires once when Claude Code session starts'));
23
- console.log(chalk.white(' • Costs ~15 tokens once per session'));
24
- console.log(chalk.white(' • Claude sees reminder at start of conversation'));
25
- console.log(chalk.yellow(' • May forget as conversation gets longer'));
26
- }
27
- else {
28
- console.log(chalk.white(' • Fires before Claude processes each prompt'));
29
- console.log(chalk.white(' • Costs ~15 tokens per prompt'));
30
- console.log(chalk.white(' • Makes Claude check your skills consistently'));
31
- console.log(chalk.green(' • Recommended: Claude needs constant reminding!'));
32
- }
33
- console.log(chalk.white(' • No maintenance required (unlike skill-rules.json)'));
34
- console.log(chalk.white(' • Claude decides which skills are relevant\n'));
35
- // Show alternative
36
- if (hook_type === 'session-start') {
37
- console.log(chalk.dim('Alternative: UserPromptSubmit (constant reminders)'));
38
- console.log(chalk.dim(' Run: claude-skills-cli hook-config\n'));
39
- }
40
- else {
41
- console.log(chalk.dim('Alternative: SessionStart (once per session)'));
42
- console.log(chalk.dim(' Run: claude-skills-cli hook-config --session-start\n'));
43
- }
44
- }
45
- //# sourceMappingURL=hook-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook-config.js","sourceRoot":"","sources":["../../src/commands/hook-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACN,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,GACvB,MAAM,sBAAsB,CAAC;AAM9B,MAAM,UAAU,mBAAmB,CAClC,OAA0B;IAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY;QACrC,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,aAAa,CAAC;IAEjB,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAC7D,CAAC;IAEF,+BAA+B;IAC/B,IAAI,uBAAuB,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CACV,4DAA4D,CAC5D,CACD,CAAC;QACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CACR,0DAA0D,CAC1D,CACD,CAAC;QACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CACR,6DAA6D,CAC7D,CACD,CAAC;QACF,OAAO;IACR,CAAC;IAED,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CACV,gBAAgB,KAAK,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,KAAK,CAChE,CACD,CAAC;IAEF,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhC,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAElD,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAC7D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CACV,mDAAmD,CACnD,CACD,CAAC;QACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAC1D,CAAC;IACH,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAC5D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAC9D,CAAC;QACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CACV,mDAAmD,CACnD,CACD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CACV,uDAAuD,CACvD,CACD,CAAC;IACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAC7D,CAAC;IAEF,mBAAmB;IACnB,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAC/D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CACzD,CAAC;QACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CACR,wDAAwD,CACxD,CACD,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -1,82 +0,0 @@
1
- import { watch } from 'node:fs';
2
- import { basename, dirname, join } from 'node:path';
3
- import { existsSync } from 'node:fs';
4
- import { SkillValidator } from '../core/validator.js';
5
- import { display_validation_stats, error, info, success, warning, } from '../utils/output.js';
6
- export function watch_command(options) {
7
- const { directory } = options;
8
- const watch_path = directory || '.claude/skills';
9
- if (!existsSync(watch_path)) {
10
- error(`Directory does not exist: ${watch_path}`);
11
- process.exit(1);
12
- }
13
- info(`Watching for changes in: ${watch_path}`);
14
- console.log('='.repeat(60));
15
- console.log('Auto-validating SKILL.md files on save...\n');
16
- console.log('Press Ctrl+C to stop\n');
17
- // Track last validation time to debounce rapid changes
18
- const last_validation = new Map();
19
- const DEBOUNCE_MS = 500;
20
- // Watch recursively
21
- const watcher = watch(watch_path, { recursive: true }, (eventType, filename) => {
22
- if (!filename)
23
- return;
24
- // Only validate SKILL.md files
25
- if (!filename.endsWith('SKILL.md'))
26
- return;
27
- const full_path = join(watch_path, filename);
28
- const skill_path = dirname(full_path);
29
- const skill_name = basename(skill_path);
30
- // Debounce rapid changes
31
- const now = Date.now();
32
- const last = last_validation.get(full_path) || 0;
33
- if (now - last < DEBOUNCE_MS)
34
- return;
35
- last_validation.set(full_path, now);
36
- console.log('\n' + '='.repeat(60));
37
- info(`Change detected: ${skill_name}/SKILL.md`);
38
- console.log('='.repeat(60));
39
- // Validate
40
- const validator = new SkillValidator(skill_path);
41
- const result = validator.validate_all();
42
- // Display progressive disclosure stats
43
- if (result.stats) {
44
- display_validation_stats(result.stats);
45
- }
46
- // Print errors
47
- if (result.errors.length > 0) {
48
- console.log('\n❌ Errors:');
49
- for (const err of result.errors) {
50
- console.log(` ${err}`);
51
- }
52
- }
53
- // Print warnings
54
- if (result.warnings.length > 0) {
55
- console.log('\n⚠️ Warnings:');
56
- for (const warn of result.warnings) {
57
- console.log(` ${warn}`);
58
- }
59
- }
60
- // Print final status
61
- if (!result.errors.length && !result.warnings.length) {
62
- console.log('');
63
- success(`✅ ${skill_name} is valid!`);
64
- }
65
- else if (!result.errors.length) {
66
- console.log('');
67
- warning(`⚠️ ${skill_name} is valid (with warnings)`);
68
- }
69
- else {
70
- console.log('');
71
- error(`❌ ${skill_name} validation failed with ${result.errors.length} error(s)`);
72
- }
73
- console.log('\nWatching for changes...');
74
- });
75
- // Handle cleanup
76
- process.on('SIGINT', () => {
77
- console.log('\n\nStopping watcher...');
78
- watcher.close();
79
- process.exit(0);
80
- });
81
- }
82
- //# sourceMappingURL=watch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -1,110 +0,0 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { join } from 'node:path';
4
- /**
5
- * Get path to settings file (project-level or global)
6
- * Returns null if neither exists
7
- */
8
- export function get_settings_path() {
9
- // Check project-level first
10
- const project_settings = join(process.cwd(), '.claude', 'settings.json');
11
- if (existsSync(project_settings)) {
12
- return project_settings;
13
- }
14
- // Check global settings
15
- const global_settings = join(homedir(), '.claude.json');
16
- if (existsSync(global_settings)) {
17
- return global_settings;
18
- }
19
- // Return project path even if doesn't exist (most likely location)
20
- return project_settings;
21
- }
22
- /**
23
- * Read and parse Claude settings file
24
- */
25
- function read_settings(path) {
26
- try {
27
- const content = readFileSync(path, 'utf-8');
28
- return JSON.parse(content);
29
- }
30
- catch {
31
- return null;
32
- }
33
- }
34
- /**
35
- * Check if skill reminder hook exists in settings
36
- */
37
- export function has_skill_reminder_hook() {
38
- const settings_path = get_settings_path();
39
- if (!settings_path || !existsSync(settings_path)) {
40
- return false;
41
- }
42
- const settings = read_settings(settings_path);
43
- if (!settings?.hooks) {
44
- return false;
45
- }
46
- // Check UserPromptSubmit hooks
47
- const user_prompt_hooks = settings.hooks.UserPromptSubmit;
48
- if (user_prompt_hooks) {
49
- for (const hook_group of user_prompt_hooks) {
50
- for (const hook of hook_group.hooks) {
51
- if (hook.command.includes('.claude/skills') ||
52
- hook.command.includes('skills/')) {
53
- return true;
54
- }
55
- }
56
- }
57
- }
58
- // Check SessionStart hooks
59
- const session_start_hooks = settings.hooks.SessionStart;
60
- if (session_start_hooks) {
61
- for (const hook_group of session_start_hooks) {
62
- for (const hook of hook_group.hooks) {
63
- if (hook.command.includes('.claude/skills') ||
64
- hook.command.includes('skills/')) {
65
- return true;
66
- }
67
- }
68
- }
69
- }
70
- return false;
71
- }
72
- /**
73
- * Generate hook configuration JSON string
74
- */
75
- export function generate_hook_config(hook_type = 'user-prompt') {
76
- if (hook_type === 'session-start') {
77
- return `{
78
- "hooks": {
79
- "SessionStart": [{
80
- "hooks": [{
81
- "type": "command",
82
- "command": "echo '💡 Skills available in .claude/skills/ - check for relevant ones!'"
83
- }]
84
- }]
85
- }
86
- }`;
87
- }
88
- // Default: UserPromptSubmit
89
- return `{
90
- "hooks": {
91
- "UserPromptSubmit": [{
92
- "hooks": [{
93
- "type": "command",
94
- "command": "echo '💡 Check .claude/skills/ for relevant skills before responding!'"
95
- }]
96
- }]
97
- }
98
- }`;
99
- }
100
- /**
101
- * Get the recommended settings file location message
102
- */
103
- export function get_settings_location_message() {
104
- const settings_path = get_settings_path();
105
- if (settings_path && existsSync(settings_path)) {
106
- return settings_path;
107
- }
108
- return '.claude/settings.json (create this file in your project root)';
109
- }
110
- //# sourceMappingURL=settings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"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"}