parsing-source
SkillFiles & storageUse 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`.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the parsing-source skill
What this skill tells your AI
The instructions your AI receives, as published by xberg-io/tree-sitter-language-pack in plugin/skills/parsing-source/SKILL.md and read by ahel’s review.
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
| Flag | Short | Default | Purpose |
|---|---|---|---|
--language <name> | -l | auto | Override the language (skip extension detection). |
--format <fmt> | -f | sexp | sexp 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 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 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 extracting-code-structure skill.
Signals
- GitHub stars
- 465
- Forks
- 68
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
parsing-source- Source
- github.com/xberg-io/tree-sitter-language-pack