agentleFS
kreuzberg-devkreuzberg-dev/tree-sitter-language-pack/skills/tree-sitter-language-pack-parsing-source/SKILL.md

tree-sitter-language-pack-parsing-source

Skill480 starsChanged 3 months agoMITView on GitHub

Use when the user wants a tree-sitter syntax tree for a source file — an s-expression dump or JSON tree. Covers `ts-pack parse`, language auto-detection vs `--language`, stdin input, and reading `has_errors`.

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read has_errors to know whether the parse produced any error nodes — a fast syntax check.

    line 73

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- AI-RULEZ :: GENERATED FILE — DO NOT EDIT Content-Hash: blake3:211a994b629d9e5e530945c00db243d6f0e4a8f78e054dc7c52db4527c90c35f Source-Hash: blake3:e63d5809d1494bcfc9e4a67ba9975f7ed86cda4b3d2bdf85b0c483f0c5ddfcb0 Schema-Version: v1 -->

Parsing source into a syntax tree

ts-pack parse <file> parses one source file with the matching tree-sitter grammar and prints the resulting concrete syntax tree. Use it when the user wants the tree itself — to inspect node structure, debug a grammar, or feed an s-expression to another tool.

Quick recipe

# S-expression (default) — auto-detects language from the file extension
ts-pack parse src/main.rs

# JSON form: { "language", "sexp", "has_errors" }
ts-pack parse src/main.rs --format json

Flag surface

FlagShortDefaultPurpose
--language <name>-lautoOverride the language (skip extension detection).
--format <fmt>-fsexpsexp or json.

The parser library for the language downloads on first use and is cached.

Language detection

The language is auto-detected from the file extension. Override it when the extension is missing, misleading, or you are reading from stdin:

# Misleading extension or no extension:
ts-pack parse script --language bash

# stdin (use "-" as the file):
cat snippet.py | ts-pack parse - --language python

stdin cannot be auto-detected by path; always pass --language with -. For content-based detection without a path, use the SDK (detect_language_from_content) — see the tree-sitter-language-pack-detecting-languages skill.

Output shapes

S-expression

A nested (node_type child ...) tree. Compact, good for eyeballing structure or piping to a grammar tool.

JSON

{
  "language": "rust",
  "sexp": "(source_file (function_item ...))",
  "has_errors": false
}

Read has_errors to know whether the parse produced any error nodes — a fast syntax check. For positioned, per-error detail use ts-pack process <file> --diagnostics (see tree-sitter-language-pack-extracting-code-structure).

Examples

# Inspect a TypeScript file's tree
ts-pack parse src/app.ts

# Machine-readable, then check for syntax errors with jq
ts-pack parse src/app.ts --format json | jq '.has_errors'

# Parse a heredoc as Python
printf 'def f():\n    return 1\n' | ts-pack parse - -l python

When to reach for process instead

parse gives you the raw tree. If the user wants structured metadata (functions, imports, exports, symbols, docstrings) rather than the tree, use ts-pack process — see the tree-sitter-language-pack-extracting-code-structure skill.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.