chore(marketplace): add publish-plugin, rewrite init.sh, cleanup obsolete plugins
- Add publish-plugin: marketplace publish + Feishu bot notification - Rewrite init.sh: SSE-first, fixed prod API, remove env selection - Update CLAUDE.md, README.md, claude-config.yaml - Update skills: req-plugin, req-prd-plugin, pull-request-plugin - Delete sync-skills.sh (obsolete) - Delete deprecated plugins: skills-ops/*, skills-projects/*, old skills-dev/req duplicates - Regenerate marketplace.json (27 plugins) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
8
skills-core/publish-plugin/.claude-plugin/plugin.json
Normal file
8
skills-core/publish-plugin/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "publish-plugin",
|
||||
"description": "发布 ai-proj-helper 技能市场更新并通知飞书群。当用户提到发布、publish、更新技能市场时自动激活。",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "qiudl"
|
||||
}
|
||||
}
|
||||
169
skills-core/publish-plugin/skills/SKILL.md
Normal file
169
skills-core/publish-plugin/skills/SKILL.md
Normal file
@@ -0,0 +1,169 @@
|
||||
---
|
||||
name: publish
|
||||
description: 发布 ai-proj-helper 技能市场更新并通知飞书群。用户说 /publish 时激活。
|
||||
user_invocable: true
|
||||
---
|
||||
|
||||
# publish - 技能市场发布与通知
|
||||
|
||||
发布 ai-proj-helper 的技能变更,重新生成 marketplace.json,提交推送到 Gitea,并通过飞书 Webhook 通知团队。
|
||||
|
||||
## 命令
|
||||
|
||||
**`/publish [消息]`** — 发布当前变更并通知飞书
|
||||
|
||||
## 流程
|
||||
|
||||
```
|
||||
1. 检查工作目录状态 (git status)
|
||||
2. 运行 generate-marketplace.py 重新生成 marketplace.json
|
||||
3. 生成变更摘要(新增/更新/删除了哪些技能)
|
||||
4. git add + commit + push
|
||||
5. 发送飞书卡片通知
|
||||
```
|
||||
|
||||
## 详细步骤
|
||||
|
||||
### Step 1: 检查工作目录
|
||||
|
||||
```bash
|
||||
cd <ai-proj-helper-root>
|
||||
git status
|
||||
```
|
||||
|
||||
确认当前在正确的仓库中。如果没有任何变更(包括 marketplace.json),提示用户无需发布。
|
||||
|
||||
### Step 2: 重新生成 marketplace.json
|
||||
|
||||
```bash
|
||||
cd <ai-proj-helper-root>
|
||||
python3 generate-marketplace.py
|
||||
```
|
||||
|
||||
输出会显示扫描到的各分类技能数量。
|
||||
|
||||
### Step 3: 生成变更摘要
|
||||
|
||||
对比 `git diff` 结果,提取变更内容:
|
||||
|
||||
- **新增技能**:新出现的 `*-plugin/` 目录
|
||||
- **更新技能**:已有技能的 SKILL.md 或 plugin.json 变更
|
||||
- **删除技能**:被移除的 `*-plugin/` 目录
|
||||
- **配置变更**:claude-config.yaml、init.sh 等基础文件变更
|
||||
|
||||
摘要格式:
|
||||
```
|
||||
新增: feishu-bitable-plugin, doubao-voice-plugin
|
||||
更新: req-plugin (SKILL.md)
|
||||
删除: old-plugin
|
||||
配置: init.sh 默认改为 SSE 模式
|
||||
```
|
||||
|
||||
### Step 4: Git 提交并推送
|
||||
|
||||
```bash
|
||||
cd <ai-proj-helper-root>
|
||||
git add -A
|
||||
git commit -m "chore(marketplace): <变更摘要>"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
Commit message 示例:
|
||||
- `chore(marketplace): add feishu-bitable-plugin, update req-plugin`
|
||||
- `chore(marketplace): update init.sh to SSE default`
|
||||
|
||||
### Step 5: 飞书通知
|
||||
|
||||
**Webhook 地址**:从环境变量 `FEISHU_DEPLOY_WEBHOOK` 读取,配置在 `~/.config/devops/credentials.env`。
|
||||
|
||||
如果环境变量未设置,AskUserQuestion 询问用户提供 webhook URL,并建议添加到 credentials.env。
|
||||
|
||||
**卡片格式**(必须用 legacy format,不用 schema 2.0):
|
||||
|
||||
```bash
|
||||
# 先 source 凭据
|
||||
source ~/.config/devops/credentials.env
|
||||
|
||||
# 构建卡片 JSON(必须写文件,不能直接传中文 JSON)
|
||||
cat > /tmp/publish_notify.json << 'CARD_EOF'
|
||||
{
|
||||
"msg_type": "interactive",
|
||||
"card": {
|
||||
"header": {
|
||||
"title": {"tag": "plain_text", "content": "AI 技能市场更新"},
|
||||
"template": "green"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"tag": "div",
|
||||
"text": {"tag": "lark_md", "content": "CHANGE_SUMMARY_HERE"}
|
||||
},
|
||||
{
|
||||
"tag": "div",
|
||||
"text": {"tag": "lark_md", "content": "**提交**: COMMIT_HASH_HERE"}
|
||||
},
|
||||
{
|
||||
"tag": "action",
|
||||
"actions": [{
|
||||
"tag": "button",
|
||||
"text": {"tag": "plain_text", "content": "查看仓库"},
|
||||
"type": "primary",
|
||||
"url": "https://gitea.pipexerp.com/pipexerp/ai-proj-helper"
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
CARD_EOF
|
||||
|
||||
# 替换占位符后发送
|
||||
curl -s -X POST "$FEISHU_DEPLOY_WEBHOOK" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d @/tmp/publish_notify.json
|
||||
```
|
||||
|
||||
**重要**:
|
||||
- 必须用 legacy card format(无 schema 字段),否则返回 ErrCode 11246
|
||||
- 中文内容必须先写文件再 `curl -d @file`,直接传会出现 "blank argument" 错误
|
||||
- `template` 颜色:`green`=成功,`red`=失败,`blue`=信息
|
||||
|
||||
### 自定义消息
|
||||
|
||||
用户可以在 `/publish` 后附加自定义消息,会追加到卡片内容中:
|
||||
|
||||
```
|
||||
/publish 新增飞书多维表格技能,支持批量数据导入
|
||||
```
|
||||
|
||||
卡片内容将包含:
|
||||
```
|
||||
**更新说明**: 新增飞书多维表格技能,支持批量数据导入
|
||||
|
||||
**变更**: 新增 feishu-bitable-plugin
|
||||
**提交**: abc1234
|
||||
```
|
||||
|
||||
## 环境配置
|
||||
|
||||
在 `~/.config/devops/credentials.env` 中添加:
|
||||
|
||||
```bash
|
||||
# 飞书部署通知 Webhook
|
||||
FEISHU_DEPLOY_WEBHOOK="https://open.feishu.cn/open-apis/bot/v2/hook/YOUR_WEBHOOK_KEY"
|
||||
```
|
||||
|
||||
## 错误处理
|
||||
|
||||
| 场景 | 处理 |
|
||||
|------|------|
|
||||
| 无变更可提交 | 提示用户,跳过后续步骤 |
|
||||
| generate-marketplace.py 失败 | 显示错误,中止发布 |
|
||||
| git push 失败 | 显示错误,建议手动解决冲突 |
|
||||
| FEISHU_DEPLOY_WEBHOOK 未配置 | AskUserQuestion 询问 webhook URL |
|
||||
| 飞书通知发送失败 | 显示 curl 返回值,提示但不阻断(代码已推送成功) |
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 此技能操作的仓库路径由 marketplace 插件根目录决定
|
||||
- 发布前确认 `generate-marketplace.py` 输出无异常
|
||||
- 飞书通知是 best-effort,失败不影响代码发布
|
||||
Reference in New Issue
Block a user