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 burin-labs/harn --skill harn-appsgit clone --depth 1 https://github.com/burin-labs/harnWrote 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/burin-labs/harn/harn-apps)<a href="https://agentmods.dev/skills/burin-labs/harn/harn-apps"><img src="https://agentmods.dev/badge/skills/burin-labs/harn/harn-apps/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/burin-labs/harn/harn-apps"><img src="https://agentmods.dev/badge/skills/burin-labs/harn/harn-apps.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00027 | $0.01334 |
| Opus 5 | $0.00014 | $0.00667 |
| Sonnet 5 | $0.00005 | $0.00267 |
| Haiku 4.5 | $0.00003 | $0.00133 |
Grade A, and why
harn-apps 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 9d 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 — 128 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Build interactive Harn apps
Use this skill with [[harn-language]] for syntax, [[harn-testing]] for deterministic checks, [[harn-providers]] for model access, and [[harn-product-quality]] for proof through the real user path.
Keep the app in Harn
Put application state, event handling, writing result files, reopening
unfinished work, recovery, and model-job rules in Harn. Import std/ui as a
namespace and use short names such as ui.document, ui.event, and
ui.update. The shared renderer turns that typed document into browser
controls, canvas operations, and accessibility information.
Do not add app-specific Rust or JavaScript unless a concrete user interaction
cannot be represented by the shared contract. Add a reusable std/ui element,
event, effect, or host capability when the same gap applies to other apps.
Use module namespaces
import * as ui from "std/ui"
import { UiEvent } from "std/ui/contracts"
const incoming: UiEvent = ui.event(raw.event)
return ui.update(ui.document("Example", revision, elements))
Export short function names from a module and qualify them where they are used.
Do not repeat a module name in calls such as ui.ui_event. Keep Ui on public
type names because those types also appear in signatures outside the namespace.
Use ui.test.run for event-handler tests.
Start the app
- Read
docs/src/stdlib/ui.mdand the nearest complete example. - Define a named state record and one event handler for typed UI events.
- Return a
UiUpdatewith the next document and any host effects. - Expose the event handler as a tool whose metadata names its UI resource.
- Run
harn app run path/to/app.harnand open the printed URL.
Start with examples/apps/decision-card.harn for forms and
examples/apps/logo-studio.harn for canvas input, model jobs, exact-text
composition (std/media/composition), SVG+PNG export, and restart recovery.
Run one reducer in browser and server
Use std/portable.compile plus ui.portable_app_resource when frequent events
should update the view without a server round trip. The reducer receives
{state, event} and returns {state, update}. Keep its state to plain Harn
values.
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.
- 9d ago First seen · 128 lines · 27 tokens per session scan A 9b4c2c3d0f8c
harn-apps is a skill published in the GitHub repository burin-labs/harn (20 stars, last pushed yesterday), licensed Apache-2.0. It adds 27 tokens to every session and 1,334 once invoked, about $0.0001 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.
Other skills, from other repositories
decocms-ui
Build or style React UI with the decocms product design system (@decocms/ui). Use when creating interfaces, pages, or components in a project that should look like decocms products, when the user mentions "design system", "@decocms/ui", "decocms style", or asks to make UI consistent with Studio. Covers installation…
design-taste-frontend
Use for visual design direction on greenfield, user-facing surfaces — marketing and landing pages, generated apps, portfolio-style or standalone pages. NOT for routine Archestra platform UI work (dashboards, data tables, settings, forms, existing components) — use archestra-dev-frontend for that. Upstream intent…
archestra-dev-frontend
Use when modifying Archestra frontend Next.js/React code, UI components, forms, TanStack Query hooks, generated API client usage, frontend copy, or documentation links.
translate
A translation tool for converting user-provided text between languages, with Chinese and English as the default pair.
web-verify
Look at your OWN front-end change before claiming it works -- navigate the loopback URL of a dev server or pod you started, screenshot the surface you changed, read the image to judge it, and embed it in chat. Three capture backends: playwright-cli (the session the dashboard Browser panel shows), the agent-browser CLI…
widgets
Render rich HTML inline via tags with theme-aware styling. Load when emitting an mcwidget so the iframe inherits the dashboard theme instead of clashing with light / dark / custom palettes.