Borrowing it
Nothing to install: this file belongs to luthersystems/elps. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/luthersystems/elps/main/.claude/skills/elpsvet/SKILL.mdgit clone --depth 1 https://github.com/luthersystems/elpsWrote 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/luthersystems/elps/elpsvet)<a href="https://agentmods.dev/skills/luthersystems/elps/elpsvet"><img src="https://agentmods.dev/badge/skills/luthersystems/elps/elpsvet/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/luthersystems/elps/elpsvet"><img src="https://agentmods.dev/badge/skills/luthersystems/elps/elpsvet.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.00000 | $0.06184 |
| Opus 5.5 | $0.00000 | $0.02474 |
| Sonnet 5.5 | $0.00000 | $0.01237 |
| Haiku 4.5 | $0.00000 | $0.00618 |
Grade A, and why
elpsvet 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.
How it starts
The opening of the file, as written. The whole thing — 361 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/elpsvet — elps's Own Go Static Analysis
cmd/elpsvet is a golang.org/x/tools/go/analysis multichecker over elps's
own Go source. It enforces invariants the compiler cannot, and CI runs it on
every PR (Seal contract (elpsvet) in .github/workflows/elps.yml).
Trigger
Use when:
make elpsvet(or the CI step) reports a diagnostic;- you add a native payload (
lisp.Native,lisp.NativeOf, a.Nativewrite) or a new payload type (it needs a durable codec or a transient mark, see "Durable natives"); - you add a package-level table holding
*lisp.LVal(e.g. a stdlibbuiltinsslice), writeLValfields, or store a*token.Location; - you register a builtin as a method value or closure, or give one package-level state;
- you touch
Packagetables,packageBase,sortedmap.m, or the lazy template path (lisp/template_lazy.go); - you change an analyzer rule, a tier, or an allowlist;
- a library builtin evaluates code, builds a lambda, reads
Runtime.Packageor resolves a symbol it was handed (elpsownpkg: take a value, qualify the name, or turn it into a macro over core forms).
The thirteen rules
| Analyzer | File | Flags | Suppression marker |
|---|---|---|---|
elpsownership |
main.go |
package-level var whose type reaches *lisp.LVal (#363) |
//elpsvet:allow <reason> |
elpsfreshness |
freshness.go, alias.go |
LVal field write on a value the function did not construct, incl. via a local slice alias (#333/#334, #369/#371) |
//elps:mutates <reason> |
elpsescape |
escape.go |
runtime-owned *token.Location stored uncopied into an escaping value (#375) |
//elps:aliases <reason> |
elpsnativepayload |
elpsvet/nativepayload/nativepayload.go (importable) |
native payload whose type a template could not publish safely | //elpsvet:allow-native <≥3-word reason> |
elpsbuiltinstate |
elpsvet/builtinstate/builtinstate.go (importable) |
a builtin that writes state outliving the call: its receiver, a captured variable, or a package-level var (#680, the class behind #678) | //elpsvet:allow-shared <≥3-word reason> |
elpsfrozenpackage |
frozenpackage.go |
a write to Package tables or a packageBase field outside the audited write paths |
allowlist row in packageWriteFunctions (no marker) |
elpslazyread |
lazyread.go |
a direct read of Package.symbols, Package.baseValues or sortedmap.m that bypasses the lazy-filling accessor |
allowlist row in lazyTableFunctions (no marker) |
elpsownpkg |
elpsvet/ownpkg/ownpkg.go (importable) |
inside a library builtin (LBuiltin shape, outside package lisp): Eval*, Load*, Lambda, Terminal, InPackage, a Runtime.Package read, or a symbol lookup that is not a literal qualified name -- a library builtin runs in its own package (#736) |
//elpsvet:allow-ownpkg <≥3-word reason> |
elpsltypeswitch |
ltypeswitch.go |
an audited lisp.LType switch has a default arm or misses a constant |
scope list in the analyzer (no marker) |
elpsvalwalker |
valwalker.go |
a function dispatches on lisp.LType and recurs or pushes child values in a loop |
in elps: audited pkgpath.FuncName row in valueWalkerFunctions; in another module: //elpsvet:allow-valwalker <≥3-word reason> in the declared function's doc comment (ignored inside elps) |
elpsmarkerfields |
markerfields.go |
a struct carrying templatepolicy.Marker whose fields reach a map, slice, pointer, func, chan, interface, uintptr, unsafe.Pointer or type parameter, through nested structs and arrays; covers types in function bodies, type T U and anonymous struct literals (luthersystems/elps#778) |
//elpsvet:allow-marker <≥3-word reason> on the type doc, or on a field line or the line above (any nesting depth) |
elpsdurablenative |
elpsvet/nativepayload/durable.go (importable) |
a native payload type with no visible package-level libjson.DurableCodec[T] value and no transient mark; a type-parameter payload; a pointer or unlisted codec value |
a documented TransientNative() method on the type; for a type of another module, //elpsvet:transient <reason> at one construction |
elpsidiom |
elpsvet/idiom/idiom.go (importable) |
in every package, package lisp included, an idiom with a suggested fix (the "(fix)" rows of the IDIOMS list in the package doc); elpsvet sets -elpsidiom.fixonly, so hints and mistakes are not reported. In package lisp a fix is not made in a function that the new helper reaches, so a helper does not call itself |
//elpsvet:keep-idiom <reason> on the line or the line above, for a hot site where the helper measures slower; otherwise apply the fix with go run ./cmd/elpsvet -test=false -fix ./... |
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.
- 2d ago First seen · 361 lines · 0 tokens per session scan A 3ed381dd2cad
elpsvet is a skill published in the GitHub repository luthersystems/elps (36 stars, last pushed today), licensed BSD-3-Clause. It costs nothing until one of its globs matches a file; then it loads 6,184 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-10-26.
Other skills, from other repositories
code-changes
Workflow for any task that ends in code changes: issue analysis or triage, pull request review comments, features, bug fixes, refactors. Invoke at the start of such a task, before reading or writing code.
printing-press-output-review
Internal sub-skill: agentic review of a printed CLI's sampled command output for plausibility issues that rule-based checks can't encode (substring-match relevance, format bugs, silent source drops, ranking failures). Invoked via the Skill tool by the main printing-press skill at Phase 4.85 and printing-press-polish…
code-guidelines-go
Go 1.24–1.27 coding guidelines for the dimetron/pi-go AI agent runtime. Use this skill whenever writing, reviewing, or refactoring ANY Go code in pi-go. This covers idiomatic style, error handling, concurrency, project layout, testing (table-driven, fuzz, benchmarks, synctest), new stdlib usage, golangci-lint v2…
design-review
Deep design review of Go codebase — naming, structure, consistency, interfaces, error handling. Scores each dimension and provides actionable fixes.
pi-loop-forensics
Diagnose pi-go agent loops and degenerate turns — "agent loop aborted", runaway thinking with no tool calls, repeated phrases. Discriminates genuine model repetition collapse from a race, a tool-parse failure, or a too-low guard, and A/B replays a seed session across providers.
nightly-session-watch
Nightly sweep of the last 24h of pi-go sessions — anomalous runs, loop aborts, tool error rates, token waste, real prompt-token spend, and whether the observation and palace pipelines are still recording. Triages each finding to the specialist skill that diagnoses it. Use for an unattended daily health check, or on…