본문으로 건너뛰기
cccskills
무료GitHub에 공개

cxc-ast-grep

Use for AST search and codemods. Triggers: ast-grep, sg, function/call/class/import, empty catch, missing await, YAML rules.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(6)

  • SKILL.md5.0 KB
  • agents/openai.yaml152 B
  • LICENSE1.0 KB
  • references/install.md1.5 KB
  • references/patterns.md3.4 KB
  • scripts/ast_grep_helper.py26.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

ast-grep

sg (also installed as ast-grep) is an AST-aware search and rewrite tool across 25 languages. It treats your pattern as code, parses it the same way it parses your project, and matches structurally. Reach for it whenever the question depends on code shape rather than text bytes.

This skill ships a Python wrapper at scripts/ast_grep_helper.py and an install reference at references/install.md. The helper adds offline pattern validation, the two-pass write trick, and binary auto-resolution. Use it as the default entry point.

rg first — do not use ast-grep for ordinary grep

Plain filename, literal text, regex, comment, and simple callsite searches use rg / rg --files first. ast-grep is for syntax-tree questions only. The test: "does the answer depend on the language's syntax tree, or just on the file's bytes?" Tree → ast-grep. Bytes → rg.

For a whole-repo structure OVERVIEW (which files own which symbols, ranked), use cxc map (repo-map skill) instead; ast-grep is for shape SEARCH within known scope.

When to use this skill

  • "Find every function that takes a Request parameter."
  • "Rewrite every console.log(x) to logger.info(x)."
  • "Strip every as any cast."
  • "Replace require(...) with import across the repo."
  • "Find empty catch blocks" / "find missing await."
  • "Apply this codemod across these 200 files."
  • "Run our YAML lint rules and surface violations."

Three things to internalize

1. ast-grep is NOT regex

The wildcards are $VAR (one AST node) and $$$ (zero or more nodes). Regex syntax (|, .*, \w, [a-z]) fails silently — the helper's validate subcommand catches the common misuses offline before you run a search.

2. Always preview before you write

replace is a dry-run by default and prints the would-change diff. Add --apply only after you have inspected the preview. The helper runs a two-pass write (JSON match pass, then a separate --update-all pass) because ast-grep ignores --update-all when --json is set.

3. Language matters

Pass --lang so the correct parser is used; the same pattern parses differently across languages. langs lists the 25 supported languages with extensions.

Verification loop (MUST)

Never trust a pattern you have not seen match. The loop:

  1. validate PATTERN --lang LANG — offline sanity check (catches regex syntax and other common misuses; it can NOT catch every silent miss — see step 3).
  2. search PATTERN --lang LANG — read the match list: is the COUNT plausible, and do 2-3 spot-checked sites look right?
  3. 0 matches where you expected some = pattern bug first, not "no occurrences". The two reproduced causes: a glued metavariable (use$HOOK(...) — a metavar must be a whole token) and a pattern that does not parse as ONE node (catch ($E) {}). Consult references/patterns.md (verified examples + pitfalls) and refine.
  4. replace PATTERN REWRITE — inspect the dry-run diff for every file, or at minimum every distinct shape in it.
  5. Only then --apply. Never --apply a pattern whose match list you have not read.

Helper usage

ast_grep_helper.py search PATTERN [PATH...] [--lang LANG] [--globs GLOB ...] [-C N]
ast_grep_helper.py replace PATTERN REWRITE [PATH...] [--lang LANG] [--apply]
ast_grep_helper.py scan [PATH...] --rule RULE_FILE [--apply]   # rule file via --rule, NOT positional
ast_grep_helper.py validate PATTERN [--lang LANG]   # offline pattern check
ast_grep_helper.py langs                            # list languages
ast_grep_helper.py doctor                           # binary availability + version
ast_grep_helper.py install                          # lazy-provision sg

Verified per-language pattern examples (call rewrite, cast strip, CJS→ESM, empty catch, bare except, relational YAML rules) and the reproduced pitfall table live in references/patterns.md — read it before writing a non-trivial pattern.

Binary resolution + lazy provisioning

The helper resolves sg in priority order: CODEXCLAW_AST_GREP_SG_PATH override (OMO_AST_GREP_SG_PATH fallback) → codexclaw runtime ($CODEX_HOME/runtime/ast-grep or ~/.codexclaw/runtime/ast-grep) → a cached binary under the skill bin/ → PATH → Homebrew defaults. When sg is missing, doctor/install exit with a clear install hint rather than crashing. See references/install.md. Provisioning is lazy, evidence-bound, and idempotent.

Notes

  • On-demand skill (allow_implicit_invocation: false); reached by trigger or dev-hub routing.
  • No MCP server, no daemon, no workspace side-effects — this honors the core no-server contract. LSP and codegraph are deferred to a separate, isolated post-MVP extension and are deliberately not shipped here.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

cxc-dev

무료

Use for coding, PR delivery, scaffolding and QA. Triggers: develop, fix, refactor, test, review, docs, browse, stacked PR, 개발, 수정, 검토, 스택 PR.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

lidge-jun/codexclaw472026년 10월 9일 업데이트

Use for module boundaries and dependencies. Triggers: circular import, coupling, barrel, re-export, validation placement, 모듈 경계, 순환 참조.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

lidge-jun/codexclaw472026년 10월 9일 업데이트

Use for APIs, servers and app databases. Triggers: REST, GraphQL, migration, query optimization, middleware, caching, queues, 백엔드, API 작업, 마이그레이션, 쿼리 최적화.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

lidge-jun/codexclaw472026년 10월 9일 업데이트

Use for code/PR/diff review and refactor audits. Triggers: review this, before merge, antipattern, 리뷰, 코드 리뷰, 머지 전에 확인.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

lidge-jun/codexclaw472026년 10월 9일 업데이트

Use for analytics and data pipelines. Triggers: ETL, ELT, data quality, SQL optimization, schema drift, backfill, 데이터 파이프라인, 데이터 품질, 백필.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

lidge-jun/codexclaw472026년 10월 9일 업데이트

Use for debugging and system comprehension. Triggers: debug this, root cause, how does X work, reverse engineer, 왜 안 돼, 디버깅, 원인 분석, 로직 파악, 뜯어봐.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

lidge-jun/codexclaw472026년 10월 9일 업데이트

lidge-jun의 스킬 모두 보기

이 스킬의 문제 신고