§1 · 引言

一个面向 SKILL.md Lint 工具. 就在 IDE 里.

Skill Inspector 是一个 JetBrains IDE 插件, 把每一份 SKILL.md 当成一等公民的可检查文档 — 实时检查、Quick Fix、Problems 面板集成, 全部基于 Agent Skills 官方规范, 零第三方依赖.

§2 · 清单
所有规则, 公开在案.

三十条规则. 五个分类. 一份有立场的基准.

规则按 "确定性 + 风险" 分组, 和 IDEA 处理 Inspection 结果的方式一致. 每条规则都有一个稳定的 ID — 可引用、可禁用、可上报 — 绝不藏在不透明的 "AI 这么说" 启发式里.

# Rule ID 严重度 说明 Quick Fix
2.01 frontmatter.missing Error 缺 YAML frontmatter; 跳过后续所有字段检查. ADD_FRONT_MATTER
2.02 frontmatter.name.mismatch Error name 字段与父目录名不一致. SYNC_NAME_WITH_DIRECTORY
2.03 frontmatter.name.invalid Error name 不符合 ^[a-z0-9]+(?:-[a-z0-9]+)*$. CONVERT_NAME_TO_KEBAB
2.04 frontmatter.description.missing Error 缺失或为空的 description; Agent 无法触发. ADD_DESCRIPTION
2.05 description.too-generic Warn Description 是 helper / tool / skill / assistant / utility 之一.
2.06 description.missing-usage Warn 没有触发短语 ("use when""使用" 等).
2.07 reference.missing-file Warn 相对链接指向的文件在磁盘上不存在. CREATE_MISSING_REFERENCE
2.08 reference.case-mismatch Warn 链接大小写与磁盘项不一致 (迁到 Linux 后会断).
2.09 resource.unused-reference Warn references/ 下的文件从未被 SKILL.md 引用.
2.10 security.dangerous-command Error 正文中出现 rm -rf / 或管道式 curl … | sh.
2.11 security.secret-pattern Error 疑似 api_key / token / secret / password 字段或高熵值.
2.12 security.sensitive-path Warn 正文引导访问 ~/.ssh.env~/.aws.
结构
11·
Error · frontmatter / 命名 / 长度
质量
6·
Warning · 描述 / 正文 / 触发语
引用
4·
Warning · 链接 / 路径 / 大小写
安全
5·
Error · 密钥 / 危险命令
资源
2·
Warning · 未引用 / 脚本

↳ 完整表格 (含严重度与 Quick Fix 映射) 见 docs/rules.md.

§3 · 能力
插件做的六件事, 一一道来.

不是套壳的通用 Lint. 从头到尾, Agent-Skills aware.

每项能力都对应一种真实的 SKILL.md 写作痛点: 漏字段直接上线、相对链接断裂、悄悄混进危险脚本片段、 description 模糊到 Agent 没法触发.

01

实时 Inspection.

注册了一个 LocalInspectionTool, 自动绑定到每一份 SKILL.md 文件 (严格按文件名 gate, 其他 Markdown 完全不受影响). 错误和警告实时显示在编辑器 gutter 和 Problems 面板 — 体验跟 Kotlin / Java 文件完全一致.

02

保守的 Quick Fix.

添加缺失的 frontmatter、把 name 同步到父目录、 转成 kebab-case、为缺失的引用创建占位文件 — 一次 Alt+Enter 即可. 插件永远不会自动改写你的正文.

03

全项目 扫描.

右键 → Validate Skill. 后台任务通过 FilenameIndex 扫描所有 SKILL.md, 汇总 Error / Warning 总数并跳转到第一个出错文件. 也可以在 CI 中以 headless inspection 形式跑同一套规则.

04

默认 规范优先.

所有规则锚定在 Agent Skills 官方规范, 不锚定任何单一 Agent 的私有扩展. Agent 特定的差异在 V2 以 兼容性提示形式补充, 永远不作为默认错误. 你的 skill 保持可移植.

05

状态栏 开关.

状态栏自带一个 widget, 一键开关整个 Inspection — 不用钻进 Settings → Inspections. 细粒度调节走 Tools → Skill Inspector.

规则手册 →
06

依赖.

纯 IntelliJ Platform API — 不引入任何第三方插件库, 无 telemetry, 无远程调用. 内网 / 涉密环境完全可用; 想验证的话直接 jar -tf 看插件 zip 内含什么.

§4 · 示例
修复前 · 修复后, 三个真实案例.

修好后的 SKILL.md 到底长什么样.

下面三对最小示例来自上面的规则清单. 每一对左边是触发规则的输入, 右边是按一次 Alt+Enter 之后的样子.

frontmatter.name.mismatch

name 必须等于目录名.

Agent 通过目录名来发现 skill. 如果 name 漂移了 (snake_case、大小写、拼错), 这个 skill 就再也无法被寻址. Quick Fix · SYNC_NAME_WITH_DIRECTORY

— 修复前code-reviewer/SKILL.md
1---
2name: code_reviewer
3description: Use when reviewing PR diffs.
4---
+ 修复后code-reviewer/SKILL.md
1---
2name: code-reviewer
3description: Use when reviewing PR diffs.
4---
frontmatter.description.missing

没有 description, Agent 没法触发.

description 是 Agent 发现 loader 读取的第一道字段, 在加载正文之前. 留空 = 在每个 prompt 上对每个 Agent 都不可见. Quick Fix · ADD_DESCRIPTION

