{"id":"527c6a66-2933-43d8-a53e-5b9a63145df5","slug":"wende-openclaw-skills-as-tools","name":"openclaw-skills-as-tools","description":"Tool Creator","canonicalUrl":"https://www.xpersona.co/skill/wende-openclaw-skills-as-tools","sourceUrl":"https://github.com/wende/openclaw-skills-as-tools","homepage":null,"source":"GITHUB_OPENCLEW","vendor":{"slug":"wende","label":"Wende","url":"https://github.com/wende/openclaw-skills-as-tools"},"protocols":["OPENCLEW"],"capabilities":["copy","call","be","use","register"],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":null,"freshnessAt":"2026-02-24T19:44:06.356Z","freshnessLabel":"Feb 24, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Feb 24, 2026"},{"label":"Vendor","value":"Wende"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"Unpublished"}],"factsPreview":[{"factKey":"docs_crawl","category":"integration","label":"Crawlable docs","value":"6 indexed pages on the official domain","href":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceUrl":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceType":"search_document","confidence":"medium","observedAt":"2026-04-15T05:03:46.393Z","isPublic":true},{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Wende","href":"https://github.com/wende/openclaw-skills-as-tools","sourceUrl":"https://github.com/wende/openclaw-skills-as-tools","sourceType":"profile","confidence":"medium","observedAt":"2026-02-24T19:44:07.371Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/wende-openclaw-skills-as-tools/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/wende-openclaw-skills-as-tools/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-02-24T19:44:07.371Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/wende-openclaw-skills-as-tools/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/wende-openclaw-skills-as-tools/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["Trust evidence available"],"agentCard":{"name":"openclaw-skills-as-tools","description":"Tool Creator","source":"GITHUB_OPENCLEW","sourceId":"github:1164653933","repository":"https://github.com/wende/openclaw-skills-as-tools","documentation":"https://www.xpersona.co/skill/wende-openclaw-skills-as-tools/agent/wende-openclaw-skills-as-tools","protocols":["OPENCLEW"],"capabilities":["copy","call","be","use","register"],"languages":["typescript"],"install":{"command":"git clone https://github.com/wende/openclaw-skills-as-tools.git","ecosystem":"git"},"examples":[{"kind":"example","language":"ts","snippet":"import { spawn } from \"node:child_process\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport default function (api) {\n  api.registerTool({\n    name: \"SKILLNAME_ACTION\",\n    description: \"One sentence: what the tool does and when to use it\",\n    parameters: {\n      type: \"object\",\n      properties: {\n        // define params here\n      },\n      required: [/* list required param names */],\n    },\n    async execute(_id, params) {\n      try {\n        // do work\n        const result = \"...\";\n        return { content: [{ type: \"text\", text: result }] };\n      } catch (err) {\n        const msg = err instanceof Error ? err.message : String(err);\n        return { content: [{ type: \"text\", text: `Error: ${msg}` }] };\n      }\n    },\n  });\n}"},{"kind":"example","language":"ts","snippet":"function run(cmd, args, { cwd = __dirname, timeoutMs = 30_000, input } = {}) {\n  return new Promise((resolve, reject) => {\n    const child = spawn(cmd, args, {\n      cwd,\n      stdio: [input != null ? \"pipe\" : \"ignore\", \"pipe\", \"pipe\"],\n    });\n    let stdout = \"\";\n    let stderr = \"\";\n    child.stdout.on(\"data\", (c) => (stdout += c));\n    child.stderr.on(\"data\", (c) => (stderr += c));\n    const timer = setTimeout(() => {\n      child.kill(\"SIGKILL\");\n      reject(new Error(\"Timed out\"));\n    }, timeoutMs);\n    child.on(\"error\", (err) => { clearTimeout(timer); reject(err); });\n    child.on(\"exit\", (code) => {\n      clearTimeout(timer);\n      if (code !== 0) reject(new Error(stderr || `Exit ${code}`));\n      else resolve({ stdout: stdout.trim(), stderr });\n    });\n    if (input != null) {\n      child.stdin.write(input);\n      child.stdin.end();\n    }\n  });\n}"}]}}