|
| 1 | +# Using ast-grep with AI Tools |
| 2 | + |
| 3 | +This guide outlines several existing methods for leveraging AI with ast-grep. |
| 4 | + |
| 5 | +:::warning Disclaimer |
| 6 | +The field of AI is constantly evolving. The approaches detailed here are for reference, and we encourage you to explore and discover the best ways to utilize ast-grep with emerging AI technologies. |
| 7 | +::: |
| 8 | + |
| 9 | +## Simple Prompting in `AGENTS.md` |
| 10 | + |
| 11 | +For everyday development, you can instruct your AI agent to use ast-grep for code searching and analysis. This method is straightforward but requires a model with up-to-date knowledge of ast-grep to be effective. If the model is not familiar with the tool, it may not utilize it as instructed. |
| 12 | + |
| 13 | +You can set a system-level prompt for your AI agent to prioritize ast-grep for syntax-aware searches. Here is an example prompt comes from [this social post](https://x.com/kieranklaassen/status/1938453871086682232). |
| 14 | + |
| 15 | +**Example Prompt:** |
| 16 | + |
| 17 | +> You are operating in an environment where `ast-grep` is installed. For any code search that requires understanding of syntax or code structure, you should default to using `ast-grep --lang [language] -p '<pattern>'`. Adjust the `--lang` flag as needed for the specific programming language. Avoid using text-only search tools unless a plain-text search is explicitly requested. |
| 18 | +
|
| 19 | + |
| 20 | +This approach is best suited for general code queries and explorations within your projects. |
| 21 | + |
| 22 | + |
| 23 | + |
| 24 | +## Providing Comprehensive Context to LLMs |
| 25 | + |
| 26 | +Large Language Models (LLMs) with extensive context windows can be made highly effective at using ast-grep by providing them with its complete documentation. |
| 27 | + |
| 28 | +The `llms.txt` file for ast-grep is a compilation of the entire documentation, designed to be fed into an LLM's context. This method significantly reduces the likelihood of the model "hallucinating" or generating incorrect ast-grep rules by giving it a thorough and accurate knowledge base to draw from. |
| 29 | + |
| 30 | +You can find the full `llms.txt` file here: [https://ast-grep.github.io/llms-full.txt](https://ast-grep.github.io/llms-full.txt) |
| 31 | + |
| 32 | +By loading this text into your session with a capable LLM, you can ask more complex questions and receive more accurate and nuanced answers regarding ast-grep's features and usage. |
| 33 | + |
| 34 | +## Advanced Rule Development with MCP and Sub-agents |
| 35 | + |
| 36 | +For more sophisticated and dedicated code analysis tasks, you can use the ast-grep Model Context Protocol (MCP) server. The [ast-grep-mcp](https://github.com/ast-grep/ast-grep-mcp) is an experimental server that connects AI assistants, such as Cursor and Claude Code, with the powerful structural search capabilities of ast-grep. This allows the AI to interact with your codebase in a more structured and intelligent way, moving beyond simple text-based searches. |
| 37 | + |
| 38 | +The MCP server provides a set of tools that enable an AI to develop and refine ast-grep rules through a process of trial and error. This is particularly useful for creating complex rules that may require several iterations to perfect. |
| 39 | + |
| 40 | +The core of this approach is to have the AI follow a systematic process for rule development: |
| 41 | + |
| 42 | +``` |
| 43 | +## Rule Development Process |
| 44 | +1. Break down the user's query into smaller parts. |
| 45 | +2. Identify sub rules that can be used to match the code. |
| 46 | +3. Combine the sub rules into a single rule using relational rules or composite rules. |
| 47 | +4. if rule does not match example code, revise the rule by removing some sub rules and debugging unmatching parts. |
| 48 | +5. Use ast-grep mcp tool to dump AST or dump pattern query |
| 49 | +6. Use ast-grep mcp tool to test the rule against the example code snippet. |
| 50 | +``` |
| 51 | + |
| 52 | +This iterative process allows the AI to "think" more like a human developer, refining its approach until the rule is correct. You can view a detailed prompt for this agentic rule development process in the `ast-grep-mcp` repository: [https://github.com/ast-grep/ast-grep-mcp/blob/main/ast-grep.mdc](https://github.com/ast-grep/ast-grep-mcp/blob/main/ast-grep.mdc). |
0 commit comments