detecting-languages

SkillFiles & storage

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.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the detecting-languages skill

What this skill tells your AI

The instructions your AI receives, as published by xberg-io/tree-sitter-language-pack in plugin/skills/detecting-languages/SKILL.md and read by ahel’s review.

Detecting languages

tree-sitter-language-pack maps a file to one of 371 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      # detects "typescript", parses
ts-pack process app.py        # detects "python", extracts

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      # languages whose name contains "type"
ts-pack list --manifest         # every language in the remote manifest
ts-pack info typescript         # is it known? is it downloaded? cache path?

In the SDK: explicit detection

The core exposes three detection functions, including content-based detection that the CLI does not surface:

FunctionDetects 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")      # "python"
detect_language_from_extension("rs")          # "rust"
detect_language_from_content(open("x").read())  # from the shebang line, if present

Node.js / TypeScript

import { detectLanguageFromPath, detectLanguageFromContent } from "@xberg-io/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.

Signals

GitHub stars
465
Forks
68
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
detecting-languages
Source
github.com/xberg-io/tree-sitter-language-pack