Skip to main content

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.

Quellinformationen

Repository
xberg-io/tree-sitter-language-pack
Letzte Quellaktivität
12. Oktober 2026 um 15:35
Erkannte Sprache von SKILL.md
Englisch
Sterne
472
Forks
70

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
extracting-code-structure
description
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.
<!-- AI-RULEZ :: GENERATED FILE — DO NOT EDIT Content-Hash: blake3:dd570b2c1cb806fd7004f737dadfefde3bef71ae1ba233bbaae8121d744b5f0b Source-Hash: blake3:025d8c66faabe878b3b55566c7678566120205bf1f4d2fb2b87ef4dd2b4701bb 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 ```bash # 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 | Flag | Extracts | | ---- | -------- | | `--structure` | Functions, classes, methods, modules (spans, nesting, visibility). | | `--imports` | Import statements and their sources. | | `--exports` | Exported symbols and their kinds. | | `--comments` | Inline and block comments. | | `--docstrings` | Docstrings attached to definitions. | | `--symbols` | All identifiers (for search/indexing). | | `--diagnostics` | Syntax errors and error nodes with positions. | | `--all` | Enable every feature above. | | `--chunk-size <bytes>` | Syntax-aware chunks — see `chunking-for-llms`. | | `--language <name>` (`-l`) | Override language (auto-detected from extension otherwise). | ## Result shape `process` always prints JSON. Top-level keys: ```json { "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 ```bash # 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 ```python 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 `parsing-source` skill.
Auf GitHub ansehen