Skip to content
cccskills
FreePublished on GitHub

tree-sitter-language-pack-extracting-code-structure

Use when the user wants structured code metadata from a source file — functions, classes, imports, exports, symbols, docstrings, comments, or syntax diagnostics. Covers `ts-pack process` feature flags, the JSON result shape, and the default feature set.

The English summary is being prepared. Showing the original description.

xberg-io/tree-sitter-language-pack478 stars(GitHub 478 + cccskills 0)

Run score Not tested

See how to install

Files included (2)

  • SKILL.md5.0 KB
  • index.md579 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

<!-- AI-RULEZ :: GENERATED FILE — DO NOT EDIT Content-Hash: blake3:134c19e688f04cc2315c2ffa5fc4c6a567c9166258bc1cc5b1f19f4acfcbddb7 Source-Hash: blake3:f6af1693d7e3d301871730c180582f140a9c6aeee0d040ba3edbfb33b5d38409 Schema-Version: v1 -->

Extracting code structure

ts-pack process <file> runs the code-intelligence pipeline over a source file and prints JSON. Use it when the user wants structured metadata — "list the functions", "what does this file import", "find the exported symbols", "pull the docstrings" — rather than a raw syntax tree.

Quick recipe

# Default features: structure + imports + exports
ts-pack process src/app.ts

# Pick features explicitly (only what you ask for is computed)
ts-pack process src/app.ts --structure --imports --symbols --docstrings

# Everything
ts-pack process src/app.ts --all

When no feature flags are given, process defaults to --structure --imports --exports. Passing any single extraction flag (--structure --imports --exports --comments --docstrings --symbols --diagnostics) turns off that default set, so list every feature you want. --chunk-size and --language are modifiers, not extraction flags: they do not disable the defaults (e.g. --chunk-size 500 alone still emits structure+imports+exports and adds chunks).

Feature flags

FlagExtracts
--structureFunctions, classes, methods, modules (spans, nesting, visibility).
--importsImport statements and their sources.
--exportsExported symbols and their kinds.
--commentsInline and block comments.
--docstringsDocstrings attached to definitions.
--symbolsAll identifiers (for search/indexing).
--diagnosticsSyntax errors and error nodes with positions.
--allEnable every feature above.
--chunk-size <bytes>Syntax-aware chunks — see tree-sitter-language-pack-chunking-for-llms.
--language <name> (-l)Override language (auto-detected from extension otherwise).

Result shape

process always prints JSON. Top-level keys:

{
  "language": "python",
  "metrics": { "total_lines": 0, "code_lines": 0, "comment_lines": 0, "blank_lines": 0, "total_bytes": 0, "node_count": 0, "error_count": 0, "max_depth": 0 },
  "structure": [],
  "imports": [],
  "exports": [],
  "comments": [],
  "docstrings": [],
  "symbols": [],
  "diagnostics": [],
  "chunks": []
}

metrics is populated whenever any processing runs. chunks appears only when --chunk-size is set. Empty collections are omitted from the JSON (the skip_serializing_if wire contract), so absent keys mean "nothing found", not an error.

Structure items

Each structure entry has kind (a capitalized string — "Function", "Class", "Method", "Module", "Struct", "Trait", …; language-specific kinds serialize as {"Other": "<kind>"}), name, visibility, and a nested span object with start_byte/end_byte and zero-indexed start_line/start_column/end_line/end_column. Nesting is expressed via children (e.g. methods inside a class), not a parent pointer. Optional fields: decorators, doc_comment (the attached doc comment), signature, and body_span.

Examples

# Function and class names with line numbers
ts-pack process src/service.py --structure \
  | jq '.structure[] | {kind, name, line: .span.start_line}'

# Import sources only
ts-pack process src/app.ts --imports \
  | jq '.imports[].source'

# Syntax error count (also available via metrics.error_count)
ts-pack process broken.go --diagnostics \
  | jq '.diagnostics | length'

# Build a symbol index across a tree of files
for f in $(git ls-files '*.rs'); do
  ts-pack process "$f" --symbols | jq -c --arg f "$f" '{file: $f, symbols: .symbols}'
done

SDK equivalent

from tree_sitter_language_pack import process, ProcessConfig

# ProcessConfig is a frozen dataclass — set fields in the constructor.
# structure/imports/exports default to True; add the rest you want.
config = ProcessConfig("python", symbols=True, docstrings=True)
result = process(source_code, config)
for item in result.structure:                 # ProcessResult is an object, not a dict
    print(item.kind, item.name, item.span.start_line)

The SDK also exposes the parsed tree (get_parser(...) → Parser/Tree/ Node) for running your own tree-sitter queries, and a data_extraction config flag that pulls a hierarchical key/value tree from data-format files (JSON, YAML, TOML, …) into the result's data field — neither is exposed on the CLI.

When to reach for parse instead

If the user wants the raw syntax tree rather than extracted metadata, use ts-pack parse — see the tree-sitter-language-pack-parsing-source skill.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

api

Free

Use tree-sitter-language-pack api reference documentation.

The English summary is being prepared. Showing the original description.

xberg-io/tree-sitter-language-pack478Updated Oct 26, 2026

cli

Free

Use tree-sitter-language-pack cli reference documentation.

The English summary is being prepared. Showing the original description.

xberg-io/tree-sitter-language-pack478Updated Oct 26, 2026

mcp

Free

Use tree-sitter-language-pack mcp reference documentation.

The English summary is being prepared. Showing the original description.

xberg-io/tree-sitter-language-pack478Updated Oct 26, 2026

Parse and extract code intelligence from 372 programming languages using tree-sitter grammars. Use when writing code that parses source, extracts structure/imports/exports/symbols/docstrings/comments, detects a language, runs syntax diagnostics, or produces syntax-aware chunks for LLMs — in Rust, Python, Node.js/TypeScript, or the ts-pack CLI. Covers installation, the CLI surface, the SDK surface, and parser-cache management.

The English summary is being prepared. Showing the original description.

xberg-io/tree-sitter-language-pack478Updated Oct 26, 2026

Use when the user wants to split source code into chunks for an LLM context window without breaking syntax mid-construct. Covers `ts-pack process --chunk-size`, why syntax-aware splits beat fixed-byte splits, picking a size, and the chunk JSON shape.

The English summary is being prepared. Showing the original description.

xberg-io/tree-sitter-language-pack478Updated Oct 26, 2026

Use when the user wants to know which programming language a file or snippet is. Covers implicit detection in `ts-pack parse`/`process`, confirming support with `ts-pack list`/`info`, and the SDK detection functions for path, extension, and raw content.

The English summary is being prepared. Showing the original description.

xberg-io/tree-sitter-language-pack478Updated Oct 26, 2026

See all skills by xberg-io

Report a problem with this skill