claude-skills-cli 0.0.11 → 0.0.13

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
@@ -126,45 +126,85 @@ Creates uploadable zip for Claude.ai. Validates first unless
126
126
  ### add-hook
127
127
 
128
128
  ```bash
129
- pnpx claude-skills-cli add-hook # Global (all projects)
130
- pnpx claude-skills-cli add-hook --project # Project (committed)
131
- pnpx claude-skills-cli add-hook --local # Project-local (gitignored)
129
+ # Default: forced-eval hook (84% success), global scope
130
+ pnpx claude-skills-cli add-hook
131
+
132
+ # Specify hook type and scope
133
+ pnpx claude-skills-cli add-hook --type llm-eval # LLM eval, global
134
+ pnpx claude-skills-cli add-hook --type forced-eval --project # Forced eval, project
135
+ pnpx claude-skills-cli add-hook --type simple-script --local # Simple script, local
132
136
  ```
133
137
 
134
- Adds skill activation hook to improve reliability. By default, adds to
135
- global settings (`~/.claude/settings.json`) to apply across all
136
- projects. Use `--project` for team-shared settings or `--local` for
137
- personal overrides.
138
+ Adds skill activation hook to improve reliability. Generates hook
139
+ scripts in `.claude/hooks/` and updates settings.json.
140
+
141
+ **Hook Types (--type):**
142
+
143
+ | Type | Success Rate | Description | Notes |
144
+ | --------------- | ------------ | --------------------------- | ---------------------------- |
145
+ | `forced-eval` | **84%** | Mandatory 3-step evaluation | Default, most consistent |
146
+ | `llm-eval` | **80%** | Claude API pre-evaluation | Requires `ANTHROPIC_API_KEY` |
147
+ | `simple-script` | 20% | Basic script file | For reference/debugging |
148
+ | `simple-inline` | 20% | Echo in settings.json | Legacy, backwards compatible |
149
+
150
+ **Scopes:**
151
+
152
+ - **Global** (default): `~/.claude/settings.json` - All projects
153
+ - **Project** (`--project`): `./.claude/settings.json` - Committed,
154
+ team-shared
155
+ - **Local** (`--local`): `./.claude/settings.local.json` - Gitignored,
156
+ personal
138
157
 
139
158
  ## Skill Activation in Claude Code
140
159
 
