# Managing Parsers

> Use when the user needs to manage the tree-sitter parser cache — prefetch parsers for offline or CI runs, list what is downloaded, inspect a language, find the cache directory, or clean it. Covers `ts-pack download`, `list`, `info`, `cache-dir`, `clean`, and `init`.

- Skill: `kreuzberg-dev/managing-parsers` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kreuzberg-dev/managing-parsers`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kreuzberg-dev/managing-parsers/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kreuzberg-dev (https://skillmd.com/u/kreuzberg-dev)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/kreuzberg-dev/managing-parsers

---


<!--
AI-RULEZ :: GENERATED FILE — DO NOT EDIT
Content-Hash: blake3:6e456e7b331cbfaa263a01ad7c9c407c10cb105b605e6460b0192d9d035e2814
Source-Hash: blake3:0ea306aa0c0ca9bee85179b4f8c1d90fe853693a25a18ddd111b9160ff6fc800
Schema-Version: v1
-->

# Managing parsers

Parser libraries download on demand the first time a language is used and
are cached on disk. Manage that cache explicitly for offline work, CI
prefetch, reproducible builds, or to reclaim space.

> Note: parser cache management (`download`, `clean`, `init`) is done via the
> `ts-pack` CLI directly. The OpenCode tools expose only parse/process/info.

## Prefetch (offline / CI)

```bash
ts-pack download python rust typescript   # specific languages
ts-pack download --all                    # every available language
ts-pack download --groups web,systems     # by group
ts-pack download python --fresh           # clean cache first, then download
```

Available groups: `web`, `systems`, `scripting`, `data`, `jvm`,
`functional` (comma-separated for `--groups`). Run `download` in your CI
setup step so later `parse`/`process` calls hit the cache instead of the
network.

## Inspect

```bash
ts-pack list                 # all available languages
ts-pack list --downloaded    # only languages currently cached
ts-pack list --manifest      # everything in the remote manifest
ts-pack list --filter script # filter by name substring

ts-pack info python          # known? downloaded? cache path?
ts-pack cache-dir            # print the effective cache directory
```

## Clean

```bash
ts-pack clean           # prompts for confirmation
ts-pack clean --force   # skip the prompt (use in scripts/CI)
```

`clean` removes all cached parser libraries; they re-download on next use.

## Config file (init)

`ts-pack init` writes a `language-pack.toml` to the current directory
pinning a cache location and/or a language set. This **writes a file** to
the working directory.

```bash
ts-pack init --languages python,rust --cache-dir .ts-pack-cache
```

Resulting `language-pack.toml`:

```toml
cache_dir = ".ts-pack-cache"
languages = ["python", "rust"]
```

With no flags, `init` writes a commented template. When `--languages` (or a
group set) is given, `init` also triggers the download for those languages.
Commit `language-pack.toml` to pin the parser set across a team or CI.

## Typical CI flow

```bash
ts-pack init --languages python,rust,typescript --cache-dir .ts-pack-cache
# ... later steps run parse/process offline against the warm cache ...
ts-pack list --downloaded   # assert the expected parsers are present
```

## When to reach for the other skills

Once parsers are cached, use `parsing-source` to get syntax trees and
`extracting-code-structure` to pull metadata. `info`/`list` here also serve
the language-support checks described in `detecting-languages`.

