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 ariaramin/flutter-skills --skill html-to-fluttergit clone --depth 1 https://github.com/ariaramin/flutter-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/ariaramin/flutter-skills/html-to-flutter)<a href="https://agentmods.dev/skills/ariaramin/flutter-skills/html-to-flutter"><img src="https://agentmods.dev/badge/skills/ariaramin/flutter-skills/html-to-flutter/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/ariaramin/flutter-skills/html-to-flutter"><img src="https://agentmods.dev/badge/skills/ariaramin/flutter-skills/html-to-flutter.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.00189 | $0.03599 |
| Opus 5.5 | $0.00076 | $0.01440 |
| Sonnet 5.5 | $0.00038 | $0.00720 |
| Haiku 4.5 | $0.00019 | $0.00360 |
Grade A, and why
html-to-flutter 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 6d 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 — 301 lines — stays where its author put it; the contents beside it link to each section on GitHub.
HTML/CSS/JavaScript → Flutter
Rebuild the source application according to Flutter's rendering, state, and platform models. Preserve product intent, behavior, semantics, and visual system; do not recreate the DOM in widgets.
Operating model
Treat the source as four overlapping systems:
- HTML → semantic structure, information hierarchy, controls, content relationships.
- CSS → layout intent, constraints, responsive behavior, design tokens, interaction states, typography, decoration, animation.
- JavaScript/TypeScript → state transitions, business rules, data access, events, routing, persistence, async behavior, browser integrations.
- Flutter/Dart → declarative widgets, constraint-driven layout, typed state/data models, explicit architecture, platform adaptation.
Remember the Flutter box-layout rule:
Constraints go down. Sizes go up. Parents set positions.
Model UI as UI = f(state), not as a mutable collection of elements.
Non-negotiable rules
- Translate intent, semantics, behavior, and constraints, not syntax.
- Analyze the source before writing Flutter code.
- Never assume
div = Containeror any universal tag-to-widget mapping. - Rebuild architecture rather than reproducing the DOM/component hierarchy mechanically.
- Convert DOM/CSSOM mutation into explicit state changes and declarative composition.
- Preserve semantic intent: buttons stay buttons, links stay links, headings remain headings, labels remain associated with fields, and dialogs retain modal/focus behavior.
- Extract repeated colors, typography, spacing, radius, elevation, component variants, and relevant breakpoints into a Flutter design system before styling pages repeatedly.
- Keep network, repositories, persistence, and non-trivial business logic out of widget
build()methods. - Keep
build()side-effect free. Create futures, subscriptions, controllers, timers, focus nodes, and animation controllers at appropriate ownership/lifecycle boundaries. - Keep state as local as ownership permits and maintain a clear source of truth for shared state.
- Do not force a state-management package unless the project already uses one or the problem genuinely requires it.
- Distinguish responsive layout changes from adaptive platform/input behavior.
- Prefer
LayoutBuilderfor decisions based on a component's available parent constraints. - Prefer narrow
MediaQueryaccessors for window/environment characteristics such as size, padding, text scaling, accessibility settings, and display features. - Derive breakpoints from where the composition stops working well; do not rely only on
mobile/tablet/desktoplabels. - Prefer semantic framework controls over decorated gesture surfaces when the source represents a standard control.
- Do not use
Containeras Flutter's default<div>equivalent. Use the narrowest widgets that express layout/decoration intent. - Do not use
Stackmerely because the source used CSS positioning. Use it when overlap or shared-box anchoring is intrinsic. - Do not copy CSS pixel dimensions mechanically. Preserve fixed dimensions only where the product requirement is genuinely fixed.
- Do not add scrolling merely to silence overflow. Fix the layout model and choose wrapping, truncation, recomposition, or scrolling according to source intent.
- Use lazy lists/grids/slivers for large or unbounded collections.
- Avoid unnecessary intrinsic measurement, clipping, opacity layers, large blurred shadows, and other expensive rendering constructs unless required.
- Use
constwhere configuration is genuinely immutable, but do not treat it as a substitute for correct state boundaries. - Do not claim rebuilds are inherently expensive. Distinguish build, layout, paint, compositing, and rasterization.
- Profile before performance optimization and measure in profile/release conditions on relevant targets.
- Rewrite ordinary application logic in Dart. Keep JavaScript only where a browser API or JS-only SDK makes interop the better boundary.
- For modern Dart web interop, prefer current
dart:js_interopandpackage:webAPIs; do not add deprecated legacy web/JS libraries to new code. - Do not assume Flutter Web should replace document-centric, SEO-heavy websites. Decide product fit explicitly.
- Embed HTML/platform views only when preserving the existing implementation is more valuable than native Flutter reimplementation.
- Preserve text scaling, keyboard/focus behavior, semantics, and platform usability even when pixel fidelity is a goal.
- Make visual fidelity measurable against known viewports, states, fonts, and interaction modes.
- Verify current APIs against the project's installed Flutter/Dart SDK before finalizing production code.
What ships with it
11 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.
- README.md 420 B
- references/architecture-data.md 7.3 KB
- references/core-principles-source.md 6.8 KB
- references/design-system.md 10 KB
- references/layout-responsive.md 30 KB
- references/patterns-examples.md 36 KB
- references/performance-platform.md 28 KB
- references/review-decisions.md 22 KB
- references/sources.md 21 KB
- references/ui-behavior.md 22 KB
- references/validation-debugging.md 8.6 KB
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.
- 6d ago First seen · 301 lines · 189 tokens per session scan A f95d65d653a1
html-to-flutter is a skill published in the GitHub repository ariaramin/flutter-skills (6 stars, last pushed 6d ago), licensed MIT. It adds 189 tokens to every session and 3,599 once invoked, about $0.0008 per session on Opus 5.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-10-11.
Other skills, from other repositories
browser-use
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work.
browser-use
Control the user's Chrome through the existing persistent Node REPL and the Qwen Browser SDK.
opencli-autofix
Automatically fix broken OpenCLI adapters when commands fail. Load this skill when an opencli command fails — it guides you through collecting a trace artifact, patching the adapter, retrying, and filing an upstream GitHub issue after a verified fix. Works with any AI agent.
computer-use
A guide to building agents that operate graphical interfaces through screenshots, mouse actions, keyboard input, and waits. It explains how to identify interface elements and safely repeat the observe, decide, and act cycle.
webapp-testing
Start/reuse a local app, wait for readiness, inspect rendered state/console/network, act from observed selectors, and verify with evidence.
stealth-browser-mcp
Use this skill when operating stealth-browser-mcp from an AI agent or MCP client for browser automation, page inspection, element interaction, screenshots, file uploads, CDP commands, network debugging, cookies/storage, stealth setup, or reliable multi-step browser workflows. It provides the correct tool order, state…