← ClaudeAtlas

executorlisted

Load before using the `execute` tool, external systems, and configured MCP/OpenAPI/GraphQL integrations. Use `tools.search({ ... })`, then `tools.describe.tool({ path })`, then call the full `tools.<namespace>.<tool>(args)` path.
shekohex/dotai · ★ 10 · AI & Automation · score 63
Install: claude install-skill shekohex/dotai
# Executor Load this skill before any `execute` call. ## Source Of Truth Read the current `execute` tool description in the prompt first. That is the session-specific contract. ## Mental Model Inside `execute`: - `tools` is a lazy proxy - discover first, call second - call the exact full path - pass objects to helper tools Helpers: - `tools.search({ query, namespace?, limit? })` - `tools.describe.tool({ path })` - `tools.executor.sources.list({ query?, limit? })` ## Required Flow 1. Search. 2. Pick `matches[0]?.path`. 3. Describe that path. 4. Call the full namespaced tool. 5. Return normalized data. ## Canonical Pattern ```ts const matches = await tools.search({ query: "linear issues", limit: 5 }); const path = matches[0]?.path; if (!path) return "No matching tools found."; const details = await tools.describe.tool({ path }); const result = await tools.mcp_linear_app.list_issues({ project: "<project-id>", limit: 5, }); return result?.structuredContent ?? result; ``` ## Result Unwrap Some tools return MCP-style payloads. Prefer `structuredContent`. If missing, parse the first text block if it is JSON. ```ts const unwrap = (value: any) => { if (value?.structuredContent) return value.structuredContent; const text = value?.content?.find?.((item: any) => item?.type === "text")?.text; if (typeof text !== "string") return value; try { return JSON.parse(text); } catch { return value; } }; ``` ## Do - start with `tools.search({ ... })` wh