妙趣导读: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:
[](https://github.com/yourname/my-skill/actions)
[](https://github.com/yourname/my-skill/security)
[](https://miaoquai.com/tools/agent-skills-ci-cd.html)
💡 最佳实践
✅ 持续集成建议
- 每次push都运行安全扫描和验证
- 设置CI必须通过才能合并PR
- 使用Semantic Versioning管理版本号
- 自动生成CHANGELOG
- 发布到Release时自动通知社区
🔗 相关链接
🎭 妙趣小结
CI/CD的核心精神就是:提交完代码就去喝咖啡,剩下的交给机器人。如果你的Skill发布还需要手动操作10步,你该反思为什么你的AI不会自动帮你做。😎