mcpField
G
godgrep

godgrep

github.com/trancong12102Development751 installsUpdated 6w ago
Repository

About godgrep

godgrep is a code-search skill for coding agents that routes each query to a suitable search method, from exact text matches to semantic and structural searches.

Key features

  1. 01Routes searches by intent
  2. 02Uses semantic codebase search for concepts
  3. 03Uses grep for identifiers and patterns
  4. 04Supports AST-based structural searches
  5. 05Includes search and verification guidance

Use cases

  1. 01Locate where a feature is implemented
  2. 02Find references or definitions of a symbol
  3. 03Search code by structural patterns

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/trancong12102/agentskills --skill godgrep

After installing, type/godgrepin Claude Code to confirm it loaded.

Bundled filesreferences/ast-grep/ast-grep.mdreferences/ast-grep/rule_reference.md

Details

From the project README

godgrep

Routes codebase search tasks to the right tool based on intent.

Tool Routing

IntentPrimary toolAlso consider
Keyword / symbol search (exact identifier known)mcp__plugin_ora_fff__grepLSP for definitions
Multi-pattern OR — naming variants of one identifiermcp__plugin_ora_fff__multi_grepsequential mcp__plugin_ora_fff__grep calls
File discovery (by name)mcp__plugin_ora_fff__find_filesmcp__plugin_ora_fff__grep for content matches
Concept / "how does X work" / "where is Y handled" (no identifier yet)mcp__plugin_ora_morph__codebase_searchfall back to find_files + fff__grep + Read only if morph misses
Trace a feature end-to-endmcp__plugin_ora_morph__codebase_search for the initial mapmcp__plugin_ora_fff__grep to verify specific call sites
Find all usages of XLSP find-referencesmcp__plugin_ora_fff__grep
Find a specific symbolLSP go-to-definitionmcp__plugin_ora_fff__grep
Structural code patternsast-grepmcp__plugin_ora_fff__grep as fallback
Outside git index / fallbackshell grep / findlast resort, after fff
Git history / blameBash (git log/blame)—

When the question is a single broad concept, one mcp__plugin_ora_morph__codebase_search call replaces multi-angle parallelization. Split into 2-3 parallel angles only when the work is multiple independent identifier-based searches (e.g. "find callers of X and definitions of Y in one pass").

Anti-pattern: shotgun OR-grep for features

Do not enumerate guesses for one feature with a long OR-pattern — synonyms get missed and the output drowns in noise:

# Shotgun-grep — fragile, no signal
grep -r "FreeGift|ProgressBar|GiftModal|BuyXGetY|percentOff|fixedOff|salepify"
grep -r "appUpdate|checkAppUpdate|versionCheck|setAppUpdateHandler|needUpdate"

Instead: skim README/dir structure to learn the feature's actual name, pick one specific term, grep for it, Read the top hit, and follow references. multi_grep is for naming variants of one identifier (e.g. ['ActorAuth', 'PopulatedActorAuth', 'actor_auth']), not for guessing a feature's vocabulary.

Morph codebase_search — default for semantic/concept queries

mcp__plugin_ora_morph__codebase_search runs a Morph WarpGrep subagent that parallel-greps and reads files, returning a synthesized answer. Reach for it first when the question is shaped like "how does X work", "where is Y handled", "what wires Z together", "find all the places that do W". One morph call beats 4-8 fff__grep + Read turns on these shapes.

  • Use when the question is conceptual / semantic / "find X-related code" and you don't have a single exact identifier to grep. Why: morph parallelizes the grep + read + summarize loop the calling agent would otherwise do serially; cuts latency and turn count substantially.
  • Do not use when you have a concrete identifier — fff__grep is faster, exhaustive, and returns exact file:line hits in one call.
  • Trust citations, verify conclusions — morph's file:line references point to real code locations, but its synthesis (what that code does, how it fits the question) can be wrong. When the answer is load-bearing, Read the cited locations and confirm morph's interpretation before relaying.

ast-grep

Structural code search using Abstract Syntax Tree patterns. Matches code by structure, not text.

Pattern Search
ast-grep run --pattern '<pattern>' --lang <lang> <path>
# Find all console.log calls
ast-grep run --pattern 'console.log($ARG)' --lang javascript .

# Find class declarations
ast-grep run --pattern 'class $NAME' --lang python /path/to/project
Complex Rules

Inline YAML (quick iterations, no temp files):

ast-grep scan --inline-rules "<yaml>" <path>
# Find async functions containing await
ast-grep scan --inline-rules "id: async-await
language: javascript
rule:
  kind: function_declaration
  has:
    pattern: await \$EXPR
    stopBy: end" /path/to/project

Rule file (recommended for complex rules):

# Write rule to a temp file, then scan
ast-grep scan --rule /tmp/my_rule.yml /path/to/project
AST Inspection
ast-grep run --pattern '<code>' --lang <lang> --debug-query=cst

Use --debug-query=cst to dump the concrete syntax tree and find correct kind values when rules do not match. Available formats: cst (all nodes), ast (named nodes only), pattern (how ast-grep interprets your pattern).

Critical Rules
  • ALWAYS use stopBy: end for relational rules (inside, has) -- without it, search stops at the first non-matching node instead of traversing the full subtree:
has:
  pattern: await $EXPR
  stopBy: end # required for deep traversal
  • Escape metavariables in shell: use \$VAR in double-quoted strings, or '$VAR' in single-quoted strings
  • Start simple (pattern first), add kind + relational rules only when needed
  • Use all/any/not to compose complex structural queries

Reference: references/ast-grep/ast-grep.md for full guide, references/ast-grep/rule_reference.md for YAML rule syntax.


Do not reach for ast-grep when mcp__plugin_ora_fff__grep/mcp__plugin_ora_fff__find_files/LSP suffice — it is slower and consumes more resources. Escalate to ast-grep only when the search requires understanding code structure, not just text.

Comments

Markdown supported