vs-search

vs-search is a skill for Claude Code, Codex from JSungMin/vs-token-safer. It costs 109 tokens per session (2,092 once invoked), scanned A, original, MIT.

A code-search guide for C/C++, C#/.NET, JavaScript/TypeScript, and Python projects. It uses each language’s own code index to locate symbols and relationships without opening an IDE.

In plain words
What is it for?
Finding where a class, function, variable, or type is defined or used; locating implementations; and checking callers or callees before changing code.
Why use it?
It avoids unreliable text searches and limits results to a compact list of files and lines, so searches use less context. It can also show semantic references and call relationships rather than matching words only.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions subagents.

Part of the vs-token-safer plugin — 3 skills, 6 commands, 1 agent, 1 MCP server, 1 plugin shipped together

Good fit Finding where a class, function, variable, or type is defined or used; locating implementations; and checking callers or callees before changing code.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/jsungmin/vs-token-safer/vs-search
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.

Any agent
npx skills add JSungMin/vs-token-safer --skill vs-search
Clone the repo
git clone --depth 1 https://github.com/JSungMin/vs-token-safer

Made for: Claude Code, Codex.

Or install vs-token-safer, the plugin that ships this one along with the rest of its 3 skills, 6 commands, 1 agent, 1 MCP server, 1 plugin.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for vs-search

