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.
npx skills add JSungMin/vs-token-safer --skill vs-searchgit clone --depth 1 https://github.com/JSungMin/vs-token-saferWrote 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.
[](https://agentmods.dev/skills/jsungmin/vs-token-safer/vs-search)<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.
<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>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00109 | $0.02092 |
| Opus 5.5 | $0.00044 | $0.00837 |
| Sonnet 5.5 | $0.00022 | $0.00418 |
| Haiku 4.5 | $0.00011 | $0.00209 |
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 1mo 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.
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.
Tools (MCP server name: vs-search)
- Symbol / class / function / type / variable →
search_symbol(args:q,projectPath,backend,maxResults). Nevergrep/rgfor this. - References / usages of a symbol →
find_references(args:symbolNAME, orpath+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 LSPcallHierarchy, instead of flat references. - Definition of a symbol →
goto_definition(args:path,line,character— 0-based). Thekindarg 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) usefind_referencesinstead. - 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, optionalpath/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, orscope="directory"to scan the project). Token-cappedfile: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 ased. Preview by default;apply=truewrites 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, optionalpath/line,apply). - Add a declaration next to one →
insert_symbol(args:symbol,text,position=afterdefault /before,apply). - Remove a declaration →
safe_delete(args:symbol,force,apply). Refuses while it's still referenced unlessforce=true. - The outline supplies the exact span, so you skip reading the whole file into context. Preview by default;
apply=truewrites. 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=truewrite auto-runsp4 editon 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 withVTS_P4_EDIT=0.
- Replace a function/method/class body (signature included) →
- 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). Replacesfind -name. - Admin/meta (rarely needed reflexively) →
vts_adminwith anop: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 inparams, e.g.vts_admin {op:"git", params:{argv:["status"]}}. (CLI keeps the bare subcommands:vts setup,vts git, …) - Log file (
.log/.jsonl, or aLogs/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.
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.
- 1mo ago First seen · 74 lines · 109 tokens per session scan A e929a74e125b
vs-search is a skill published in the GitHub repository JSungMin/vs-token-safer (13 stars, last pushed 20d ago), licensed MIT. It adds 109 tokens to every session and 2,092 once invoked, about $0.0004 per session on Opus 5.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.
Other skills, from other repositories
clipper1
Use when maintaining legacy code on the Clipper 1.x API — IntPoint integer paths with a scale factor, Clipper.AddPath/Execute for ctUnion/ctIntersection/ctDifference/ctXor, ClipperOffset for jtRound/jtMiter buffering, PolyTree hole hierarchy, and the pyclipper (1.4.0) / js-clipper bindings. Clipper1 V6 (6.4.2) is…
clipper2
Use when doing 2D polygon boolean ops (Union/Intersect/Difference/Xor) or offsetting (InflatePaths) with Clipper2 — PathD/PathsD floating mode and Path64/Paths64 integer mode, ClipperD precision, PolyTreeD hole hierarchy, FillRule and JoinType tuning. Available via NuGet Clipper2 (2.0.0), vcpkg, npm clipper2-js, and…
blockchain-bitcoin
Use this skill when asked about Bitcoin internals, Bitcoin Core, Bitcoin Script, Taproot, mining, Proof of Work, Lightning Network, BIP standards, Ordinals, BRC-20, Runes, Bitcoin L2s (Stacks, RSK, Babylon), and Bitcoin protocol development. Languages: C++, Rust, Python, Clarity. Covers Bitcoin Core C++ implementation…
blockchain-core
Use this skill when asked about blockchain fundamentals, consensus mechanisms, PoW, PoS, gas, staking, blockchain data structures, DAG consensus, Avalanche, MEV, PBS, economic security, blockchain node implementation. Languages: C++, Go. Covers core protocol engineering including consensus algorithms (Nakamoto, PBFT…
game-engine-development
Skill de implementacao real de codigo de engine de jogo — Unity C# e Unreal C++. Cobre padroes de MonoBehaviour, ScriptableObject, object pooling, state machine, ECS, componentes de Actor/UPROPERTY/ UFUNCTION do Unreal, otimizacao de performance (profiling, batching, LOD, culling, garbage collection), e networking…
dotnet-pinvoke
Correctly call native (C/C++) libraries from .NET using P/Invoke and LibraryImport. Covers function signatures, string marshalling, memory lifetime, SafeHandle, and cross-platform patterns. USE FOR: writing new P/Invoke or LibraryImport declarations, reviewing or debugging existing native interop code, wrapping a C or…