ast-grep 구조 기반 코드 검색·리팩터링
텍스트가 아니라 코드 구조(AST)로 25개 언어를 검색하고 대규모 코드모드를 안전하게 실행하는 스킬입니다.
개발·코딩중급★ 67,531⑂ 5,507AI 점수 9/10마지막 업데이트: 2026. 8. 9.
무엇을 해주나
ast-grep(sg)을 이용해 코드를 문법 트리(AST) 단위로 검색하고 치환합니다. $VAR(노드 1개), $$$(노드 여러 개) 같은 메타변수로 "이런 모양의 함수/호출/import"를 정확히 찾아냅니다.
- 동봉된 파이썬 래퍼(
scripts/ast_grep_helper.py)가search/replace/scan/validate/langs/doctor서브커맨드를 제공합니다. - 패턴을 실행 전에 오프라인 검증해 정규식 문법(
\w,.*,|)을 잘못 쓴 경우를 바로 잡아줍니다. --json과--update-all이 동시에 동작하지 않는 ast-grep의 대표적 함정을 2패스(미리보기 → 적용) 방식으로 자동 처리합니다.replace는 기본이 dry-run이며, 결과 요약에 영향 파일 수까지 포함합니다.- YAML 규칙(
sg scan)으로 사내 린트 규칙과 자동 수정도 운용할 수 있습니다.
이런 분께 추천
- 레거시 코드를 대량으로 마이그레이션해야 하는 백엔드/프론트엔드 개발자
- grep으로는 오탐이 너무 많아 고생한 리팩터링 담당자
- CI에 커스텀 린트 규칙을 넣고 싶은 팀 리드
- Claude Code에게 "전부 찾아서 바꿔줘"를 안전하게 맡기고 싶은 사람
활용 예시
- 로거 교체: "프로젝트의 모든
console.log(x)를logger.info(x)로 바꿔줘" → 헬퍼가 dry-run으로 매치 건수와 파일 수를 보여주고, 확인 후--apply로 적용합니다. - 타입 정리: "TypeScript 전체에서
as any캐스팅을 제거하고 남은 위치를 리스트로 줘" → 구조 매칭으로 문자열 오탐 없이 처리합니다. - 품질 점검: "빈 catch 블록과 await 누락 후보를 찾아 YAML 린트 규칙으로 만들어 CI에 붙여줘" →
rules/아래 규칙 작성 후sg scan으로 상시 검사합니다.
· · · 설치 가이드 · · ·
Claude 앱에 설치 (터미널 필요 없음)
- 아래 버튼으로 ZIP 파일을 받으세요.
- Claude 설정 → Capabilities에서 '코드 실행 및 파일 생성'을 켭니다. (한 번만)
- Claude에서 Customize → Skills → + → '스킬 업로드'를 누르고 받은 ZIP을 올립니다.
Claude Code에 설치
Claude에게 맡기기 — 아래 문장을 Claude Code에 붙여넣으세요
클로드스킬마트에서 찾은 스킬을 설치해줘. GitHub 저장소 code-yeongyu/oh-my-openagent 의 packages/shared-skills/skills/ast-grep 폴더를 내 ~/.claude/skills/ast-grep/ 에 그대로 복사해줘. 설치가 끝나면 이 스킬로 무엇을 할 수 있는지 한 줄로 알려줘.
직접 명령으로 설치하기
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/⚠ 제3자가 만든 스킬입니다. 설치 전 원본 저장소를 한 번 확인하세요.
- 터미널을 열고
python3 --version으로 파이썬 3가 있는지 확인합니다. - 저장소를 받습니다:
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/ - ast-grep 바이너리를 설치합니다:
bash ~/.claude/skills/ast-grep/install.sh(윈도우는 PowerShell에서install.ps1), 또는brew install ast-grep/cargo install ast-grep. python3 ~/.claude/skills/ast-grep/scripts/ast_grep_helper.py doctor로 바이너리 인식 여부를 확인합니다.- Claude Code를 재시작한 뒤 "이 저장소에서 console.log 호출 전부 찾아줘"처럼 요청하면 스킬이 자동으로 사용됩니다.
- 치환을 실행할 때는 반드시 git으로 커밋된 상태에서, dry-run 결과를 확인한 다음
--apply를 붙이세요.
GitHub에서 원본 보기 ↗라이선스: NOASSERTION