Vexor CLI Skill
Goal
Find files by intent (what they do), not exact text.
Use It Like This
- Use
vexor first for intent-based file discovery.
- If
vexor is missing, follow references/install-vexor.md.
Command
vexor "<QUERY>" [--path <ROOT>] [--mode <MODE>] [--ext .py,.md] [--exclude-pattern <PATTERN>] [--top 5] [--content] [--format rich|porcelain|porcelain-z|json]
Common Flags
--path/-p: root directory (default: current dir)
--mode/-m: indexing/search strategy
--ext/-e: limit file extensions (e.g., .py,.md)
--exclude-pattern: exclude paths by gitignore-style pattern (repeatable; .js → **/*.js)
--top/-k: number of results
--include-hidden: include dotfiles
--no-respect-gitignore: include ignored files
.vexorignore project rules always apply, even with --no-respect-gitignore.
--no-recursive: only the top directory
--format: rich (default), porcelain/porcelain-z for scripts, json for full output with chunk content
--content: print each match's source text below the table — usually removes the need to read the files afterwards
--no-cache: in-memory only, do not read/write index cache
vexor index --local: create and use project-local .vexor/ cache storage
Project Config
- The nearest
.vexor/config.json applies automatically for the resolved
search or index path.
- It accepts only
rerank, auto_index, model, embedding_dimensions,
batch_size, embed_concurrency, and extract_concurrency.
batch_size must be at least 0; both concurrency values must be at least
1.
- Credentials and endpoints (
api_key, base_url, remote_rerank) and all
other fields are rejected.
- Precedence is global config, project config, environment overrides, then
explicit arguments.
vexor config --show labels each field's origin and vexor doctor lists
active overrides; mutating vexor config commands remain global-only.
Modes (pick the cheapest that works)
auto: routes by file type (default)
name: filename-only (fastest)
head: first lines only (fast)
brief: keyword summary (good for PRDs)
code: code-aware chunking for .py/.js/.ts (best default for codebases)
outline: Markdown headings/sections (best for docs)
full: chunk full file contents (slowest, highest recall)
Troubleshooting
- Searching for an exact identifier (function/class/constant name) with weak results: suggest
vexor config --rerank hybrid once — it fuses exact lexical matching with semantic search.
- Need ignored or hidden files: add
--include-hidden and/or --no-respect-gitignore.
- Scriptable output: use
--format porcelain (TSV) or --format porcelain-z (NUL-delimited).
- Get detailed help:
vexor search --help.
- Config issues:
vexor doctor or vexor config --show reports effective values and their origins.
Examples
# Find CLI entrypoints / commands
vexor search "typer app commands" --top 5
# Search docs by headings/sections
vexor search "user authentication flow" --path docs --mode outline --ext .md --format porcelain
# Locate config loading/validation logic
vexor search "config loader" --path . --mode code --ext .py
# Exclude tests and JavaScript files
vexor search "config loader" --path . --exclude-pattern tests/** --exclude-pattern .js
# Read the matching code directly, without a follow-up file read
vexor search "where JWT claims are validated" --path . --mode code --content
Tips
- First time search will index files (may take a minute). Long-lived MCP or
Python client sessions reuse mapped vectors, monitor source changes, and skip
some snapshot scans. Watcher setup failures fall back to scanning. Separate
CLI invocations still validate the filesystem. Use longer timeouts if needed.
- Results return similarity ranking, exact file location, line numbers, and matching snippet preview.
- Add
--content (or --format json) to get the matching source text in the same call, and skip reading those files separately. The text sits at content_start_line..content_end_line, which can begin later than the result's start_line when a long symbol was indexed as several chunks. If a result shows stale_line_range, the file changed since indexing — re-run vexor index. Content is capped per response, so lower-ranked results may report budget_exhausted.
- Combine
--ext with --exclude-pattern to focus on a subset (exclude rules apply on top).
1---2name: vexor-cli3description: Semantic file discovery via `vexor`. Use whenever locating where something is implemented/loaded/defined in a medium or large repo, or when the file location is unclear. Prefer this over manual browsing.4---56# Vexor CLI Skill78## Goal910Find files by intent (what they do), not exact text.1112## Use It Like This1314- Use `vexor` first for intent-based file discovery.15- If `vexor` is missing, follow [references/install-vexor.md](references/install-vexor.md).1617## Command1819```bash20vexor "<QUERY>" [--path <ROOT>] [--mode <MODE>] [--ext .py,.md] [--exclude-pattern <PATTERN>] [--top 5] [--content] [--format rich|porcelain|porcelain-z|json]21```2223## Common Flags2425- `--path/-p`: root directory (default: current dir)26- `--mode/-m`: indexing/search strategy27- `--ext/-e`: limit file extensions (e.g., `.py,.md`)28- `--exclude-pattern`: exclude paths by gitignore-style pattern (repeatable; `.js` → `**/*.js`)29- `--top/-k`: number of results30- `--include-hidden`: include dotfiles31- `--no-respect-gitignore`: include ignored files32- `.vexorignore` project rules always apply, even with `--no-respect-gitignore`.33- `--no-recursive`: only the top directory34- `--format`: `rich` (default), `porcelain`/`porcelain-z` for scripts, `json` for full output with chunk content35- `--content`: print each match's source text below the table — usually removes the need to read the files afterwards36- `--no-cache`: in-memory only, do not read/write index cache37- `vexor index --local`: create and use project-local `.vexor/` cache storage3839## Project Config4041- The nearest `.vexor/config.json` applies automatically for the resolved42 search or index path.43- It accepts only `rerank`, `auto_index`, `model`, `embedding_dimensions`,44 `batch_size`, `embed_concurrency`, and `extract_concurrency`.45- `batch_size` must be at least `0`; both concurrency values must be at least46 `1`.47- Credentials and endpoints (`api_key`, `base_url`, `remote_rerank`) and all48 other fields are rejected.49- Precedence is global config, project config, environment overrides, then50 explicit arguments.51- `vexor config --show` labels each field's origin and `vexor doctor` lists52 active overrides; mutating `vexor config` commands remain global-only.5354## Modes (pick the cheapest that works)5556- `auto`: routes by file type (default)57- `name`: filename-only (fastest)58- `head`: first lines only (fast)59- `brief`: keyword summary (good for PRDs)60- `code`: code-aware chunking for `.py/.js/.ts` (best default for codebases)61- `outline`: Markdown headings/sections (best for docs)62- `full`: chunk full file contents (slowest, highest recall)6364## Troubleshooting6566- Searching for an exact identifier (function/class/constant name) with weak results: suggest `vexor config --rerank hybrid` once — it fuses exact lexical matching with semantic search.67- Need ignored or hidden files: add `--include-hidden` and/or `--no-respect-gitignore`.68- Scriptable output: use `--format porcelain` (TSV) or `--format porcelain-z` (NUL-delimited).69- Get detailed help: `vexor search --help`.70- Config issues: `vexor doctor` or `vexor config --show` reports effective values and their origins.7172## Examples7374```bash75# Find CLI entrypoints / commands76vexor search "typer app commands" --top 577```7879```bash80# Search docs by headings/sections81vexor search "user authentication flow" --path docs --mode outline --ext .md --format porcelain82```8384```bash85# Locate config loading/validation logic86vexor search "config loader" --path . --mode code --ext .py87```8889```bash90# Exclude tests and JavaScript files91vexor search "config loader" --path . --exclude-pattern tests/** --exclude-pattern .js92```9394```bash95# Read the matching code directly, without a follow-up file read96vexor search "where JWT claims are validated" --path . --mode code --content97```9899## Tips100101- First time search will index files (may take a minute). Long-lived MCP or102 Python client sessions reuse mapped vectors, monitor source changes, and skip103 some snapshot scans. Watcher setup failures fall back to scanning. Separate104 CLI invocations still validate the filesystem. Use longer timeouts if needed.105- Results return similarity ranking, exact file location, line numbers, and matching snippet preview.106- Add `--content` (or `--format json`) to get the matching source text in the same call, and skip reading those files separately. The text sits at `content_start_line`..`content_end_line`, which can begin later than the result's `start_line` when a long symbol was indexed as several chunks. If a result shows `stale_line_range`, the file changed since indexing — re-run `vexor index`. Content is capped per response, so lower-ranked results may report `budget_exhausted`.107- Combine `--ext` with `--exclude-pattern` to focus on a subset (exclude rules apply on top).