昨天我让 Claude 帮我审代码。它输出一堆建议,全是老生常谈:变量命名、注释规范、错误处理。
我想要的不是这些。我要它检查 SQL 注入、敏感信息硬编码、未授权访问。安全问题才是重点。
于是我花 10 分钟,给 Claude 写了个「安全审计」Skill。现在我说「帮我审代码」,它自动按我的安全清单检查。
这就是 Skills 的魔力。
一句话:教 Claude 干特定活的说明书。
你写个 Markdown 文件,告诉 Claude:
- 技能叫什么名字
- 什么时候触发
- 怎么执行
Claude 自动识别你的意图,匹配对应 Skill,按你的指令干活。
不用每次重复描述。一次配置,永久生效。
先确保装了 Claude Code。没装的话:
npm install -g @anthropic-ai/claude-code
Skills 放在 ~/.claude/skills/ 目录。一个 Skill 一个文件夹,里面至少有个 SKILL.md。
~/.claude/skills/ ├── code-review/ │ └── SKILL.md ├── git-commit/ │ └── SKILL.md └── ...
做个实用的:让 Claude 按安全清单审代码。
mkdir -p ~/.claude/skills/security-review
创建 ~/.claude/skills/security-review/SKILL.md:
--- name: security-review description: "代码安全审计。检查 SQL 注入、XSS、敏感信息泄露、未授权访问等安全问题。当用户提到代码审计、安全检查、安全审查时触发。" --- # 安全代码审计 你是一名资深安全工程师。用户请求代码审计时,按以下清单逐项检查。 审计清单 1. 注入类漏洞 - [ ] SQL 注入:是否用参数化查询 claude code 教程- [ ] 命令注入:shell 命令参数有没有转义 - [ ] XSS:用户输入有没有转义 2. 认证与授权 - [ ] 有没有未授权访问的接口 - [ ] 密码是不是明文存储 - [ ] Session/Token 生成安全吗 3. 敏感信息 - [ ] 有没有硬编码的密钥、密码 - [ ] 日志里有没有敏感信息 - [ ] 错误信息会不会泄露内部细节 4. 其他 - [ ] 依赖有没有已知漏洞 - [ ] 文件上传有没有类型/大小限制 - [ ] 有没有 CSRF 防护 输出格式 按风险等级分类: 高风险:立即修 中风险:尽快修 低风险:建议改 安全:没问题 每个问题给出: 1. 问题是什么 2. 在哪一行 3. 怎么修
保存。搞定。
进入一个代码项目:
cd your-project claude
说:「帮我查查这代码有没有安全问题」
Claude 自动加载 security-review Skill,按你定义的清单检查。
--- name: security-review description: "代码安全审计。检查 SQL 注入、XSS..." ---
- name:小写字母、数字、连字符,最多 64 字符
- description:决定 Claude 什么时候触发这个 Skill
description 写得好不好,直接影响匹配准确度。写的时候想两件事:
- 这 Skill 干嘛的
- 用户会怎么说
比如:「代码安全审计。当用户提到代码审计、安全检查、安全审查时触发。」
--- 下面是正文。你可以:
- 定角色(你是资深安全工程师)
- 列步骤清单
- 规定输出格式
- 给示例
Claude 会老老实实照着做。
简单 Skill 一个文件够了。复杂的可以拆:
security-review/ ├── SKILL.md # 主文件 ├── checklist.md # 详细清单 ├── examples.md # 示例 └── scripts/ └── scan.py # 辅助脚本
在 SKILL.md 里引用:
详细清单见 `checklist.md`。 自动扫描跑 `scripts/scan.py`。
Claude 用到时才加载。官方叫「渐进式披露」——别一股脑塞进去。
--- name: git-commit description: "生成规范的 Git 提交信息。用户说 commit、提交代码时触发。" --- # Git Commit 助手 分析暂存区改动,生成 Conventional Commits 格式的提交信息。 格式
(
):
type 类型 - feat: 新功能 - fix: 修 bug - docs: 改文档 - refactor: 重构 - test: 测试 - chore: 杂活 规则 1. description 不超过 50 字符 2. 用祈使句(Add xxx,不是 Added xxx) 3. 结尾不加句号
--- name: api-docs description: "生成 API 文档。用户说生成文档、API 文档时触发。" --- # API 文档生成器 读代码里的函数/类定义,输出 Markdown 格式文档。 每个函数包含 - 函数签名 - 参数说明 - 返回值 - 示例 - 注意事项 输出格式 `function_name(param1, param2)` 参数: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | param1 | string | 是 | 参数描述 | 返回值: xxx 示例: \`\`\`python result = function_name("hello", 123) \`\`\`
查这几点:
- 文件位置:必须在 ~/.claude/skills/xxx/SKILL.md
- YAML 格式:开头 —,name 和 description 不能少
- description:Claude 没匹配到?加更多触发词试试
在 Claude Code 里输 /skills 看已加载的列表。
your-project/ ├── .claude/ │ └── skills/ │ └── your-skill/ │ └── SKILL.md └── src/
团队成员 clone 下来就能用。
打包成 npm 包或独立仓库。这个复杂点,以后单独写。
Skills 就是给 Claude 写说明书。
- 建文件夹和 SKILL.md
- 写 name 和 description
- 填指令
- 测试、迭代
10 分钟搞定一个。
现在去试试。把你天天重复跟 Claude 说的话,写成 Skill。以后一句话,它就知道该怎么干。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/240503.html原文链接:https://javaforall.net
