name: skill-publisher-claw-skill
description: 为公开发布准备 Claw 技能。适用于将技能发布到 GitHub 或 ClawdHub 时——涵盖安全审计、可移植性、文档和 Git 规范。触发词:发布技能、发布技能、审计技能、技能清单、准备技能发布。
为公开发布准备技能。在发布任何技能前,请运行此清单,以确保其可重用、整洁、安全且文档完善。
按顺序检查以下各项。每个部分下方有详细指南。
[ ] 1. 结构 - 必需文件存在,组织逻辑清晰
[ ] 2. 安全性 - 无密钥、密码、PII 或敏感数据
[ ] 3. 可移植性 - 无硬编码路径,可在任何机器上运行
[ ] 4. 代码质量 - 代码整洁,无调试残留
[ ] 5. 文档 - README、SKILL.md、示例完整
[ ] 6. 测试 - 已验证实际可用
[ ] 7. Git - 历史记录干净,.gitignore 配置正确,提交信息良好
[ ] 8. 元数据 - 许可证、描述、关键词
技能名称/
├── SKILL.md # 必需 - 入口点,使用时机,快速参考
├── README.md # 必需 - 面向 GitHub/人类用户
└── [内容文件] # 实际的技能内容
必须包含:
- 头部:名称和一行描述
- 何时使用:加载此技能的明确触发条件
- 快速参考:最重要的信息,一目了然
- 详细章节:根据需要添加
# 技能名称
一行描述此技能的功能。
## 何时使用
- 触发条件 1
- 触发条件 2
## 快速参考
[此处放置最重要的信息]
## [其他章节]
[详细内容]
❌ 将所有内容塞进单个大文件
❌ 含义模糊的文件名 (data1.md, stuff.md)
❌ 文件间存在循环依赖
❌ 缺少 SKILL.md 入口点
搜索并移除:
# 在技能目录中运行
grep -rniE "(api[_-]?key|secret|password|token|bearer|auth)" . --include="*.md"
grep -rniE "([a-zA-Z0-9]{32,})" . --include="*.md" # 可能是密钥的长字符串
grep -rniE "(sk-|pk-|xai-|ghp_|gho_)" . --include="*.md" # 常见密钥前缀
搜索并移除:
grep -rniE "(@gmail|@yahoo|@hotmail|@proton)" . --include="*.md"
grep -rniE "\+?[0-9]{10,}" . --include="*.md" # 电话号码
grep -rniE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" . --include="*.md" # IP 地址
如果示例需要真实数据,请使用:
- user@example.com 作为邮箱
- 192.0.2.x 作为 IP 地址(RFC 5737 文档范围)
- example.com 作为域名
- 明确的虚构名称("Alice"、"Bob"、"Acme Corp")
搜索并修复:
grep -rniE "(\/home\/|\/Users\/|C:\\\\|~\/)" . --include="*.md"
grep -rniE "\/[a-z]+\/[a-z]+\/" . --include="*.md" # 绝对路径
替换为:
- 相对路径 (./config.yaml)
- 环境变量 ($HOME, $XDG_CONFIG_HOME)
- 平台无关的描述
如果技能需要外部工具:
## 要求
- `工具名称` - [安装链接]
- 必须设置环境变量 `API_KEY`
移除:
grep -rniE "(TODO|FIXME|XXX|HACK|DEBUG)" . --include="*.md"
grep -rniE "(console\.log|print\(|debugger)" . --include="*.md"
python,bash)# 技能名称
简要描述(1-2 句)。
## 内容概览
[文件列表及描述]
## 快速摘要
[核心价值主张]
## 使用方法
[如何使用此技能]
## 要求(如有)
[依赖项、API 密钥等]
## 相关链接(如适用)
[官方文档、仓库等]
## 许可证
[技能推荐使用 MIT 许可证]
如果技能涉及工具/命令:
# 测试提到的每个命令是否实际可用
# 验证输出与文档匹配
创建 test.sh 或记录手动测试步骤:
#!/bin/bash
# 验证技能完整性
echo "检查密钥..."
grep -rniE "(api[_-]?key|secret|password)" . --include="*.md" && exit 1
echo "检查硬编码路径..."
grep -rniE "\/home\/" . --include="*.md" && exit 1
echo "✓ 所有检查通过"
创建 .gitignore:
# 操作系统文件
.DS_Store
Thumbs.db
# 编辑器文件
*.swp
*.swo
*~
.idea/
.vscode/
# 临时文件
*.tmp
*.bak
# 测试产物
test-output/
# 检查历史记录中的密钥
git log -p | grep -iE "(api[_-]?key|secret|password|token)"
如果曾提交过密钥:
# 终极方案 - 重写历史(与协作者协调!)
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch 敏感文件路径' HEAD
类型: 简短描述
- 详情 1
- 详情 2
类型: feat, fix, docs, refactor, test, chore
# 最终验证
git status # 没有意外的暂存内容
git log --oneline -5 # 提交信息看起来正确
git diff origin/main # 更改符合预期
claw, skill, ai-assistant)对于开源技能,MIT 许可证简单且宽松:
MIT 许可证
版权所有 (c) [年份] [姓名]
特此免费授予任何获得本软件副本及相关文档文件(以下简称"软件")的人士,
不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售
本软件的副本,并允许获得本软件的人士在满足以下条件的情况下这样做:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按"原样"提供,不附带任何明示或暗示的担保,包括但不限于对适销性、
特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对
因本软件或使用本软件而引起的任何索赔、损害或其他责任承担责任,无论是在合同诉讼、
侵权诉讼还是其他诉讼中。
在 SKILL.md 的 frontmatter 中:
---
name: 技能名称
description: 一行描述
version: 1.0.0
author: 用户名
tags: [标签1, 标签2]
---
每次发布前运行此脚本:
#!/bin/bash
set -e
SKILL_DIR="${1:-.}"
cd "$SKILL_DIR"
echo "🔍 正在审计技能目录:$SKILL_DIR"
echo ""
# 1. 结构
echo "=== 结构 ==="
[ -f "SKILL.md" ] && echo "✓ SKILL.md 存在" || echo "✗ 缺少 SKILL.md"
[ -f "README.md" ] && echo "✓ README.md 存在" || echo "✗ 缺少 README.md"
echo ""
# 2. 安全性
echo "=== 安全性 ==="
if grep -rniE "(api[_-]?key|secret|password|token|bearer)=['\"]?[a-zA-Z0-9]" . --include="*.md" 2>/dev/null; then
echo "✗ 发现潜在密钥"
else
echo "✓ 无明显密钥"
fi
if grep -rniE "(sk-|pk-|xai-|ghp_|gho_)[a-zA-Z0-9]" . --include="*.md" 2>/dev/null; then
echo "✗ 发现 API 密钥模式"
else
echo "✓ 无 API 密钥模式"
fi
echo ""
# 3. 可移植性
echo "=== 可移植性 ==="
if grep -rniE "\/home\/[a-z]+" . --include="*.md" 2>/dev/null; then
echo "✗ 发现硬编码主目录路径"
else
echo "✓ 无硬编码主目录路径"
fi
echo ""
# 4. 质量
echo "=== 质量 ==="
if grep -rniE "(TODO|FIXME|XXX)" . --include="*.md" 2>/dev/null; then
echo "⚠ 发现待办事项(请检查)"
else
echo "✓ 无待办事项"
fi
echo ""
# 5. Git
echo "=== GIT ==="
[ -f ".gitignore" ] && echo "✓ .gitignore 存在" || echo "⚠ 无 .gitignore"
[ -d ".git" ] && echo "✓ Git 已初始化" || echo "✗ 不是 Git 仓库"
echo ""
echo "🏁 审计完成"
1. 运行自动化审计脚本
2. 修复发现的问题
3. 手动审核上述清单
4. 使用清晰的提交信息进行最终提交
5. 推送到 GitHub
6. (可选)提交到 ClawdHub
一个好的 README 易于发现且人类可读。有关详细指南,请参阅 docs/readme-quality.md。