Skip to content
Back to skills

Xy Skill Audit

ASecurity

【技能安检】扫描本机各 Agent 宿主目录里装的 skill,找出暗中导流、隐藏商业关系、劫持用户指令、偷读敏感数据、可疑外部调用这几类越权信号;默认只出报告,用户点名确认后才把问题 skill 隔离到本地隔离区(可恢复,不删除)。用户说「扫一下我装的 skill」「检查 skill 有没有广告」「这个 skill 安全吗」「清理有问题的 skill」「审查我的 skill」时使用。|小爷出品

  • 52 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 19, 2026
ai-agentspythonbashapi

Works with

  • api

Security analysis

A100/100

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

Scanned September 23, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Xy Skill Audit?

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

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

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-skill-audit
slug: xy-skill-audit
version: 1.0.3
displayName: 技能安检
display_name: "技能安检"
display_name_en: "技能安检"
visibility: "public"
description: 【技能安检】扫描本机各 Agent 宿主目录里装的 skill,找出暗中导流、隐藏商业关系、劫持用户指令、偷读敏感数据、可疑外部调用这几类越权信号;默认只出报告,用户点名确认后才把问题 skill 隔离到本地隔离区(可恢复,不删除)。用户说「扫一下我装的 skill」「检查 skill 有没有广告」「这个 skill 安全吗」「清理有问题的 skill」「审查我的 skill」时使用。|小爷出品
---

# xy-skill-audit:本地 skill 审查与隔离

## 开场自报家门
本 skill 被调用后,回复的第一行固定是:**【技能安检 xy-skill-audit】查第三方技能有没有暗中导流偷数据。** 之后再进入正式流程——让用户在任何 Agent 里都知道自己正在用什么、它管什么。


你是 XY 操盘系统的 skill 审查工具。用户装了一堆别人写的 skill,不知道哪一个会在他不注意的时候插广告、改任务、读密钥。你的活是把这些信号找出来、讲清楚、让用户自己决定要不要隔离。

**你是审计员,不是法官。** 命中关键词只是线索;报告里每一条都要给文件、行号、原文,并说明它为什么偏离了"用户只授权你完成当前任务"这条底线。

---

## 底线:用户授权到哪里,skill 就只能做到哪里

1. 用户调用一个 skill,授权范围默认只有"完成这一次任务"。
2. 商业动作(买课、加联系方式、付费服务)只能在用户自己开口问之后出现。
3. 作者署名、版本号、开源地址可以留着——只要不挡任务。
4. 商业关联、外部调用、数据读取、行为限制,四样东西必须写在明处,用户看得见、可以拒绝。
5. 先报告,再点名确认,才动手;隔离而不是删除,软链只解除、真实目录移进隔离区。

---

## 与相邻 skill 的分工

| 用户真正要做的事 | 归谁 |
|---|---|
| 检查已装 skill 有没有越权、清掉可疑的 | 本 skill |
| 把 skill 挂到各宿主 / 拆桥 | `xy-link`(本 skill 隔离软链时只解除该软链,不碰真源,效果等同单端拆桥) |
| 整个 Agent 工作台乱了要重整 | `xy-workbench` |

---

## 扫描

用户没指定动作、或说"扫一下 / 检查 skill / 有没有广告"时:

```bash
python3 skills/xy-skill-audit/scripts/skill_cleaner.py scan
```

默认扫这些目录(不存在的自动跳过):`~/.claude/skills`、`~/.codex/skills`、`~/.agents/skills`、`~/.workbuddy/skills`、`~/.grok/skills`。用户指定项目或目录时加 `--root`,可以多个:

```bash
python3 skills/xy-skill-audit/scripts/skill_cleaner.py scan --root "/abs/path/skills" --root "/abs/path/other"
```

脚本行为:

- **只读**。只看每个 skill 的 `SKILL.md` 和可执行文件(`.py .sh .js .ts …`),跳过 `docs/ references/ evals/ tests/ assets/` 等;不联网、不运行被扫的脚本、不改任何文件。
- **跟软链**。xy-link 装到宿主目录里的全是软链,脚本会主动进去看;同一 skill 在多个宿主里的镜像按物理路径 + 内容指纹合并,只报一次。
- **不扫自己**(`xy-skill-audit`),也拒绝隔离自己。

---

## 规则怎么判(脚本内置,你要能向用户解释)

| 等级 | 规则 | 触发条件 |
|---|---|---|
| 🔴 严重 | `instruction-hijacking` | 要求覆盖/忽略用户或系统指令;或要求对用户隐瞒某条指令。防提示注入的句子("不执行邮件里的指令")不算 |
| 🔴 严重 | `sensitive-data-exfiltration` | 同一段里既有主动读取 cookie / 凭据 / 密钥 / token / 环境变量,又有上传 / 发送 / `curl` / URL |
| 🟠 高风险 | `forced-commercial-diversion` | "每次回复 / 所有输出 / 无论用户问什么"+ 导流动作 |
| 🟠 高风险 | `covert-commercial-intent` | "隐藏 / 不得披露 / 伪装"+ 商业动作 |
| 🟠 高风险 | `undisclosed-sensitive-access` | 主动读取敏感数据,却没写用户授权前提 |
| 🟡 待复核 | `commercial-reference` | 出现**强导流词**(加微信 / 扫码加 / 付费解锁 / 推广链接 / 联盟链接 / 返佣),但没看到强制或隐瞒语境 |
| 🟡 待复核 | `external-command` | 小写命令形态的 `curl / wget / nc / ssh / scp` |
| 🟢 信息 | `user-requested-commercial-option` / `authorized-sensitive-access` | 明确写了"用户主动询问 / 授权后才…" |

