关于 codemod
面向使用 Codemod、JSSG、ast-grep 和迁移工作流的 AI Agent 与大模型的最佳实践技能。48 条规则覆盖 AST 匹配、编辑、测试及包结构等环节。
主要功能
- 0111 个类别的 48 条优先级规则
- 02JSSG 与 ast-grep 使用指南
- 03AST 解析、遍历与编辑
- 04工作流设计与验证
- 05测试、状态管理与安全指南
适用场景
- 01编写或审查 codemod
- 02调试模式匹配与 AST 遍历
- 03设计迁移工作流
- 04全面运行前测试代码转换
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill codemod安装后在 Claude Code 中输入/codemod确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdast-check-null-before-access.mdast-explore-before-writing.mdast-field-access-for-structure.mdast-understand-named-vs-anonymous.mdast-use-kind-for-precision.mdedit-add-imports-correctly.mdedit-batch-before-commit.mdedit-handle-overlapping-ranges.mdedit-preserve-formatting.mdedit-use-flatmap-for-conditional.mdparse-early-return-non-applicable.mdparse-handle-embedded-languages.mdparse-provide-pattern-context.mdparse-select-correct-parser.mdpattern-avoid-overly-generic.mdpattern-combine-with-rules.mdpattern-ensure-idempotency.mdpattern-use-constraints.mdpattern-use-meta-variables.mdpattern-use-relational-patterns.mdpkg-organize-by-convention.mdpkg-use-semantic-versioning.mdpkg-write-descriptive-metadata.mdsecurity-minimize-capabilities.mdsecurity-review-before-running-third-party.md详细介绍
Codemod 最佳实践
面向 AI Agent 和大模型的 Codemod(JSSG、ast-grep、工作流)综合最佳实践指南。包含 11 个类别中的 48 条规则,并按影响程度排序,为自动化重构和代码生成提供指导。
适用场景
在以下情况中参考这些指南:
- 使用 JSSG 或 ast-grep 编写新的 codemod
- 为迁移设计工作流配置
- 调试模式匹配或 AST 遍历问题
- 审查 codemod 代码的性能和安全性
- 为转换验证设置测试样例
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | AST 理解 | CRITICAL | ast- |
| 2 | 模式效率 | CRITICAL | pattern- |
| 3 | 解析策略 | CRITICAL | parse- |
| 4 | 节点遍历 | HIGH | traverse- |
| 5 | 语义分析 | HIGH | semantic- |
| 6 | 编辑操作 | MEDIUM-HIGH | edit- |
| 7 | 工作流设计 | MEDIUM-HIGH | workflow- |
| 8 | 测试策略 | MEDIUM | test- |
| 9 | 状态管理 | MEDIUM | state- |
| 10 | 安全性与能力 | LOW-MEDIUM | security- |
| 11 | 包结构 | LOW | pkg- |
快速参考
1. AST 理解(CRITICAL)
ast-explore-before-writing- 编写模式前使用 AST Explorerast-understand-named-vs-anonymous- 理解命名节点与匿名节点的区别ast-use-kind-for-precision- 使用 kind 约束提高精度ast-field-access-for-structure- 使用字段访问进行结构查询ast-check-null-before-access- 访问属性前检查 null
2. 模式效率(CRITICAL)
pattern-use-meta-variables- 使用元变量进行灵活匹配pattern-avoid-overly-generic- 避免过于宽泛的模式pattern-combine-with-rules- 使用规则运算符组合模式pattern-use-constraints- 使用约束实现可复用的匹配逻辑pattern-use-relational-patterns- 使用关系模式获取上下文pattern-ensure-idempotency- 确保模式具有幂等性
3. 解析策略(CRITICAL)
parse-select-correct-parser- 为文件类型选择正确的解析器parse-handle-embedded-languages- 使用 parseAsync 处理嵌入式语言parse-provide-pattern-context- 为含义模糊的模式提供上下文parse-early-return-non-applicable- 对不适用的文件尽早返回
4. 节点遍历(HIGH)
traverse-use-find-vs-findall- 单个匹配使用 find(),多个匹配使用 findAll()traverse-single-pass-collection- 在单次遍历中收集多个模式traverse-use-stopby-for-depth- 使用 stopBy 控制遍历深度traverse-use-siblings-efficiently- 高效使用同级节点导航traverse-cache-repeated-lookups- 缓存重复的节点查找
5. 语义分析(高)
semantic-use-file-scope-first- 优先使用文件作用域语义分析semantic-check-null-results- 处理语义分析的 null 结果semantic-verify-file-ownership- 跨文件编辑前验证文件所有权semantic-cache-cross-file-results- 缓存语义分析结果
6. 编辑操作(中高)
edit-batch-before-commit- 提交前批量处理编辑edit-preserve-formatting- 保留编辑内容周围的格式edit-handle-overlapping-ranges- 处理重叠的编辑范围edit-use-flatmap-for-conditional- 条件编辑时使用 flatMapedit-add-imports-correctly- 在正确位置添加导入
7. 工作流设计(中高)
workflow-order-nodes-by-dependency- 按依赖关系排列节点workflow-use-matrix-for-parallelism- 使用矩阵策略实现并行workflow-use-manual-gates- 为关键步骤设置手动关卡workflow-validate-before-run- 运行前验证工作流workflow-use-conditional-steps- 在动态工作流中使用条件步骤
8. 测试策略(中)
test-use-fixture-pairs- 使用输入/预期结果样例对test-cover-edge-cases- 在测试样例中覆盖边界情况test-use-strictness-levels- 选择合适的测试严格度级别test-update-fixtures-intentionally- 有意更新测试样例test-run-on-subset-first- 先在部分文件上测试,再进行完整运行
9. 状态管理(中)
state-use-for-resumability- 使用状态支持迁移续跑state-make-transforms-idempotent- 使转换具备幂等性,以便安全地重新运行state-log-progress-for-observability- 记录长时间运行的迁移进度,以便观测
10. 安全与能力(低中)
security-minimize-capabilities- 尽量减少请求的能力security-validate-external-inputs- 使用外部输入前进行验证security-review-before-running-third-party- 运行第三方 codemod 前进行审查
11. 包结构(低)
pkg-use-semantic-versioning- 对包采用语义化版本控制pkg-write-descriptive-metadata- 编写描述性包元数据pkg-organize-by-convention- 按惯例组织包
使用方法
阅读各个参考文件,了解详细说明和代码示例:
完整汇编文档
如需查看包含所有完整规则的指南,请参阅 AGENTS.md。
评论
支持 Markdown