Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add oaustegard/claude-skills --skill tree-sittinggit clone --depth 1 https://github.com/oaustegard/claude-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/oaustegard/claude-skills/tree-sitting)<a href="https://agentmods.dev/skills/oaustegard/claude-skills/tree-sitting"><img src="https://agentmods.dev/badge/skills/oaustegard/claude-skills/tree-sitting/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/oaustegard/claude-skills/tree-sitting"><img src="https://agentmods.dev/badge/skills/oaustegard/claude-skills/tree-sitting.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00184 | $0.00844 |
| Opus 5.5 | $0.00074 | $0.00338 |
| Sonnet 5.5 | $0.00037 | $0.00169 |
| Haiku 4.5 | $0.00018 | $0.00084 |
Grade A, and why
tree-sitting scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 62 lines — stays where its author put it; the contents beside it link to each section on GitHub.
tree-sitting
Tree-sitter symbol index over a local checkout. Every result carries line
ranges, so the next step is a scoped Read.
Setup
Needs Python 3.10+ and pip install tree-sitter. On macOS, /usr/bin/python3
is 3.9 and will not work; use a Homebrew or uv Python. Grammars are bundled
for Linux x86_64 (parsers/*.so) and macOS (parsers/*.dylib).
If a file's grammar doesn't load, the file is skipped and stderr prints
WARNING: no grammar for … with the fix. Resolve that before trusting an empty
result. On other platforms, run python3 scripts/build_grammars.py (needs git
and cc). It writes to $TREESIT_PARSERS_DIR, or ~/.cache/tree-sitting/parsers/
when that is unset, and grammars there take precedence over the bundle.
Installed tree-sitter-<lang> wheels are the last fallback.
Use
scripts/treesit.py in this skill's directory scans the repo on every call
(cached on disk; invalidated when files or grammars change), prints a tree
overview, then answers the queries. Batch queries so one scan serves them all.
python3 scripts/treesit.py REPO # overview, depth 1
python3 scripts/treesit.py REPO --path=src/core --detail=full # drill in
python3 scripts/treesit.py REPO --no-tree 'find:Parser*' 'source:parse_input' 'refs:ParseState'
| Query | Returns |
|---|---|
find:PATTERN[:KIND[:LIMIT]] |
symbols by name, substring or glob |
symbols:FILE |
every symbol in a file |
source:SYMBOL[:FILE] |
the symbol's source |
refs:SYMBOL[:LIMIT] |
textual references |
imports:FILE |
a file's imports |
dir:PATH |
directory overview |
Flags: --depth N (-1 = all), --detail sparse|normal|full, --path DIR,
--skip DIRS, --no-tree, --stats, --no-cache, --rebuild-cache.
scripts/engine.py exposes CodeCache for use inside one Python process.
Languages: Python, JavaScript, TypeScript/TSX, Go, Rust, Ruby, Java, C, HTML,
Markdown (heading outline), Mojo. Other languages get generic extraction if
their tree-sitter-<lang> wheel is installed.
What ships with it
37 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- CHANGELOG.md 4.7 KB
- parsers/libtree_sitter_c.dylib 1255 KB
- parsers/libtree_sitter_c.so 613 KB
- parsers/libtree_sitter_go.dylib 483 KB
- parsers/libtree_sitter_go.so 232 KB
- parsers/libtree_sitter_html.dylib 99 KB
- parsers/libtree_sitter_html.so 33 KB
- parsers/libtree_sitter_java.dylib 869 KB
- parsers/libtree_sitter_java.so 424 KB
- parsers/libtree_sitter_javascript.dylib 854 KB
- parsers/libtree_sitter_javascript.so 425 KB
- parsers/libtree_sitter_markdown.dylib 776 KB
- parsers/libtree_sitter_markdown.so 363 KB
- parsers/libtree_sitter_mojo.dylib 1351 KB
- parsers/libtree_sitter_mojo.so 681 KB
- parsers/libtree_sitter_python.dylib 934 KB
- parsers/libtree_sitter_python.so 473 KB
- parsers/libtree_sitter_ruby.dylib 4164 KB
- parsers/libtree_sitter_ruby.so 2071 KB
- parsers/libtree_sitter_rust.dylib 2236 KB
- parsers/libtree_sitter_rust.so 1110 KB
- parsers/libtree_sitter_tsx.dylib 2910 KB
- parsers/libtree_sitter_tsx.so 1438 KB
- parsers/libtree_sitter_typescript.dylib 2813 KB
- parsers/libtree_sitter_typescript.so 1406 KB
- README.md 1.4 KB
- scripts/build_grammars.py 3.9 KB runs code
- scripts/engine.py 77 KB runs code
- scripts/server.py 6.6 KB runs code
- scripts/treesit.py 15 KB runs code
- tests/test_cache_fingerprint.py 12 KB runs code
- tests/test_cache_lazy_source.py 10 KB runs code
- tests/test_cache_lifecycle.py 30 KB runs code
- tests/test_cache_roundtrip.py 19 KB runs code
- tests/test_cli_cache.py 15 KB runs code
- tests/test_engine.py 19 KB runs code
- tests/test_grammar_sources.py 2.9 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · -158 lines bec0e0ab9018
- 2mo ago First seen · 220 lines · 184 tokens per session scan A a6cc93ecb944
tree-sitting is a skill published in the GitHub repository oaustegard/claude-skills (395 stars, last pushed today), licensed MIT. It adds 184 tokens to every session and 844 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
tree-sitting compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| tree-sittingoaustegard/claude-skills | Skill | 395 | today | MIT | A | 184 | Claude Code |
| aisense-free-toolsaisenseapi/aisense-free-public-rest-apis | Skill | 1 | 3d ago | MIT | A | 50 | Claude Code, Codex |
| aisense-toolsaisenseapi/aisense-free-public-rest-apis | Skill | 1 | 3d ago | MIT | A | 87 | Claude Code |
| handoff-by-caiokaragos/ai-skills-by-caio | Skill | 2 | 7mo ago | none | A | 120 | Claude Code, Codex |
| scenario-zbrush-expertscenario-labs/skills | Skill | 3.8k | yesterday | MIT | A | 124 | Claude Code |
| customer-journey-mapmohitagw15856/pm-claude-skills | Skill | 1.6k | today | MIT | A | 86 | Claude Code, Codex |
| feature-prioritisationmohitagw15856/pm-claude-skills | Skill | 1.6k | today | MIT | A | 103 | Claude Code, Codex |