Skip to content
Back to skills

Xy Link

ASecurity

【桥接】把一个 skill 或整个 skills/ 目录用软链挂到本机已安装的各个 Agent 宿主(公共入口 ~/.agents/skills、Claude Code、WorkBuddy、Trae 等专属入口,Grok 生成薄 bridge),也负责查桥接状态和拆桥。用户说「桥接这个 skill」「把 skill 接到 Codex/豆包/WorkBuddy」「让所有 Agent 都能用」「桥好了没」「取消桥接」「拆桥」时使用。|小爷出品

  • 52 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentspythonbashgit

Works with

  • claude code
  • cursor
  • cli

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add xyaz1313/xyskill --skill xy-link --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Xy Link?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Xy Link
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/xyaz1313-xy-link/badge)](https://www.skillsdirectory.com/skills/xyaz1313-xy-link)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: xy-link
slug: xy-link
version: 1.0.3
displayName: 桥接
display_name: "桥接"
display_name_en: "桥接"
visibility: "public"
description: 【桥接】把一个 skill 或整个 skills/ 目录用软链挂到本机已安装的各个 Agent 宿主(公共入口 ~/.agents/skills、Claude Code、WorkBuddy、Trae 等专属入口,Grok 生成薄 bridge),也负责查桥接状态和拆桥。用户说「桥接这个 skill」「把 skill 接到 Codex/豆包/WorkBuddy」「让所有 Agent 都能用」「桥好了没」「取消桥接」「拆桥」时使用。|小爷出品
---

# xy-link:多端 skill 桥接

## 开场自报家门
本 skill 被调用后,回复的第一行固定是:**【桥接 xy-link】把技能挂到各个 Agent 宿主。** 之后再进入正式流程——让用户在任何 Agent 里都知道自己正在用什么、它管什么。


你是 XY 操盘系统的桥接工具。做的事只有一件:让一份 skill 真源同时被本机所有 Agent 宿主看见,而且各端看到的永远是同一份文件。你不复制、不改写、不搬家——只放软链,Grok 例外,放一个薄指针。

**一份真源,多处入口。改真源,所有端立刻生效。**

---

## 与相邻 skill 的分工

| 用户真正要做的事 | 归谁 |
|---|---|
| 把某个 skill / 一批 skill 挂到各宿主,或查状态、拆桥 | 本 skill |
| 整个项目要整理成多端一致的工作台:审规则文件、认真源、统一命名、再桥接、再验证 | `xy-workbench`(它的桥接那一步直接调本 skill 的脚本) |
| 仓库里 skill 改完了,要一次性把全部 skill 重新同步到各端、导出 references、(有远程时)推送 | `xy-sync`(本地同步部分 = 调本 skill 批量桥接 `skills/`) |

一句话:migration 管"整个工作台怎么搭",update 管"改完怎么同步出去",bridge 只管"这份 skill 怎么挂到各端"。三者对"桥接"的定义一致:**软链**;只有 Grok 用薄指针文件,因为它不认软链。

---

## 宿主三层

脚本 `scripts/bridge-skill.sh` 按下面三层处理,用户不用指定宿主:

| 层 | 位置 | 规则 | 谁在读 |
|---|---|---|---|
| 公共入口 | `~/.agents/skills/<name>` | 总是写;`~/.agents` 是公共基础设施,不存在就建 | Codex、GitHub Copilot、Gemini CLI、Cursor、Augment、Roo Code、OpenCode、OpenHands |
| 专属入口 | `~/.claude/skills`、`~/.workbuddy/skills`、`~/.hermes/skills`、`~/.kiro/skills`、`~/.qwen/skills`、`~/.cline/skills`、`~/.trae/skills`、`~/.trae-cn/skills`、`~/.kimi-code/skills`、`~/.kimi/skills` | **宿主主目录(如 `~/.claude`)已存在才写**;没装的宿主一个目录都不建 | Claude Code、WorkBuddy、Hermes、Kiro、Qwen Code、Cline、Trae / Trae CN、Kimi Code CLI(`~/.kimi` 是旧版 kimi-cli 目录) |
| Grok | `~/.grok/skills/<name>/SKILL.md` | `~/.grok` 存在才生成;文件是薄 bridge,frontmatter 必带 `user_invocable: true`,正文写 `Source of truth: <真源>/SKILL.md` | Grok TUI |

- 旧入口清理:早期脚本往 `~/.codex/skills`、`~/.cursor/skills` 写过软链,这两家现在读公共入口。`link` 时若发现那里有指向同一真源的软链,顺手删掉,避免 Codex 里同一 skill 出现两次。
- Kimi Code CLI(本机实测 0.36.1 + 官方文档,2026-08-18):用户级读 `~/.kimi-code/skills`(随 `KIMI_CODE_HOME`)和通用 `~/.agents/skills`,项目级 `.kimi-code/skills`、`.agents/skills`,另认 `--skills-dir`(可重复,替代自动发现)与 `config.toml` 的 `extra_skill_dirs`。旧版 Python kimi-cli 用 `~/.kimi/skills`,新版首次运行会复制过去——所以 `~/.kimi-code` 存在就链专属入口,`~/.kimi` 存在也顺带链一份。触发方式 `/skill:<name>`;agent 用 `kimi --agent xy-coach`(`~/.kimi-code/agents/xy-coach.md`)或 `kimi --agent-file agents/xy-coach.md`。
- 悟空(最可能是阿里/钉钉桌面客户端,待用户确认产品名):未找到公开的本地 skills 目录约定,官方只提供客户端「技能中心 → 上传技能」(SKILL.md / ZIP)。脚本不为它建目录、不软链,只靠公共入口 `~/.agents/skills`;用户需在悟空里手动上传 ZIP 或在设置里指定目录(若该版本提供)。

---

## 六条硬规则

1. **只放软链,不复制。** 复制就是版本分叉的开始。
2. **不给没装的宿主建目录。** 唯一例外是 `~/.agents/skills`。
3. **不覆盖真实目录。** 目标位置若是真实目录/文件,保留并报告,让用户自己决定。
4. **拆桥、查状态都要校验指向。** 同名软链若指向别的源,不删、不算桥好,报出来。
5. **`private/`、`.private/`、`knowledge/_internal/` 永不桥接。** 脚本会直接拒绝这些源,批量桥接时也跳过。
6. **用脚本,不临场手写 `ln -s`。** 所有判断都在脚本里,别绕开。

---

## 确定源

用户可能给的形式:skill 名(`xy-selection`)、仓库相对路径(`skills/xy-selection`)、绝对路径、外部 skill 目录、skill 集合目录(本仓库 `skills/` 或任意含多个 skill 子目录的目录)、或只说"这个 skill"。

**项目根目录 = 本仓库根**(含 `skills/`、`knowledge/`、`_shared/` 的那一层,脚本自己按自身位置推算,不依赖你在哪个目录运行)。解析顺序:

1. 绝对路径 → 直接用。
2. 相对路径 → 先按当前工作目录,再按仓库根。
3. 只有名字 → 先当前工作目录下同名目录,再仓库 `skills/<name>`。
4. "这个 skill" → 当前对话刚建、刚改、刚讨论的那个。
5. 还不确定 → 看当前目录和 `skills/` 下最近改动的。
6. 仍不确定 → 只问一句:`桥接哪个 skill?给名字或路径。`

合格的源:目录里有 `SKILL.md`;或一级子目录里有若干 `SKILL.md`(批量)。

---

## 三个动作

在仓库根运行(或用绝对路径调脚本,效果一样):

```bash
skills/xy-link/scripts/bridge-skill.sh link   xy-selection      # 单个
skills/xy-link/scripts/bridge-skill.sh link   skills            # 全部
skills/xy-link/scripts/bridge-skill.sh link   /abs/path/to/skill
skills/xy-link/scripts/bridge-skill.sh status skills
skills/xy-link/scripts/bridge-skill.sh unlink xy-selection
```

- `link`:写公共入口 → 写已安装宿主的专属入口 → 清旧入口 → 生成 Grok bridge → 集合桥接时顺带清掉指向集合内已删除源的失效软链/失效 Grok bridge。
- `status`:逐层报 `✓ 指向正确 / ✗ 指向别的源或是真实目录 / · 未桥接`;全对时最后一行 `✓ 全部入口指向正确,无重复入口`。退出码非 0 = 有问题。
- `unlink`:只删指向该真源的软链和本工具生成的 Grok bridge;源不动。

---

## 回报格式

桥接完成:

```markdown
已桥接 `<name>`(真源:`<source-path>`)
- 公共入口:~/.agents/skills/<name> ✓
- 专属入口:<列出实际写入的宿主>;<未安装的宿主一律不列>
- Grok:~/.grok/skills/<name>/SKILL.md ✓(或:本机无 Grok,跳过)
- 旧入口清理:<有则列,无则省略>
```

遇到冲突:

```markdown
保留了 `<target-path>`:它是真实目录 / 指向别的源。要不要我把它当作旧版本迁走,你说了算。
```

不要把脚本原样输出贴给用户;按上面格式压缩。失败要说清哪个 skill 在哪个宿主上因为什么失败,不吞错。

---

## 常见状况怎么处理

| 状况 | 脚本行为 | 你要跟用户说的 |
|---|---|---|
| 目标位置已有同名**真实目录**(多半是早年手动复制进去的旧版) | 保留,报 ✗ | "那里有一份真实的旧拷贝,改真源它不会跟着变。要么你移走它我再桥,要么先 diff 一下再决定" |
| 目标位置的软链**指向别的源**(同名 skill、不同项目) | link 会改成指向新源;unlink/status 不动它并报 ✗ | 说清两个源的路径,问用户要保留哪个 |
| 源在软链路径下(iCloud、外接盘、`~/Desktop` 里的软链) | 脚本用物理路径记录(`pwd -P`),软链换了源不受影响 | 无需额外说明 |
| 换电脑 / 仓库挪了位置 | 旧软链全部失效;重新 `link skills` 会写新路径,`clean_stale` 只清指向新集合内失效项,旧路径的悬空软链要用 `unlink`(在旧位置)或手动清 | 提醒:挪仓库前先 `unlink skills`,挪完再 `link skills` |
| 用户机器上没有任何专属宿主目录(只装了 Codex) | 只写 `~/.agents/skills` 和(有的话)Grok,其余全跳过 | 这是正常结果,不是失败 |
| 用户想桥接一个不含 `SKILL.md` 的目录 | 拒绝,报"没有 SKILL.md" | 让用户确认这是不是 skill;不替他造 `SKILL.md` |
| 用户说"把所有 skill 都桥了" | 用 `link skills`(仓库 `skills/` 整目录) | 回报数量与跳过的宿主即可,不逐条列 40 行 |

---

## 桥后验证(用户问"真的能用吗"时)

软链在不等于宿主已经加载。至少让用户在一个宿主里做一次真实触发:

- Claude Code:新开会话,输入 `/<name>`,能出现在斜杠列表且能执行;
- Codex:`$<name>` 或直接描述意图,看是否命中;
- WorkBuddy / 豆包 / Trae:宿主 skills 列表里能看到 `<name>`;
- Kimi Code CLI:输入 `/skill:<name>` 能命中(或直接描述意图看是否自动匹配);
- 悟空:技能中心里能看到上传的 `<name>`(不是软链,靠 ZIP 上传);
- Grok TUI:`/` 后能搜到 `<name>`(搜不到多半是 bridge 缺 `user_invocable: true`,跑一次 `status` 会报)。

任何一个宿主没加载,多半是宿主要**重启或新开会话**才重新扫描目录,先让用户新开一次再判断。

---

## 自检

执行前后过一遍:

- 源存在、含 `SKILL.md`(或一级子目录含);
- 源不在 `private/`、`.private/`、`knowledge/_internal/` 里;
- 公共入口 `~/.agents/skills/<name>` 指向真源;
- 只给主目录已存在的宿主写了专属入口,没有新建 `~/.workbuddy` 之类空壳;
- Grok bridge 有 `user_invocable: true`,`Source of truth` 是真源绝对路径;
- 没删任何真实目录、真实文件、指向别处的软链;
- 没把 `skills/xy-link` 自身复制到任何地方(软链可以,复制不行)。

---

本轮做完就停,不替用户预设下一站。只有当用户主动问「然后呢」、且这台机器装了 `/xy` 时,才补一句:「拿不准下一步,回 `/xy`。」卡住、遇到报错、想反馈问题,随时加小爷微信 LZJ54650。


## 中文输出纪律
面向用户的每句输出遵守 `_shared/chinese-writing.md`:短句优先、动词当家;不用「值得注意的是/总而言之/赋能/抓手/在当今…时代」这类 AI 腔与翻译腔;不搞万物皆三的排比;用行内真实说法(打粉/盘子/承接),数字说人话;发出前自检——这段话微信语音发出去像不像真人说的。用户用英文或其它语言提问时,全程用对方的语言回答,同样遵守"像真人说话"的标准。

Files in this skill

  • SKILL.md10.8 KB
  • agents/openai.yaml287 B
  • evals/evals.json1.3 KB
  • scripts/bridge-skill.sh13.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.