claude-skills-cli 0.0.11 → 0.0.12

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
@@ -138,21 +138,37 @@ personal overrides.
138
138
 
139
139
  ## Skill Activation in Claude Code
140
140
 
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:
141
+ Skills are designed to auto-activate in Claude Code, but in practice,
142
+ **[activation is unreliable without explicit hooks](https://scottspence.com/posts/claude-code-skills-dont-auto-activate)**.
143
+ Despite documentation claiming skills are "model-invoked," Claude
144
+ often bypasses skills unless directly instructed.
145
+
146
+ ### The Solution: Explicit Activation Hooks
147
+
148
+ Use the `add-hook` command to add an explicit activation instruction:
145
149
 
146
150
  ```bash
147
151
  pnpx claude-skills-cli add-hook # Recommended: global (all projects)
148
152
  ```
149
153
 
150
- This adds a hook that:
154
+ This adds a `UserPromptSubmit` hook that:
155
+
156
+ - Uses explicit "INSTRUCTION:" prefix (critical for reliability)
157
+ - Tells Claude to check skills AND activate them using `Skill()`
158
+ syntax
159
+ - Scales automatically with new skills (no keyword management needed)
160
+ - Fires on every prompt (~20 tokens/prompt overhead)
151
161
 
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
162
+ **Why explicit instructions matter:**
163
+
164
+ Testing shows vague hooks like "Check for skills" make Claude _read_
165
+ skill files instead of _activating_ them. The instruction must be
166
+ direct and unambiguous:
167
+
168
+ ```
169
+ INSTRUCTION: Check available skills, match keywords to skill names/descriptions,
170
+ and activate matching skills using Skill(skill-name).
171
+ ```
156
172
 
157
173
  **Scopes:**
158
174
 
@@ -163,8 +179,14 @@ This adds a hook that:
163
179
  - **Local** (`--local`): `./.claude/settings.local.json` - gitignored,
164
180
  personal
165
181
 
166
- **Note:** This hook pattern is widely adopted by the community to
167
- improve skill activation reliability.
182
+ **Alternative: Keyword-based scripts**
183
+
184
+ For 1-2 skills, bash scripts with keyword detection work but become
185
+ brittle at scale (keyword collisions, manual maintenance per skill).
186
+ The simple echo-based instruction hook is more maintainable.
187
+
188
+ Read more:
189
+ [Why Claude Code Skills Don't Auto-Activate](https://scottspence.com/posts/claude-code-skills-dont-auto-activate)
168
190
 
169
191
  ## Resources
170
192
 
@@ -3,7 +3,7 @@ import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  import { ensure_dir } from '../utils/fs.js';
5
5
  import { error, info, success, warning } from '../utils/output.js';
6
- const HOOK_COMMAND = "echo '💡 Check .claude/skills/ for relevant skills before responding!'";
6
+ const HOOK_COMMAND = "echo 'INSTRUCTION: If the prompt matches any available skill keywords, use Skill(skill-name) to activate it.'";
7
7
  export function add_hook_command(options = {}) {
8
8
  // Determine which settings file to use
9
9
  let settings_path;
@@ -100,8 +100,8 @@ export function add_hook_command(options = {}) {
100
100
  console.log('');
101
101
  info(`Location: ${settings_path}`);
102
102
  console.log('');
103
- info('This hook improves skill activation reliability by reminding');
104
- info('Claude to check for relevant skills before responding.');
103
+ info('This hook improves skill activation reliability by explicitly');
104
+ info('instructing Claude to check AND activate matching skills.');
105
105
  console.log('');
106
106
  info('Next steps:');
107
107
  console.log(' 1. Create skills with: claude-skills-cli init --name <name>');
@@ -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":"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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.12",
4
4
  "description": "CLI toolkit for creating and managing Claude Agent Skills",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",