ts-inspect

A read-only command-line tool that asks the TypeScript compiler for exact information about code symbols. It can show parameters, return types, properties, signatures, definitions, and the type at a location.

In plain words
What is it for?
Use it to inspect function parameters and return types, interface properties, symbol types, definitions, and types at specific locations.
Why use it?
It avoids guessing types from nearby code or searching many files when the compiler already knows the answer. It also resolves configured TypeScript path aliases through the project's tsconfig.json.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/brainy-builds/ts-inspect-cli/ts-inspect
Clone the repo
git clone --depth 1 https://github.com/Brainy-Builds/ts-inspect-cli

Made for: Cursor.

Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 1,537 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.01537
Opus 5 $0.00000 $0.00768
Sonnet 5 $0.00000 $0.00307
Haiku 4.5 $0.00000 $0.00154

Measured 2d ago against content hash 16bc76116463, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

ts-inspect scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/ts-inspect.mdc · 168 lines

How it starts

The opening of the file, as written. The whole thing — 168 lines — stays where its author put it; the contents beside it link to each section on GitHub.

ts-inspect: Semantic Type Information

When an agent needs compiler-derived TypeScript information, prefer the local read-only ts-inspect CLI over opening many source files, guessing types from call sites, or plain-text grep for semantic questions. It answers compiler-resolved questions through ts-morph and emits compact deterministic JSON to stdout. It never modifies source files.

How to run

npx ts-inspect <command> <symbol|location|file>

The ts-inspect bin also works directly when it is on PATH:

ts-inspect <command> <symbol|location|file>

Prefer npx ts-inspect for portability, since the bin may not be on PATH in every project.

The CLI loads the project from the repository's tsconfig.json (discovered by walking up from the current working directory), so all configured compilerOptions.paths aliases resolve correctly through ts-morph. No manual alias parsing is performed.

Command cheat-sheet

  • Function parameters: npx ts-inspect params handleSubmit
  • Resolved return type: npx ts-inspect return fetchUser
  • Object/interface properties: npx ts-inspect properties UserConfig
  • Type of a symbol: npx ts-inspect type getButtonStyle
  • Type at a location: npx ts-inspect type src/path/to/file.ts:4:17
  • Signatures (overloads preserved): npx ts-inspect signature getButtonStyle
  • Declarations: npx ts-inspect definition generateSlug
  • Precise snapshot at a location: npx ts-inspect at src/hooks/useAuth.ts:10:15
  • Module imports: npx ts-inspect imports src/hooks/useAuth.ts
  • Module exports: npx ts-inspect exports src/utils/format.ts

Location syntax

relative/path/to/file.ts:LINE:COLUMN (also .tsx / .mts / .cts). Line and column are 1-based. Example:

npx ts-inspect at src/hooks/useAuth.ts:10:15

Usage hierarchy

Need exact TypeScript type information?
	-> ts-inspect

Need function object parameters?
	-> ts-inspect params

Need the resolved return type?
	-> ts-inspect return

Need object/interface properties?
	-> ts-inspect properties

Need the type of a symbol or at a location?
	-> ts-inspect type

Need call signatures (overloads preserved)?
	-> ts-inspect signature

Need where a symbol is declared?
	-> ts-inspect definition

Know an exact file location?
	-> ts-inspect at FILE:LINE:COLUMN

Need the imports of a file?
	-> ts-inspect imports FILE

Need the exports of a file?
	-> ts-inspect exports FILE

Need an AST structural pattern?
	-> ast-grep, if installed

Need plain text/string search?
	-> ripgrep

Need compiler validation?
	-> tsc --noEmit

Need lint/style enforcement?
	-> ESLint

Read the full file on GitHub · 168 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 168 lines · 0 tokens per session scan A 16bc76116463

Subscribe to this mod's changes

ts-inspect is a cursor rule published in the GitHub repository Brainy-Builds/ts-inspect-cli (2 stars, last pushed 13d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,537 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.