README.md
[![agentmods](https://agentmods.dev/badge/skills/jsungmin/vs-token-safer/vs-search/github.svg)](https://agentmods.dev/skills/jsungmin/vs-token-safer/vs-search)
Your own site
<a href="https://agentmods.dev/skills/jsungmin/vs-token-safer/vs-search"><img src="https://agentmods.dev/badge/skills/jsungmin/vs-token-safer/vs-search/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for vs-search

Your own site · 80×15
<a href="https://agentmods.dev/skills/jsungmin/vs-token-safer/vs-search"><img src="https://agentmods.dev/badge/skills/jsungmin/vs-token-safer/vs-search.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 109 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,092 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00109 $0.02092
Opus 5 $0.00055 $0.01046
Sonnet 5 $0.00022 $0.00418
Haiku 4.5 $0.00011 $0.00209

Measured 10d ago against content hash e929a74e125b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

vs-search 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 10d 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.

skills/vs-search/SKILL.md · 74 lines

How it starts

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

vs-token-safer search routing

Code search runs through an OFFICIAL language server's index (clangd for C++, a Roslyn-based LSP for C#) and the result is token-capped to a compact file:line list — no source bodies. No IDE needs to be open; the engine is spawned headlessly. Karpathy-style rules: do the listed thing, do not improvise.

  • Symbol / class / function / type / variable → search_symbol (args: q, projectPath, backend, maxResults). Never grep/rg for this.
  • References / usages of a symbol → find_references (args: symbol NAME, or path+line+character — 0-based — includeDeclaration). Semantic, not a text match. direction=callers/callees + depth → a multi-hop call hierarchy (transitive callers = blast radius before an edit / callees) via LSP callHierarchy, instead of flat references.
  • Definition of a symbol → goto_definition (args: path, line, character — 0-based). The kind arg picks WHICH: definition (default) · type_definition (the type of an expression) · implementation (concrete impls of an interface/abstract/virtual — "who implements this?") · declaration. For every usage (not the definition) use find_references instead.
  • Type / signature at a position → hover (args: path, line, character).
  • Outline a file (its classes/functions) → document_symbols (args: path; scope="directory" → a signatures-only skeleton of every code file under a dir, to grasp a module's shape without reading each file).
  • Read ONE declaration's source (not the whole file) → read_symbol (args: symbol, optional path/line, signatureOnly). The read-side twin of the edit tools — name a symbol, get just its body. Prefer over the built-in Read when you only need one declaration.
  • Errors / warnings → diagnostics (args: path, or scope="directory" to scan the project). Token-capped file:line:col severity: message, sorted error→hint with a count summary — read this instead of the raw build/compiler output.
  • Rename a symbol project-wide → rename (args: path, line, character, newName, apply). Semantic (every reference), not a sed. Preview by default; apply=true writes the edits.
  • Add / replace / delete a WHOLE declaration → edit it by NAME, don't Read-the-file-then-Edit:
    • Replace a function/method/class body (signature included) → replace_symbol_body (args: symbol, body, optional path/line, apply).
    • Add a declaration next to one → insert_symbol (args: symbol, text, position = after default / before, apply).
    • Remove a declaration → safe_delete (args: symbol, force, apply). Refuses while it's still referenced unless force=true.
    • The outline supplies the exact span, so you skip reading the whole file into context. Preview by default; apply=true writes. Use the built-in Edit for a sub-declaration tweak (a few lines inside a body); use these when the unit is the whole declaration.
    • Perforce: an apply=true write auto-runs p4 edit on a read-only file first (symbol edits write via the server, so a built-in Edit/Write p4 hook never sees them). Read-only-gated, so a git repo never calls p4; disable with VTS_P4_EDIT=0.
  • Raw text / string / comment / config key (the symbol index can't answer) → search_text (args: q, projectPath). Token-capped; the sanctioned grep replacement.
  • File by name (substring or glob) → find_files (args: q, projectPath). Replaces find -name.
  • Admin/meta (rarely needed reflexively) → vts_admin with an op: config/setup (settings), savings/savings_reset (token ledger), warmup (pre-build the index), discover (find searches that bypassed vts), gen_compile_db (UE clangd DB), git/p4 (read-only VCS, output compacted). Put the op's args in params, e.g. vts_admin {op:"git", params:{argv:["status"]}}. (CLI keeps the bare subcommands: vts setup, vts git, …)
  • Log file (.log/.jsonl, or a Logs/ dir) → NOT a vs-search tool. The language-server index covers source, not logs — use gamedev-log (/gamedev-log-analyzer:logs). vts-search results aimed at a log carry a one-line pointer there.

Read the full file on GitHub · 74 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. 10d ago First seen · 74 lines · 109 tokens per session scan A e929a74e125b

Subscribe to this mod's changes

vs-search is a skill published in the GitHub repository JSungMin/vs-token-safer (11 stars, last pushed today), licensed MIT. It adds 109 tokens to every session and 2,092 once invoked, about $0.0005 per session on Opus 5. 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-30.

Related

Other skills, from other repositories

clipper1

Use when maintaining legacy code that depends on Clipper 1.x API for polygon clipping and offsetting. Clipper1: the original widely-deployed polygon boolean library. Prefer Clipper2 for new projects.

znlgis/opengis-skills · 46 tokens

clipper2

Use when performing high-performance 2D polygon boolean operations (union, intersection, difference, XOR) and offsetting via C++, C#, or Python bindings. Clipper2: the modern polygon clipping library with robust numerical handling.

znlgis/opengis-skills · 50 tokens

aspnet-core

ASP.NET Core 8+ with controllers, services, DI, configuration, and middleware pipeline. Covers Program.cs setup and enterprise patterns. USE WHEN: user mentions "ASP.NET Core", "Web API", ".NET controllers", "Program.cs", "dependency injection", ".NET DI", ".NET configuration", "appsettings" DO NOT USE FOR: Minimal…

claude-dev-suite/claude-dev-suite · 111 tokens

aspnet-middleware

ASP.NET Core custom middleware, pipeline order, exception handling middleware, and request/response manipulation. USE WHEN: user mentions "middleware", "request pipeline", "exception middleware", "ASP.NET middleware", "UseMiddleware", "pipeline order" DO NOT USE FOR: Express middleware - use express, NestJS middleware…

claude-dev-suite/claude-dev-suite · 73 tokens

aspnet-validation

ASP.NET Core validation with FluentValidation, Data Annotations, and model validation. Covers custom validators and validation pipeline. USE WHEN: user mentions "FluentValidation", "Data Annotations", "model validation", ".NET validation", "input validation", "validator", "validation pipeline" DO NOT USE FOR: Spring…

claude-dev-suite/claude-dev-suite · 85 tokens

aspnet-blazor

Blazor Server, WebAssembly, and United (Auto) with components, interop, and render modes. Covers .NET 8+ Blazor patterns. USE WHEN: user mentions "Blazor", "Blazor Server", "Blazor WASM", "Blazor WebAssembly", "Blazor components", "render modes", "Blazor interop" DO NOT USE FOR: Angular components - use angular, React…

claude-dev-suite/claude-dev-suite · 106 tokens