@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.
- package/.claude-plugin/plugin.json +2 -1
- package/.cursor-plugin/index.json +5 -0
- package/README.md +130 -25
- package/catalog/skills.json +23 -0
- package/package.json +1 -1
- package/packages/software-development/ai-tools-setup/SKILL.md +274 -0
- package/packages/software-development/ai-tools-setup/adapters/claude/plugin.json +5 -0
- package/packages/software-development/ai-tools-setup/adapters/claude/skills/ai-tools-setup/SKILL.md +276 -0
- package/packages/software-development/ai-tools-setup/adapters/codex/README.md +3 -0
- package/packages/software-development/ai-tools-setup/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/ai-tools-setup/adapters/cursor/skills/ai-tools-setup/SKILL.md +276 -0
|
@@ -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.
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
290
|
+
Status: **Stable** — ready for daily use
|
|
273
291
|
|
|
274
|
-
|
|
292
|
+
### Claude Code
|
|
275
293
|
|
|
276
|
-
|
|
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
|
-
|
|
279
|
-
|
|
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
|
|
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
|
-
|
|
313
|
+
See [Publishing to Marketplaces → Cursor Plugin Registry](#cursor-plugin-registry) for submission instructions.
|
|
286
314
|
|
|
287
|
-
|
|
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
|
|
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
|
-
|
|
323
|
+
See [Publishing to Marketplaces → GitHub Copilot](#github-copilot) for integration details.
|
|
295
324
|
|
|
296
|
-
|
|
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:
|
package/catalog/skills.json
CHANGED
|
@@ -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
|
@@ -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 |
|
package/packages/software-development/ai-tools-setup/adapters/claude/skills/ai-tools-setup/SKILL.md
ADDED
|
@@ -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,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
|
+
}
|
package/packages/software-development/ai-tools-setup/adapters/cursor/skills/ai-tools-setup/SKILL.md
ADDED
|
@@ -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 |
|