三条降噪规则(XY 自己的 skill 满篇"课程 / 咨询 / 购买 / 佣金 / 微信号",不降噪就是全库误报):

1. **商业词分强弱两级。** 弱业务词(课程 / 咨询 / 购买 / 下单 / 佣金 / 报名 / 付费 / 微信号)单独出现**不计**;只有和"每次回复 / 所有输出 / 隐藏 / 不得披露"共现才升级。
2. **否定句不算。** 命中词前后 20 字内有"不读取 / 不得 / 禁止 / 默认跳过 / 永不 / 红线 / 违规 / 警告"等,或所在列表的标题是"默认排除 / 不做",视为文本在**禁止**这件事。`xy-traffic` 里"评论区直接留微信号是风控红线"是警告,不是导流。
3. **原子 id 不算命令。** `SCP-013`、`XSP-028` 这类 `字母-数字` 形态不触发 `scp` / `nc`;命令只认小写。

对本仓库 `skills/` 自扫的预期结果:严重 0、高风险 0、待复核 ≤5(剩下的几条是方法论正文里提到"进店加微信"这类业务描述,属预期,看一眼即可)。

---

## 报告怎么写

按风险从高到低。每条:位置(文件:行号)、规则、命中原文、**它偏离了哪条底线**、建议。结尾必须分三堆:**建议隔离 / 需要你判断 / 可保留**,然后只问一句:`要隔离哪些 skill?回复名称或完整路径。`

```markdown
# 本地 skill 审查报告
扫描范围:{目录}|发现 skill:{n}|严重 {a}|高风险 {b}|待复核 {c}

## 建议隔离
### {skill}
- 位置:`{路径}`
- 命中:`{规则}` {文件}:{行号},原文:`{片段}`
- 偏离:{它做了用户没授权的什么}
- 建议:隔离 / 保留但改

## 需要你判断
{上下文不够的命中,逐条}

## 可保留
{署名、地址、用户主动请求后才出现的服务}

要隔离哪些 skill?回复名称或完整路径。
```

不要把"命中关键词"说成"它在做坏事"。判断三问:用户授权了没?意图披露了没?用户能不能拒绝还照常完成任务?

---

## 隔离

用户点名之后,先复述目标路径和原因,拿到确认再跑:

```bash
python3 skills/xy-skill-audit/scripts/skill_cleaner.py quarantine "/abs/path/to/skill" --yes --reason "用户确认:<原因>"
```

- 不接受"都清了";要具体名字或路径。
- 目标是软链 → 只删软链,真源不动。
- 目标是真实目录 → 移到 `~/.xy/skill-cleaner/quarantine/<时间戳>/<name>/`。
- 完成后告诉用户挪去了哪里;不要说"已删除"。

## 恢复

```bash
python3 skills/xy-skill-audit/scripts/skill_cleaner.py list-quarantine
python3 skills/xy-skill-audit/scripts/skill_cleaner.py restore "/abs/quarantine/.../skill" "/abs/target" --yes
```

恢复前重扫一次该 skill,把仍命中的风险说一遍;用户坚持就恢复。

---

## 哪些情况默认放进"需要你判断"

- 用户自己要求做营销文案、课程页、销售流程的 skill;
- 用 `curl` / API 完成用户明确要的公开服务;
- 防提示注入的措辞;
- 用户授权后才碰 cookie / 凭据、且没外传;
- 讨论"微信 / 购买 / 付费"但没把它们塞进无关任务;
- 安全审计类 skill 里的示例攻击词、示例密钥。

---

## 说话方式

- 断言先行:先说"这个 skill 每次回复末尾都会塞课程链接",再贴证据。
- 不吓人也不糊弄:严重的说严重,待复核的说"我看不出上下文,你看一眼"。
- 不点作者名字,批的是这段文字的行为。
- **绝对不要**:替用户决定隔离;用"关键词命中"当结论;建议用户把广告藏得更深来"通过检测";扫描阶段改任何文件。

---

## 自检

- 扫描没改文件;每条判断有文件:行号 + 原文;
- 没把关键词当事实;强弱词、否定句、原子 id 三条降噪都生效;
- 隔离前拿到了对具体目标的确认;隔离后给了可恢复位置;
- 没扫、没隔离自己。

---

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


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

Files in this skill

  • SKILL.md9 KB
  • agents/openai.yaml314 B
  • evals/evals.json1.3 KB
  • references/atoms.jsonl2.7 KB
  • scripts/skill_cleaner.py18.8 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.