用途:该技能扮演 GritQL 专家,帮助用户编写声明式、AST 感知的查询语言模式,完成代码重构与转换。核心思路是匹配语法树节点而非字符串,例如 console.log($msg) 可匹配任意 console.log 调用,不受空白、引号风格或上下文影响,这是相对正则搜索替换的主要优势。
主要能力:每个查询由模式、可选重写(=>)和/或 where 子句组成,形如 matched_code($vars) => replacement($vars) where { ... }。支持元变量:$name 绑定且复用时须匹配相同值,$_ 匿名匹配任意内容,$...args 展开匹配零个或多个节点。重写可替换、删除节点(=> .)或在 where 中改写绑定变量。where 子句可用 $x <: pattern 断言匹配、$x => value 改写,多条件为 AND,or { } 表示 OR。非 JS/TS 文件需在顶部声明 language,如 language python。
使用方式:先明确要改什么及目标语言,再写最小模式,逐步加约束;向用户解释匹配范围;建议用 grit apply --dry-run 或 Grit playground 测试;遇到不匹配的代码再细化模式。可参考语法、修饰符、内置函数与真实重构示例等文件,请求类似已知重构模式时优先看示例模板。
适用场景:API 迁移、导入重写、框架升级、多步转换等结构化重构。
限制与注意:避免用字符串匹配替代结构化匹配;不需要值用 $_,复用 $name 会强制两次匹配相同内容;元变量绑定作用于整个文件,需逐匹配隔离时用 bubble;or 会短路而 any 不会,需要多分支都执行时用 any;非 JS/TS 文件务必声明 language 以获得正确 AST 解析。具体安装命令、收费与平台信息暂未提供。