mahitoh/skillci
GitHub: mahitoh/skillci
skillci 是专为 AI agent skill 文件设计的 CI 验证工具,提供结构检查、静态安全审计和场景测试三合一的质量门禁。
Stars: 0 | Forks: 0
# skillci
**面向 AI agent skill 的 CI 工具。** 在你(或任何其他人)信任你的 `SKILL.md` skill 之前,对它们进行 lint、安全审计和场景测试——就像 `eslint` + `pytest` 之于代码一样。


```
npx skillci run ./my-skill
```
```
▶ changelog-writer (./my-skill/SKILL.md)
✓ lint: clean
✓ audit: clean
tests:
✓ pass groups commits into changelog sections 1840ms
VERIFIED score 100/100
```
## 为什么会有这个项目
Agent skill(用于 Claude Code、Codex、Cursor、OpenClaw 以及其他 60 多种 agent 的 `SKILL.md` 文件)是 AI 生态系统中增长最快的领域——但也是验证最少的领域。在 2026 年初,**ClawHavoc** 供应链攻击活动攻陷了最大 skill 注册中心中大约 **五分之一的 skill**,它们搭载了窃取 SSH 密钥、API 密钥和加密货币钱包的 infostealer。独立的审计发现,在抽样的 skill 中,**超过三分之一**存在 prompt injection。
与此同时,几乎没有人去检查一个 skill *是否真正有效*——大多数 skill 只是凭感觉发布,从未针对任何测试用例运行过。
**skillci 就是那个缺失的测试门禁。** 它做三件事,其中最重要的部分完全不需要 Docker、API 密钥或任何云服务:
| 命令 | 作用 | 需要 agent? |
|---|---|---|
| `skillci lint` | 结构检查:有效的 frontmatter、名称、描述、有效的文件引用 | 否 |
| `skillci audit` | 静态安全扫描:检测 prompt injection、凭证窃取、数据泄露、`curl \| sh`、钱包访问 | 否 |
| `skillci test` | 通过真实的 agent 运行你的场景测试并检查结果 | 是 |
| `skillci run` | 运行以上全部三项,给出通过/失败判定及评分——**请在 CI 中使用此项** | 可选 |
`lint` 和 `audit` 引擎是纯粹的静态分析。它们可以在任何 Node 运行的地方即时、离线运行。测试功能将执行委托给你**已经安装的 agent CLI**(目前为 Claude Code)——因此无需设置任何沙箱。我们依赖于 agent 自身的权限系统和受限的工具白名单,而不是要求必须使用 container。
## 安装
```
# zero-install,一次性使用
npx skillci run ./path/to/skill
# 或将其添加到项目中
npm i -D skillci
```
需要 Node 18+。测试功能还需要一个 agent CLI(例如 [Claude Code](https://claude.com/claude-code));lint 和 audit 不需要任何其他依赖。
## 快速开始
```
# 1. 审计你即将安装的 skill — 捕获恶意模式
npx skillci audit ./some-downloaded-skill
# 2. 为你正在编写的 skill 搭建测试文件
npx skillci init ./my-skill
# 3. 运行完整的 gate
npx skillci run ./my-skill
# 4. 验证通过后生成 README 徽章
npx skillci badge ./my-skill
```
你可以将任何命令指向单个 skill **或**包含多个 skill 的目录——skillci 会自动发现其下的每一个 `SKILL.md` 文件。
## 编写场景测试
在你的 `SKILL.md` 旁边放置一个 `skill.test.yaml` 文件(或者运行 `skillci init`):
```
scenarios:
- name: groups commits into changelog sections
prompt: |
Draft a changelog from these commits:
feat: add CSV export
fix: handle empty result set
expect:
no_error: true
output_contains: ["Added", "Fixed", "CSV export"]
# output_matches: ["## \\d+\\.\\d+\\.\\d+"]
# tools_used: [Read]
# tools_not_used: [Bash]
```
skillci 会将 skill 的指令注入到 agent 中,发送每一条 `prompt`,并根据 `expect` 检查响应结果。如果没有安装任何 agent,测试将被报告为 **skipped**(绝对不会悄无声息地显示为 passed)。
## 在 CI 中 (GitHub Actions)
```
# .github/workflows/skillci.yml
name: skillci
on: [push, pull_request]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: mahitoh/skillci@v0 # lint + audit on every PR
with:
path: .
```
如果任何 skill 存在 error 级别的发现,该 Action 将使构建失败。(在 CI 中进行场景测试需要配置 agent 和密钥;lint 和 audit 无需任何配置即可运行。)
## 评分
评分系统特意设计得透明且简单。初始分数为 100;每个 error 扣除 **25** 分,每个 warning 扣除 **8** 分,每个 info 扣除 **2** 分,每项失败的测试扣除 **15** 分。当一个 skill 没有任何 error 并且所有实际运行的测试都通过时,它即被标记为 **VERIFIED**。被 skipped 的测试不会扣分。
## 安全规则
`skillci rules` 会列出所有规则。内置的规则包旨在针对真实攻击中出现的模式——远程 `curl | sh`、凭证/SSH/钱包访问、env-secret 泄露、反向 shell、指令覆盖型的 prompt injection、隐藏的 HTML 注释指令、混淆的 base64 payload 以及未加范围限制的 `rm -rf`。每一条规则都是 [`rules/`](rules/core.yml) 中几行 YAML 代码。
**添加规则是最简单的贡献方式** —— 写下匹配模式,在 fixture 中添加一行测试,就完成了。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 路线图
- 支持更多 agent 适配器(Codex、Cursor、Gemini CLI、OpenClaw)——[适配器接口](src/types.ts)就是全部的契约
- 建立一个带有徽章的、已验证 skill 的公共注册中心
- 用于模糊输出质量评估的 LLM-as-judge 断言
- VS Code 扩展,内联展示 skill 状态
## 贡献
这个项目天生就是为了接受贡献而设计的——三个独立的模块(安全规则、agent 适配器、场景包)各自的门槛极低,甚至不需要编写 Markdown 以外的内容。你可以从一个 [适合新手的 issue](https://github.com/mahitoh/skillci/labels/good%20first%20issue) 开始,或者阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
MIT
标签:AI代理, MITM代理, 提示词安全, 文档结构分析, 暗色界面, 自动化攻击, 错误基检测, 静态代码分析