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 davidteren/hotwire-codex-skills --skill turbo-frames-patternsgit clone --depth 1 https://github.com/davidteren/hotwire-codex-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/davidteren/hotwire-codex-skills/turbo-frames-patterns)<a href="https://agentmods.dev/skills/davidteren/hotwire-codex-skills/turbo-frames-patterns"><img src="https://agentmods.dev/badge/skills/davidteren/hotwire-codex-skills/turbo-frames-patterns.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.00122 | $0.00860 |
| Opus 5 | $0.00061 | $0.00430 |
| Sonnet 5 | $0.00024 | $0.00172 |
| Haiku 4.5 | $0.00012 | $0.00086 |
Grade A, and why
turbo-frames-patterns 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 — 58 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Turbo Frames
Frames scope navigation to a region: a click or form submit inside a <turbo-frame> is
captured by Turbo and only that frame updates. The failures are quiet — a mistargeted or
missing frame produces no error, just navigation that goes nowhere. Full patterns:
references/turbo-frames-guide.md.
When to use
- Adding a frame (
turbo_frame_tag "id"/<turbo-frame id="id">). - Driving a frame from outside (
data: { turbo_frame: "id" }) — e.g. a filter bar above a list. - Lazy-loading a panel (
src:+loading: :lazy). - Inline-editing one record (a per-row
turbo_frame_tag dom_id(record)). - Debugging: a frame that does nothing, a click that navigates nowhere, a filter form that loses focus on each keystroke, or duplicate ids from a collection partial.
The patterns (and their footguns)
- Target must resolve — a link targeting
turbo_frame: "x"needs aturbo_frame_tag "x"in the response (and your views), or the click silently does nothing. Use_topto break out to a full-page navigation (the common case for row links). (linted) - Collection partials use
dom_id(record)— a literalturbo_frame_tag "card"in a per-row partial stamps the same id on every row → duplicate DOM ids, only the first updates. (linted) - Frame request variant — render the lean
show.html+turbo_frame.erbfor frame requests (turbo_frame_request?) instead of re-rendering the whole layout. turbo_action: "advance"— frame navigations don't change the URL by default; promote tab/list/filter frames so reload/back/forward work.- Filter/search forms go OUTSIDE the frame they target — a form inside the frame replaces itself (and the focused input) on every submit.
- Lazy frames —
src:+loading: :lazydefer content; thesrcresponse must contain a matching<turbo-frame id>or the frame stays empty.
Patterns 3–6 aren't checker-able with low false positives — see the reference.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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 · 58 lines · 0 tokens per session scan A 9250594cbc11
turbo-frames-patterns is a skill published in the GitHub repository davidteren/hotwire-codex-skills (3 stars, last pushed 2mo ago), licensed MIT. It adds 122 tokens to every session and 860 once invoked, about $0.0006 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
create-mobile-app
Use when the user wants to start a new Power Apps mobile app (Expo / React Native / TypeScript, targeting iOS and Android) from scratch.
app-builder
(Preview) Builds and edits a model-driven Power Apps app from a natural-language intent — tables, columns, relationships, adaptive forms with sub-grids, views, Choice-column charts, generative page intents for overview/dashboard surfaces (page .tsx generated in generate-pages after plan approval), and an app module +…
create-site
Creates a new Power Pages code site (SPA) using React, Angular, Vue, or Astro. Guides through the full process from initial concept to deployed site: requirements discovery, scaffolding, component planning, design, implementation, validation, and deployment. Use when the user wants to create, build, or scaffold a new…
genpage
Creates, updates, and deploys Power Apps generative pages for model-driven apps using React v17, TypeScript, and Fluent UI V9. Orchestrates specialist agents for planning, entity creation, and code generation. Use it when user asks to build, retrieve, or update a page in an existing Microsoft Power Apps model-driven…
migrate-bootstrap
Migrates a traditional Power Pages site from Bootstrap 3 to Bootstrap 5. Downloads the site, runs the pac pages bootstrap-migrate engine, reviews the change report, applies AI-assisted fixes for the residual hierarchy/CSS changes the engine only flags, uploads the migrated site (which auto-enables the Bootstrap 5…
canvas-app
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Handles new app generation, direct targeted edits, complex multi-screen changes, responsive layout, per-screen self-QA, and compile-error convergence. Trigger on requests to create, build, generate, modify, update, change…