@toolbeltai/skills 0.2.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,63 +1,58 @@
1
1
  # @toolbeltai/skills
2
2
 
3
- > Official Toolbelt skills for Claude Code and other MCP-capable agents —
4
- > SQL, vectors, graphs, geospatial, streaming, all as named slash commands.
3
+ The official skill for [Toolbelt](https://toolbelt.ai). Installs one
4
+ `/toolbelt` skill that any MCP-capable agent can use to connect to a
5
+ Toolbelt namespace and hand off to Toolbelt's MCP tools.
5
6
 
6
- ## Install (standalone)
7
+ [![npm version](https://img.shields.io/npm/v/@toolbeltai/skills.svg)](https://www.npmjs.com/package/@toolbeltai/skills)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
9
+
10
+ ## Install
7
11
 
8
12
  ```bash
9
13
  npx @toolbeltai/skills install
10
14
  ```
11
15
 
12
- Copies every skill to `~/.claude/skills/` (flat, per the AgentSkills spec).
13
- Restart Claude Code and you'll see them as slash commands: `/toolbelt-start`,
14
- `/toolbelt-geo`, …
15
-
16
- No account required; no network calls to Toolbelt. Skills work against any
17
- Toolbelt MCP server (cloud or self-hosted).
16
+ Copies `toolbelt/SKILL.md` into `~/.claude/skills/toolbelt/` (flat
17
+ layout per the [AgentSkills spec](https://agentskills.io)). Restart your
18
+ client; the skill appears as `/toolbelt`.
18
19
 
19
- ## Install (via Toolbelt CLI)
20
+ No Toolbelt account required — the skill provisions one on first use.
20
21
 
21
- If you want the skills **and** a preconfigured MCP connection in one step:
22
+ ## What the skill does
22
23
 
23
- ```bash
24
- npx @toolbeltai/cli
25
- ```
24
+ When an agent runs `/toolbelt` for the first time, it:
26
25
 
27
- Provisions an anonymous Toolbelt account, registers the MCP server in your
28
- agent, and installs these skills all at once.
26
+ 1. Checks for an existing Toolbelt MCP connection.
27
+ 2. If none, calls the public `/api/onboard` endpoint to provision a
28
+ free anonymous account.
29
+ 3. Writes the MCP connection into the agent's client config.
30
+ 4. Hands off to Toolbelt's MCP tools for the actual work.
29
31
 
30
- ## Skills
31
-
32
- | Skill | Command | What it does |
33
- | --- | --- | --- |
34
- | [toolbelt-start](toolbelt-start/) | `/toolbelt-start` | Onboard end-to-end — provision, ingest, first query |
35
- | [toolbelt-analyze](toolbelt-analyze/) | `/toolbelt-analyze` | Upload 1+ CSVs, ask in plain English, get SQL answers (single-table or multi-table JOIN) |
36
- | [toolbelt-find](toolbelt-find/) | `/toolbelt-find` | Upload a document, retrieve passages by semantic similarity |
37
- | [toolbelt-entities](toolbelt-entities/) | `/toolbelt-entities` | Auto-extract entities and relationships from docs, explore with Cypher |
38
- | [toolbelt-geo](toolbelt-geo/) | `/toolbelt-geo` | GPU-accelerated geospatial — distance, containment, routing, map rendering |
39
- | [toolbelt-stream](toolbelt-stream/) | `/toolbelt-stream` | Connect Kafka, aggregate over windows, detect anomalies |
40
- | [toolbelt-invite](toolbelt-invite/) | `/toolbelt-invite` | Emit a connection URL so another agent can join this workspace |
32
+ Full playbook in [toolbelt/SKILL.md](toolbelt/SKILL.md).
41
33
 
42
34
  ## Works with
43
35
 
44
- Claude Code · OpenClaw · Cursor · Gemini CLI · Codex CLI · Windsurf · any MCP client
36
+ Claude Code · Claude Desktop · OpenClaw · Cursor · Gemini CLI · Codex
37
+ CLI · Windsurf · any MCP client.
45
38
 
46
39
  ## Commands
47
40
 
48
41
  ```bash
49
- npx @toolbeltai/skills install # install all skills
50
- npx @toolbeltai/skills uninstall # remove them
51
- npx @toolbeltai/skills list # list what would be installed
42
+ npx @toolbeltai/skills install # install
43
+ npx @toolbeltai/skills uninstall # remove
44
+ npx @toolbeltai/skills list # show what would install
52
45
  npx @toolbeltai/skills path # print install target
53
46
  ```
54
47
 
55
- ## Docs
48
+ ## Links
56
49
 
57
- - Skill reference: <https://docs.toolbelt.ai>
58
- - Toolbelt CLI: <https://github.com/toolbeltai/toolbelt>
59
- - Releasing: [RELEASING.md](./RELEASING.md)
50
+ - Site: <https://toolbelt.ai>
51
+ - Docs: <https://toolbelt.ai/docs>
52
+ - App / billing: <https://app.toolbelt.ai>
60
53
  - Contributing: [CONTRIBUTING.md](./CONTRIBUTING.md)
54
+ - Releasing: [RELEASING.md](./RELEASING.md)
55
+ - Support: <support@toolbelt.ai>
61
56
 
62
57
  ## License
63
58
 
package/bin/install.js CHANGED
@@ -26,11 +26,16 @@ const PKG_ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
26
26
  const TARGET = join(homedir(), '.claude', 'skills');
27
27
  const LEGACY_NESTED_DIR = join(TARGET, 'toolbelt');
28
28
 
29
- // Pre-0.2.0 skill folder names. Removed on install so upgraders don't
30
- // see ghost slash commands for skills that were renamed or merged.
31
- // Added 2026-04-23 with the toolbelt-* prefix rename; safe to drop this
32
- // list in a future major once the userbase has cycled.
29
+ // Skill folder names that earlier versions of this package installed
30
+ // but no longer ship. Removed on install so upgraders don't see ghost
31
+ // slash commands for skills that were renamed, merged, or collapsed.
32
+ //
33
+ // v0.1.x → v0.2.0 prefix rename + a couple of merges
34
+ // v0.2.x → v1.0.0 seven task skills collapsed into one `toolbelt`
35
+ //
36
+ // Safe to drop these in a future major once the userbase has cycled.
33
37
  const LEGACY_SKILL_NAMES = [
38
+ // pre-v0.2.0
34
39
  'run-toolbelt',
35
40
  'sql-analyst',
36
41
  'data-blend',
@@ -39,6 +44,14 @@ const LEGACY_SKILL_NAMES = [
39
44
  'geo-analyst',
40
45
  'streaming-analyst',
41
46
  'multi-agent-workspace',
47
+ // pre-v1.0.0 (the seven that collapsed into the flagship)
48
+ 'toolbelt-start',
49
+ 'toolbelt-analyze',
50
+ 'toolbelt-find',
51
+ 'toolbelt-entities',
52
+ 'toolbelt-geo',
53
+ 'toolbelt-stream',
54
+ 'toolbelt-invite',
42
55
  ];
43
56
 
44
57
  /** Any top-level directory containing a SKILL.md is a skill. */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@toolbeltai/skills",
3
- "version": "0.2.5",
4
- "description": "Official Toolbelt skillsnamed /toolbelt-* flows (start, analyze, find, entities, geo, stream, invite) that teach any MCP-capable agent to orchestrate Toolbelt's MCP tools end-to-end.",
3
+ "version": "1.0.6",
4
+ "description": "Official Toolbelt skillone /toolbelt slash command that gives any MCP-capable agent a shared brain for your data. Detects or provisions a free Toolbelt account, configures the MCP connection, and hands off to Toolbelt's MCP tools (vector, knowledge graph, SQL, geospatial, streaming, timeline).",
5
5
  "license": "MIT",
6
6
  "homepage": "https://toolbelt.ai",
7
7
  "repository": {
@@ -31,14 +31,7 @@
31
31
  },
32
32
  "files": [
33
33
  "bin",
34
- "assets",
35
- "toolbelt-start",
36
- "toolbelt-analyze",
37
- "toolbelt-find",
38
- "toolbelt-entities",
39
- "toolbelt-geo",
40
- "toolbelt-stream",
41
- "toolbelt-invite",
34
+ "toolbelt",
42
35
  "LICENSE",
43
36
  "README.md"
44
37
  ],
@@ -0,0 +1,288 @@
1
+ ---
2
+ name: toolbelt
3
+ description: >
4
+ Toolbelt is a collaborative substrate for your agents — one shared brain
5
+ for your data. Connect AI agents to vector search, knowledge graph, SQL,
6
+ geospatial, and streaming data through one MCP server. Findings,
7
+ decisions, and observations persist across sessions and across agents.
8
+
9
+ Use this skill at the start of any task where an agent needs persistent
10
+ memory across sessions, natural-language access to structured or
11
+ unstructured data, or shared state with other agents working on the same
12
+ data. The skill handles first-time setup: provisions a free Toolbelt
13
+ account if none exists, configures the MCP connection in the agent's
14
+ client, optionally upgrades the account by email, and hands off to
15
+ Toolbelt's MCP tools for the actual work.
16
+
17
+ NOT for one-off lookups that don't benefit from persistent memory or
18
+ structured data — use the agent's native tools for those.
19
+ license: MIT
20
+ compatibility: >
21
+ Requires an MCP-compatible AI agent (Claude Code, Claude Desktop,
22
+ OpenClaw, Cursor, Windsurf, Gemini CLI, Codex CLI, or any client that
23
+ supports MCP server connections). No Toolbelt account required — this
24
+ skill provisions one on first use.
25
+ version: "1.0.0"
26
+ metadata:
27
+ author: toolbeltai
28
+ homepage: "https://toolbelt.ai"
29
+ ---
30
+
31
+ # Toolbelt — A collaborative substrate for your agents
32
+
33
+ **Your data. Your agents. One shared brain.**
34
+
35
+ Toolbelt connects AI agents to vector search, knowledge graph, SQL,
36
+ geospatial, and streaming data through one MCP server. Findings,
37
+ decisions, and observations persist across sessions and across agents.
38
+
39
+ ## Two surfaces — keep them straight
40
+
41
+ Toolbelt has exactly two surfaces. Knowing which is which is the most
42
+ important thing in this skill:
43
+
44
+ | Surface | URL | Who uses it | When |
45
+ |---|---|---|---|
46
+ | **MCP server** (the agentic surface) | `https://mcp.toolbelt.ai/mcp` | **Agents** | Every data operation. This is where the agentic flow happens — search, SQL, knowledge graph, record findings, read timeline. |
47
+ | **app.toolbelt.ai** (the human web UI) | `https://app.toolbelt.ai` | **Humans** (in a browser) | Sign in, view/manage namespaces, billing, Pro/Team upgrade. Plus a small HTTP API at `/api/onboard*` used **once** during setup. |
48
+
49
+ **Rule: once the MCP connection is configured (Phase 3 below), the agent
50
+ NEVER talks to `app.toolbelt.ai` again** — every subsequent action goes
51
+ through MCP. The only reason to mention `app.toolbelt.ai` to a user
52
+ after setup is when they want to do something only a human can do
53
+ (billing, viewing the namespace in a UI, claiming the account).
54
+
55
+ ## When to invoke this skill
56
+
57
+ Run at the start of any task that:
58
+
59
+ - Mentions Toolbelt by name.
60
+ - Needs persistent memory across turns or sessions.
61
+ - Needs natural-language access to structured or unstructured data.
62
+ - Involves multiple agents collaborating on the same data.
63
+ - Would otherwise require wiring up several separate MCP tools.
64
+
65
+ ## Phases — execute in order, no human prompts unless explicitly stated
66
+
67
+ ### Phase 1 — Detect existing connection
68
+
69
+ Try calling the Toolbelt MCP tool `toolbelt_list_namespaces`.
70
+
71
+ - Returns successfully → user is already connected → skip to **Phase 4**.
72
+ - Tool unavailable or returns auth error → continue to **Phase 2**.
73
+
74
+ ### Phase 2 — Provision a free Toolbelt account (one HTTP call)
75
+
76
+ This is the only time the agent hits `app.toolbelt.ai`'s HTTP API
77
+ directly. Anonymous; no auth required.
78
+
79
+ ```http
80
+ POST https://app.toolbelt.ai/api/onboard
81
+ Content-Type: application/json
82
+
83
+ {}
84
+ ```
85
+
86
+ Response shape (verify against this exact structure):
87
+
88
+ ```json
89
+ {
90
+ "success": true,
91
+ "user": { "id": "@anon_..." },
92
+ "namespace": { "id": "<uuid>", "name": "My Namespace" },
93
+ "mcpUrl": "https://mcp.toolbelt.ai/mcp",
94
+ "token": "tb_...",
95
+ "expiresAt": "<ISO timestamp>"
96
+ }
97
+ ```
98
+
99
+ Capture: `token`, `mcpUrl`, `user.id`, `namespace.id`, `expiresAt`. The
100
+ `token` doubles as the auth bearer for both MCP calls **and** the
101
+ optional `/claim` upgrade in Phase 5.
102
+
103
+ The account starts on the **Anonymous** tier (see "Tiers and quotas"
104
+ below) and the token expires per `expiresAt` (30 days). Claim by email
105
+ in Phase 5 to make it persistent.
106
+
107
+ ### Phase 3 — Configure the agent's MCP client (one-time)
108
+
109
+ Write the MCP connection into the agent's client config. The shape is
110
+ identical across clients — only the file path differs.
111
+
112
+ **Claude Code (CLI):**
113
+ ```bash
114
+ claude mcp add toolbelt \
115
+ --transport http <mcpUrl> \
116
+ --header "Authorization: Bearer <token>"
117
+ ```
118
+
119
+ **Claude Desktop / Cursor / Windsurf / OpenClaw / Gemini CLI / Codex CLI** —
120
+ add to the client's MCP config JSON:
121
+
122
+ ```json
123
+ {
124
+ "mcpServers": {
125
+ "toolbelt": {
126
+ "url": "<mcpUrl>",
127
+ "headers": { "Authorization": "Bearer <token>" }
128
+ }
129
+ }
130
+ }
131
+ ```
132
+
133
+ Config file locations:
134
+
135
+ | Client | Path |
136
+ |---|---|
137
+ | Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
138
+ | Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
139
+ | Cursor | `~/.cursor/mcp.json` |
140
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` |
141
+ | OpenClaw | `~/.openclaw/mcp.json` |
142
+ | Gemini CLI | `~/.gemini/mcp.json` |
143
+ | Codex CLI | `~/.codex/mcp.json` |
144
+
145
+ Tell the user **once**: "Toolbelt is provisioned. Reload your MCP
146
+ connection to activate it." Most clients pick up changes on next
147
+ request; some need a restart.
148
+
149
+ ### Phase 4 — Orient, then hand off (everything happens over MCP from here on)
150
+
151
+ Call `toolbelt_context(namespace_id)` first. It returns the namespace's
152
+ available assets, suggested next moves, and per-tool routing guidance
153
+ emitted by the MCP server itself.
154
+
155
+ Then pick the right Toolbelt MCP tool for the user's task:
156
+
157
+ | Tool | Purpose |
158
+ |---|---|
159
+ | `toolbelt_search` | Vector RAG over documents |
160
+ | `toolbelt_sql` | SQL over structured tables |
161
+ | `toolbelt_entity` | Entity profile from the knowledge graph |
162
+ | `toolbelt_graph` | Cypher graph traversal |
163
+ | `toolbelt_record` | Save a finding to the persistent timeline — this is what makes findings compound across sessions and across agents |
164
+ | `toolbelt_timeline` | Read chronological events from the timeline |
165
+ | `toolbelt_save` | Persist an asset to the namespace |
166
+ | `toolbelt_share` | Emit a connection URL so another agent / teammate can join |
167
+ | `toolbelt_list_namespaces` | List workspaces this account can access |
168
+
169
+ The MCP server's tool descriptions carry per-tool routing logic — pick
170
+ by task shape, not by this skill's instructions.
171
+
172
+ ### Phase 5 — Optional: claim the account by email
173
+
174
+ Anonymous accounts expire (30 days). To make persistent and increase
175
+ quota, prompt the user for an email and call:
176
+
177
+ ```http
178
+ POST https://app.toolbelt.ai/api/onboard/claim
179
+ Authorization: Bearer <token>
180
+ Content-Type: application/json
181
+
182
+ {"email": "user@example.com"}
183
+ ```
184
+
185
+ User receives a verification email. Then:
186
+
187
+ ```http
188
+ POST https://app.toolbelt.ai/api/onboard/claim/verify
189
+ Authorization: Bearer <token>
190
+ Content-Type: application/json
191
+
192
+ {"code": "<code from email>"}
193
+ ```
194
+
195
+ After verification the account is upgraded from **Anonymous** to
196
+ **Verified** — same token, higher quota, persistent across sessions.
197
+
198
+ ## Tiers and quotas
199
+
200
+ Match `toolbelt.ai/#pricing` exactly:
201
+
202
+ | Tier | Price | Calls / month | Storage | Namespaces | How to get there |
203
+ |---|---|---:|---:|---:|---|
204
+ | **Anonymous** | Free | 1,000 | — | 1 | Auto-provisioned by this skill (Phase 2) |
205
+ | **Verified** | Free | 2,000 | 1 GB | 10 | Phase 5 (email claim) |
206
+ | **Pro** | $29 / month | 150,000 | 50 GB | 50 | Human web step — see below |
207
+ | **Team** | $89 / month | 500,000 | 100 GB | Unlimited | Human web step — see below |
208
+
209
+ ## Pro / Team upgrades — direct the human to app.toolbelt.ai
210
+
211
+ Stripe checkout requires a real browser session. **Agents cannot do
212
+ this; do not pretend to.** When a user wants Pro or Team:
213
+
214
+ > "Upgrading to Pro or Team takes about a minute on the web. Open
215
+ > <https://app.toolbelt.ai>, sign in with the email you used to claim
216
+ > this account, and follow the Upgrade flow. The new tier activates on
217
+ > the next MCP call — no re-provisioning, no new tokens."
218
+
219
+ Do not invent upgrade URLs. Do not collect credit card info. Do not
220
+ prompt for billing data. The skill's job ends at "direct the human to
221
+ the right page."
222
+
223
+ ## Output after Phase 4 succeeds
224
+
225
+ Emit a brief connection status to the user:
226
+
227
+ ```yaml
228
+ toolbelt_connection:
229
+ status: connected
230
+ mcp_url: <mcpUrl>
231
+ user_id: <user.id>
232
+ namespace_id: <namespace.id>
233
+ account_tier: <anonymous | verified | pro | team>
234
+ expires_at: <expiresAt>
235
+ app_url: https://app.toolbelt.ai
236
+ ```
237
+
238
+ Then proceed with the user's actual task using the MCP tools.
239
+
240
+ ## Multi-agent collaboration
241
+
242
+ Toolbelt's real value shows when multiple agents share state:
243
+
244
+ - An agent records a finding via `toolbelt_record` → it lands on the
245
+ namespace timeline.
246
+ - A future agent — same MCP client or different, same user or invited
247
+ teammate — reads it via `toolbelt_timeline` or `toolbelt_search` and
248
+ builds on it.
249
+ - To invite another agent or teammate, call `toolbelt_share` and forward
250
+ the resulting URL.
251
+
252
+ Tell users: "Each finding I record is available to your next session
253
+ and any other agent connected to this namespace."
254
+
255
+ ## Reference URLs
256
+
257
+ | Purpose | URL |
258
+ |---|---|
259
+ | Marketing site + pricing | <https://toolbelt.ai> |
260
+ | Docs (concepts, tools, self-hosting) | <https://toolbelt.ai/docs> |
261
+ | Human web UI (sign in, billing, namespace UI) | <https://app.toolbelt.ai> |
262
+ | MCP endpoint (set in Phase 3) | `https://mcp.toolbelt.ai/mcp` |
263
+ | Onboard API base (Phase 2 + 5 only) | `https://app.toolbelt.ai/api/onboard` |
264
+ | Support | <support@toolbelt.ai> |
265
+
266
+ ## Common failure modes
267
+
268
+ | Symptom | Cause | Handling |
269
+ |---|---|---|
270
+ | `toolbelt_list_namespaces` returns 401 | Stored MCP token expired or was revoked | Go back to Phase 2, provision a fresh anonymous account. |
271
+ | Anonymous account expired (after 30 days) | `expiresAt` in the past | Same as 401 — re-provision. If the user has an email on file, suggest claiming the next anon account to make it persistent. |
272
+ | MCP call returns 429 with `error: "QUOTA_EXCEEDED"` | Tier quota exhausted | Surface the tier table; suggest Phase 5 (email claim) for Anonymous → Verified, or direct the human to `https://app.toolbelt.ai` for Pro/Team. |
273
+ | Email verification code doesn't arrive | Spam folder, or first send didn't go | Tell the user to check spam from `noreply@toolbelt.ai`, or call `POST /api/onboard/claim` again to re-send. |
274
+ | `mcp.toolbelt.ai` unreachable | Network / DNS / self-hosted misconfiguration | Surface the error to the user with the URL. Don't attempt fallback — there's no fallback endpoint. |
275
+
276
+ ## What this skill does NOT do
277
+
278
+ Stay in your lane:
279
+
280
+ - **Does not collect credit cards.** Stripe is a browser flow.
281
+ - **Does not generate or store passwords.** Authentication is by token,
282
+ managed by the MCP client config.
283
+ - **Does not call MCP tools beyond `toolbelt_list_namespaces` and
284
+ `toolbelt_context` itself.** Once oriented, hand off — let the agent
285
+ pick the right tool per task from the MCP server's own tool descriptions.
286
+ - **Does not invent endpoints.** Only `POST /api/onboard`, `POST
287
+ /api/onboard/claim`, `POST /api/onboard/claim/verify`. Everything else
288
+ is MCP.
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- sleep 1
3
- echo '{"mcpUrl": "https://mcp.toolbelt.ai/t/tb_1234567890/8bf91bad-02df-4137-97ac-69a006bac193/mcp"}'
@@ -1,85 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Simulates the toolbelt-geo skill running inside Claude Code
3
-
4
- G='\033[0;32m' # green
5
- B='\033[0;34m' # blue
6
- Y='\033[1;33m' # yellow
7
- C='\033[0;36m' # cyan
8
- D='\033[2;37m' # dim
9
- W='\033[1;37m' # bold white
10
- NC='\033[0m'
11
-
12
- printf "\n"
13
- printf "${D}> /toolbelt-geo${NC}\n"
14
- sleep 0.8
15
-
16
- printf "\n"
17
- printf "${C}● Phase 0 Verifying Toolbelt MCP connection...${NC}\n"
18
- sleep 0.6
19
- printf "${G} ✓ Connected${NC} | namespace: demo-workspace\n"
20
- sleep 0.3
21
-
22
- printf "\n"
23
- printf "${C}● Phase 1 Resolving namespace...${NC}\n"
24
- sleep 0.4
25
- printf "${G} ✓ Using${NC} demo-workspace (a3f2c1d9-4b2e-4a7c-9f1d-8e3b0c2d6a5f)\n"
26
- sleep 0.2
27
-
28
- printf "\n"
29
- printf "${C}● Phase 2 Uploading Tampa Bay sensor data...${NC}\n"
30
- sleep 0.4
31
- printf " ${D}10 sensors | columns: id, name, lat, lon${NC}\n"
32
- sleep 0.8
33
- printf " ${Y}[ingest]${NC} running...\n"
34
- sleep 1.2
35
- printf " ${G}[ingest]${NC} completed ✓\n"
36
- sleep 0.3
37
- printf "${G} ✓ Sensor table:${NC} ${W}sensor_locations${NC} (10 rows)\n"
38
- sleep 0.3
39
-
40
- printf "\n"
41
- printf "${C}● Phase 3 Running GPU geospatial queries...${NC}\n"
42
- sleep 0.3
43
-
44
- printf "\n"
45
- printf " ${B}Query 1${NC} Pairwise Distance ${D}ST_DISTANCE()${NC}\n"
46
- sleep 1.0
47
- printf " ┌────────────┬────────────┬────────────┐\n"
48
- printf " │ sensor_a │ sensor_b │ distance_m │\n"
49
- printf " ├────────────┼────────────┼────────────┤\n"
50
- printf " │ Sensor A │ Sensor B │ 2,847 │\n"
51
- printf " │ Sensor A │ Sensor J │ 4,213 │\n"
52
- printf " │ Sensor B │ Sensor J │ 5,091 │\n"
53
- printf " └────────────┴────────────┴────────────┘\n"
54
- sleep 0.5
55
-
56
- printf "\n"
57
- printf " ${B}Query 2${NC} Point-in-Polygon ${D}ST_CONTAINS()${NC}\n"
58
- sleep 0.9
59
- printf " Zone: Downtown Tampa bounding polygon\n"
60
- printf " ${G} 2 sensors inside zone:${NC} Sensor A, Sensor B\n"
61
- sleep 0.5
62
-
63
- printf "\n"
64
- printf " ${B}Query 3${NC} Track Line ${D}ST_MAKELINE()${NC}\n"
65
- sleep 0.9
66
- printf " LINESTRING(-82.4572 27.9506, -82.4398 27.9659, ...)\n"
67
- printf " ${G} Track complete:${NC} 10 points\n"
68
-
69
- printf "\n"
70
- printf "${W}RESULT:${NC}\n"
71
- printf " ${D}namespace_id:${NC} a3f2c1d9-4b2e-4a7c-9f1d-8e3b0c2d6a5f\n"
72
- printf " ${D}sensor_table:${NC} sensor_locations (10 rows)\n"
73
- printf " ${D}phases_run:${NC} [0, 1, 2, 3]\n"
74
- printf "\n"
75
- printf " ${D}distance_query:${NC}\n"
76
- printf " ${D}closest_pair:${NC} Sensor A → Sensor B\n"
77
- printf " ${D}min_distance:${NC} 2,847 m\n"
78
- printf "\n"
79
- printf " ${D}point_in_polygon:${NC}\n"
80
- printf " ${D}in_zone_count:${NC} 2\n"
81
- printf " ${D}in_zone_sensors:${NC} [Sensor A, Sensor B]\n"
82
- printf "\n"
83
- printf " ${D}track:${NC}\n"
84
- printf " ${D}point_count:${NC} 10\n"
85
- printf "\n"
@@ -1,66 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Simulates the toolbelt-start skill running inside Claude Code
3
-
4
- G='\033[0;32m' # green
5
- B='\033[0;34m' # blue
6
- Y='\033[1;33m' # yellow
7
- C='\033[0;36m' # cyan
8
- D='\033[2;37m' # dim
9
- W='\033[1;37m' # bold white
10
- NC='\033[0m'
11
-
12
- printf "\n"
13
- printf "${D}> /toolbelt-start document_url=https://docs.toolbelt.ai/intro.pdf question=\"What is Toolbelt?\"${NC}\n"
14
- sleep 0.8
15
-
16
- printf "\n"
17
- printf "${C}● Phase 0 Verifying Toolbelt MCP connection...${NC}\n"
18
- sleep 0.6
19
- printf "${G} ✓ Connected${NC} | namespace: demo-workspace | 1 namespace found\n"
20
- sleep 0.3
21
-
22
- printf "\n"
23
- printf "${C}● Phase 1 Resolving namespace...${NC}\n"
24
- sleep 0.4
25
- printf "${G} ✓ Using${NC} demo-workspace (a3f2c1d9-4b2e-4a7c-9f1d-8e3b0c2d6a5f)\n"
26
- sleep 0.2
27
-
28
- printf "\n"
29
- printf "${C}● Phase 2 Inspecting current state...${NC}\n"
30
- sleep 0.5
31
- printf "${G} ✓ Context loaded${NC} | 0 tables | 0 vector collections\n"
32
- sleep 0.2
33
-
34
- printf "\n"
35
- printf "${C}● Phase 3 Uploading document...${NC}\n"
36
- sleep 0.4
37
- printf " ${D}file:${NC} intro.pdf ${D}source:${NC} docs.toolbelt.ai\n"
38
- sleep 0.8
39
- printf " ${Y}[ingest]${NC} running...\n"
40
- sleep 1.2
41
- printf " ${G}[ingest]${NC} completed ✓\n"
42
- sleep 0.4
43
- printf " ${Y}[semantic]${NC} running...\n"
44
- sleep 1.6
45
- printf " ${G}[semantic]${NC} completed ✓\n"
46
- sleep 0.3
47
- printf "${G} ✓ Ingested${NC} → table: ${W}intro_pdf${NC}\n"
48
- sleep 0.3
49
-
50
- printf "\n"
51
- printf "${C}● Phase 5 Answering question...${NC}\n"
52
- sleep 0.4
53
- printf " ${D}toolbelt_search question=\"What is Toolbelt?\"${NC}\n"
54
- sleep 1.2
55
- printf "${G} ✓ Done${NC}\n"
56
-
57
- printf "\n"
58
- printf "${W}RESULT:${NC}\n"
59
- printf " ${D}namespace_id:${NC} a3f2c1d9-4b2e-4a7c-9f1d-8e3b0c2d6a5f\n"
60
- printf " ${D}phases_run:${NC} [0, 1, 2, 3, 5]\n"
61
- printf " ${D}document_table:${NC} intro_pdf\n"
62
- printf " ${D}answer:${NC} Toolbelt is a GPU-accelerated data workspace\n"
63
- printf " providing SQL, vector search, knowledge graphs,\n"
64
- printf " geospatial queries, and Kafka streaming via MCP.\n"
65
- printf " ${D}sources:${NC} [intro.pdf]\n"
66
- printf "\n"
Binary file
Binary file
Binary file
Binary file
Binary file