关于 code-antipatterns
code-antipatterns 是用于代码审查的 Skill,通过 ast-grep 规则扫描并评估发现的问题,涵盖常见语言与框架模式,并指导严重性分级、修复建议和计划。
主要功能
- 01运行确定性的 ast-grep 规则扫描
- 02按严重程度分类问题
- 03提出修复与流程改进建议
- 04检查 JavaScript、TypeScript 和 Python 模式
适用场景
- 01扫描代码库中的常见反模式
- 02为代码审查确定问题优先级
- 03规划自动修复和 lint 改进
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill code-antipatterns安装后在 Claude Code 中输入/code-antipatterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
REFERENCE.mdrules/sgconfig.ymlrules/lib/no-console-log.ymlno-empty-catch.ymlno-eval.ymlno-innerhtml.ymlno-magic-number.ymlno-var.ymlpy-bare-except.ymlpy-global.ymlpy-mutable-default.ymlpy-use-isinstance.ymlts-any-annotation.ymlts-as-any.ymlvue-props-mutation.ymlrules/tests/no-console-log-test.ymlno-empty-catch-test.ymlno-eval-test.ymlno-innerhtml-test.ymlno-magic-number-test.ymlno-var-test.ymlpy-bare-except-test.ymlpy-global-test.ymlpy-mutable-default-test.ymlpy-use-isinstance-test.ymlts-any-annotation-test.ymlts-as-any-test.ymlvue-props-mutation-test.ymlscripts/tests/test-rules-project.sh详细介绍
适用场景
| 在以下情况下使用此技能…… | 在以下情况下改用其他方式…… |
|---|---|
| 并行扫描反模式并生成报告 | 查阅完整的 YAML 规则目录 → 参见 REFERENCE.md |
专门检查空的 catch、未处理的 Promise 或 || true | 使用专用扫描器 → code-hidden-failures --track errors |
| 查找空结果视为成功/静默降级模式 | 使用专用扫描器 → code-hidden-failures --track degradation |
| 全面审查安全性、性能和架构方面的代码质量 | 运行完整审查委派 → code-review |
上下文
- 分析路径:
$1(未指定时默认为当前目录) - JS/TS 文件:!
find . -type f \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" \) - Vue 文件:!
find . -name "*.vue" - Python 文件:!
find . -name "*.py"
你的任务
执行全面的反模式分析。机械检测是对已发布规则项目运行一次确定性的 ast-grep scan——你无需重新输入 sg -p '…' 模式,也不要仅为了运行这些模式而分派多个 Agent。你的工作是基于扫描得到的结构化发现进行判断:评估严重程度、提出建议并规划修复。
步骤 1:运行确定性扫描
检测目录以 ast-grep 规则项目的形式提供,位于
rules/(rules/lib/ 中每种模式对应一个 *.yml,且 rules/tests/ 中为每条规则提供有效/无效测试样例)。一次性运行整个目录:
ast-grep scan -c ${CLAUDE_SKILL_DIR}/rules/sgconfig.yml --json=compact <path>
每条 JSON 发现都包含 ruleId、file、range(行/列)、message 和匹配的 text。解析这些内容——它们是以下所有类别的原始发现集合。规则涵盖:空的 catch、console.log、var、eval/new Function、innerHTML/outerHTML、as any/: any 注解、计时器中的魔术数字、Vue 属性变更、Python 可变默认值、裸 except、global 和 type() ==。
优雅降级——如果未安装 ast-grep(程序名为 ast-grep 或 sg),则回退到逐模式流程:阅读 REFERENCE.md,其中列出了每条规则对应的源 .yml 文件,然后手动运行各条 ast-grep -p '<pattern>' --lang <lang> 命令。规则项目是快速路径;参考文档是备用方案。
步骤 2:判断(Agent 的实际工作)
扫描是机械且可复现的;评估、建议和修复规划才是需要判断的工作——请根据扫描输出自行完成,而不是再分派 Agent 重跑这些模式:
- 严重程度评估——结合下方类别表格中的上下文以及应用类型(前端/后端/CLI/库),提升或降低每条发现的严重程度。
- 错误吞噬类发现(空的 catch、未处理的 Promise、裸
except)→ 委派给/code:hidden-failures --track errors,使用其严重程度模型、建议呈现方式和隐私脱敏规则。不要在此处重新分类。 - 建议与修复规划——归纳系统性问题,注明哪些发现可由 ast-grep 自动
fix,并建议流程改进(lint 规则、pre-commit)。
仅在确实需要独立推理时才并行分派 Task(例如深入安全审查或特定框架的架构审查)——绝不要用它来运行模式,因为步骤 1 已经以确定性的方式运行过一次。
分析类别
根据检测到的语言,分析以下类别:
-
JavaScript/TypeScript 反模式
- 回调、魔法值、console.logs
- var 的使用、已弃用模式
- 错误被吞掉(空 catch、未处理的 Promise)→ 委派给
/code:hidden-failures --track errors
-
异步/Promise 模式
- 嵌套回调、Promise 构造函数反模式
- 错误处理覆盖范围(未处理/未等待的 Promise)→ 委派给
/code:hidden-failures --track errors
-
框架特定问题(如果检测到)
- Vue 3:修改 Props、响应式问题、混用 Options API 和 Composition API
- React:Hook 中缺少依赖、内联函数、属性逐层传递
-
TypeScript 质量(如果存在
.ts文件)- 过度使用
any类型、非空断言、类型安全问题
- 过度使用
-
代码复杂度
- 长函数(>50 行)、深层嵌套(>4 层)、参数列表过长
-
安全问题
- 使用 eval、innerHTML XSS、硬编码密钥、注入风险
-
内存与性能
- 未清理的事件监听器、setInterval 泄漏、低效模式
-
Python 反模式(如果检测到)
- 可变默认参数、全局变量
- 裸 except 和抑制模式 → 委派给
/code:hidden-failures --track errors
委派类别:错误被吞掉
此处不要重新实现空 catch / 裸 except / 未等待的 Promise 检测。
使用 SlashCommand 工具调用 /code:hidden-failures --track errors,并使用
相同的 PATH 和严重性筛选条件,然后将其发现整合到
综合报告的专门 错误被吞掉 部分中。
理由:单一事实来源可避免严重性模型、应用上下文呈现建议和隐私脱敏
策略出现偏差。请参阅 code-quality-plugin/skills/code-hidden-failures/SKILL.md。
规则项目不涵盖的内容(由 Agent 判断)
目录中的两个问题并非结构化的单节点匹配,应作为针对代码的 Agent 判断检查,而非规则:
- 深层嵌套 / 长函数 / 圈复杂度 —— 这是针对函数体的度量指标,而非模式。使用
/code:complexity或阅读标记出的文件。 - 未等待的 Promise —— 应以仓库自身的工具链为准;使用
tsc+no-floating-promisesESLint 规则,或/code:hidden-failures --track errors,而不是使用会标记每个调用的宽泛结构规则。
输出格式
将发现整合为以下结构:
## Anti-pattern Analysis Report
### Summary
- Total issues: X
- Critical: X | High: X | Medium: X | Low: X
- Categories with most issues: [list]
### Critical Issues (Fix Immediately)
| File | Line | Issue | Category |
|------|------|-------|----------|
| ... | ... | ... | ... |
### High Priority Issues
| File | Line | Issue | Category |
|------|------|-------|----------|
| ... | ... | ... | ... |
### Medium Priority Issues
[Similar table]
### Low Priority / Style Issues
[Similar table or summary count]
### Recommendations
1. [Prioritized fix recommendations]
2. [...]
### Category Breakdown
- **Security**: X issues (details)
- **Async/Promises**: X issues (details)
- **Code Complexity**: X issues (details)
- [...]
可选标志
--focus <category>:聚焦于特定类别(security、async、complexity、framework)--severity <level>:要报告的最低严重性级别(critical、high、medium、low)--fix:在安全的情况下尝试自动修复
分析后
整合发现后:
- 按影响和工作量对问题排序
- 建议哪些问题可以使用 ast-grep 自动修复
- 找出表明存在系统性问题的模式
- 建议流程改进(lint 规则、提交前钩子)
另请参阅
- 规则项目:
rules/— 可执行的 ast-grep 目录(sgconfig.yml+rules/lib/*.yml+rules/tests/*-test.yml);运行ast-grep test -c rules/sgconfig.yml --skip-snapshot-tests,根据每条规则的测试样例进行验证 - 参考:REFERENCE.md - 叙述式目录,列出每种模式对应的规则文件
- 技能:
ast-grep-search- ast-grep 用法参考 - 命令:
/code:review- 全面的代码审查 - Agent:
security-audit- 深入安全分析 - Agent:
code-refactoring- 自动重构
相关配置技能
- 如果未配置 lint → 使用
/configure:linting实现自动检查 - 如果尚未设置安全扫描 → 使用
/configure:security集成到 CI