ast-grep: Tìm kiếm & viết lại mã theo AST
Tìm và refactor mã theo cấu trúc cú pháp (AST) thay vì theo văn bản, hỗ trợ 25 ngôn ngữ với quy trình dry-run 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
Skill này làm gì
- Tìm mã theo cây cú pháp (AST) thay vì theo byte văn bản, dùng ký tự thay thế
$VAR(một node) và$$$(nhiều node). - Cung cấp helper Python (
scripts/ast_grep_helper.py) với các lệnhsearch,replace,scan,validate,langs,doctor. - Kiểm tra pattern offline để bắt lỗi dùng regex sai (
\w+,.*,|) trước khi gọisg, tiết kiệm thời gian debug "0 matches". replacemặc định là dry-run; chỉ ghi file khi thêm--apply. Tự xử lý bẫy--jsonvà--update-allloại trừ nhau bằng cách chạy hai lượt.- Hỗ trợ rule YAML qua
sg scanđể làm lint rule và auto-fix trong CI.
Phù hợp với ai
- Lập trình viên cần migrate API hoặc refactor hàng loạt trên codebase lớn.
- Nhóm muốn xây rule lint/codemod chạy trong CI.
- Ai từng bị regex thay thế sai chỗ và muốn cách an toàn hơn.
Ví dụ sử dụng
- Đổi toàn bộ
console.log($MSG)thànhlogger.info($MSG): xem trước số file bị ảnh hưởng rồi chạy--apply. - Xóa mọi ép kiểu
as anytrong TypeScript, hoặc chuyểnrequire(...)sangimport. - Trong Python: đổi
Optional[X]thànhX | None, hoặc tìm các blockcatchrỗng và chỗ thiếuawait.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/HEAD/packages/shared-skills/skills/ast-grep/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
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 /tmp/oh-my-openagent && mkdir -p ~/.claude/skills && cp -r /tmp/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.
- Cài binary ast-grep:
brew install ast-grep, hoặccargo install ast-grep --locked, hoặcnpm i -g @ast-grep/cli. - Clone repo:
git clone https://github.com/code-yeongyu/oh-my-openagent.git /tmp/oh-my-openagent - Copy cả thư mục skill (gồm scripts/ và references/):
mkdir -p ~/.claude/skills && cp -r /tmp/oh-my-openagent/packages/shared-skills/skills/ast-grep ~/.claude/skills/ - Kiểm tra:
python3 ~/.claude/skills/ast-grep/scripts/ast_grep_helper.py doctor - Khởi động lại Claude Code và yêu cầu ví dụ: "tìm mọi hàm nhận tham số Request trong repo này".
- Trên Linux,
sgxung đột với lệnh hệ thống — nên đặtalias sg=ast-grep.
Xem mã nguồn trên GitHub ↗Giấy phép: NOASSERTION