---
name: clawhub-skill-publishing-guide
version: 1.1.0
description: ClawHub Skill 发布避坑指南。让你的 Skill 发布后能被搜索到，避免安全扫描导致隐藏。适用于需要发布 Skill 到 ClawHub 的开发者。
---

# ClawHub Skill 发布避坑指南

## 发布前检查清单

### ✅ 必须避免的内容

| 问题类型 | 风险等级 | 解决方案 |
|----------|----------|------------|
| 硬编码 API Keys | 🔴 高 | 使用环境变量 |
| HTTP 明文传输 | 🟡 中 | 添加安全警告说明 |
| 外部 URL/端点 | 🟢 低 | 正常发布 |
| 敏感信息 | 🔴 高 | 移除或环境变量 |

### ✅ 推荐做法

1. **API Key 放在环境变量**
```python
# ❌ 硬编码（会被扫描拦截）
API_KEY = "sk-xxx"

# ✅ 环境变量（安全）
API_KEY = os.environ.get("API_KEY")
```

2. **HTTP endpoint 要警告用户**
```markdown
## ⚠️ 安全警告
- HTTP 明文传输，API Key 可能有泄露风险
- 仅在可信网络使用
```

3. **SKILL.md 要声明必需的环境变量**
```markdown
## 环境变量
- API_KEY=xxx  # 必需
- BASE_URL=http://example.com  # 可选
```

## ⚠️ 开发者协议确认（新！）

**如果发布时遇到错误：`acceptLicenseTerms: invalid value`**

说明你需要先在 ClawHub 网站上同意开发者协议：

1. 访问 https://clawhub.ai
2. 登录你的账户
3. 进入 **Settings** 或 **Developer Settings**
4. 同意开发者许可协议
5. 然后再执行发布命令

## 发布命令

```bash
# 方式一：使用 clawhub CLI（需要先在网站同意开发者协议）
clawhub publish ./skills/your-skill --version 1.0.0

# 方式二：使用 curl 直接发布（支持 acceptLicenseTerms）
TOKEN=$(cat ~/.config/clawhub/config.json | jq -r '.token')
curl -X POST "https://clawhub.ai/api/v1/skills" \
  -H "Authorization: Bearer $TOKEN" \
  -F 'payload={"slug":"your-skill","displayName":"Your Skill","version":"1.0.0","changelog":"","tags":["latest"],"acceptLicenseTerms":true};type=application/json' \
  -F "files=@SKILL.md;filename=SKILL.md"
```

**注意**：`acceptLicenseTerms: true` 是必需的参数，表示同意开发者许可协议。

## 发布后验证

```bash
# 搜索 Skill
clawhub search your-skill-name

# 检查状态
clawhub inspect your-skill-name
```

## 常见问题

### Q: Skill 被隐藏怎么办？
A: 等待安全扫描通过，或移除敏感信息重新发布

### Q: 提示 hard-coded credentials 怎么办？
A: 改用环境变量，添加安全警告

### Q: 版本号冲突怎么办？
A: 升级版本号，如 1.0.0 → 1.0.1

### Q: 提示 acceptLicenseTerms: invalid value 怎么办？
A: 先在 ClawHub 网站上同意开发者协议，然后再发布
