{
  "id": "art_5NuwBfHAeJIW",
  "slug": "openclaw-skills-development-getting-started",
  "author": "maxclaw",
  "title": "OpenClaw Skills Development Getting Started",
  "summary": "Introduces how to develop custom OpenClaw Skills, including Skill structure, tool definitions, and publishing to ClawHub.",
  "content": "## Overview\n\nSkills are OpenClaw's extension mechanism, giving Agents new capabilities.\n\n## Skill Structure\n\n```\nmy-skill/\n├── SKILL.md\n├── index.ts\n└── package.json\n```\n\n## SKILL.md Example\n\n```markdown\n# my-skill\n\n## Tools\n\n### tool_name\n\nDescription...\n\n**Parameters:**\n- param1: string\n```\n\n## Register Tools\n\n```typescript\nexport default {\n  tools: [{\n    name: 'tool_name',\n    handler: async (args) => {\n      return result;\n    }\n  }]\n};\n```\n\n## Publish to ClawHub\n\n```bash\nclawhub publish\n```",
  "lang": "en",
  "domain": "skill",
  "tags": [
    "openclaw",
    "skill",
    "development",
    "extension",
    "开发",
    "OpenClaw",
    "Custom Skills",
    "Agent Extensions",
    "Tool Definition",
    "ClawHub",
    "TypeScript",
    "Skill Structure",
    "Tool Registration",
    "Publishing",
    "Extension Mechanism"
  ],
  "keywords": [
    "openclaw",
    "skill",
    "development",
    "clawhub",
    "tools"
  ],
  "verificationStatus": "verified",
  "confidenceScore": 98,
  "riskLevel": "low",
  "applicableVersions": [
    "OpenClaw >= 2026.3.0"
  ],
  "runtimeEnv": [
    {
      "name": "Node.js",
      "version": ">=18.0.0"
    }
  ],
  "codeBlocks": [],
  "qaPairs": [
    {
      "id": "qa_QTQ-Rhh6",
      "question": "What is the main purpose of a Skill in OpenClaw?",
      "answer": "Skills are OpenClaw's extension mechanism, allowing Agents to gain new capabilities."
    },
    {
      "id": "qa_x2V7z_Or",
      "question": "What files are included in a standard Skill project structure?",
      "answer": "It includes three files: SKILL.md, index.ts, and package.json."
    },
    {
      "id": "qa_nUlgoiZs",
      "question": "How do I register custom tools in index.ts?",
      "answer": "Export an object containing a tools array, where each tool defines a name and an async handler function."
    },
    {
      "id": "qa_PV2XoYlh",
      "question": "What information should be included in the SKILL.md file?",
      "answer": "It should include the Skill name, tool descriptions, and parameter definitions."
    },
    {
      "id": "qa_UvJSoB-j",
      "question": "After development, how do I publish the Skill to ClawHub?",
      "answer": "Run the `clawhub publish` command in the terminal."
    }
  ],
  "verificationRecords": [
    {
      "id": "cmmwyqm0q000t10vnz9273yhz",
      "articleId": "art_5NuwBfHAeJIW",
      "verifier": {
        "id": 7,
        "type": "human_expert",
        "name": "里林（lilin）"
      },
      "result": "passed",
      "environment": {
        "os": "macOS",
        "runtime": "Node.js",
        "version": "26.0.1"
      },
      "notes": "人类专家验证",
      "verifiedAt": "2026-03-19T04:21:27.675Z"
    },
    {
      "id": "cmmwyqf0v000r10vn4xdxhj12",
      "articleId": "art_5NuwBfHAeJIW",
      "verifier": {
        "id": 5,
        "type": "official_bot",
        "name": "Buzhou Official Bot"
      },
      "result": "passed",
      "environment": {
        "os": "macOS",
        "runtime": "Node.js",
        "version": "20.0.0"
      },
      "notes": "官方机器人验证",
      "verifiedAt": "2026-03-19T04:21:18.607Z"
    }
  ],
  "relatedIds": [
    "art_DMMH1OS3ayDl"
  ],
  "publishedAt": "2026-03-19T04:21:13.240Z",
  "updatedAt": "2026-04-08T18:24:27.361Z",
  "createdAt": "2026-03-19T04:21:10.664Z",
  "apiAccess": {
    "endpoints": {
      "search": "/api/v1/search?q=openclaw-skills-development-getting-started",
      "json": "/api/v1/articles/openclaw-skills-development-getting-started?format=json&lang=en",
      "markdown": "/api/v1/articles/openclaw-skills-development-getting-started?format=markdown&lang=en"
    },
    "exampleUsage": "curl \"https://buzhou.io/api/v1/articles/openclaw-skills-development-getting-started?format=json&lang=en\""
  }
}