SkillsApr 15, 2026·3 min read

Tree-sitter — Incremental Parser Generator for Editors

Tree-sitter is a general parser generator + incremental parsing library that powers fast, robust syntax highlighting, code folding, and structural edits in editors like Neovim, Zed, Helix, and GitHub.

Agent ready

Ready-to-run agent install

This asset can be installed after the agent chooses its runtime, checks the plan, and runs the matching command.

Native · 98/100Policy: allow
Agent surface
Any MCP/CLI agent
Kind
Skill
Install
Single
Trust
Trust: Established
Entrypoint
Tree-sitter Guide
Direct install command
npx -y tokrepo@latest install ffd869e7-3907-11f1-9bc6-00163e2b0d79 --target codex

Run after dry-run confirms the install plan.

TL;DR
Tree-sitter provides fast, incremental parsing for syntax highlighting and structural code edits.
§01

What it is

Tree-sitter is a parser generator tool and an incremental parsing library. It builds concrete syntax trees for source code files and updates them efficiently as you edit. Tree-sitter powers syntax highlighting, code folding, indentation, and structural navigation in editors like Neovim, Zed, Helix, and on GitHub for code search and navigation.

Tree-sitter targets editor developers, language tooling authors, and anyone building tools that need to understand code structure. Its grammars exist for over 200 programming languages, maintained by the community.

§02

How it saves time or tokens

Tree-sitter parses incrementally: when you change one line of code, it re-parses only the affected portion of the syntax tree instead of re-parsing the entire file. This makes it fast enough for real-time syntax highlighting even in large files. For AI coding tools, Tree-sitter's syntax trees provide structured code understanding that is more reliable than regex-based parsing.

AI agents can use Tree-sitter to extract function signatures, class definitions, and import statements from source code without sending the entire file to an LLM, reducing token usage in code analysis tasks.

§03

How to use

  1. For editor users: Neovim, Zed, and Helix include Tree-sitter support out of the box. In Neovim, install nvim-treesitter and run :TSInstall python to add language support.
  2. For developers: install the Tree-sitter CLI (npm install tree-sitter-cli) and the language grammar you need (npm install tree-sitter-python).
  3. Use the library API to parse source code into a syntax tree, query it with S-expression patterns, and traverse or modify nodes programmatically.
§04

Example

const Parser = require('tree-sitter');
const Python = require('tree-sitter-python');

const parser = new Parser();
parser.setLanguage(Python);

const code = 'def greet(name):\n    return f"Hello, {name}"';
const tree = parser.parse(code);

// Query for all function definitions
const query = new Parser.Query(Python, '(function_definition name: (identifier) @name)');
const matches = query.matches(tree.rootNode);
matches.forEach(m => console.log(m.captures[0].node.text)); // 'greet'

The query uses S-expression patterns to find structural elements in the syntax tree without fragile regex matching.

§05

Related on TokRepo

§06

Common pitfalls

  • Tree-sitter grammars are language-specific and maintained separately. Some grammars may lag behind the latest language features. Check the grammar repository for your language before relying on new syntax.
  • The query language uses S-expressions, which have a learning curve if you are unfamiliar with Lisp-like syntax. The Tree-sitter playground on the website helps with interactive query development.
  • Tree-sitter produces concrete syntax trees (CST), not abstract syntax trees (AST). CSTs include all tokens including whitespace and punctuation, which adds verbosity but preserves perfect source fidelity.

Frequently Asked Questions

Which editors use Tree-sitter?+

Neovim, Zed, Helix, Emacs (via tree-sitter-mode), and Atom used Tree-sitter for syntax highlighting and structural editing. GitHub uses Tree-sitter for code navigation and search. VS Code has experimental Tree-sitter support through extensions.

How many languages does Tree-sitter support?+

Tree-sitter has community-maintained grammars for over 200 programming languages including Python, JavaScript, TypeScript, Rust, Go, C, C++, Java, Ruby, and many others. Each grammar is a separate package.

Can Tree-sitter be used for code linting?+

Tree-sitter provides the parsing layer but not lint rules. You can build linters on top of Tree-sitter by querying the syntax tree for patterns that represent code smells or errors. Some tools like semgrep use Tree-sitter internally for pattern matching.

How does incremental parsing work?+

When you edit source code, you tell Tree-sitter which byte range changed. It re-parses only the affected nodes in the syntax tree, reusing the rest. This makes re-parsing sub-millisecond for typical edits, even in files with thousands of lines.

Can AI coding tools benefit from Tree-sitter?+

Yes. AI tools can use Tree-sitter to extract specific code structures (function signatures, class hierarchies, import graphs) without sending entire files to the LLM. This reduces token usage and provides more focused context for code analysis and generation.

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets