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/romshark/datapages/datapagesnpx skills add romshark/datapages --skill datapagesgit clone --depth 1 https://github.com/romshark/datapagesWrote 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/romshark/datapages/datapages)<a href="https://agentmods.dev/skills/romshark/datapages/datapages"><img src="https://agentmods.dev/badge/skills/romshark/datapages/datapages.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 | $0.00053 | $0.08748 |
| Opus 5 | $0.00026 | $0.04374 |
| Sonnet 5 | $0.00011 | $0.01750 |
| Haiku 4.5 | $0.00005 | $0.00875 |
Grade A, and why
datapages 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 3d 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 — 1,013 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Writing a Datapages Application
You write Go application logic and templates. Datapages generates the server. Follow these steps in order. Do not skip steps.
For the full specification of all parameters, return types, supported field types, and configuration options, see SPECIFICATION.md.
Datapages apps use two other technologies. This skill does not teach them. Learn them separately.
- Templ (
github.com/a-h/templ) - Go HTML templating. Handlers returndatapages.Component. You write.templfiles that compile to Go viatempl generate. Datapages does not run this automatically — you must runtempl generateyourself after creating or modifying.templfiles. Docs: https://templ.guide/developer-tools/llm/ - Datastar (
github.com/starfederation/datastar-go/datastar) - Frontend reactivity via HTML attributes and SSE. Actions go intodata-on:<event>attributes (data-on:click,data-on:submit). The hyphen form is reserved for plugins (data-on-intersect,data-on-interval,data-on-signal-patch). Docs: https://data-star.dev See also: datastar/SKILL.md
Architecture
- Hypermedia-First (MPA): This is a multi-page application architecture. The backend drives the UI by sending HTML fragments, signal updates, and real-time events over SSE. There is no separate REST API layer - all interactions happen through Datastar SSE streams managed by Datapages.
- Morphing & Patching: Datastar uses morphing to update the DOM - it compares the incoming HTML fragment with the existing DOM and applies minimal changes, preserving focus, scroll position, and CSS transitions. Prefer HTML fragment patches (morphs) over signal updates because morphs carry both structure and data, keeping the server as the single source of truth. Use signal updates only for lightweight, transient UI state (e.g. toggling a loading spinner, updating a counter) where re-rendering HTML would be wasteful. "Fat morphs" - sending a larger HTML fragment that includes surrounding context - are often simpler and more robust than trying to surgically update individual elements. Often a single template per page that renders the entire body is the best approach because it reduces complexity and avoids coordinating multiple partial updates.
- Backend Reactivity: The server renders HTML and manages application state. The frontend is a thin reactive layer that responds to backend updates. The backend determines what the user can do by controlling DOM patches, maintaining a single source of truth.
- Simplicity First: Keep Datastar expressions simple - complex logic belongs in backend handlers or external scripts. Use a "props down, events up" pattern: pass data into functions via arguments, return results or dispatch custom events. State that makes sense to keep on the client (e.g. UI toggles, form input) should be realized using client-side signals, state that should be persisted or shared should live on the server, and state necessary for actions should be communicated via signals.
- No JavaScript: Avoid solving problems with JavaScript. All application logic belongs in Go on the server. Datastar's declarative attributes (
data-on,data-bind,data-show, etc.) and signal expressions handle the frontend. Only reach for JavaScript when there is genuinely no other way — e.g. clipboard access, focus management, or interfacing with a third-party browser API that Datastar cannot express.
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.
- 3d ago First seen · 1,013 lines · 53 tokens per session scan A b3247df8029a
datapages is a skill published in the GitHub repository romshark/datapages (87 stars, last pushed 4d ago), licensed MIT. It adds 53 tokens to every session and 8,748 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-30.
Other skills, from other repositories
structpages
Guide for building Go web applications with the structpages framework (struct-based routing + templ + HTMX). Use when writing routes, pages, page groups, Props methods, handler methods (ServeHTTP), page components, partials, HTMX partial rendering and nested swap levels, URL generation (URLFor/ID/IDTarget)…
gen-test
Generate idiomatic tests for Go packages and handlers in the Meshery project.
golang-testing
Production-ready Golang tests — table-driven tests, testify suites and mocks, parallel tests, fuzzing, fixtures, goroutine leak detection with goleak, snapshot testing, code coverage, integration tests, idiomatic test naming. Use when writing or reviewing Go tests, choosing a testing approach, setting up Go test CI…
golang-code-style
Golang code style conventions — line length and breaking, variable declarations, control flow clarity, when comments help vs hurt. Use when writing or reviewing Go code, asking about style or clarity, or establishing project coding standards. Not for naming conventions (→ See samber/cc-skills-golang@golang-naming…
golang-samber-oops
Structured error handling in Golang with samber/oops — error builders, stack traces, error codes, error context, error wrapping, error attributes, user-facing vs developer messages, panic recovery, and logger integration. Apply when using or adopting samber/oops, or when the codebase already imports…
golang-uber-dig
Implements dependency injection in Golang using uber-go/dig — reflection-based container, Provide/Invoke, dig.In/dig.Out parameter and result objects, named values, value groups, optional dependencies, scopes, and Decorate. Apply when using or adopting uber-go/dig, when the codebase imports go.uber.org/dig, or when…