141
- Skills are designed to auto-activate in Claude Code, but, in reality,
142
- activation can be inconsistent. To improve reliability and make Claude
143
- check for relevant skills more consistently, use the `add-hook`
144
- command:
160
+ Skills are designed to auto-activate in Claude Code, but in practice,
161
+ **[activation is unreliable without explicit hooks](https://scottspence.com/posts/claude-code-skills-dont-auto-activate)**.
162
+ Despite documentation claiming skills are "model-invoked," Claude
163
+ often bypasses skills unless directly instructed.
164
+
165
+ ### The Solution: Activation Hooks
166
+
167
+ Use the `add-hook` command to add skill activation instructions:
145
168
 
146
169
  ```bash
147
- pnpx claude-skills-cli add-hook # Recommended: global (all projects)
170
+ # Recommended: forced-eval hook (84% success)
171
+ pnpx claude-skills-cli add-hook
148
172
  ```
149
173
 
150
- This adds a hook that:
174
+ After extensive testing (200+ prompts), two approaches emerged as
175
+ significantly better than basic instructions:
151
176
 
152
- - Fires before Claude processes each prompt (~15 tokens/prompt)
153
- - Makes Claude consistently check for relevant skills
154
- - Requires no maintenance (unlike pattern-based approaches)
155
- - Claude decides which skills apply to the current task
177
+ **Forced Eval Hook (84% success)** - Creates a mandatory 3-step
178
+ process:
156
179
 
157
- **Scopes:**
180
+ 1. Explicitly evaluate each skill (YES/NO with reasoning)
181
+ 2. Activate matching skills using `Skill()` tool
182
+ 3. Only then proceed with implementation
158
183
 
159
- - **Global** (default): `~/.claude/settings.json` - applies to all
160
- projects
161
- - **Project** (`--project`): `./.claude/settings.json` - committed to
162
- git, team-shared
163
- - **Local** (`--local`): `./.claude/settings.local.json` - gitignored,
164
- personal
184
+ **LLM Eval Hook (80% success)** - Pre-evaluates skills via Claude API:
185
+
186
+ - Costs ~$0.0004 per prompt (0.04 cents)
187
+ - 10% cheaper and 17% faster than forced eval
188
+ - Can miss certain prompt types but "smarter" when it works
189
+ - Requires `ANTHROPIC_API_KEY` environment variable
190
+
191
+ Both approaches are **massively better** than simple instructions (20%
192
+ success rate).
193
+
194
+ **Why explicit commitment matters:**
195
+
196
+ Simple hooks like "If the prompt matches any skill keywords, use
197
+ Skill(skill-name)" are passive suggestions that Claude often ignores.
198
+ The forced-eval hook creates a commitment mechanism - Claude must
199
+ write out its evaluation before proceeding, making it harder to skip
200
+ activation.
201
+
202
+ **Read more:**
165
203
 
166
- **Note:** This hook pattern is widely adopted by the community to
167
- improve skill activation reliability.
204
+ - [How to Make Claude Code Skills Activate Reliably](https://scottspence.com/posts/how-to-make-claude-code-skills-activate-reliably) -
205
+ Full testing methodology and results
206
+ - [Why Claude Code Skills Don't Auto-Activate](https://scottspence.com/posts/claude-code-skills-dont-auto-activate) -
207
+ Original problem analysis
168
208
 
169
209
  ## Resources
170
210
 
@@ -1,26 +1,72 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { ensure_dir } from '../utils/fs.js';
4
+ import { FORCED_EVAL_HOOK_TEMPLATE, LLM_EVAL_HOOK_TEMPLATE, SIMPLE_HOOK_TEMPLATE, } from '../core/templates.js';
5
+ import { ensure_dir, make_executable } from '../utils/fs.js';
5
6
  import { error, info, success, warning } from '../utils/output.js';
6
- const HOOK_COMMAND = "echo 'šŸ’” Check .claude/skills/ for relevant skills before responding!'";
7
+ const HOOK_TYPES = {
8
+ 'simple-inline': {
9
+ name: 'Simple Inline',
10
+ success_rate: '20%',
11
+ description: 'Echo command in settings.json',
12
+ command: "echo 'INSTRUCTION: If the prompt matches any available skill keywords, use Skill(skill-name) to activate it.'",
13
+ script: null,
14
+ },
15
+ 'simple-script': {
16
+ name: 'Simple Script',
17
+ success_rate: '20%',
18
+ description: 'Script file with basic instruction',
19
+ command: null,
20
+ script: 'skill-activation-simple.sh',
21
+ template: SIMPLE_HOOK_TEMPLATE,
22
+ },
23
+ 'forced-eval': {
24
+ name: 'Forced Evaluation',
25
+ success_rate: '84%',
26
+ description: 'Mandatory 3-step evaluation process',
27
+ command: null,
28
+ script: 'skill-activation-forced-eval.sh',
29
+ template: FORCED_EVAL_HOOK_TEMPLATE,
30
+ },
31
+ 'llm-eval': {
32
+ name: 'LLM Evaluation',
33
+ success_rate: '80%',
34
+ description: 'Claude API pre-evaluation (requires ANTHROPIC_API_KEY)',
35
+ command: null,
36
+ script: 'skill-activation-llm-eval.sh',
37
+ template: LLM_EVAL_HOOK_TEMPLATE,
38
+ },
39
+ };
7
40
  export function add_hook_command(options = {}) {
41
+ // Default to forced-eval for best performance
42
+ const hook_type = (options.type ||
43
+ 'forced-eval');
44
+ if (!HOOK_TYPES[hook_type]) {
45
+ error(`Invalid hook type: ${hook_type}`);
46
+ info('Valid types: simple-inline, simple-script, forced-eval, llm-eval');
47
+ process.exit(1);
48
+ }
49
+ const hook_config = HOOK_TYPES[hook_type];
8
50
  // Determine which settings file to use
9
51
  let settings_path;
52
+ let hooks_dir;
10
53
  let scope;
11
54
  if (options.local) {
12
55
  // Project-specific local (gitignored)
13
56
  settings_path = join('.claude', 'settings.local.json');
57
+ hooks_dir = join('.claude', 'hooks');
14
58
  scope = 'project-local';
15
59
  }
16
60
  else if (options.project) {
17
61
  // Project-specific shared (committed)
18
62
  settings_path = join('.claude', 'settings.json');
63
+ hooks_dir = join('.claude', 'hooks');
19
64
  scope = 'project';
20
65
  }
21
66
  else {
22
67
  // Global (default)
23
68
  settings_path = join(homedir(), '.claude', 'settings.json');
69
+ hooks_dir = join(homedir(), '.claude', 'hooks');
24
70
  scope = 'global';
25
71
  }
26
72
  let settings = {};
@@ -35,38 +81,28 @@ export function add_hook_command(options = {}) {
35
81
  settings.hooks.UserPromptSubmit.length > 0) {
36
82
  // Get the first (and should be only) UserPromptSubmit object
37
83
  const userPromptSubmit = settings.hooks.UserPromptSubmit[0];
38
- // Check if our specific hook already exists
39
- const has_skill_hook = userPromptSubmit.hooks?.some((h) => h.type === 'command' &&
40
- h.command.includes('Check .claude/skills/'));
41
- if (has_skill_hook) {
84
+ // Find existing skill activation hook (check for various patterns)
85
+ const existing_hook = userPromptSubmit.hooks?.find((h) => h.type === 'command' &&
86
+ (h.command.includes('skill-activation') ||
87
+ h.command.includes('skill-forced-eval-hook') ||
88
+ h.command.includes('skill-llm-eval-hook') ||
89
+ h.command.includes('skill-simple-instruction-hook') ||
90
+ h.command.includes('If the prompt matches any available skill keywords')));
91
+ if (existing_hook) {
42
92
  warning(`Skill activation hook already exists in ${scope} settings`);
43
- info('No changes made.');
44
- return;
93
+ info(`Current hook: ${existing_hook.command}`);
94
+ console.log('');
95
+ if (options.force) {
96
+ info('--force flag provided, replacing existing hook...');
97
+ // Remove the existing hook
98
+ userPromptSubmit.hooks = userPromptSubmit.hooks?.filter((h) => h !== existing_hook);
99
+ }
100
+ else {
101
+ info('No changes made.');
102
+ info('To replace, run with --force flag or manually remove the existing hook.');
103
+ return;
104
+ }
45
105
  }
46
- // Add to existing hooks array within the first UserPromptSubmit object
47
- if (!userPromptSubmit.hooks) {
48
- userPromptSubmit.hooks = [];
49
- }
50
- userPromptSubmit.hooks.push({
51
- type: 'command',
52
- command: HOOK_COMMAND,
53
- });
54
- info(`Adding skill activation hook to existing ${scope} settings...`);
55
- }
56
- else {
57
- // Create UserPromptSubmit section
58
- settings.hooks = settings.hooks || {};
59
- settings.hooks.UserPromptSubmit = [
60
- {
61
- hooks: [
62
- {
63
- type: 'command',
64
- command: HOOK_COMMAND,
65
- },
66
- ],
67
- },
68
- ];
69
- info(`Adding skill activation hook to ${scope} settings...`);
70
106
  }
71
107
  }
72
108
  catch (err) {
@@ -74,9 +110,72 @@ export function add_hook_command(options = {}) {
74
110
  process.exit(1);
75
111
  }
76
112
  }
113
+ // Determine the command to use
114
+ let hook_command;
115
+ if (hook_config.script) {
116
+ // Script-based hook: create the script file
117
+ const script_path = join(hooks_dir, hook_config.script);
118
+ info(`Creating ${hook_config.name} hook script...`);
119
+ try {
120
+ ensure_dir(hooks_dir);
121
+ // Write the script file
122
+ if (hook_config.template) {
123
+ writeFileSync(script_path, hook_config.template(), 'utf-8');
124
+ }
125
+ // Make it executable
126
+ make_executable(script_path);
127
+ success(`Script created: ${script_path}`);
128
+ }
129
+ catch (err) {
130
+ error(`Failed to create hook script: ${err}`);
131
+ process.exit(1);
132
+ }
133
+ // Use relative path for project hooks, absolute for global
134
+ if (scope === 'global') {
135
+ hook_command = script_path;
136
+ }
137
+ else {
138
+ hook_command = `.claude/hooks/${hook_config.script}`;
139
+ }
140
+ }
141
+ else {
142
+ // Inline command
143
+ hook_command = hook_config.command;
144
+ }
145
+ // Update or create settings.json
146
+ if (existsSync(settings_path)) {
147
+ // Add to existing settings
148
+ const userPromptSubmit = settings.hooks?.UserPromptSubmit?.[0];
149
+ if (userPromptSubmit) {
150
+ // Add to existing hooks array
151
+ if (!userPromptSubmit.hooks) {
152
+ userPromptSubmit.hooks = [];
153
+ }
154
+ userPromptSubmit.hooks.push({
155
+ type: 'command',
156
+ command: hook_command,
157
+ });
158
+ info(`Adding ${hook_config.name} hook to existing ${scope} settings...`);
159
+ }
160
+ else {
161
+ // Create UserPromptSubmit section
162
+ settings.hooks = settings.hooks || {};
163
+ settings.hooks.UserPromptSubmit = [
164
+ {
165
+ hooks: [
166
+ {
167
+ type: 'command',
168
+ command: hook_command,
169
+ },
170
+ ],
171
+ },
172
+ ];
173
+ info(`Adding ${hook_config.name} hook to ${scope} settings...`);
174
+ }
175
+ }
77
176
  else {
78
177
  // Create new settings.json
79
- info(`Creating ${scope} settings with skill activation hook...`);
178
+ info(`Creating ${scope} settings with ${hook_config.name} hook...`);
80
179
  settings = {
81
180
  hooks: {
82
181
  UserPromptSubmit: [
@@ -84,7 +183,7 @@ export function add_hook_command(options = {}) {
84
183
  hooks: [
85
184
  {
86
185
  type: 'command',
87
- command: HOOK_COMMAND,
186
+ command: hook_command,
88
187
  },
89
188
  ],
90
189
  },
@@ -96,13 +195,23 @@ export function add_hook_command(options = {}) {
96
195
  try {
97
196
  ensure_dir(scope === 'global' ? join(homedir(), '.claude') : '.claude');
98
197
  writeFileSync(settings_path, JSON.stringify(settings, null, 2), 'utf-8');
99
- success(`Skill activation hook added successfully! (${scope})`);
198
+ success(`${hook_config.name} hook added successfully! (${scope})`);
100
199
  console.log('');
101
- info(`Location: ${settings_path}`);
200
+ info(`Settings: ${settings_path}`);
201
+ if (hook_config.script) {
202
+ info(`Script: ${join(hooks_dir, hook_config.script)}`);
203
+ }
102
204
  console.log('');
103
- info('This hook improves skill activation reliability by reminding');
104
- info('Claude to check for relevant skills before responding.');
205
+ info(`Hook Type: ${hook_config.name}`);
206
+ info(`Success Rate: ${hook_config.success_rate}`);
207
+ info(`Description: ${hook_config.description}`);
105
208
  console.log('');
209
+ if (hook_type === 'llm-eval') {
210
+ warning('LLM eval hook requires ANTHROPIC_API_KEY environment variable');
211
+ info('Set with: export ANTHROPIC_API_KEY=your-key-here');
212
+ info('Falls back to simple instruction if API key not found');
213
+ console.log('');
214
+ }
106
215
  info('Next steps:');
107
216
  console.log(' 1. Create skills with: claude-skills-cli init --name <name>');
108
217
  console.log(' 2. Validate with: claude-skills-cli validate <path>');
@@ -1 +1 @@
1
- {"version":3,"file":"add-hook.js","sourceRoot":"","sources":["../../src/commands/add-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-hook.js","sourceRoot":"","sources":["../../src/commands/add-hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACN,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAenE,MAAM,UAAU,GAAG;IAClB,eAAe,EAAE;QAChB,IAAI,EAAE,eAAe;QACrB,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EACN,+GAA+G;QAChH,MAAM,EAAE,IAAI;KACZ;IACD,eAAe,EAAE;QAChB,IAAI,EAAE,eAAe;QACrB,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,4BAA4B;QACpC,QAAQ,EAAE,oBAAoB;KAC9B;IACD,aAAa,EAAE;QACd,IAAI,EAAE,mBAAmB;QACzB,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,iCAAiC;QACzC,QAAQ,EAAE,yBAAyB;KACnC;IACD,UAAU,EAAE;QACX,IAAI,EAAE,gBAAgB;QACtB,YAAY,EAAE,KAAK;QACnB,WAAW,EACV,wDAAwD;QACzD,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,8BAA8B;QACtC,QAAQ,EAAE,sBAAsB;KAChC;CACQ,CAAC;AAIX,MAAM,UAAU,gBAAgB,CAAC,UAA0B,EAAE;IAC5D,8CAA8C;IAC9C,MAAM,SAAS,GAAa,CAAC,OAAO,CAAC,IAAI;QACxC,aAAa,CAAa,CAAC;IAE5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACzC,IAAI,CACH,kEAAkE,CAClE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAE1C,uCAAuC;IACvC,IAAI,aAAqB,CAAC;IAC1B,IAAI,SAAiB,CAAC;IACtB,IAAI,KAAa,CAAC;IAElB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,sCAAsC;QACtC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QACvD,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,KAAK,GAAG,eAAe,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,sCAAsC;QACtC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACjD,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,KAAK,GAAG,SAAS,CAAC;IACnB,CAAC;SAAM,CAAC;QACP,mBAAmB;QACnB,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC5D,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,KAAK,GAAG,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,GAAiB,EAAE,CAAC;IAEhC,gCAAgC;IAChC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACrD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE/B,gDAAgD;YAChD,IACC,QAAQ,CAAC,KAAK,EAAE,gBAAgB;gBAChC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBAC9C,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EACzC,CAAC;gBACF,6DAA6D;gBAC7D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAE5D,mEAAmE;gBACnE,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,IAAI,KAAK,SAAS;oBACpB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;wBACtC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC;wBAC5C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;wBACzC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC;wBACnD,CAAC,CAAC,OAAO,CAAC,QAAQ,CACjB,oDAAoD,CACpD,CAAC,CACJ,CAAC;gBAEF,IAAI,aAAa,EAAE,CAAC;oBACnB,OAAO,CACN,2CAA2C,KAAK,WAAW,CAC3D,CAAC;oBACF,IAAI,CAAC,iBAAiB,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAEhB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBACnB,IAAI,CAAC,mDAAmD,CAAC,CAAC;wBAC1D,2BAA2B;wBAC3B,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAC1B,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACP,IAAI,CAAC,kBAAkB,CAAC,CAAC;wBACzB,IAAI,CACH,yEAAyE,CACzE,CAAC;wBACF,OAAO;oBACR,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,mBAAmB,aAAa,KAAK,GAAG,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IAED,+BAA+B;IAC/B,IAAI,YAAoB,CAAC;IAEzB,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACxB,4CAA4C;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,WAAW,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAEpD,IAAI,CAAC;YACJ,UAAU,CAAC,SAAS,CAAC,CAAC;YAEtB,wBAAwB;YACxB,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC1B,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7D,CAAC;YAED,qBAAqB;YACrB,eAAe,CAAC,WAAW,CAAC,CAAC;YAE7B,OAAO,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,2DAA2D;QAC3D,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxB,YAAY,GAAG,WAAW,CAAC;QAC5B,CAAC;aAAM,CAAC;YACP,YAAY,GAAG,iBAAiB,WAAW,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC;IACF,CAAC;SAAM,CAAC;QACP,iBAAiB;QACjB,YAAY,GAAG,WAAW,CAAC,OAAQ,CAAC;IACrC,CAAC;IAED,iCAAiC;IACjC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,2BAA2B;QAC3B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/D,IAAI,gBAAgB,EAAE,CAAC;YACtB,8BAA8B;YAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC7B,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;YAC7B,CAAC;YACD,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3B,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,YAAY;aACrB,CAAC,CAAC;YAEH,IAAI,CACH,UAAU,WAAW,CAAC,IAAI,qBAAqB,KAAK,cAAc,CAClE,CAAC;QACH,CAAC;aAAM,CAAC;YACP,kCAAkC;YAClC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG;gBACjC;oBACC,KAAK,EAAE;wBACN;4BACC,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,YAAY;yBACrB;qBACD;iBACD;aACD,CAAC;YAEF,IAAI,CAAC,UAAU,WAAW,CAAC,IAAI,YAAY,KAAK,cAAc,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;SAAM,CAAC;QACP,2BAA2B;QAC3B,IAAI,CACH,YAAY,KAAK,kBAAkB,WAAW,CAAC,IAAI,UAAU,CAC7D,CAAC;QACF,QAAQ,GAAG;YACV,KAAK,EAAE;gBACN,gBAAgB,EAAE;oBACjB;wBACC,KAAK,EAAE;4BACN;gCACC,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,YAAY;6BACrB;yBACD;qBACD;iBACD;aACD;SACD,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACJ,UAAU,CACT,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAC3D,CAAC;QACF,aAAa,CACZ,aAAa,EACb,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,OAAO,CACP,CAAC;QACF,OAAO,CACN,GAAG,WAAW,CAAC,IAAI,8BAA8B,KAAK,GAAG,CACzD,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,aAAa,aAAa,EAAE,CAAC,CAAC;QACnC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,cAAc,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,iBAAiB,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,CACN,+DAA+D,CAC/D,CAAC;YACF,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACzD,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CACV,+DAA+D,CAC/D,CAAC;QACF,OAAO,CAAC,GAAG,CACV,uDAAuD,CACvD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,mBAAmB,aAAa,KAAK,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC"}
@@ -203,4 +203,202 @@ ${description}
203
203
 
204
204
  This skill is automatically discovered by Claude when relevant to the task.
205
205
  `;
206
+ // Hook templates for skill activation
207
+ export const SIMPLE_HOOK_TEMPLATE = () => `#!/bin/bash
208
+ echo 'INSTRUCTION: If the prompt matches any available skill keywords, use Skill(skill-name) to activate it.'
209
+ `;
210
+ export const FORCED_EVAL_HOOK_TEMPLATE = () => `#!/bin/bash
211
+ # UserPromptSubmit hook that forces explicit skill evaluation
212
+ #
213
+ # This hook requires Claude to explicitly evaluate each available skill
214
+ # before proceeding with implementation.
215
+ #
216
+ # Installation: Copy to .claude/hooks/UserPromptSubmit
217
+
218
+ cat <<'EOF'
219
+ INSTRUCTION: MANDATORY SKILL ACTIVATION SEQUENCE
220
+
221
+ Step 1 - EVALUATE (do this in your response):
222
+ For each skill in <available_skills>, state: [skill-name] - YES/NO - [reason]
223
+
224
+ Step 2 - ACTIVATE (do this immediately after Step 1):
225
+ IF any skills are YES → Use Skill(skill-name) tool for EACH relevant skill NOW
226
+ IF no skills are YES → State "No skills needed" and proceed
227
+
228
+ Step 3 - IMPLEMENT:
229
+ Only after Step 2 is complete, proceed with implementation.
230
+
231
+ CRITICAL: You MUST call Skill() tool in Step 2. Do NOT skip to implementation.
232
+ The evaluation (Step 1) is WORTHLESS unless you ACTIVATE (Step 2) the skills.
233
+
234
+ Example of correct sequence:
235
+ - research: NO - not a research task
236
+ - svelte5-runes: YES - need reactive state
237
+ - sveltekit-structure: YES - creating routes
238
+
239
+ [Then IMMEDIATELY use Skill() tool:]
240
+ > Skill(svelte5-runes)
241
+ > Skill(sveltekit-structure)
242
+
243
+ [THEN and ONLY THEN start implementation]
244
+ EOF
245
+ `;
246
+ export const LLM_EVAL_HOOK_TEMPLATE = () => `#!/bin/bash
247
+ # UserPromptSubmit hook that uses Claude API for intelligent skill evaluation
248
+ #
249
+ # This hook analyses each user prompt and uses the Claude API to determine which
250
+ # skills (if any) are relevant. It then instructs Claude to activate those skills
251
+ # before proceeding with implementation.
252
+ #
253
+ # COST ANALYSIS (per prompt):
254
+ # Current model: Claude Haiku 3.5 ($0.80/$4 per MTok input/output)
255
+ # - Estimated: ~400 input tokens + ~20 output tokens
256
+ # - Cost: ~$0.0004 per evaluation (0.04 cents)
257
+ # - Volume: $0.40 per 1,000 prompts
258
+ #
259
+ # MODEL CONFIGURATION:
260
+ # Uncomment the model you want to use below
261
+ #
262
+ # Alternative: Claude Haiku 4.5 ($1/$5 per MTok) - 25% more expensive
263
+ # - Better accuracy and alignment
264
+ # - Cost: ~$0.0005 per evaluation (0.05 cents)
265
+ # - Trade-off: Extra 0.01Ā¢ per call for improved skill matching
266
+ #
267
+ # REQUIREMENTS:
268
+ # 1. Set ANTHROPIC_API_KEY environment variable
269
+ # export ANTHROPIC_API_KEY=your-key-here
270
+ # 2. Ensure jq is installed for JSON parsing
271
+
272
+ # ============================================================================
273
+ # MODEL CONFIGURATION - Uncomment the model you want to use
274
+ # ============================================================================
275
+
276
+ # Haiku 3.5 - Faster, cheaper, good for simple classification
277
+ MODEL="claude-3-5-haiku-20241022"
278
+
279
+ # Haiku 4.5 - Better accuracy, 25% more expensive (verify model ID from Anthropic docs)
280
+ # MODEL="claude-haiku-4-5-20251015"
281
+
282
+ # ============================================================================
283
+
284
+ # Read JSON input from stdin with timeout
285
+ INPUT_JSON=$(timeout 2 cat || echo '{}')
286
+
287
+ # Extract user prompt and cwd from JSON
288
+ USER_PROMPT=$(echo "$INPUT_JSON" | jq -r '.prompt // ""' 2>/dev/null)
289
+ CWD=$(echo "$INPUT_JSON" | jq -r '.cwd // ""' 2>/dev/null)
290
+
291
+ # Use CLAUDE_PROJECT_DIR if CWD is empty
292
+ if [ -z "$CWD" ] || [ "$CWD" = "null" ]; then
293
+ CWD="\${CLAUDE_PROJECT_DIR:-.}"
294
+ fi
295
+
296
+ # Get available skills with descriptions from both global and project skills
297
+ AVAILABLE_SKILLS=""
298
+
299
+ # Function to scan a skills directory
300
+ scan_skills_dir() {
301
+ local dir="$1"
302
+
303
+ if [ -d "$dir" ]; then
304
+ for skill_dir in "$dir"/*/; do
305
+ if [ -d "$skill_dir" ]; then
306
+ skill_file="$skill_dir/SKILL.md"
307
+ if [ -f "$skill_file" ]; then
308
+ skill_name=$(basename "$skill_dir")
309
+ # Extract description from YAML frontmatter (between --- markers)
310
+ skill_desc=$(sed -n '/^---$/,/^---$/p' "$skill_file" | grep '^description:' | sed 's/^description: *//' | head -n 1)
311
+
312
+ if [ -n "$skill_desc" ]; then
313
+ AVAILABLE_SKILLS="\${AVAILABLE_SKILLS}- \${skill_name}: \${skill_desc}\\n"
314
+ else
315
+ AVAILABLE_SKILLS="\${AVAILABLE_SKILLS}- \${skill_name}\\n"
316
+ fi
317
+ fi
318
+ fi
319
+ done
320
+ fi
321
+ }
322
+
323
+ # Scan global skills
324
+ scan_skills_dir "$HOME/.claude/skills"
325
+
326
+ # Scan project skills
327
+ scan_skills_dir "$CWD/.claude/skills"
328
+
329
+ if [ -z "$AVAILABLE_SKILLS" ]; then
330
+ AVAILABLE_SKILLS="No skills found"
331
+ fi
332
+
333
+
334
+ # Fallback instruction message
335
+ FALLBACK_INSTRUCTION="INSTRUCTION: If the prompt matches any available skill keywords, use Skill(skill-name) to activate it."
336
+
337
+ # If no API key in environment, fall back
338
+ if [ -z "$ANTHROPIC_API_KEY" ]; then
339
+ echo "$FALLBACK_INSTRUCTION"
340
+ exit 0
341
+ fi
342
+
343
+ # Prepare the optimized evaluation prompt
344
+ EVAL_PROMPT=$(cat <<EOF
345
+ Return ONLY a JSON array of skill names that match this request.
346
+
347
+ Request: \${USER_PROMPT}
348
+
349
+ Skills:
350
+ \${AVAILABLE_SKILLS}
351
+ Format: ["skill-name"] or []
352
+ EOF
353
+ )
354
+
355
+ # Call Claude API with optimized parameters
356
+ RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \\
357
+ -H "content-type: application/json" \\
358
+ -H "x-api-key: $ANTHROPIC_API_KEY" \\
359
+ -H "anthropic-version: 2023-06-01" \\
360
+ -d "{
361
+ \\"model\\": \\"$MODEL\\",
362
+ \\"max_tokens\\": 200,
363
+ \\"temperature\\": 0,
364
+ \\"system\\": \\"You are a skill matcher. Return only valid JSON arrays.\\",
365
+ \\"messages\\": [{
366
+ \\"role\\": \\"user\\",
367
+ \\"content\\": $(echo "$EVAL_PROMPT" | jq -Rs .)
368
+ }]
369
+ }")
370
+
371
+ # Extract the skill list from response
372
+ RAW_TEXT=$(echo "$RESPONSE" | jq -r '.content[0].text' 2>/dev/null)
373
+
374
+ # Check if we got a valid response
375
+ if [ $? -ne 0 ] || [ -z "$RAW_TEXT" ]; then
376
+ echo "$FALLBACK_INSTRUCTION"
377
+ exit 0
378
+ fi
379
+
380
+ # Strip markdown code fences if present and extract JSON
381
+ SKILLS=$(echo "$RAW_TEXT" | sed -n '/^\\[/,/^\\]/p' | head -n 1)
382
+
383
+ # If that didn't work, try the whole text
384
+ if [ -z "$SKILLS" ]; then
385
+ SKILLS="$RAW_TEXT"
386
+ fi
387
+
388
+ # Parse the skills array
389
+ SKILL_COUNT=$(echo "$SKILLS" | jq 'length' 2>/dev/null)
390
+
391
+ if [ "$SKILL_COUNT" = "0" ]; then
392
+ echo "INSTRUCTION: LLM evaluation determined no skills are needed for this task."
393
+ elif [ -n "$SKILL_COUNT" ] && [ "$SKILL_COUNT" != "null" ]; then
394
+ SKILL_NAMES=$(echo "$SKILLS" | jq -r '.[]' | paste -sd ',' -)
395
+ echo "INSTRUCTION: LLM evaluation determined these skills are relevant: $SKILL_NAMES"
396
+ echo ""
397
+ echo "You MUST activate these skills using the Skill() tool BEFORE implementation:"
398
+ echo "$SKILLS" | jq -r '.[] | "- Skill(\\(.))"'
399
+ else
400
+ # Fallback if parsing failed
401
+ echo "$FALLBACK_INSTRUCTION"
402
+ fi
403
+ `;
206
404
  //# sourceMappingURL=templates.js.map
@@ -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"}
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"}
package/dist/index.js CHANGED
@@ -25,7 +25,8 @@ function show_help() {
25
25
  console.log(' --version, -v Show version');
26
26
  console.log(' --with-examples Include example files when creating skill');
27
27
  console.log(' --format <type> Output format: text (default) or json');
28
- console.log(' --strict Fail validation if warnings present\n');
28
+ console.log(' --strict Fail validation if warnings present');
29
+ console.log(' --force Replace existing hook without prompting\n');
29
30
  console.log('Examples:');
30
31
  console.log(' claude-skills-cli init --name my-skill --description "Description"');
31
32
  console.log(' claude-skills-cli init --name my-skill --description "..." --with-examples');
@@ -36,9 +37,16 @@ function show_help() {
36
37
  console.log(' claude-skills-cli doctor .claude/skills/my-skill');
37
38
  console.log(' claude-skills-cli package .claude/skills/my-skill');
38
39
  console.log(' claude-skills-cli stats .claude/skills');
39
- console.log(' claude-skills-cli add-hook # Global');
40
- console.log(' claude-skills-cli add-hook --project # Project');
41
- console.log(' claude-skills-cli add-hook --local # Project-local');
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');
42
50
  console.log('\nāš ļø IMPORTANT FOR LLMs:');
43
51
  console.log(' ALWAYS run validate after creating or editing a skill:');
44
52
  console.log(' claude-skills-cli validate <skill-path>');
@@ -160,6 +168,8 @@ async function main() {
160
168
  add_hook_command({
161
169
  local: parsed.local === true,
162
170
  project: parsed.project === true,
171
+ type: parsed.type,
172
+ force: parsed.force === true,
163
173
  });
164
174
  break;
165
175
  default:
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;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,oEAAoE,CACpE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CACV,6DAA6D,CAC7D,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CACV,0DAA0D,CAC1D,CAAC;IACF,OAAO,CAAC,GAAG,CACV,oEAAoE,CACpE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CACV,iEAAiE,CACjE,CAAC;IACF,OAAO,CAAC,GAAG,CACV,6DAA6D,CAC7D,CAAC;IACF,OAAO,CAAC,GAAG,CACV,6DAA6D,CAC7D,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CACV,sEAAsE,CACtE,CAAC;IACF,OAAO,CAAC,GAAG,CACV,8EAA8E,CAC9E,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CACV,oEAAoE,CACpE,CAAC;IACF,OAAO,CAAC,GAAG,CACV,+DAA+D,CAC/D,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CACV,wDAAwD,CACxD,CAAC;IACF,OAAO,CAAC,GAAG,CACV,yDAAyD,CACzD,CAAC;IACF,OAAO,CAAC,GAAG,CACV,+DAA+D,CAC/D,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CACV,0DAA0D,CAC1D,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CACV,0DAA0D,CAC1D,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAClB,IAAc;IAEd,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACnB,CAAC,EAAE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,CAAC;QACF,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACnB,CAAC,EAAE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1D,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,MAAM;YACV,YAAY,CAAC;gBACZ,IAAI,EAAE,MAAM,CAAC,IAA0B;gBACvC,WAAW,EAAE,MAAM,CAAC,WAAiC;gBACrD,IAAI,EAAE,MAAM,CAAC,IAA0B;gBACvC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,KAAK,IAAI;aAC/C,CAAC,CAAC;YACH,MAAM;QAEP,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAqB,CAAC;YAChD,eAAe,CAAC;gBACf,UAAU;gBACV,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;aAC5B,CAAC,CAAC;YACH,MAAM;QACP,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAqB,CAAC;YAChD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CACV,6EAA6E,CAC7E,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAA4B,CAAC;YACnD,gBAAgB,CAAC;gBAChB,UAAU;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,IAAI;gBAC9B,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC3C,CAAC,CAAC;YACH,MAAM;QACP,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,UAAU,GAAG,MAAM,CAAC,WAAqB,CAAC;YAChD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,cAAc,CAAC;gBACd,UAAU;aACV,CAAC,CAAC;YACH,MAAM;QACP,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAqB,CAAC;YAChD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CACV,iDAAiD,CACjD,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,eAAe,CAAC;gBACrB,UAAU;gBACV,MAAM,EAAE,MAAM,CAAC,MAA4B;gBAC3C,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI;aACnD,CAAC,CAAC;YACH,MAAM;QACP,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,WAAiC,CAAC;YAC3D,aAAa,CAAC;gBACb,SAAS;aACT,CAAC,CAAC;YACH,MAAM;QACP,CAAC;QAED,KAAK,UAAU;YACd,gBAAgB,CAAC;gBAChB,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;gBAC5B,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;aAChC,CAAC,CAAC;YACH,MAAM;QAEP;YACC,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-skills-cli",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "CLI toolkit for creating and managing Claude Agent Skills",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -40,7 +40,7 @@
40
40
  "devDependencies": {
41
41
  "@changesets/cli": "^2.29.7",
42
42
  "@types/node": "^24.9.0",
43
- "@types/archiver": "^6.0.3",
43
+ "@types/archiver": "^7.0.0",
44
44
  "prettier": "^3.6.2",
45
45
  "typescript": "^5.9.3"
46
46
  },