@toolbeltai/skills 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/bin/install.js +37 -8
- package/data-blend/SKILL.md +2 -2
- package/geo-analyst/SKILL.md +2 -2
- package/knowledge-graph/SKILL.md +2 -2
- package/multi-agent-workspace/SKILL.md +2 -2
- package/package.json +1 -1
- package/run-toolbelt/SKILL.md +2 -2
- package/sql-analyst/SKILL.md +2 -2
- package/streaming-analyst/SKILL.md +2 -2
- package/vector-search/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
npx @toolbeltai/skills install
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Copies every skill to `~/.claude/skills
|
|
13
|
-
you'll see them as slash commands: `/run-toolbelt`,
|
|
12
|
+
Copies every skill to `~/.claude/skills/` (flat, per the AgentSkills spec).
|
|
13
|
+
Restart Claude Code and you'll see them as slash commands: `/run-toolbelt`,
|
|
14
|
+
`/geo-analyst`, …
|
|
14
15
|
|
|
15
16
|
No account required; no network calls to Toolbelt. Skills work against any
|
|
16
17
|
Toolbelt MCP server (cloud or self-hosted).
|
package/bin/install.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* toolbelt-skills — install Toolbelt's
|
|
3
|
+
* toolbelt-skills — install Toolbelt's skills into ~/.claude/skills/
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
6
|
* npx @toolbeltai/skills install # copy skills (default)
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
* The @toolbeltai/cli package wraps this for its own install flow; this
|
|
12
12
|
* CLI exists so the skills package stands on its own — anyone can install
|
|
13
13
|
* without needing the Toolbelt CLI or hitting any Toolbelt-hosted service.
|
|
14
|
+
*
|
|
15
|
+
* Layout: skills install FLAT under ~/.claude/skills/ per AgentSkills spec
|
|
16
|
+
* (agentskills.io) and Claude Code docs. An earlier version nested them
|
|
17
|
+
* under ~/.claude/skills/toolbelt/; that broke discovery in OpenClaw and
|
|
18
|
+
* was non-standard for Claude Code. We clean up the legacy dir on install.
|
|
14
19
|
*/
|
|
15
20
|
import { cpSync, existsSync, mkdirSync, readdirSync, rmSync, statSync } from 'node:fs';
|
|
16
21
|
import { homedir } from 'node:os';
|
|
@@ -18,7 +23,8 @@ import { dirname, join } from 'node:path';
|
|
|
18
23
|
import { fileURLToPath } from 'node:url';
|
|
19
24
|
|
|
20
25
|
const PKG_ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
|
|
21
|
-
const TARGET = join(homedir(), '.claude', 'skills'
|
|
26
|
+
const TARGET = join(homedir(), '.claude', 'skills');
|
|
27
|
+
const LEGACY_NESTED_DIR = join(TARGET, 'toolbelt');
|
|
22
28
|
|
|
23
29
|
/** Any top-level directory containing a SKILL.md is a skill. */
|
|
24
30
|
function listSkills() {
|
|
@@ -28,6 +34,13 @@ function listSkills() {
|
|
|
28
34
|
.filter((name) => existsSync(join(PKG_ROOT, name, 'SKILL.md')));
|
|
29
35
|
}
|
|
30
36
|
|
|
37
|
+
function cleanupLegacy() {
|
|
38
|
+
if (existsSync(LEGACY_NESTED_DIR)) {
|
|
39
|
+
rmSync(LEGACY_NESTED_DIR, { recursive: true, force: true });
|
|
40
|
+
console.log(` migrated: removed legacy ~/.claude/skills/toolbelt/`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
31
44
|
function cmdInstall() {
|
|
32
45
|
const skills = listSkills();
|
|
33
46
|
if (skills.length === 0) {
|
|
@@ -36,12 +49,14 @@ function cmdInstall() {
|
|
|
36
49
|
}
|
|
37
50
|
|
|
38
51
|
mkdirSync(TARGET, { recursive: true });
|
|
52
|
+
cleanupLegacy();
|
|
53
|
+
|
|
39
54
|
for (const name of skills) {
|
|
40
55
|
const src = join(PKG_ROOT, name);
|
|
41
56
|
const dst = join(TARGET, name);
|
|
42
57
|
rmSync(dst, { recursive: true, force: true });
|
|
43
58
|
cpSync(src, dst, { recursive: true });
|
|
44
|
-
console.log(`
|
|
59
|
+
console.log(` ✓ ${name}`);
|
|
45
60
|
}
|
|
46
61
|
// Optional assets (icons, tapes) — copy if present so popups render right.
|
|
47
62
|
const assetsSrc = join(PKG_ROOT, 'assets');
|
|
@@ -57,12 +72,26 @@ function cmdInstall() {
|
|
|
57
72
|
}
|
|
58
73
|
|
|
59
74
|
function cmdUninstall() {
|
|
60
|
-
|
|
75
|
+
// Remove installed skills and legacy nested dir.
|
|
76
|
+
cleanupLegacy();
|
|
77
|
+
const skills = listSkills();
|
|
78
|
+
let removed = 0;
|
|
79
|
+
for (const name of skills) {
|
|
80
|
+
const dst = join(TARGET, name);
|
|
81
|
+
if (existsSync(dst)) {
|
|
82
|
+
rmSync(dst, { recursive: true, force: true });
|
|
83
|
+
removed++;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const assetsDst = join(TARGET, 'assets');
|
|
87
|
+
if (existsSync(assetsDst)) {
|
|
88
|
+
rmSync(assetsDst, { recursive: true, force: true });
|
|
89
|
+
}
|
|
90
|
+
if (removed === 0) {
|
|
61
91
|
console.log(' (nothing to remove)');
|
|
62
|
-
|
|
92
|
+
} else {
|
|
93
|
+
console.log(` Removed ${removed} skills from ${TARGET}`);
|
|
63
94
|
}
|
|
64
|
-
rmSync(TARGET, { recursive: true, force: true });
|
|
65
|
-
console.log(` Removed ${TARGET}`);
|
|
66
95
|
}
|
|
67
96
|
|
|
68
97
|
function cmdList() {
|
|
@@ -74,7 +103,7 @@ function cmdPath() {
|
|
|
74
103
|
}
|
|
75
104
|
|
|
76
105
|
function usage() {
|
|
77
|
-
console.log(`toolbelt-skills — install Toolbelt skills into ~/.claude/skills/
|
|
106
|
+
console.log(`toolbelt-skills — install Toolbelt skills into ~/.claude/skills/
|
|
78
107
|
|
|
79
108
|
Usage:
|
|
80
109
|
npx @toolbeltai/skills install Install skills (default)
|
package/data-blend/SKILL.md
CHANGED
|
@@ -104,7 +104,7 @@ ORDER BY total_amount DESC
|
|
|
104
104
|
|
|
105
105
|
## Phase 0: Verify Connection
|
|
106
106
|
|
|
107
|
-
Call `
|
|
107
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
108
108
|
|
|
109
109
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
110
110
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -271,7 +271,7 @@ section and continue. Only halt on Phase 0–3 failures.
|
|
|
271
271
|
|
|
272
272
|
| Phase | Tool(s) |
|
|
273
273
|
|---|---|
|
|
274
|
-
| 0. Verify connection | `
|
|
274
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
275
275
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
276
276
|
| 2. Inspect existing tables | `toolbelt_context` |
|
|
277
277
|
| 3. Upload missing tables | `toolbelt_save` |
|
package/geo-analyst/SKILL.md
CHANGED
|
@@ -70,7 +70,7 @@ POLYGON((-82.4650 27.9400, -82.4350 27.9400, -82.4350 27.9700, -82.4650 27.9700,
|
|
|
70
70
|
|
|
71
71
|
## Phase 0: Verify Connection
|
|
72
72
|
|
|
73
|
-
Call `
|
|
73
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
74
74
|
|
|
75
75
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
76
76
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -232,7 +232,7 @@ and continue with remaining queries. Only halt on Phase 0–2 failures.
|
|
|
232
232
|
|
|
233
233
|
| Phase | Tool(s) |
|
|
234
234
|
|---|---|
|
|
235
|
-
| 0. Verify connection | `
|
|
235
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
236
236
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
237
237
|
| 2. Upload sensor data | `toolbelt_save`, `toolbelt_jobs`, `toolbelt_context` |
|
|
238
238
|
| 3. Run geospatial queries | `toolbelt_execute` × 3 |
|
package/knowledge-graph/SKILL.md
CHANGED
|
@@ -101,7 +101,7 @@ manufactured at a new facility in Round Rock, Texas.
|
|
|
101
101
|
|
|
102
102
|
## Phase 0: Verify Connection
|
|
103
103
|
|
|
104
|
-
Call `
|
|
104
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
105
105
|
|
|
106
106
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
107
107
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -339,7 +339,7 @@ what is available and note the gap. Only halt on Phase 0–3 failures.
|
|
|
339
339
|
|
|
340
340
|
| Phase | Tool(s) |
|
|
341
341
|
|---|---|
|
|
342
|
-
| 0. Verify connection | `
|
|
342
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
343
343
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
344
344
|
| 2. Upload document | `toolbelt_save` |
|
|
345
345
|
| 3. Poll for extraction | `toolbelt_jobs` (ingest + semantic) |
|
|
@@ -80,7 +80,7 @@ Classification: Internal — Project Team Only
|
|
|
80
80
|
|
|
81
81
|
## Phase 0: Verify Connection
|
|
82
82
|
|
|
83
|
-
Call `
|
|
83
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
84
84
|
|
|
85
85
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
86
86
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -206,7 +206,7 @@ RESULT:
|
|
|
206
206
|
|
|
207
207
|
| Phase | Tool(s) |
|
|
208
208
|
|---|---|
|
|
209
|
-
| 0. Verify connection | `
|
|
209
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
210
210
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
211
211
|
| 2. Upload document | `toolbelt_save` |
|
|
212
212
|
| 3. Poll for ingestion | `toolbelt_jobs` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toolbeltai/skills",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Official Toolbelt skills for Claude Code and MCP agents — run-toolbelt, geo-analyst, knowledge-graph, sql-analyst, vector-search, streaming-analyst, multi-agent-workspace, data-blend.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://toolbelt.ai",
|
package/run-toolbelt/SKILL.md
CHANGED
|
@@ -54,7 +54,7 @@ Skip Phase 5 if `question` is absent.
|
|
|
54
54
|
|
|
55
55
|
## Phase 0: Verify Connection
|
|
56
56
|
|
|
57
|
-
Call `
|
|
57
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
58
58
|
|
|
59
59
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
60
60
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -227,7 +227,7 @@ RESULT:
|
|
|
227
227
|
|
|
228
228
|
| Phase | Tool(s) |
|
|
229
229
|
|---|---|
|
|
230
|
-
| 0. Verify connection | `
|
|
230
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
231
231
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
232
232
|
| 2. Inspect state | `toolbelt_context` |
|
|
233
233
|
| 3. Add document | `toolbelt_save`, `toolbelt_jobs`, `toolbelt_context` |
|
package/sql-analyst/SKILL.md
CHANGED
|
@@ -77,7 +77,7 @@ Default `question`: `What is the total sales amount by region?`
|
|
|
77
77
|
|
|
78
78
|
## Phase 0: Verify Connection
|
|
79
79
|
|
|
80
|
-
Call `
|
|
80
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
81
81
|
|
|
82
82
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
83
83
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -222,7 +222,7 @@ RESULT:
|
|
|
222
222
|
|
|
223
223
|
| Phase | Tool(s) |
|
|
224
224
|
|---|---|
|
|
225
|
-
| 0. Verify connection | `
|
|
225
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
226
226
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
227
227
|
| 2. Upload CSV document | `toolbelt_save` |
|
|
228
228
|
| 3. Poll for ingestion | `toolbelt_jobs` |
|
|
@@ -96,7 +96,7 @@ sensor_id VARCHAR(64), ts TIMESTAMP, value DOUBLE, unit VARCHAR(32)
|
|
|
96
96
|
|
|
97
97
|
## Phase 0: Verify Connection
|
|
98
98
|
|
|
99
|
-
Call `
|
|
99
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
100
100
|
|
|
101
101
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
102
102
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -338,7 +338,7 @@ section and continue. Only halt on Phase 0–2 failures.
|
|
|
338
338
|
|
|
339
339
|
| Phase | Tool(s) |
|
|
340
340
|
|---|---|
|
|
341
|
-
| 0. Verify connection | `
|
|
341
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
342
342
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
343
343
|
| 2. Connect stream | `toolbelt_connect` (Kafka) or `toolbelt_save` + `toolbelt_jobs` + `toolbelt_context` (simulated) |
|
|
344
344
|
| 3. Confirm data arrival | `toolbelt_execute` × 1–2 |
|
package/vector-search/SKILL.md
CHANGED
|
@@ -105,7 +105,7 @@ Default `question`: `What are the effects on coastal ecosystems?`
|
|
|
105
105
|
|
|
106
106
|
## Phase 0: Verify Connection
|
|
107
107
|
|
|
108
|
-
Call `
|
|
108
|
+
Call `toolbelt_list_namespaces` (no arguments) immediately.
|
|
109
109
|
|
|
110
110
|
- **If it succeeds:** proceed to Phase 1 using the returned namespaces.
|
|
111
111
|
- **If it fails:** emit structured failure and halt.
|
|
@@ -249,7 +249,7 @@ RESULT:
|
|
|
249
249
|
|
|
250
250
|
| Phase | Tool(s) |
|
|
251
251
|
|---|---|
|
|
252
|
-
| 0. Verify connection | `
|
|
252
|
+
| 0. Verify connection | `toolbelt_list_namespaces` |
|
|
253
253
|
| 1. Resolve namespace | (from Phase 0 result) |
|
|
254
254
|
| 2. Upload document | `toolbelt_save` |
|
|
255
255
|
| 3. Poll for indexing | `toolbelt_jobs` |
|