tsq
Purpose
Use this skill when you need structured, language-aware insight into code: declarations, references, outlines, and precise AST pattern matches. tsq is best for targeted extraction and analysis that would be noisy with text search.
When to use what
tsq query: Use for custom AST patterns and precise structural matching. Best when you need specific constructs or relationships in the syntax tree.tsq symbols: Use to catalog declarations (functions, types, methods, variables) across files for indexing or summaries.tsq outline: Use to get a high-level file structure (package/module, imports, top-level symbols) when you need quick orientation.tsq refs: Use to find usages of a symbol across a codebase.tsq example-queries: Use only to discover query syntax and patterns. It is a reference, not a required step.
Core concepts
- Tree-sitter queries use capture names (e.g.,
@name) to extract data. Queries without captures return matches with no usable payload. - Use
--filefor a single file,--pathto scan a directory. - Prefer
symbolsoroutlinewhen you do not need a custom query.
Recommended workflow
- Start with
outlinefor a quick map of a file. - Use
symbolsto gather relevant declarations. - Use
refsto trace usage. - Use
queryfor precise AST patterns or advanced filtering.
Minimal cross-language examples
These patterns are representative; adjust node types and names for the target language grammar.
; Function declarations (capture the whole node)
(function_declaration) @fn
; Function names only
(function_declaration name: (identifier) @name)
; Method calls (object.method())
(call_expression
function: (selector_expression
operand: (_) @receiver
field: (field_identifier) @method))
; Type definitions (struct/class-like)
(type_declaration
(type_spec
name: (type_identifier) @name
type: (_) @type_def))
; Imports (module paths)
(import_spec path: (interpreted_string_literal) @path)
JSON output schemas
Tip: pipe tsq ... output into jq to extract exactly what you need, e.g.
tsq symbols --path . --compact | jq '.[].symbols[] | select(.kind=="function") | .name'
tsq query -> []QueryMatch
[
{
"file": "path/to/file.go",
"pattern": 0,
"captures": [
{
"name": "name",
"node_type": "identifier",
"text": "Foo",
"range": {
"start": { "line": 12, "column": 6 },
"end": { "line": 12, "column": 9 }
}
}
]
}
]
tsq symbols -> []SymbolsResult
[
{
"file": "path/to/file.go",
"symbols": [
{
"name": "Foo",
"kind": "function|type|method|var|const|interface|struct|field",
"visibility": "public|private",
"file": "path/to/file.go",
"range": {
"start": { "line": 12, "column": 1 },
"end": { "line": 20, "column": 2 }
},
"signature": "func Foo(...) ...",
"source": "func Foo() { ... }",
"receiver": "MyType",
"doc": "Doc comment text"
}
]
}
]
tsq outline -> FileOutline
{
"file": "path/to/file.go",
"package": "main",
"imports": [{ "path": "fmt", "alias": "f" }],
"symbols": [
{
"name": "Foo",
"kind": "function|method|struct|interface|type|const|var",
"visibility": "public|private",
"file": "path/to/file.go",
"range": {
"start": { "line": 12, "column": 1 },
"end": { "line": 20, "column": 2 }
},
"source": "func Foo() { ... }",
"receiver": "MyType"
}
]
}
tsq refs -> RefsResult
{
"symbol": "Foo",
"references": [
{
"symbol": "Foo",
"kind": "call|type_ref|field_access|identifier|reference",
"file": "path/to/file.go",
"position": { "line": 42, "column": 7 },
"context": "Foo()"
}
]
}
Errors (stderr)
{ "error": "message" }
More from arjunmahishi/dotfiles
acli-jira
Use acli to manage Jira tickets -- search, view, create, edit, transition, assign, comment, and more from the command line.
147pup
Use pup to query Datadog metrics and logs -- search, query, aggregate, list, and analyze observability data from the command line.
8excalidraw-obsidian
Create or update Excalidraw diagrams in the Obsidian vault as .md files compatible with the obsidian-excalidraw-plugin.
6tmux
>
2playwright-cli
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
2