ast-grep – Tìm & sửa mã theo cấu trúc AST
Tìm kiếm và viết lại mã trên 25 ngôn ngữ dựa vào cây cú pháp (AST) thay vì văn bản thuần, kèm quy trình codemod an toàn.
Lập trìnhTrung cấp★ 67,531⑂ 5,507Điểm AI 9/10Cập nhật lần cuối: 9 thg 8, 2026
Làm được gì
Skill dùng ast-grep (sg) để tìm và thay thế mã theo hình dạng cú pháp, không phải theo byte văn bản. Meta-variable $VAR khớp một node, $$$ khớp nhiều node.
- Kèm wrapper Python (
scripts/ast_grep_helper.py) với các lệnhsearch,replace,scan,validate,langs,doctor. - Kiểm tra pattern offline trước khi chạy, chặn lỗi dùng cú pháp regex (
\w,.*,|) vốn im lặng thất bại. - Tự xử lý bẫy lớn nhất của ast-grep:
--jsonvà--update-allloại trừ nhau, nên helper chạy hai lượt (xem trước → áp dụng). replacemặc định là dry-run và luôn báo số match cùng số file bị ảnh hưởng.- Hỗ trợ rule YAML qua
sg scanđể làm lint nội bộ và auto-fix trong CI.
Phù hợp với ai
- Lập trình viên phải migrate hàng trăm file (require → import,
Optional[X]→X | None...). - Người từng khổ vì grep khớp sai quá nhiều khi refactor.
- Team lead muốn thêm rule lint tuỳ chỉnh vào CI.
- Ai muốn nhờ Claude Code "đổi hết" mà vẫn kiểm soát được rủi ro.
Ví dụ sử dụng
- Đổi logger: "Thay mọi
console.log(x)thànhlogger.info(x)" → helper dry-run, hiện số match/số file, rồi bạn thêm--apply. - Dọn kiểu dữ liệu: "Xoá toàn bộ cast
as anytrong TypeScript" → khớp theo cấu trúc nên không đụng vào chuỗi hay comment. - Kiểm tra chất lượng: "Tìm các block catch rỗng rồi viết thành rule YAML chạy trong CI" → tạo file trong
rules/và chạysg scan.
· · · Hướng dẫn cài đặt · · ·
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục packages/shared-skills/skills/ast-grep từ repo GitHub code-yeongyu/oh-my-openagent vào ~/.claude/skills/ast-grep/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/code-yeongyu/oh-my-openagent.git && mkdir -p ~/.claude/skills && cp -r oh-my-openagent/packages/shared-skills/skills/ast-grep ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở terminal, kiểm tra Python 3:
python3 --version. - Clone repo:
git clone https://github.com/code-yeongyu/oh-my-openagent.git - Copy skill:
mkdir -p ~/.claude/skills && cp -r oh-my-openagent/packages/shared-skills/skills/ast-grep ~/.claude/skills/ - Cài binary ast-grep:
bash ~/.claude/skills/ast-grep/install.sh(Windows dùnginstall.ps1trong PowerShell), hoặcbrew install ast-grep/cargo install ast-grep. - Kiểm tra:
python3 ~/.claude/skills/ast-grep/scripts/ast_grep_helper.py doctor. - Khởi động lại Claude Code và thử yêu cầu: "tìm tất cả lời gọi console.log trong repo này".
- Trên Linux nên gọi
ast-grepthay vìsg(trùng lệnh hệ thống), và luôn commit code trước khi dùng--apply.
Xem mã nguồn trên GitHub ↗Giấy phép: NOASSERTION