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 podlite/podlite-skills --skill podlite-verifygit clone --depth 1 https://github.com/podlite/podlite-skillsWrote 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/podlite/podlite-skills/podlite-verify)<a href="https://agentmods.dev/skills/podlite/podlite-skills/podlite-verify"><img src="https://agentmods.dev/badge/skills/podlite/podlite-skills/podlite-verify/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/podlite/podlite-skills/podlite-verify"><img src="https://agentmods.dev/badge/skills/podlite/podlite-skills/podlite-verify.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.00064 | $0.01746 |
| Opus 5 | $0.00032 | $0.00873 |
| Sonnet 5 | $0.00013 | $0.00349 |
| Haiku 4.5 | $0.00006 | $0.00175 |
Grade A, and why
podlite-verify 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 8d 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 — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Podlite Verify
AI-generated markup drifts: unbalanced blocks, broken nesting, attribute values that swallow the next token. Podlite is structured, so most of these are mechanically checkable. Verify before delivering.
Run two layers: (1) self-check the output against the rules below (always available, no tooling), then (2) machine-validate with the parser/linter when it is available.
- Companion skill:
podlite-markup(how to write it) - Specification: https://podlite.org/specification
When to verify
- Immediately after generating or editing any
.podlite/.pod6content, before presenting it - When the user asks to validate, lint, check, or fix Podlite
- When a renderer or parser reports an error
- Before committing Podlite to a repository or knowledge base
Layer 1: self-check rules (no tooling required)
Read the produced markup and confirm each invariant. These are the errors LLMs introduce most often.
| # | Check | Wrong | Right |
|---|---|---|---|
| 1 | Every =begin X has a matching =end X with the same typename |
=begin code … =end pod |
=begin code … =end code |
| 2 | Balanced block nesting: inner blocks close before outer | =begin pod =begin code =end pod |
=begin pod =begin code =end code =end pod |
| 3 | List levels are sequential: no skipping | =item1 → =item3 |
=item1 → =item2 → =item3 |
| 4 | Attribute values with spaces are quoted | :caption<Q1 sales> |
:caption('Q1 sales') or :caption("Q1 sales") |
| 5 | No raw </> inside :attr<…>: an inner > closes the attribute early |
:caption<See L<x|y>> |
:caption('See L<x|y>') |
| 6 | Formatting codes are balanced | B<bold I<italic> |
B<bold I<italic>> |
| 7 | Content containing > uses doubled delimiters |
C<$x > 5> |
C<< $x > 5 >> or C« $x > 5 » |
| 8 | Blank line separates paragraphs / terminates =for and abbreviated blocks |
two paragraphs glued | blank line between |
| 9 | Full documents have a =begin pod … =end pod root (or a top-level =begin pod) |
content with no root | wrapped in =pod |
| 10 | Indentation is intentional: indented text inside =pod/=item/=nested becomes an implicit code block |
accidental 4-space indent | flush-left prose |
| 11 | Block casing matches role: lowercase standard (=head1), UPPERCASE semantic (=TITLE), MixedCase custom (=Image) |
=image, =title |
=Image, =TITLE |
| 12 | =end lines carry no attributes: attributes belong on =begin only |
=end code :lang<js> |
=end code |
| 13 | Markdown-fence attributes follow the language id | ```:line-numbers python |
```python :line-numbers |
| 14 | A continued attribute line starts with = and a space: an indented one is content, and its attributes are lost |
=begin pod :type<x>⏎ :id<y> |
=begin pod :type<x>⏎= :id<y> |
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.
- 8d ago First seen · 112 lines · 64 tokens per session scan A 7c1b6e031c24
podlite-verify is a skill published in the GitHub repository podlite/podlite-skills (2 stars, last pushed 1mo ago), licensed MIT. It adds 64 tokens to every session and 1,746 once invoked, about $0.0003 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-31.
Other skills, from other repositories
go-testing
Trigger: Go tests, go test coverage, Bubbletea teatest, golden files. Apply focused Go testing patterns.
character-animation-qa
Review local character animation with schema checks, Playwright browser previews, frame sampling, and FFmpeg/ffprobe final output checks.
session-rag-eval
Run and debug Chatbox session attachment RAG model evaluation with synthetic and real long-file fixtures.
migrate-xunit-to-xunit-v3
Migrate .NET test projects from xUnit.net v2 to xunit.v3 and fix v3 breaks. Use for package/CPM conversion, OutputType=Exe, preserving the VSTest or MTP runner (including projects currently using YTest.MTP.XUnit2), incompatible TFMs, async void tests, string-to-Type attributes, custom Fact/Theory/BeforeAfterTest…
crap-score
Calculates CRAP (Change Risk Anti-Patterns) for a named .NET method, class, or file. USE FOR: explicit CRAP calculation or coverage-and-complexity risk within that named target, including which tests to prioritize. DO NOT USE FOR: project-wide coverage/CRAP, plateaus, or project-wide blockers/priorities…
nunit
Write, run, or repair .NET tests that use NUnit. Use when a repo uses NUnit, [Test], [TestCase], [TestFixture], or NUnit3TestAdapter for VSTest or Microsoft.Testing.Platform execution. USE FOR: writing or reviewing NUnit tests; using [Test], [TestCase], [TestFixture], [SetUp], [TearDown] attributes; configuring…