— 修复前commit-helper/SKILL.md
1---
2name: commit-helper
3description:
4---
+ 修复后commit-helper/SKILL.md
1---
2name: commit-helper
3description: Use when generating a commit message from staged changes.
4---
security.dangerous-command

有些事就不能 自动修.

安全规则只定位上报, 绝不自动改写. 管道式 curl … | sh 会被精准定位到具体 text range — 该 pin hash、该换源、还是该 接受风险加 noinspection, 由你决定.

— 被标记installer/SKILL.md
7## Install
8Run the following to bootstrap:
9 
10 curl https://x.example/install.sh | sh
+ 建议改写installer/SKILL.md
7## Install
8Run the following to bootstrap:
9 
10 curl -fsSL https://x.example/install.sh -o /tmp/install.sh
11 sha256sum -c install.sh.sha256 && sh /tmp/install.sh
§5 · 受众
四个场景, 不编造引用.

插件围绕 四类真实受众 设计.

在项目积累更多真实用户之前, 这是 Skill Inspector 设计时优先服务的 场景. 我们拒绝用 stock 头像编造客户引言 — 等到真实用户开口, 下面的引述就会逐字替换.

我希望 SKILL.md 在 commit 之前就大声报错.

Skill 作者

在 IDEA 里打开文件. 缺必填字段、目录名漂移、相对链接断裂 — 都会在你 push 之前出现在 gutter 上. 按 Alt+Enter 应用确定性修复; 正文仍然归你.

团队为多个 Agent 写 skill, 我要 一致的质量门槛.

团队负责人

所有开发者的 IDE 看到的 Inspection 结果完全一致 — 因为规则装在插件里, 不在个人 config 里. CI 也可以在每个 PR 上 headless 跑同一套 Validate Skill, 不合规的 skill 不会进 main.

我发布 skill 包, 不希望 reviewer 把时间花在 机械错误 上.

开源维护者

结构 / 质量 / 引用类规则自动 catch 那些无聊的事情 — name 不匹配、死链、过宽的描述、 references/ 下没人引用的文件. Reviewer 可以专心看 内容, 而不是格式.

我要知道 skill 里有没有 curl … | sh, 有没有 泄密.

安全敏感的企业

安全规则会标记危险命令、疑似 API key、高熵字符串、 敏感路径 (~/.ssh.env) 以及 prompt-injection 文案. V1 只定位上报, 绝不自动改写 — 决定权永远在人手上.

§6 · 问答
有出处的诚实回答.

安装前的 八个问题.

§6.1
支持哪些 IDE 版本?
IntelliJ IDEA Community / Ultimate 2024.2 → 2026.1 是官方基线 — 插件声明 sinceBuild = 242.2untilBuild = 261.*. CI 在 IC/IU 2024.2、2024.3、2025.1、2025.2、2025.3 上完成构建与验证; 2026.1 在声明的兼容性范围内. 同平台的其他 JetBrains IDE (PyCharm / GoLand / WebStorm 等) 通常也能在这个 build range 内工作, 但只有 IDEA 经过 CI 测试.
§6.2
目前实现了哪些规则? 完整列表在哪?
共 5 个分类 — 结构 Structural (11 条)、 质量 Quality (6 条)、 引用 Reference (4 条)、 安全 Security (5 条)、 资源 Resource (2 条). 每条都有稳定的 rule ID, 例如 frontmatter.name.mismatchsecurity.dangerous-command. 完整表格见 docs/rules.md.
§6.3
有 telemetry 吗?
没有. 无埋点、无 analytics、无远程调用. 插件只读取项目里的 SKILL.md, 所有 Inspection 都在本地完成, 适用于完全离线 / 涉密环境.
§6.4
"Quick Fix" 具体会自动改什么?
只做确定性、保守的修复: 添加缺失的 frontmatter添加 name 字段name 同步到父目录name 转为 kebab-case添加 description 占位为缺失引用创建空文件 (含父目录). 插件永远不会自动改写你的正文.
§6.5
它和普通 Markdown lint 有什么区别?
Skill Inspector 是 Agent-Skills aware 的. 它把 YAML frontmatter 解析成真正的 SkillFrontMatter 领域 record, 知道 name 必须等于父目录名, 校验 skill 目录内的相对链接 (含跨平台大小写检查), 还会扫描安全风险. 这些通用 Markdown lint 工具都做不到.
§6.6
只对文件名严格等于 SKILL.md 的文件生效?
是的. Inspection 第一道关就是 PsiFile.getName().equals("SKILL.md"). 这保证 readme.mdnotes.md 等其他 Markdown 文件完全不受影响 — 不打开 skill 文件就感受不到这个插件.
§6.7
能临时关掉所有 Inspection 吗?
可以. 状态栏 widget 一键开关, 不用去 Settings → Inspections 里找. 需要细调时, 走 Tools → Skill Inspector 设置页.
§6.8
开源吗? 什么协议?
开源, MIT 协议, 源码在 GitHub. 欢迎 issue / PR / 新规则贡献, 贡献指南见 AGENTS.md.

别再发布有问题的 SKILL.md 了.

到 JetBrains Marketplace 安装, 打开任意包含 SKILL.md 的项目, 检查结果会在同一秒出现. 全部上手成本就是这一步.

MIT 协议 Java 21 IntelliJ 2024.2 → 2026.1 v2026.1.1000