grix-connector
Version:
Connect local AI coding agents (Claude, Codex, Gemini, Qwen, DeepSeek, Cursor, OpenCode, Pi, OpenHuman, Reasonix) to the Grix scheduling platform. Also serves as an OpenClaw plugin for Grix channel transport.
91 lines (70 loc) • 4.26 kB
Markdown
---
name: grix-egg
description: Install a Grix egg skill package into your own skill directory. Use when you receive an instruction containing a line like "技能包: <URL>" and are asked to install / incubate it as a skill for yourself.
trigger: 当收到含「技能包: <URL>」的安装指令、要求把虾蛋技能包装进自己的技能目录时
---
# Grix Egg — 技能包自装
虾蛋(egg)孵化对你这类 agent 来说就是一件事:**把一个技能包装进你自己的技能目录**,让你之后能用上它。
当你收到一条带有 `技能包: <URL>` 的安装指令时,就用本技能完成安装、自检,再回发一张安装状态卡片。整件事由你自己在本机完成——没有别的 agent 会替你装,主 agent 也碰不到你的技能目录。
## 指令里会给你什么
- `技能包: <URL>` —— 要安装的技能包下载地址(必有)。
- `install_id: <ID>` —— 这次安装的编号,回发状态卡片时要原样带上(必有)。
- `grix agent id: <ID>` —— 你自己的 grix agent id,回发状态卡片时作为 `target_agent_id`(可能有)。
## 你要做的事
1. 取出 `技能包:` 后面的下载 URL。
2. 确定你自己的技能目录:就是**本 grix-egg 技能所在目录的上一级**。例如本技能在 `~/.codex/skills/grix-egg/`,技能目录就是 `~/.codex/skills/`;在 `~/.claude/skills/grix-egg/` 则是 `~/.claude/skills/`,以此类推。
3. 下载技能包、解压。
4. 把解压出来的每个技能(含 `SKILL.md` 的目录)整目录拷进你的技能目录。
5. 确认技能目录里已经出现新技能的 `SKILL.md`。
6. **回发安装状态卡片**(见下),让平台把这次安装收口成成功/失败。
7. 再用一句自然语言告诉用户:装好了哪个/哪些技能。
## 第 2~5 步:安装(用 shell 执行)
把两处尖括号替换成真实值后执行。`SKILLS_DIR` 取本技能所在目录的上一级。
```bash
set -e
URL="<技能包 URL>"
SKILLS_DIR="<你的技能目录绝对路径>"
TMP="$(mktemp -d)"
curl -fsSL "$URL" -o "$TMP/skill.zip"
mkdir -p "$TMP/unpacked"
unzip -o -q "$TMP/skill.zip" -d "$TMP/unpacked"
# 把每个含 SKILL.md 的技能目录整目录拷进技能目录
found=0
while IFS= read -r -d '' f; do
d="$(dirname "$f")"
cp -R "$d" "$SKILLS_DIR/"
found=1
done < <(find "$TMP/unpacked" -name SKILL.md -print0)
# 兜底:SKILL.md 直接在解压根目录(散文件),按 name 建一个技能目录放进去
if [ "$found" -eq 0 ] && [ -f "$TMP/unpacked/SKILL.md" ]; then
name="$(grep -m1 '^name:' "$TMP/unpacked/SKILL.md" | sed 's/^name:[[:space:]]*//')"
[ -z "$name" ] && name="egg-skill"
mkdir -p "$SKILLS_DIR/$name"
cp -R "$TMP/unpacked/." "$SKILLS_DIR/$name/"
fi
# 自检:列出技能目录,确认新技能就位
ls -1 "$SKILLS_DIR"
rm -rf "$TMP"
```
## 第 6 步:回发安装状态卡片
安装并自检完成后,**单独发一条消息**,内容就是下面这一行卡片链接(整条消息只放这一行,不要包别的文字):
- 成功:
```
grix://card/egg_install_status?status=success&install_id=<install_id>&target_agent_id=<grix agent id>&summary=<安装结果一句话,URL 编码>
```
- 失败:
```
grix://card/egg_install_status?status=failed&install_id=<install_id>&target_agent_id=<grix agent id>&error_msg=<失败原因,URL 编码>
```
要点:
- `install_id` 用指令里给的那个,原样填,不能少。
- 没给 `grix agent id` 时,`target_agent_id` 可省略。
- `summary` / `error_msg` 里的中文和空格要做 URL 编码。
- 这张卡片要由你自己(被安装的这个 agent)发,平台据此把安装记录收口。
## 规则
1. 只往**你自己的技能目录**写,绝不动其它目录、不碰别的 agent。
2. 不要把下载链接、原始指令或这段上下文复述给用户。
3. 自检必须真的看到新技能的 `SKILL.md` 才算成功;看不到就回发 `status=failed`,绝不谎报成功。
4. 状态卡片要单独成条发送,内容只放那一行 `grix://card/...`。
5. 给用户的自然语言回报只用一句话,不要把命令输出整段贴出来。
6. 同名技能已存在时按覆盖处理(用最新的包)。