@olegkoval/agent-skills 1.4.0 → 1.5.1

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-agent-skills",
3
3
  "description": "Agent-agnostic skill catalog for Codex, Claude, Cursor, and other skill-aware tools.",
4
- "version": "1.3.2",
4
+ "version": "1.5.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -18,6 +18,7 @@
18
18
  "./packages/software-development/promptctl",
19
19
  "./packages/music/fill-music-player",
20
20
  "./packages/software-development/product-builder",
21
+ "./packages/software-development/ai-tools-setup",
21
22
  "./packages/software-development/add-to-my-skills",
22
23
  "./packages/software-development/starter-rules",
23
24
  "./packages/software-development/open-source-publisher",
@@ -46,6 +46,11 @@
46
46
  "source": "./packages/software-development/product-builder/adapters/cursor",
47
47
  "description": "Build a full-stack web application or SaaS product from a user description using production-oriented defaults."
48
48
  },
49
+ {
50
+ "name": "olko:ai-tools-setup",
51
+ "source": "./packages/software-development/ai-tools-setup/adapters/cursor",
52
+ "description": "Install, repair, and measure the RTK+ICM+Vox AI development toolkit. Fixes missing hooks and MCP config, and shows a weekly effectiveness digest of token savings and memory health."
53
+ },
49
54
  {
50
55
  "name": "olko:add-to-my-skills",
51
56
  "source": "./packages/software-development/add-to-my-skills/adapters/cursor",
package/README.md CHANGED
@@ -53,14 +53,7 @@ Use the olko:semantic-release-beta skill to add prereleases on a beta branch.
53
53
 
54
54
  The repository includes a generated Claude marketplace manifest at `.claude-plugin/marketplace.json`.
55
55
 
56
- For local development, clone the repo and point Claude Code at the plugin directory:
57
-
58
- ```bash
59
- git clone https://github.com/oleg-koval/agent-skills.git
60
- claude --plugin-dir /path/to/agent-skills
61
- ```
62
-
63
- If your Claude Code environment supports GitHub marketplace installs for this repo, add the marketplace source first:
56
+ **For marketplace installs:**
64
57
 
65
58
  ```text
66
59
  /plugin marketplace add oleg-koval/agent-skills
@@ -72,7 +65,16 @@ Then install the catalog plugin:
72
65
  /plugin install olko-agent-skills@olko-agent-skills
73
66
  ```
74
67
 
75
- Live Claude marketplace install is not yet validated for this repo.
68
+ **For local development:**
69
+
70
+ Clone the repo and point Claude Code at the plugin directory:
71
+
72
+ ```bash
73
+ git clone https://github.com/oleg-koval/agent-skills.git
74
+ claude --plugin-dir /path/to/agent-skills
75
+ ```
76
+
77
+ See [Publishing to Marketplaces](#publishing-to-marketplaces) below for full submission details.
76
78
 
77
79
  </details>
78
80
 
@@ -81,7 +83,15 @@ Live Claude marketplace install is not yet validated for this repo.
81
83
 
82
84
  The repository includes a generated Cursor plugin index at `.cursor-plugin/index.json` and per-package Cursor adapters under `packages/*/*/adapters/cursor/`.
83
85
 
84
- For a single project, copy the relevant `SKILL.md` or adapter content into `.cursor/rules/`, or reference the full package directory from your Cursor rules.
86
+ **For plugin marketplace:**
87
+
88
+ Install from Cursor's extension marketplace using the published repository.
89
+
90
+ **For a single project:**
91
+
92
+ Copy the relevant `SKILL.md` or adapter content into `.cursor/rules/`, or reference the full package directory from your Cursor rules.
93
+
94
+ See [Publishing to Marketplaces](#publishing-to-marketplaces) for registry submission.
85
95
 
86
96
  </details>
87
97
 
@@ -95,7 +105,15 @@ Use the generated repository instructions and prompt files:
95
105
  .github/prompts/*.prompt.md
96
106
  ```
97
107
 
98
- These files are generated from `catalog/skills.json` and can be copied into a repository that should use the same skill guidance.
108
+ **To use in your GitHub workspace:**
109
+
110
+ Copy `.github/copilot-instructions.md` to your repository and enable Copilot. It will automatically apply skill guidance.
111
+
112
+ **To customize per-skill:**
113
+
114
+ Use files from `.github/prompts/*.prompt.md` in your Copilot configuration.
115
+
116
+ See [Publishing to Marketplaces](#publishing-to-marketplaces) for integration details.
99
117
 
100
118
  </details>
101
119
 
@@ -269,38 +287,119 @@ Use the olko:docs-index-keeper skill to set up docs index automation in this rep
269
287
  Use the olko:semantic-release-beta skill to add prereleases on a beta branch.
270
288
  ```
271
289
 
272
- ### Claude
290
+ Status: **Stable** — ready for daily use
273
291
 
274
- The repository includes a generated root manifest at `.claude-plugin/marketplace.json` and per-package Claude adapter stubs under `packages/*/*/adapters/claude/`.
292
+ ### Claude Code
275
293
 
276
- Current status:
294
+ The repository includes a generated marketplace manifest at `.claude-plugin/marketplace.json` and per-package Claude adapter stubs under `packages/*/*/adapters/claude/`.
277
295
 
278
- - suitable for local packaging and iteration
279
- - not yet validated against a live Claude marketplace install flow
296
+ **Local development:**
297
+
298
+ ```bash
299
+ git clone https://github.com/oleg-koval/agent-skills.git
300
+ claude --plugin-dir /path/to/agent-skills
301
+ ```
302
+
303
+ **Marketplace installation:**
304
+
305
+ See [Publishing to Marketplaces → Claude Marketplace](#claude-marketplace) for submission and user installation instructions.
306
+
307
+ Status: **Ready for marketplace** — fully generated manifests, ready to publish
280
308
 
281
309
  ### Cursor
282
310
 
283
- The repository includes a generated root plugin index at `.cursor-plugin/index.json` and per-package Cursor adapter stubs under `packages/*/*/adapters/cursor/`.
311
+ The repository includes a generated plugin index at `.cursor-plugin/index.json` and per-package Cursor adapter stubs under `packages/*/*/adapters/cursor/`.
284
312
 
285
- Current status:
313
+ See [Publishing to Marketplaces → Cursor Plugin Registry](#cursor-plugin-registry) for submission instructions.
286
314
 
287
- - suitable for local packaging and iteration
288
- - not yet validated against a live Cursor plugin install flow
315
+ Status: **Ready for marketplace** plugin index generated and ready to submit
289
316
 
290
317
  ### GitHub Copilot
291
318
 
292
- The repository includes generated Copilot repository instructions at `.github/copilot-instructions.md` and one reusable prompt file per skill under `.github/prompts/`.
319
+ The repository includes generated repository instructions at `.github/copilot-instructions.md` and per-skill prompt files under `.github/prompts/`.
320
+
321
+ To use in your GitHub workspace, copy `.github/copilot-instructions.md` to your repository.
293
322
 
294
- Current status:
323
+ See [Publishing to Marketplaces → GitHub Copilot](#github-copilot) for integration details.
295
324
 
296
- - suitable for repository-level Copilot customization
297
- - generated from the canonical package catalog
298
- - not yet validated against GitHub Copilot in a live GitHub workspace
325
+ Status: **Ready to use** copy instructions to any GitHub repository
299
326
 
300
327
  ### Source sync
301
328
 
302
329
  `./scripts/sync-from-sources.sh` syncs package content only for catalog entries that explicitly define `sourcePath`. If no package has `sourcePath`, the script exits successfully and reports that there is nothing to sync.
303
330
 
331
+ ## Publishing to Marketplaces
332
+
333
+ ### Claude Marketplace
334
+
335
+ The repository includes a generated marketplace manifest at `.claude-plugin/marketplace.json` that is compatible with Claude Code's plugin system.
336
+
337
+ **To submit to Claude marketplace:**
338
+
339
+ 1. Ensure the repository is public and contains this structure:
340
+ ```
341
+ ├── .claude-plugin/
342
+ │ └── marketplace.json # Generated from catalog/skills.json
343
+ └── packages/
344
+ └── {category}/{skill}/
345
+ ├── SKILL.md # Required canonical definition
346
+ └── adapters/
347
+ └── claude/ # Optional Claude-specific wrapper
348
+ ```
349
+
350
+ 2. Push to GitHub with a public repository:
351
+ ```bash
352
+ git push origin main
353
+ ```
354
+
355
+ 3. Submit the repository URL to Claude's plugin marketplace:
356
+ - In Claude Code: `/plugin marketplace add oleg-koval/agent-skills`
357
+ - Or visit the Claude plugin marketplace and add `https://github.com/oleg-koval/agent-skills`
358
+
359
+ 4. The marketplace will:
360
+ - Read `.claude-plugin/marketplace.json` for plugin metadata
361
+ - Index all skills from `catalog/skills.json`
362
+ - Auto-register skills by their `name` field
363
+ - Use `adapters: ["claude"]` entries to provide Claude-specific hints
364
+
365
+ **After publishing:**
366
+ - Users install with: `/plugin install olko-agent-skills@olko-agent-skills`
367
+ - All 12 skills become available as `olko:*` lookup names in Claude Code
368
+
369
+ ### Cursor Plugin Registry
370
+
371
+ Cursor plugin index is generated at `.cursor-plugin/index.json`.
372
+
373
+ **To submit to Cursor:**
374
+
375
+ 1. Ensure Cursor plugin metadata is present:
376
+ - `.cursor-plugin/index.json` (generated)
377
+ - `packages/*/*/adapters/cursor/` (optional Cursor-specific guidance)
378
+
379
+ 2. Submit the repository to Cursor's plugin marketplace with the `.cursor-plugin/` manifest
380
+
381
+ 3. Users install from Cursor's extension marketplace and reference skills by lookup name
382
+
383
+ ### GitHub Copilot
384
+
385
+ Generated Copilot instructions are at `.github/copilot-instructions.md` and per-skill prompts under `.github/prompts/`.
386
+
387
+ **To use in a GitHub workspace:**
388
+
389
+ 1. Copy `.github/copilot-instructions.md` to your repository
390
+ 2. Copilot reads this file automatically when enabled
391
+ 3. Per-skill prompts can be referenced or imported into custom Copilot configurations
392
+
393
+ ### Codex
394
+
395
+ Codex installation uses symlinks:
396
+
397
+ ```bash
398
+ ./scripts/install-codex-symlinks.sh
399
+ ```
400
+
401
+ Codex looks up skills by `olko:*` lookup names from the installed symlink directories.
402
+
304
403
  ## Local validation
305
404
 
306
405
  Rebuild generated manifests:
@@ -315,6 +414,12 @@ Validate the neutral catalog and generated root manifests:
315
414
  ./scripts/validate-catalog.sh
316
415
  ```
317
416
 
417
+ Run both before pushing marketplace updates:
418
+
419
+ ```bash
420
+ ./scripts/build-adapters.sh && ./scripts/validate-catalog.sh
421
+ ```
422
+
318
423
  ## Smoke-tested workflows
319
424
 
320
425
  The following package workflows have been smoke-tested locally before first push:
@@ -177,6 +177,29 @@
177
177
  "copilot"
178
178
  ]
179
179
  },
180
+ {
181
+ "name": "ai-tools-setup",
182
+ "lookupName": "olko:ai-tools-setup",
183
+ "category": "software-development",
184
+ "path": "packages/software-development/ai-tools-setup",
185
+ "description": "Install, repair, and measure the RTK+ICM+Vox AI development toolkit. Fixes missing hooks and MCP config, and shows a weekly effectiveness digest of token savings and memory health.",
186
+ "tags": [
187
+ "rtk",
188
+ "icm",
189
+ "vox",
190
+ "setup",
191
+ "hooks",
192
+ "digest",
193
+ "ai-tools",
194
+ "productivity"
195
+ ],
196
+ "adapters": [
197
+ "codex",
198
+ "claude",
199
+ "cursor",
200
+ "copilot"
201
+ ]
202
+ },
180
203
  {
181
204
  "name": "add-to-my-skills",
182
205
  "lookupName": "olko:add-to-my-skills",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olegkoval/agent-skills",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -0,0 +1,274 @@
1
+ ---
2
+ name: ai-tools-setup
3
+ description: 'Set up, repair, and report on the RTK+ICM+Vox AI development toolkit. Installs missing tools, fixes broken hooks and MCP config, and shows an effectiveness digest — token savings, memory accumulation, voice health — on demand or as a scheduled weekly report.'
4
+ license: MIT
5
+ allowed-tools: Bash, Read, Edit, Write
6
+ compatibility: Claude Code on macOS (Homebrew required)
7
+ metadata:
8
+ author: Oleg Koval
9
+ tags:
10
+ - rtk
11
+ - icm
12
+ - vox
13
+ - setup
14
+ - hooks
15
+ - digest
16
+ - ai-tools
17
+ - productivity
18
+ ---
19
+
20
+ # AI Tools Setup — RTK + ICM + Vox
21
+
22
+ Install, repair, and measure the RTK+ICM+Vox toolkit for Claude Code.
23
+
24
+ ## What This Skill Does
25
+
26
+ | Mode | When to use |
27
+ |------|-------------|
28
+ | **Setup** | First install on a new machine |
29
+ | **Repair** | Something broke — hooks missing, MCP not loading |
30
+ | **Digest** | Weekly check: token savings, memory health, voice stats |
31
+
32
+ ## Tools in the Bundle
33
+
34
+ | Tool | Version | Purpose |
35
+ |------|---------|---------|
36
+ | **RTK** | latest | Compresses CLI output by ~89% before it reaches the model |
37
+ | **ICM** | latest | Persistent SQLite memory across sessions (knowledge graph + hybrid search) |
38
+ | **Vox** | latest | Spoken task notifications via local TTS — zero API calls |
39
+
40
+ ---
41
+
42
+ ## Step 1: Detect Current State
43
+
44
+ Run this to see what is installed and what is missing:
45
+
46
+ ```bash
47
+ echo "=== Binary check ===" && \
48
+ (rtk --version 2>/dev/null && echo "RTK: ok") || echo "RTK: MISSING" && \
49
+ (icm --version 2>/dev/null && echo "ICM: ok") || echo "ICM: MISSING" && \
50
+ (vox --version 2>/dev/null && echo "Vox: ok") || echo "Vox: MISSING"
51
+
52
+ echo "=== RTK hook ===" && \
53
+ grep -c '"rtk hook claude"' ~/.claude/settings.json 2>/dev/null \
54
+ && echo "RTK hook: ok" || echo "RTK hook: MISSING"
55
+
56
+ echo "=== ICM hooks ===" && \
57
+ grep -c '"icm hook' ~/.claude/settings.json 2>/dev/null \
58
+ && echo "ICM hooks: ok" || echo "ICM hooks: MISSING"
59
+
60
+ echo "=== ICM MCP ===" && \
61
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('ICM MCP: ok' if 'icm' in d.get('mcpServers',{}) else 'ICM MCP: MISSING')" 2>/dev/null || echo "ICM MCP: MISSING"
62
+
63
+ echo "=== Vox MCP ===" && \
64
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('Vox MCP: ok' if 'vox' in d.get('mcpServers',{}) else 'Vox MCP: MISSING')" 2>/dev/null || echo "Vox MCP: MISSING"
65
+
66
+ echo "=== ICM CLAUDE.md ===" && \
67
+ grep -c 'icm:start' ~/.claude/CLAUDE.md 2>/dev/null \
68
+ && echo "ICM CLAUDE.md: ok" || echo "ICM CLAUDE.md: MISSING"
69
+ ```
70
+
71
+ Read the output and determine which of the following repair steps are needed.
72
+
73
+ ---
74
+
75
+ ## Step 2: Install Missing Binaries
76
+
77
+ Only run for tools that showed MISSING above.
78
+
79
+ **RTK:**
80
+ ```bash
81
+ brew install rtk
82
+ rtk --version
83
+ ```
84
+
85
+ **ICM:**
86
+ ```bash
87
+ brew install rtk-ai/tap/icm
88
+ icm --version
89
+ ```
90
+
91
+ **Vox:**
92
+ ```bash
93
+ brew install rtk-ai/tap/vox
94
+ vox --version
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Step 3: Repair Hooks
100
+
101
+ ### RTK hook missing
102
+
103
+ Add the `PreToolUse` RTK hook to `~/.claude/settings.json`. Read the file first, then add inside the existing `"hooks"` block (or create one):
104
+
105
+ ```json
106
+ "PreToolUse": [
107
+ {
108
+ "matcher": "Bash",
109
+ "hooks": [{ "type": "command", "command": "rtk hook claude" }]
110
+ }
111
+ ]
112
+ ```
113
+
114
+ Then verify: `grep -c '"rtk hook claude"' ~/.claude/settings.json`
115
+
116
+ ### ICM hooks missing
117
+
118
+ Run:
119
+ ```bash
120
+ icm init --mode hook
121
+ ```
122
+
123
+ This adds `PreToolUse`, `PostToolUse`, `PreCompact`, `UserPromptSubmit`, `SessionStart`, `SessionEnd` hooks automatically.
124
+
125
+ ### Vox Stop hook missing
126
+
127
+ Run:
128
+ ```bash
129
+ vox init --mode cli
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Step 4: Repair MCP Servers
135
+
136
+ ### ICM MCP missing
137
+
138
+ ```bash
139
+ icm init --mode mcp
140
+ ```
141
+
142
+ ### Vox MCP missing
143
+
144
+ ```bash
145
+ vox init --mode mcp
146
+ ```
147
+
148
+ Verify both by checking `~/.claude.json`:
149
+ ```bash
150
+ python3 -c "import json; d=json.load(open('$HOME/.claude.json')); print(list(d.get('mcpServers',{}).keys()))"
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Step 5: Repair CLAUDE.md Instructions
156
+
157
+ If ICM instructions are missing from `~/.claude/CLAUDE.md`:
158
+
159
+ ```bash
160
+ icm init --mode cli
161
+ ```
162
+
163
+ Then move the block from wherever `icm init` placed it into `~/.claude/CLAUDE.md` (the global file), and remove it from any project-local files.
164
+
165
+ ---
166
+
167
+ ## Step 6: Effectiveness Digest
168
+
169
+ Run this report to see how the toolkit is performing. Good to run weekly.
170
+
171
+ ```bash
172
+ echo "=============================="
173
+ echo " AI TOOLS EFFECTIVENESS"
174
+ echo "=============================="
175
+ echo ""
176
+ echo "--- RTK: Token Savings ---"
177
+ rtk gain 2>/dev/null || echo "No data yet (run some commands first)"
178
+ echo ""
179
+ echo "--- ICM: Memory Health ---"
180
+ icm health 2>/dev/null || echo "No memories yet"
181
+ echo ""
182
+ echo "--- ICM: Topics ---"
183
+ icm topics 2>/dev/null || echo "No topics yet"
184
+ echo ""
185
+ echo "--- Vox: Usage ---"
186
+ vox stats 2>/dev/null || echo "No stats yet"
187
+ echo ""
188
+ echo "=============================="
189
+ ```
190
+
191
+ ### What healthy output looks like
192
+
193
+ - **RTK**: `Tokens saved: 5M+ (85%+)` across `500+ commands` — if savings are low, run `rtk discover` to find uncovered commands
194
+ - **ICM**: Topics like `decisions-*`, `errors-resolved`, `preferences` with recent timestamps — if empty, start storing manually with `icm store`
195
+ - **Vox**: Non-zero speak count means the Stop hook fired
196
+
197
+ ---
198
+
199
+ ## Step 7 (Optional): Schedule a Weekly Digest
200
+
201
+ To get a weekly automated report without having to remember to run this skill:
202
+
203
+ ```bash
204
+ # Create a weekly digest script
205
+ cat > ~/ai-tools-digest.sh << 'EOF'
206
+ #!/bin/bash
207
+ echo "=== Weekly AI Tools Digest — $(date) ===" | tee -a ~/ai-tools-digest.log
208
+ echo "" | tee -a ~/ai-tools-digest.log
209
+ rtk gain 2>/dev/null | tee -a ~/ai-tools-digest.log
210
+ echo "" | tee -a ~/ai-tools-digest.log
211
+ icm health 2>/dev/null | tee -a ~/ai-tools-digest.log
212
+ echo "" | tee -a ~/ai-tools-digest.log
213
+ icm topics 2>/dev/null | tee -a ~/ai-tools-digest.log
214
+ # Speak the summary if Vox is available
215
+ vox "Weekly digest complete. Check your log." 2>/dev/null || true
216
+ EOF
217
+ chmod +x ~/ai-tools-digest.sh
218
+ ```
219
+
220
+ Then set up a weekly launchd job (macOS):
221
+
222
+ ```bash
223
+ cat > ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist << 'EOF'
224
+ <?xml version="1.0" encoding="UTF-8"?>
225
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
226
+ <plist version="1.0">
227
+ <dict>
228
+ <key>Label</key>
229
+ <string>com.oleg.ai-tools-digest</string>
230
+ <key>ProgramArguments</key>
231
+ <array>
232
+ <string>/bin/bash</string>
233
+ <string>/Users/oleg.koval/ai-tools-digest.sh</string>
234
+ </array>
235
+ <key>StartCalendarInterval</key>
236
+ <dict>
237
+ <key>Weekday</key>
238
+ <integer>1</integer>
239
+ <key>Hour</key>
240
+ <integer>9</integer>
241
+ <key>Minute</key>
242
+ <integer>0</integer>
243
+ </dict>
244
+ <key>StandardOutPath</key>
245
+ <string>/tmp/ai-tools-digest.log</string>
246
+ <key>StandardErrorPath</key>
247
+ <string>/tmp/ai-tools-digest.err</string>
248
+ </dict>
249
+ </plist>
250
+ EOF
251
+
252
+ launchctl load ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist
253
+ echo "Weekly digest scheduled for Mondays at 9am"
254
+ ```
255
+
256
+ To view the digest log anytime: `cat ~/ai-tools-digest.log`
257
+
258
+ To unload: `launchctl unload ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist`
259
+
260
+ ---
261
+
262
+ ## Quick Reference
263
+
264
+ | Command | What it does |
265
+ |---------|-------------|
266
+ | `rtk gain` | Total tokens saved to date |
267
+ | `rtk discover` | Find commands not yet covered by RTK |
268
+ | `icm topics` | List all memory topic buckets |
269
+ | `icm health` | Memory hygiene — stale, redundant, decay stats |
270
+ | `icm recall "query"` | Search memories semantically |
271
+ | `icm store -t topic -c "content" -i high` | Store a memory manually |
272
+ | `vox "text"` | Speak text immediately |
273
+ | `vox stats` | Usage stats for the Vox backend |
274
+ | `cat ~/ai-tools-digest.log` | View scheduled digest history |
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "olko-ai-tools-setup",
3
+ "description": "Install, repair, and measure the RTK+ICM+Vox AI development toolkit. Fixes missing hooks and MCP config, and shows a weekly effectiveness digest of token savings and memory health.",
4
+ "skills": "./skills"
5
+ }
@@ -0,0 +1,276 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ name: ai-tools-setup
5
+ description: 'Set up, repair, and report on the RTK+ICM+Vox AI development toolkit. Installs missing tools, fixes broken hooks and MCP config, and shows an effectiveness digest — token savings, memory accumulation, voice health — on demand or as a scheduled weekly report.'
6
+ license: MIT
7
+ allowed-tools: Bash, Read, Edit, Write
8
+ compatibility: Claude Code on macOS (Homebrew required)
9
+ metadata:
10
+ author: Oleg Koval
11
+ tags:
12
+ - rtk
13
+ - icm
14
+ - vox
15
+ - setup
16
+ - hooks
17
+ - digest
18
+ - ai-tools
19
+ - productivity
20
+ ---
21
+
22
+ # AI Tools Setup — RTK + ICM + Vox
23
+
24
+ Install, repair, and measure the RTK+ICM+Vox toolkit for Claude Code.
25
+
26
+ ## What This Skill Does
27
+
28
+ | Mode | When to use |
29
+ |------|-------------|
30
+ | **Setup** | First install on a new machine |
31
+ | **Repair** | Something broke — hooks missing, MCP not loading |
32
+ | **Digest** | Weekly check: token savings, memory health, voice stats |
33
+
34
+ ## Tools in the Bundle
35
+
36
+ | Tool | Version | Purpose |
37
+ |------|---------|---------|
38
+ | **RTK** | latest | Compresses CLI output by ~89% before it reaches the model |
39
+ | **ICM** | latest | Persistent SQLite memory across sessions (knowledge graph + hybrid search) |
40
+ | **Vox** | latest | Spoken task notifications via local TTS — zero API calls |
41
+
42
+ ---
43
+
44
+ ## Step 1: Detect Current State
45
+
46
+ Run this to see what is installed and what is missing:
47
+
48
+ ```bash
49
+ echo "=== Binary check ===" && \
50
+ (rtk --version 2>/dev/null && echo "RTK: ok") || echo "RTK: MISSING" && \
51
+ (icm --version 2>/dev/null && echo "ICM: ok") || echo "ICM: MISSING" && \
52
+ (vox --version 2>/dev/null && echo "Vox: ok") || echo "Vox: MISSING"
53
+
54
+ echo "=== RTK hook ===" && \
55
+ grep -c '"rtk hook claude"' ~/.claude/settings.json 2>/dev/null \
56
+ && echo "RTK hook: ok" || echo "RTK hook: MISSING"
57
+
58
+ echo "=== ICM hooks ===" && \
59
+ grep -c '"icm hook' ~/.claude/settings.json 2>/dev/null \
60
+ && echo "ICM hooks: ok" || echo "ICM hooks: MISSING"
61
+
62
+ echo "=== ICM MCP ===" && \
63
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('ICM MCP: ok' if 'icm' in d.get('mcpServers',{}) else 'ICM MCP: MISSING')" 2>/dev/null || echo "ICM MCP: MISSING"
64
+
65
+ echo "=== Vox MCP ===" && \
66
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('Vox MCP: ok' if 'vox' in d.get('mcpServers',{}) else 'Vox MCP: MISSING')" 2>/dev/null || echo "Vox MCP: MISSING"
67
+
68
+ echo "=== ICM CLAUDE.md ===" && \
69
+ grep -c 'icm:start' ~/.claude/CLAUDE.md 2>/dev/null \
70
+ && echo "ICM CLAUDE.md: ok" || echo "ICM CLAUDE.md: MISSING"
71
+ ```
72
+
73
+ Read the output and determine which of the following repair steps are needed.
74
+
75
+ ---
76
+
77
+ ## Step 2: Install Missing Binaries
78
+
79
+ Only run for tools that showed MISSING above.
80
+
81
+ **RTK:**
82
+ ```bash
83
+ brew install rtk
84
+ rtk --version
85
+ ```
86
+
87
+ **ICM:**
88
+ ```bash
89
+ brew install rtk-ai/tap/icm
90
+ icm --version
91
+ ```
92
+
93
+ **Vox:**
94
+ ```bash
95
+ brew install rtk-ai/tap/vox
96
+ vox --version
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Step 3: Repair Hooks
102
+
103
+ ### RTK hook missing
104
+
105
+ Add the `PreToolUse` RTK hook to `~/.claude/settings.json`. Read the file first, then add inside the existing `"hooks"` block (or create one):
106
+
107
+ ```json
108
+ "PreToolUse": [
109
+ {
110
+ "matcher": "Bash",
111
+ "hooks": [{ "type": "command", "command": "rtk hook claude" }]
112
+ }
113
+ ]
114
+ ```
115
+
116
+ Then verify: `grep -c '"rtk hook claude"' ~/.claude/settings.json`
117
+
118
+ ### ICM hooks missing
119
+
120
+ Run:
121
+ ```bash
122
+ icm init --mode hook
123
+ ```
124
+
125
+ This adds `PreToolUse`, `PostToolUse`, `PreCompact`, `UserPromptSubmit`, `SessionStart`, `SessionEnd` hooks automatically.
126
+
127
+ ### Vox Stop hook missing
128
+
129
+ Run:
130
+ ```bash
131
+ vox init --mode cli
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Step 4: Repair MCP Servers
137
+
138
+ ### ICM MCP missing
139
+
140
+ ```bash
141
+ icm init --mode mcp
142
+ ```
143
+
144
+ ### Vox MCP missing
145
+
146
+ ```bash
147
+ vox init --mode mcp
148
+ ```
149
+
150
+ Verify both by checking `~/.claude.json`:
151
+ ```bash
152
+ python3 -c "import json; d=json.load(open('$HOME/.claude.json')); print(list(d.get('mcpServers',{}).keys()))"
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Step 5: Repair CLAUDE.md Instructions
158
+
159
+ If ICM instructions are missing from `~/.claude/CLAUDE.md`:
160
+
161
+ ```bash
162
+ icm init --mode cli
163
+ ```
164
+
165
+ Then move the block from wherever `icm init` placed it into `~/.claude/CLAUDE.md` (the global file), and remove it from any project-local files.
166
+
167
+ ---
168
+
169
+ ## Step 6: Effectiveness Digest
170
+
171
+ Run this report to see how the toolkit is performing. Good to run weekly.
172
+
173
+ ```bash
174
+ echo "=============================="
175
+ echo " AI TOOLS EFFECTIVENESS"
176
+ echo "=============================="
177
+ echo ""
178
+ echo "--- RTK: Token Savings ---"
179
+ rtk gain 2>/dev/null || echo "No data yet (run some commands first)"
180
+ echo ""
181
+ echo "--- ICM: Memory Health ---"
182
+ icm health 2>/dev/null || echo "No memories yet"
183
+ echo ""
184
+ echo "--- ICM: Topics ---"
185
+ icm topics 2>/dev/null || echo "No topics yet"
186
+ echo ""
187
+ echo "--- Vox: Usage ---"
188
+ vox stats 2>/dev/null || echo "No stats yet"
189
+ echo ""
190
+ echo "=============================="
191
+ ```
192
+
193
+ ### What healthy output looks like
194
+
195
+ - **RTK**: `Tokens saved: 5M+ (85%+)` across `500+ commands` — if savings are low, run `rtk discover` to find uncovered commands
196
+ - **ICM**: Topics like `decisions-*`, `errors-resolved`, `preferences` with recent timestamps — if empty, start storing manually with `icm store`
197
+ - **Vox**: Non-zero speak count means the Stop hook fired
198
+
199
+ ---
200
+
201
+ ## Step 7 (Optional): Schedule a Weekly Digest
202
+
203
+ To get a weekly automated report without having to remember to run this skill:
204
+
205
+ ```bash
206
+ # Create a weekly digest script
207
+ cat > ~/ai-tools-digest.sh << 'EOF'
208
+ #!/bin/bash
209
+ echo "=== Weekly AI Tools Digest — $(date) ===" | tee -a ~/ai-tools-digest.log
210
+ echo "" | tee -a ~/ai-tools-digest.log
211
+ rtk gain 2>/dev/null | tee -a ~/ai-tools-digest.log
212
+ echo "" | tee -a ~/ai-tools-digest.log
213
+ icm health 2>/dev/null | tee -a ~/ai-tools-digest.log
214
+ echo "" | tee -a ~/ai-tools-digest.log
215
+ icm topics 2>/dev/null | tee -a ~/ai-tools-digest.log
216
+ # Speak the summary if Vox is available
217
+ vox "Weekly digest complete. Check your log." 2>/dev/null || true
218
+ EOF
219
+ chmod +x ~/ai-tools-digest.sh
220
+ ```
221
+
222
+ Then set up a weekly launchd job (macOS):
223
+
224
+ ```bash
225
+ cat > ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist << 'EOF'
226
+ <?xml version="1.0" encoding="UTF-8"?>
227
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
228
+ <plist version="1.0">
229
+ <dict>
230
+ <key>Label</key>
231
+ <string>com.oleg.ai-tools-digest</string>
232
+ <key>ProgramArguments</key>
233
+ <array>
234
+ <string>/bin/bash</string>
235
+ <string>/Users/oleg.koval/ai-tools-digest.sh</string>
236
+ </array>
237
+ <key>StartCalendarInterval</key>
238
+ <dict>
239
+ <key>Weekday</key>
240
+ <integer>1</integer>
241
+ <key>Hour</key>
242
+ <integer>9</integer>
243
+ <key>Minute</key>
244
+ <integer>0</integer>
245
+ </dict>
246
+ <key>StandardOutPath</key>
247
+ <string>/tmp/ai-tools-digest.log</string>
248
+ <key>StandardErrorPath</key>
249
+ <string>/tmp/ai-tools-digest.err</string>
250
+ </dict>
251
+ </plist>
252
+ EOF
253
+
254
+ launchctl load ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist
255
+ echo "Weekly digest scheduled for Mondays at 9am"
256
+ ```
257
+
258
+ To view the digest log anytime: `cat ~/ai-tools-digest.log`
259
+
260
+ To unload: `launchctl unload ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist`
261
+
262
+ ---
263
+
264
+ ## Quick Reference
265
+
266
+ | Command | What it does |
267
+ |---------|-------------|
268
+ | `rtk gain` | Total tokens saved to date |
269
+ | `rtk discover` | Find commands not yet covered by RTK |
270
+ | `icm topics` | List all memory topic buckets |
271
+ | `icm health` | Memory hygiene — stale, redundant, decay stats |
272
+ | `icm recall "query"` | Search memories semantically |
273
+ | `icm store -t topic -c "content" -i high` | Store a memory manually |
274
+ | `vox "text"` | Speak text immediately |
275
+ | `vox stats` | Usage stats for the Vox backend |
276
+ | `cat ~/ai-tools-digest.log` | View scheduled digest history |
@@ -0,0 +1,3 @@
1
+ # Codex adapter
2
+
3
+ Use the canonical skill directly from `packages/software-development/ai-tools-setup/SKILL.md`.
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "olko:ai-tools-setup",
3
+ "version": "0.1.0",
4
+ "description": "Install, repair, and measure the RTK+ICM+Vox AI development toolkit. Fixes missing hooks and MCP config, and shows a weekly effectiveness digest of token savings and memory health.",
5
+ "skills": "skills/"
6
+ }
@@ -0,0 +1,276 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ name: ai-tools-setup
5
+ description: 'Set up, repair, and report on the RTK+ICM+Vox AI development toolkit. Installs missing tools, fixes broken hooks and MCP config, and shows an effectiveness digest — token savings, memory accumulation, voice health — on demand or as a scheduled weekly report.'
6
+ license: MIT
7
+ allowed-tools: Bash, Read, Edit, Write
8
+ compatibility: Claude Code on macOS (Homebrew required)
9
+ metadata:
10
+ author: Oleg Koval
11
+ tags:
12
+ - rtk
13
+ - icm
14
+ - vox
15
+ - setup
16
+ - hooks
17
+ - digest
18
+ - ai-tools
19
+ - productivity
20
+ ---
21
+
22
+ # AI Tools Setup — RTK + ICM + Vox
23
+
24
+ Install, repair, and measure the RTK+ICM+Vox toolkit for Claude Code.
25
+
26
+ ## What This Skill Does
27
+
28
+ | Mode | When to use |
29
+ |------|-------------|
30
+ | **Setup** | First install on a new machine |
31
+ | **Repair** | Something broke — hooks missing, MCP not loading |
32
+ | **Digest** | Weekly check: token savings, memory health, voice stats |
33
+
34
+ ## Tools in the Bundle
35
+
36
+ | Tool | Version | Purpose |
37
+ |------|---------|---------|
38
+ | **RTK** | latest | Compresses CLI output by ~89% before it reaches the model |
39
+ | **ICM** | latest | Persistent SQLite memory across sessions (knowledge graph + hybrid search) |
40
+ | **Vox** | latest | Spoken task notifications via local TTS — zero API calls |
41
+
42
+ ---
43
+
44
+ ## Step 1: Detect Current State
45
+
46
+ Run this to see what is installed and what is missing:
47
+
48
+ ```bash
49
+ echo "=== Binary check ===" && \
50
+ (rtk --version 2>/dev/null && echo "RTK: ok") || echo "RTK: MISSING" && \
51
+ (icm --version 2>/dev/null && echo "ICM: ok") || echo "ICM: MISSING" && \
52
+ (vox --version 2>/dev/null && echo "Vox: ok") || echo "Vox: MISSING"
53
+
54
+ echo "=== RTK hook ===" && \
55
+ grep -c '"rtk hook claude"' ~/.claude/settings.json 2>/dev/null \
56
+ && echo "RTK hook: ok" || echo "RTK hook: MISSING"
57
+
58
+ echo "=== ICM hooks ===" && \
59
+ grep -c '"icm hook' ~/.claude/settings.json 2>/dev/null \
60
+ && echo "ICM hooks: ok" || echo "ICM hooks: MISSING"
61
+
62
+ echo "=== ICM MCP ===" && \
63
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('ICM MCP: ok' if 'icm' in d.get('mcpServers',{}) else 'ICM MCP: MISSING')" 2>/dev/null || echo "ICM MCP: MISSING"
64
+
65
+ echo "=== Vox MCP ===" && \
66
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('Vox MCP: ok' if 'vox' in d.get('mcpServers',{}) else 'Vox MCP: MISSING')" 2>/dev/null || echo "Vox MCP: MISSING"
67
+
68
+ echo "=== ICM CLAUDE.md ===" && \
69
+ grep -c 'icm:start' ~/.claude/CLAUDE.md 2>/dev/null \
70
+ && echo "ICM CLAUDE.md: ok" || echo "ICM CLAUDE.md: MISSING"
71
+ ```
72
+
73
+ Read the output and determine which of the following repair steps are needed.
74
+
75
+ ---
76
+
77
+ ## Step 2: Install Missing Binaries
78
+
79
+ Only run for tools that showed MISSING above.
80
+
81
+ **RTK:**
82
+ ```bash
83
+ brew install rtk
84
+ rtk --version
85
+ ```
86
+
87
+ **ICM:**
88
+ ```bash
89
+ brew install rtk-ai/tap/icm
90
+ icm --version
91
+ ```
92
+
93
+ **Vox:**
94
+ ```bash
95
+ brew install rtk-ai/tap/vox
96
+ vox --version
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Step 3: Repair Hooks
102
+
103
+ ### RTK hook missing
104
+
105
+ Add the `PreToolUse` RTK hook to `~/.claude/settings.json`. Read the file first, then add inside the existing `"hooks"` block (or create one):
106
+
107
+ ```json
108
+ "PreToolUse": [
109
+ {
110
+ "matcher": "Bash",
111
+ "hooks": [{ "type": "command", "command": "rtk hook claude" }]
112
+ }
113
+ ]
114
+ ```
115
+
116
+ Then verify: `grep -c '"rtk hook claude"' ~/.claude/settings.json`
117
+
118
+ ### ICM hooks missing
119
+
120
+ Run:
121
+ ```bash
122
+ icm init --mode hook
123
+ ```
124
+
125
+ This adds `PreToolUse`, `PostToolUse`, `PreCompact`, `UserPromptSubmit`, `SessionStart`, `SessionEnd` hooks automatically.
126
+
127
+ ### Vox Stop hook missing
128
+
129
+ Run:
130
+ ```bash
131
+ vox init --mode cli
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Step 4: Repair MCP Servers
137
+
138
+ ### ICM MCP missing
139
+
140
+ ```bash
141
+ icm init --mode mcp
142
+ ```
143
+
144
+ ### Vox MCP missing
145
+
146
+ ```bash
147
+ vox init --mode mcp
148
+ ```
149
+
150
+ Verify both by checking `~/.claude.json`:
151
+ ```bash
152
+ python3 -c "import json; d=json.load(open('$HOME/.claude.json')); print(list(d.get('mcpServers',{}).keys()))"
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Step 5: Repair CLAUDE.md Instructions
158
+
159
+ If ICM instructions are missing from `~/.claude/CLAUDE.md`:
160
+
161
+ ```bash
162
+ icm init --mode cli
163
+ ```
164
+
165
+ Then move the block from wherever `icm init` placed it into `~/.claude/CLAUDE.md` (the global file), and remove it from any project-local files.
166
+
167
+ ---
168
+
169
+ ## Step 6: Effectiveness Digest
170
+
171
+ Run this report to see how the toolkit is performing. Good to run weekly.
172
+
173
+ ```bash
174
+ echo "=============================="
175
+ echo " AI TOOLS EFFECTIVENESS"
176
+ echo "=============================="
177
+ echo ""
178
+ echo "--- RTK: Token Savings ---"
179
+ rtk gain 2>/dev/null || echo "No data yet (run some commands first)"
180
+ echo ""
181
+ echo "--- ICM: Memory Health ---"
182
+ icm health 2>/dev/null || echo "No memories yet"
183
+ echo ""
184
+ echo "--- ICM: Topics ---"
185
+ icm topics 2>/dev/null || echo "No topics yet"
186
+ echo ""
187
+ echo "--- Vox: Usage ---"
188
+ vox stats 2>/dev/null || echo "No stats yet"
189
+ echo ""
190
+ echo "=============================="
191
+ ```
192
+
193
+ ### What healthy output looks like
194
+
195
+ - **RTK**: `Tokens saved: 5M+ (85%+)` across `500+ commands` — if savings are low, run `rtk discover` to find uncovered commands
196
+ - **ICM**: Topics like `decisions-*`, `errors-resolved`, `preferences` with recent timestamps — if empty, start storing manually with `icm store`
197
+ - **Vox**: Non-zero speak count means the Stop hook fired
198
+
199
+ ---
200
+
201
+ ## Step 7 (Optional): Schedule a Weekly Digest
202
+
203
+ To get a weekly automated report without having to remember to run this skill:
204
+
205
+ ```bash
206
+ # Create a weekly digest script
207
+ cat > ~/ai-tools-digest.sh << 'EOF'
208
+ #!/bin/bash
209
+ echo "=== Weekly AI Tools Digest — $(date) ===" | tee -a ~/ai-tools-digest.log
210
+ echo "" | tee -a ~/ai-tools-digest.log
211
+ rtk gain 2>/dev/null | tee -a ~/ai-tools-digest.log
212
+ echo "" | tee -a ~/ai-tools-digest.log
213
+ icm health 2>/dev/null | tee -a ~/ai-tools-digest.log
214
+ echo "" | tee -a ~/ai-tools-digest.log
215
+ icm topics 2>/dev/null | tee -a ~/ai-tools-digest.log
216
+ # Speak the summary if Vox is available
217
+ vox "Weekly digest complete. Check your log." 2>/dev/null || true
218
+ EOF
219
+ chmod +x ~/ai-tools-digest.sh
220
+ ```
221
+
222
+ Then set up a weekly launchd job (macOS):
223
+
224
+ ```bash
225
+ cat > ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist << 'EOF'
226
+ <?xml version="1.0" encoding="UTF-8"?>
227
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
228
+ <plist version="1.0">
229
+ <dict>
230
+ <key>Label</key>
231
+ <string>com.oleg.ai-tools-digest</string>
232
+ <key>ProgramArguments</key>
233
+ <array>
234
+ <string>/bin/bash</string>
235
+ <string>/Users/oleg.koval/ai-tools-digest.sh</string>
236
+ </array>
237
+ <key>StartCalendarInterval</key>
238
+ <dict>
239
+ <key>Weekday</key>
240
+ <integer>1</integer>
241
+ <key>Hour</key>
242
+ <integer>9</integer>
243
+ <key>Minute</key>
244
+ <integer>0</integer>
245
+ </dict>
246
+ <key>StandardOutPath</key>
247
+ <string>/tmp/ai-tools-digest.log</string>
248
+ <key>StandardErrorPath</key>
249
+ <string>/tmp/ai-tools-digest.err</string>
250
+ </dict>
251
+ </plist>
252
+ EOF
253
+
254
+ launchctl load ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist
255
+ echo "Weekly digest scheduled for Mondays at 9am"
256
+ ```
257
+
258
+ To view the digest log anytime: `cat ~/ai-tools-digest.log`
259
+
260
+ To unload: `launchctl unload ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist`
261
+
262
+ ---
263
+
264
+ ## Quick Reference
265
+
266
+ | Command | What it does |
267
+ |---------|-------------|
268
+ | `rtk gain` | Total tokens saved to date |
269
+ | `rtk discover` | Find commands not yet covered by RTK |
270
+ | `icm topics` | List all memory topic buckets |
271
+ | `icm health` | Memory hygiene — stale, redundant, decay stats |
272
+ | `icm recall "query"` | Search memories semantically |
273
+ | `icm store -t topic -c "content" -i high` | Store a memory manually |
274
+ | `vox "text"` | Speak text immediately |
275
+ | `vox stats` | Usage stats for the Vox backend |
276
+ | `cat ~/ai-tools-digest.log` | View scheduled digest history |