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 agentmods add skills/rob-balfre/dryui/final-candidatenpx skills add rob-balfre/dryui --skill final-candidategit clone --depth 1 https://github.com/rob-balfre/dryuiWrote 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/rob-balfre/dryui/final-candidate)<a href="https://agentmods.dev/skills/rob-balfre/dryui/final-candidate"><img src="https://agentmods.dev/badge/skills/rob-balfre/dryui/final-candidate.svg" alt="Measured on agentmods" 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.00062 | $0.03003 |
| Opus 5 | $0.00031 | $0.01502 |
| Sonnet 5 | $0.00012 | $0.00601 |
| Haiku 4.5 | $0.00006 | $0.00300 |
Grade C, and why
dryui-build scanned grade C with 1 finding 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 5d 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.
Hidden instructionshighPrompt injection
Directives inside HTML comments, invisible characters or bidirectional overrides are read by the model and not by the person reviewing the file.
- `<!-- svelte-ignore ... -->` This is a copy
78% identical to dryui-build — 78 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 165 lines — stays where its author put it; the contents beside it link to each section on GitHub.
DryUI Build
Build real Svelte 5 UI with DryUI. This skill is only for UI implementation and polish. It does not install DryUI, scaffold projects, run live feedback, or resolve feedback submissions.
Lint First
DryUI lint rules are the contract. If lint, the compiler, or component metadata disagrees with a visual idea, restructure the markup or CSS instead of bypassing the rule.
- Use
@dryui/uiprimitives when DryUI provides one. Do not recreate controls with raw HTML. - DryUI does not ship a layout component. Use plain markup with
data-layoutanddata-layout-area. - Page and section layout lives in
src/layout.css, scoped under[data-layout='<name>']. - All consumer
display: gridanddisplay: flexdeclarations live insrc/layout.cssor@containerblocks inside it. - In
src/layout.css, use only lint-safedisplayvalues such asgridorflex; never adddisplay: block,contents,flow-root, or reset-style display values. - Route and component
<style>blocks must not contain page-leveldisplay: grid,display: flex, layout breakpoints, inlinestyle=, or Sveltestyle:directives. - Responsive layout is mobile-first and uses
@container page (...); never@mediafor layout breakpoints. src/layout.cssis structural only: display, grid, flex, container, tokenized spacing, alignment, and block-size constraints. No color, background, border, shadow, opacity, transition, transform, font, text, position, z-index, width, height, or inline-size.- Visual CSS belongs in app/component CSS and uses real
--dry-*tokens such as--dry-color-bg-base,--dry-color-text, and--dry-color-border, or app-owned custom properties. - In app/component CSS, constrain replaced media and text inside media-backed grids so intrinsic image size or long headings cannot enlarge grid tracks: use
inline-size: 100%,max-inline-size: 100%,min-inline-size: 0,object-fit, and readablemax-width/maxMeasurewhere needed. - Set
body { font-family: var(--dry-font-sans); }insrc/app.cssso dialogs, popovers, and top-layer UI inherit the app font.
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.
- 5d ago First seen · 165 lines · 62 tokens per session scan C 5d6a58f9279c
dryui-build is a skill published in the GitHub repository rob-balfre/dryui (9 stars, last pushed 3mo ago), licensed MIT. It adds 62 tokens to every session and 3,003 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it C with 1 finding (hidden instructions). It is 78% identical to dryui-build, differing in 78 lines, and is treated as a copy.
Other skills, from other repositories
svelte-expert
Expert knowledge in Svelte framework, SvelteKit, reactivity system, compiled approach, and building performant web applications. Use when the user mentions SvelteKit, reactivity, compiler, frontend, performance, or JavaScript, or when the task involves Svelte Fundamentals, Reactivity System, Installation and Setup, or…
svelte
Svelte 5 - Reactive UI framework with compiler magic, Runes API, SvelteKit full-stack framework, SSR/SSG, minimal JavaScript.
svelte-components
Build reusable Svelte components with best practices for composition and state management.
svelte-docs
Svelte 5.x + SvelteKit 2.x — runes, components, stores, transitions, SSR, routing, TypeScript.
sveltekit
SvelteKit - Full-stack Svelte framework with file-based routing, SSR/SSG, form actions, and adapters for deployment.
svelte
Svelte 5 - Reactive UI framework with compiler magic, Runes API, SvelteKit full-stack framework, SSR/SSG, minimal JavaScript.