@olegkoval/agent-skills 1.3.2 → 1.5.0
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 +3 -1
- package/.cursor-plugin/index.json +10 -0
- package/catalog/skills.json +45 -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
- package/packages/software-development/open-source-publisher/SKILL.md +45 -0
- package/packages/software-development/open-source-publisher/adapters/claude/skills/open-source-publisher/SKILL.md +45 -0
- package/packages/software-development/open-source-publisher/adapters/cursor/skills/open-source-publisher/SKILL.md +45 -0
- package/packages/software-development/starter-rules/SKILL.md +70 -0
- package/packages/software-development/starter-rules/adapters/claude/plugin.json +5 -0
- package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md +72 -0
- package/packages/software-development/starter-rules/adapters/codex/README.md +16 -0
- package/packages/software-development/starter-rules/adapters/cursor/plugin.json +5 -0
- package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md +72 -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.4.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Oleg Koval"
|
|
7
7
|
},
|
|
@@ -18,7 +18,9 @@
|
|
|
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",
|
|
23
|
+
"./packages/software-development/starter-rules",
|
|
22
24
|
"./packages/software-development/open-source-publisher",
|
|
23
25
|
"./packages/marketing/viral-launch",
|
|
24
26
|
"./packages/marketing/search-console-indexing-audit"
|
|
@@ -46,11 +46,21 @@
|
|
|
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",
|
|
52
57
|
"description": "Copy a newly created skill into this catalog, refresh manifests, and publish the change."
|
|
53
58
|
},
|
|
59
|
+
{
|
|
60
|
+
"name": "olko:starter-rules",
|
|
61
|
+
"source": "./packages/software-development/starter-rules/adapters/cursor",
|
|
62
|
+
"description": "Load and enforce hard rules for every oleg-koval/* starter: 300-line files, E2E tests, pre-commit hooks, Vertical Slice architecture, no comments, KISS/DRY/SOLID."
|
|
63
|
+
},
|
|
54
64
|
{
|
|
55
65
|
"name": "olko:open-source-publisher",
|
|
56
66
|
"source": "./packages/software-development/open-source-publisher/adapters/cursor",
|
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",
|
|
@@ -197,6 +220,28 @@
|
|
|
197
220
|
"copilot"
|
|
198
221
|
]
|
|
199
222
|
},
|
|
223
|
+
{
|
|
224
|
+
"name": "starter-rules",
|
|
225
|
+
"lookupName": "olko:starter-rules",
|
|
226
|
+
"category": "software-development",
|
|
227
|
+
"path": "packages/software-development/starter-rules",
|
|
228
|
+
"description": "Load and enforce hard rules for every oleg-koval/* starter: 300-line files, E2E tests, pre-commit hooks, Vertical Slice architecture, no comments, KISS/DRY/SOLID.",
|
|
229
|
+
"tags": [
|
|
230
|
+
"starters",
|
|
231
|
+
"rules",
|
|
232
|
+
"architecture",
|
|
233
|
+
"vertical-slice",
|
|
234
|
+
"linting",
|
|
235
|
+
"pre-commit",
|
|
236
|
+
"testing"
|
|
237
|
+
],
|
|
238
|
+
"adapters": [
|
|
239
|
+
"codex",
|
|
240
|
+
"claude",
|
|
241
|
+
"cursor",
|
|
242
|
+
"copilot"
|
|
243
|
+
]
|
|
244
|
+
},
|
|
200
245
|
{
|
|
201
246
|
"name": "open-source-publisher",
|
|
202
247
|
"lookupName": "olko:open-source-publisher",
|
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
|
+
}
|