| name | detecting-languages |
| description | 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. |
Detecting languages
tree-sitter-language-pack maps a file to one of 306 supported languages.
Detection works from a file path, a bare extension, or — via the SDK — the
file content itself.
On the CLI: detection is implicit
There is no standalone ts-pack detect command. parse and process
auto-detect the language from the file extension and act on it:
ts-pack parse src/app.ts
ts-pack process app.py
When detection fails (no extension, ambiguous, or stdin), pass --language:
cat snippet | ts-pack parse - --language go
To check whether a language name is supported and cached without parsing
anything, use list and info:
ts-pack list --filter type
ts-pack list --manifest
ts-pack info typescript
In the SDK: explicit detection
The core exposes three detection functions, including content-based
detection that the CLI does not surface:
| Function | Detects from |
|---|
detect_language_from_path(path) | Full path (uses the extension). |
detect_language_from_extension(ext) | A bare extension like "rs". |
detect_language_from_content(content) | Raw source text — no path needed. |
Each returns the language name or null/None when no grammar matches.
Python
from tree_sitter_language_pack import (
detect_language_from_path,
detect_language_from_extension,
detect_language_from_content,
)
detect_language_from_path("src/app.py")
detect_language_from_extension("rs")
detect_language_from_content(open("x").read())
Node.js / TypeScript
import { detectLanguageFromPath, detectLanguageFromContent } from "@kreuzberg/tree-sitter-language-pack";
const lang = detectLanguageFromPath("src/app.ts") ?? detectLanguageFromContent(source);
Choosing CLI vs SDK
- Path or extension is enough, one-shot → just run
ts-pack parse/process
and let it auto-detect.
- Only raw content (a pasted snippet, a stream, a file with no extension) →
use the SDK's
detect_language_from_content, then pass the result as
--language to the CLI if needed.
When to reach for the other skills
Once the language is known, hand off to parsing-source (syntax tree) or
extracting-code-structure (metadata). To see or prefetch the parser for a
detected language, see managing-parsers.