⚡ OpenClaw Skills CI/CD 自动化教程

从写代码到上线,全自动流水线

CI/CD GitHub Actions 自动化

妙趣导读:2026年4月1日凌晨2点15分,我第7次手动部署完Skill,终于崩溃了——这年头连泡面都能自动泡,为什么我部署Skill还得手动?于是就有了这套CI/CD流水线。

📋 自动化流水线架构

🏗️ 流水线流程

提交代码 → 自动测试 → 安全扫描 → 自动打包 → 发布到ClawHub

[本地开发] ──push──▶ [GitHub] ──触发──▶ [CI/CD Pipeline]
                                              │
                          ┌───────────────────┤
                          ▼                   ▼
                    [安全扫描]           [单元测试]
                          │                   │
                          └──────┬────────────┘
                                 ▼
                           [自动打包]
                                 │
                                 ▼
                          [GitHub Release]
                                 │
                                 ▼
                          [通知Discord/飞书]
        

🚀 GitHub Actions配置

完整workflow配置

# .github/workflows/skill-ci.yml
name: OpenClaw Skill CI/CD

on:
  push:
    branches: [main]
    paths:
      - 'skills/**'
  pull_request:
    branches: [main]
    paths:
      - 'skills/**'

jobs:
  validate:
    name: Validate Skills
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - uses: actions/setup-node@v4
        with:
          node-version: '24'
          cache: 'npm'
      
      - name: Install dependencies
        run: npm ci
      
      - name: Install skills-packager
        run: npm install -g openclaw-skills-packager
      
      - name: Validate all Skills
        run: skills-packager validate ./skills/ --all
      
      - name: Security scan
        run: npx openclaw-skill-security-scanner scan ./skills/ --ci-mode --threshold B
      
      - name: Pack Skills
        run: skills-packager pack ./skills/ -o ./dist/

      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: skill-packages
          path: ./dist/

  release:
    name: Create Release
    needs: validate
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/download-artifact@v4
        with:
          name: skill-packages
          path: ./dist/
      
      - name: Create GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          files: ./dist/**
          generate_release_notes: true
          tag_name: v${{ github.run_number }}

Pre-commit Hook配置

提交前自动检查:

# .pre-commit-config.yaml
repos:
  - repo: local
    hooks:
      - id: skill-validate
        name: Validate Skills
        entry: npx skills-packager validate
        language: system
        files: ^skills/
      
      - id: security-scan
        name: Security Scan
        entry: npx openclaw-skill-security-scanner scan --ci-mode
        language: system
        files: ^skills/

📦 自动发布到ClawHub

当GitHub Release创建时,自动通知ClawHub:

# .github/workflows/publish-clawhub.yml
name: Publish to ClawHub

on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Publish to ClawHub
        env:
          CLAWHUB_API_KEY: ${{ secrets.CLAWHUB_API_KEY }}
        run: |
          # 通知ClawHub有新版本
          curl -X POST \
            -H "Authorization: Bearer $CLAWHUB_API_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "name": "my-skill",
              "version": "${{ github.event.release.tag_name }}",
              "repo": "${{ github.repository }}"
            }' \
            https://clawhub.ai/api/v1/skills/publish

📊 状态Badge集成

在README.md中添加CI状态Badge:

[![CI/CD](https://github.com/yourname/my-skill/actions/workflows/skill-ci.yml/badge.svg)](https://github.com/yourname/my-skill/actions)

[![Security](https://img.shields.io/badge/security-A%2B-brightgreen)](https://github.com/yourname/my-skill/security)

[![OpenClaw](https://img.shields.io/badge/OpenClaw-Skill-11998e)](https://miaoquai.com/tools/agent-skills-ci-cd.html)

💡 最佳实践

✅ 持续集成建议
  • 每次push都运行安全扫描和验证
  • 设置CI必须通过才能合并PR
  • 使用Semantic Versioning管理版本号
  • 自动生成CHANGELOG
  • 发布到Release时自动通知社区

🔗 相关链接

🎭 妙趣小结

CI/CD的核心精神就是:提交完代码就去喝咖啡,剩下的交给机器人。如果你的Skill发布还需要手动操作10步,你该反思为什么你的AI不会自动帮你做。😎