Gograph Go Repository Intelligence
ozgurcd/gograph
Gives an agent working in a Go codebase a structural view through a local MCP server: call graphs, blast-radius and impact analysis, and bounded first-call exploration.
Searches and rewrites code by syntax-tree shape across 25 languages with ast-grep, for codemods, structural queries and YAML lint rules, using a Python wrapper script.
$ npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install code-yeongyu/oh-my-openagent ast-grep --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/code-yeongyu/oh-my-openagent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/shared-skills/skills/ast-grep .claude/skills/ast-grep && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ast-grep" agent skill from https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/shared-skills/skills/ast-grep into .claude/skills/ast-grep/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ast-grep", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/shared-skills/skills/ast-grepType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install code-yeongyu/oh-my-openagent ast-grep --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/code-yeongyu/oh-my-openagent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/shared-skills/skills/ast-grep .agents/skills/ast-grep && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ast-grep" agent skill from https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/shared-skills/skills/ast-grep into .agents/skills/ast-grep/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ast-grep", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install code-yeongyu/oh-my-openagent ast-grep --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/code-yeongyu/oh-my-openagent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/shared-skills/skills/ast-grep .cursor/skills/ast-grep && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ast-grep" agent skill from https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/shared-skills/skills/ast-grep into .cursor/skills/ast-grep/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ast-grep", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/code-yeongyu/oh-my-openagent.git --path packages/shared-skills/skills/ast-grep--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install code-yeongyu/oh-my-openagent ast-grep --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/code-yeongyu/oh-my-openagent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/shared-skills/skills/ast-grep .gemini/skills/ast-grep && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ast-grep" agent skill from https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/shared-skills/skills/ast-grep into .gemini/skills/ast-grep/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ast-grep", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install code-yeongyu/oh-my-openagent ast-grepInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/code-yeongyu/oh-my-openagent.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/shared-skills/skills/ast-grep .github/skills/ast-grep && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ast-grep" agent skill from https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/shared-skills/skills/ast-grep into .github/skills/ast-grep/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ast-grep", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install code-yeongyu/oh-my-openagent ast-grep --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/code-yeongyu/oh-my-openagent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/shared-skills/skills/ast-grep .opencode/skills/ast-grep && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ast-grep" agent skill from https://github.com/code-yeongyu/oh-my-openagent/tree/dev/packages/shared-skills/skills/ast-grep into .opencode/skills/ast-grep/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ast-grep", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ast-grepSearches and rewrites code by syntax-tree shape across 25 languages with ast-grep, for codemods, structural queries and YAML lint rules, using a Python wrapper script.
ast-grep, installed as sg or ast-grep, treats a pattern as code and matches it structurally, so it fits questions about code shape: every function taking a Request parameter, console.log calls to rewrite as logger.info, as any casts to strip, require calls to convert to import, empty catch blocks, or a codemod across many files. For plain strings, comments, license headers or file names, the skill says to use grep or rg instead.
The skill ships scripts/ast_grep_helper.py, which adds offline pattern validation, a two-pass write approach of preview first and apply second, and automatic binary resolution, plus install.sh for POSIX shells and install.ps1 for Windows. In the OmO environment a bundled MCP server offers three tools for search, rewrite with a preview or apply switch, and scanning with project YAML rules. Patterns use wildcard variables, one form for a single node and another for zero or more. References cover the CLI, patterns, pitfalls, recipes, sgconfig and YAML rules.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ab81169. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (PowerShell, Shell and Python), which the agent can run.
Shell commands in SKILL.md call:
python3jqFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
ast-grep.github.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
ast-grep Structural Search loads about 3.3k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 63 tokens; SKILL.md has 1,459 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from code-yeongyu/oh-my-openagent at commit ab81169, republished under its MIT licence (© code-yeongyu). 1,459 words, ~3,317 tokens.
.claude/skills/ast-grep/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.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. It is the right tool whenever your question depends on code shape rather than text bytes.
This skill ships a Python wrapper at scripts/ast_grep_helper.py and platform install scripts at install.sh (POSIX) and install.ps1 (Windows). The helper adds offline pattern validation, the two-pass write trick, and binary auto-resolution. Use it as your default entry point.
OmO native also registers a bundled ast-grep MCP server. Its three tools are deferred: they are absent from the resident tool list and activate automatically the first time you call them by name — no tool_search round trip needed.
mcp__ast_grep_search({ pattern, language, paths }) — AST-shape search, the MCP equivalent of sg run -p. Prefer this over shelling out to sg for one-off lookups: no install, no PATH issues.mcp__ast_grep_rewrite({ pattern, rewrite, language, paths, apply }) — preview matches (apply: false, the default) or apply the rewrite (apply: true). Same two-pass discipline as sg run -r: preview first, then apply.mcp__ast_grep_scan({ paths }) — run project YAML rules (sgconfig.yml, rules/), the MCP equivalent of sg scan.Same pattern language as the CLI: $VAR matches one AST node, $$$VAR matches zero or more, and the pattern is code, not regex. paths accepts a file or directory list; language is required for patterns that are ambiguous across languages.
Use it whenever the user's question is about code structure, not bytes:
Request parameter."console.log(x) to logger.info(x)."as any cast."require(...) with import across the repo."Optional[X] to X | None."Switch to plain grep / rg when the question is text-shaped (string literal contents, comments, license headers, file names, cross-language regex). When in doubt, ask: "does the answer depend on the language's syntax tree, or just on the file's bytes?" If the former, ast-grep. If the latter, grep.
The wildcards are $VAR (one AST node) and $$$ (zero or more nodes). Regex syntax fails silently:
| You wrote | What ast-grep saw | What you wanted |
|---|---|---|
foo|bar | bitwise-or of foo and bar | run two separate searches |
.*foo | not parseable | $$$ foo (if $$$ is a list of nodes) or use rg |
\w+ | not parseable | $VAR to capture any identifier |
[a-z] | character class, not parseable | switch to rg |
The full anti-pattern table is in references/pitfalls.md §1. The helper's validate subcommand catches these mechanically — call it before debugging "no matches" by hand.
The pattern itself must parse. def $FN($$$): fails because the trailing : makes it incomplete; use def $FN($$$). function $NAME without params/body fails; use function $NAME($$$) { $$$ }. Full table per language in references/pitfalls.md §2.
--update-all and --json are mutually exclusive (silently)This is the single biggest gotcha when scripting. sg run -p P -r R --json --update-all returns the JSON but does not mutate files. To both preview AND apply, run two passes:
sg run -p P -r R --json=compact . # pass 1: see what would change
sg run -p P -r R --update-all . # pass 2: actually applyThe helper does this automatically when you call replace --apply. Read references/pitfalls.md §9.
scripts/ast_grep_helper.pyA single-file Python 3 stdlib wrapper. Same on every OS. The agent's default entry point.
search — find all matches of a patternpython3 scripts/ast_grep_helper.py search 'console.log($MSG)' --lang ts src/Validates the pattern offline first. If the pattern looks like regex (\w, .*, |, etc.) the helper exits with a hint and never calls sg — saves a round-trip. Pass --force to skip validation.
Flags:
--lang ts (or any of the 25 languages; aliases like js, py, rs, kt accepted)--globs '!**/*.test.ts' (repeatable; prefix ! to exclude)-C 3 (context lines)--json-out (raw JSON instead of human format)replace — rewrite by pattern, dry-run by default# Dry-run preview (default — no files mutated)
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts src/
# Actually apply
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts src/ --applyThe helper:
pattern and rewrite for hint-detectable mistakes.--json=compact to collect matches and show a preview.--apply is set, runs pass 2 with --update-all to mutate files.scan — run YAML rules# Discover sgconfig.yml from cwd and run all rules
python3 scripts/ast_grep_helper.py scan src/
# Run a single rule file
python3 scripts/ast_grep_helper.py scan -r rules/no-console.yml src/
# Apply auto-fixes
python3 scripts/ast_grep_helper.py scan -U src/
# CI-friendly GitHub annotations
python3 scripts/ast_grep_helper.py scan --report-style short src/validate — offline pattern check (no sg call)Useful for CI lints, pre-commit hooks, and quick sanity checks:
python3 scripts/ast_grep_helper.py validate '\w+' --lang ts
# → exit 2: regex \w not supported. Use $VAR for identifiers.
python3 scripts/ast_grep_helper.py validate 'console.log($MSG)' --lang ts
# → exit 0: pattern looks plausible for ast-grep.langs / doctor / installpython3 scripts/ast_grep_helper.py langs # list 25 supported languages and aliases
python3 scripts/ast_grep_helper.py doctor # check ast-grep binary availability
python3 scripts/ast_grep_helper.py install # delegate to install.sh / install.ps1new and test subcommands proxy directly to sg new and sg test.
sg use (when the helper isn't enough)The helper is opinionated. For full control, drop to sg. The skill ships a CLI cheat sheet in references/cli.md. The minimal idioms:
# Search
sg run -p 'console.log($MSG)' --lang ts src/
# Search with JSON for scripting
sg run -p 'console.log($MSG)' --lang ts --json=compact src/ | jq '.[] | .file'
# Rewrite, dry-run
sg run -p 'console.log($MSG)' -r 'logger.info($MSG)' --lang ts --json=compact src/
# Rewrite, apply
sg run -p 'console.log($MSG)' -r 'logger.info($MSG)' --lang ts --update-all src/
# Pattern from stdin (great for ad-hoc experiments)
echo 'console.log("hi")' | sg run -p 'console.log($MSG)' --lang js --stdin
# Debug a pattern that returns 0 matches
sg run -p '<your pattern>' --lang <lang> --debug-query=ast --stdin <<< '<sample-code>'
# Run YAML rules
sg scan src/
# Inline YAML rule (one-off)
sg scan --inline-rules '
id: no-todo
language: TypeScript
severity: warning
rule: { pattern: TODO }' src/When using sg directly in a shell, always single-quote patterns so $VAR is not expanded by the shell.
USER asks for "find/rewrite/codemod"
│
├─ structural pattern (function shape, call, class, import, control flow)
│ └→ ast-grep (this skill)
│
├─ text pattern (regex, alternation, character classes, file names)
│ └→ rg / grep
│
├─ semantic question (what variable does this refer to? does this throw?)
│ └→ LSP tools, TypeScript compiler, Pyright, Semgrep with type inference
│
└─ multiple repos / federated search
└→ a search engine + then ast-grep / rg / LSP per-repoIf the user says "find all" or "every", default to ast-grep when the target is shaped (function, class, call, import, statement). Default to rg when the target is text (string content, comment, license header, file name, identifier substring).
A bad pattern silently rewrites the wrong thing. The helper's replace defaults to dry-run for this reason. The flow is:
helper search '<pattern>' --lang X .helper replace '<pattern>' '<rewrite>' --lang X . (no --apply)helper replace '<pattern>' '<rewrite>' --lang X . --apply.Never apply a rewrite that you have not first dry-run.
sg returns 0 matches but you know the code is thereIn priority order:
helper validate '<pattern>' --lang <lang> — catches regex misuse, missing function bodies, Python trailing colons.--lang — sg infers from extension; if you pass a .tsx file with --lang ts (not tsx), JSX won't parse.sg run -p '<pattern>' --lang <lang> --debug-query=ast --stdin <<< '<sample>'. If it shows ERROR nodes, the pattern is malformed.sg run -p '$_' --lang <lang> --debug-query=cst path/to/file | head -40 — find the kind you're trying to match.Do not blindly retry with variations. Each failure has a reason; surface it.
-p patternsUse inline -p when:
Use YAML rules (file under rules/, run via sg scan) when:
constraints, transform, complex inside/has, or composite logic.fix: field).sg test).The full YAML rule schema is in references/yaml-rules.md. Project setup (sgconfig.yml, ruleDirs, utilDirs) is in references/sgconfig.md.
sg run --json=compact produces an array of match objects: { file, range: {start, end}, text, replacement?, lines, language, ... }. Pipe through jq for further processing.--json, sg produces human-readable colored output suitable for terminals.--json-out for raw JSON.replace always summarizes: number of matches, number of files, per-location preview.When summarizing for the user, always include the count of files affected, not just the count of matches. Users care about blast radius.
references/patterns.md — meta-variables, naming rules, strictness levels. Read when you're unsure why a pattern doesn't match.references/pitfalls.md — the failure-mode field guide. Read when 0 matches surprises you.references/recipes.md — copy-paste patterns by language. Read first when you start a new task.references/cli.md — sg run, sg scan, sg test, sg new, sg lsp. Read when the helper isn't enough.references/yaml-rules.md — YAML rule schema. Read when you outgrow inline patterns.references/sgconfig.md — project-level configuration. Read when you set up sg scan for a real project.references/install.md — per-OS install methods. Read only if install.sh / install.ps1 fail.helper validate first. It catches the regex-misuse class of mistakes that account for ~70% of "0 matches" debug sessions.sg run -r ... --update-all without first inspecting the matches. The helper's replace enforces this by default.sg directly to both preview and apply, run two invocations — --json ignores --update-all.'$VAR' not "$VAR". The shell expands $VAR to the empty string in double quotes, breaking the pattern.|, .*, \w, or [a-z], switch to rg instead. Don't try to force ast-grep into a regex shape.--lang is required for stdin. When piping with --stdin, set --lang explicitly; sg cannot infer from extension.ast-grep over sg because sg collides with setgroups. The helper handles this; if you call sg directly, alias it: alias sg=ast-grep.© code-yeongyu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 17 other files (scripts, references) in packages/shared-skills/skills/ast-grep of code-yeongyu/oh-my-openagent.
Open the folder on GitHubat commit ab81169
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in code-yeongyu/oh-my-openagent, which our catalogue first saw on October 7, 2026.
ast-grep Structural Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| ast-grep Structural Search this skillcode-yeongyu/oh-my-openagent | 70k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Gograph Go Repository Intelligenceozgurcd/gograph | 227 | — | ~4.8k | Automated safety check: Notes | MIT | |
| trace-mcp Codemodsnikolai-vysotskyi/trace-mcp | 186 | — | ~729 | Automated safety check: Pass | MIT | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 42k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Graph-Guided Safe Refactoringtirth8205/code-review-graph | 32k | 1 repos | ~332 | Automated safety check: Pass | MIT | |
| ast-grep Codemod Referencewarp-drive-data/warp-drive | 3.2k | — | ~2.6k | Automated safety check: Pass | MIT |
ozgurcd/gograph
Gives an agent working in a Go codebase a structural view through a local MCP server: call graphs, blast-radius and impact analysis, and bounded first-call exploration.
nikolai-vysotskyi/trace-mcp
Replaces repeated hand edits with the trace-mcp apply_codemod tool, previewing matches in a dry run before bulk mechanical changes across one file or many.
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
tirth8205/code-review-graph
Plans a refactor from a code dependency graph, previews renames before applying them and checks that the final impact matches the plan.
warp-drive-data/warp-drive
Reference for writing and debugging TypeScript and JavaScript codemods with @ast-grep/napi: parsing, node queries, meta-variables, rule objects and editing.
handsontable/handsontable
Queries a pre-built, Tree-sitter-based code graph of the whole monorepo instead of grepping call chains, for exploring, debugging, refactoring or reviewing code.
code-yeongyu/oh-my-openagent
Drives a real browser through the omowright library, either the user's own signed-in browser or a separate browser the code launches, for forms, QA, screenshots and scraping.
code-yeongyu/oh-my-openagent
Tests the omo Codex plugin in an isolated CODEX_HOME with a local mock model, proving hooks fired through app-server notifications without touching ~/.codex.
code-yeongyu/oh-my-openagent
Finds, reads and reconstructs past coding-agent sessions across Codex, Claude, OpenCode, Senpi and many other local agent logs.
code-yeongyu/oh-my-openagent
Detects which languages a project uses, installs the matching language server, writes its config and checks it with a real call so diagnostics and go-to-definition work.
code-yeongyu/oh-my-openagent
Tests the opencode coding agent itself: its CLI, server, plugin hooks and events, the terminal UI under tmux, and its SQLite session database, using tested helper scripts.
code-yeongyu/oh-my-openagent
Explore-first planning that turns a vague or large request into one decision-complete work plan, written only after your approval and executed by a separate worker.
Works with
Categories
Searches and rewrites code by syntax-tree shape across 25 languages with ast-grep, for codemods, structural queries and YAML lint rules, using a Python wrapper script. info, as any casts to strip, require calls to convert to import, empty catch blocks, or a codemod across many files. For plain strings, comments, license headers or file names, the skill says to use grep or rg instead.
ast-grep Structural Search fits situations like: rewriting every call or import that matches a syntax pattern; running a codemod across many files; finding structural issues such as empty catch blocks; running project YAML lint rules.
Run `npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a claude-code`. Or copy the skill folder (packages/shared-skills/skills/ast-grep in code-yeongyu/oh-my-openagent) into .claude/skills/ast-grep in your project. Claude Code loads it when a task matches its description.
Run `npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a codex`. Or copy the skill folder (packages/shared-skills/skills/ast-grep in code-yeongyu/oh-my-openagent) into .agents/skills/ast-grep in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add code-yeongyu/oh-my-openagent --skill ast-grep -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ast-grep, .gemini/skills/ast-grep, .github/skills/ast-grep and .opencode/skills/ast-grep in your project.
Going by SKILL.md and its folder, ast-grep Structural Search needs PowerShell, a shell and Python for the scripts in its folder and the command-line tools its instructions call (python3 and jq). Our summary lists: The sg (ast-grep) binary, which the bundled install scripts can set up; Python, for the helper wrapper.
SKILL.md names 1 domain. As links in the text: ast-grep.github.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
ast-grep Structural Search is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 13k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with ast-grep Structural Search: Gograph Go Repository Intelligence (ozgurcd/gograph, 227 stars), trace-mcp Codemods (nikolai-vysotskyi/trace-mcp, 186 stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars) and Graph-Guided Safe Refactoring (tirth8205/code-review-graph, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
code-yeongyu (a GitHub user) maintains it in code-yeongyu/oh-my-openagent, which has 69,882 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on October 8, 2026.
Source: code-yeongyu/oh-my-openagent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.