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 tmj-90/gaffer --skill frontend-designgit clone --depth 1 https://github.com/tmj-90/gafferWrote 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/tmj-90/gaffer/frontend-design)<a href="https://agentmods.dev/skills/tmj-90/gaffer/frontend-design"><img src="https://agentmods.dev/badge/skills/tmj-90/gaffer/frontend-design/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/tmj-90/gaffer/frontend-design"><img src="https://agentmods.dev/badge/skills/tmj-90/gaffer/frontend-design.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.00096 | $0.01903 |
| Opus 5.5 | $0.00038 | $0.00761 |
| Sonnet 5.5 | $0.00019 | $0.00381 |
| Haiku 4.5 | $0.00010 | $0.00190 |
Grade A, and why
frontend-design 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 1mo 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.
Design distinctive, production-grade frontend
The bar: would this pass as a screenshot of a real, well-funded product? This pack owns
visual judgement — direction, hierarchy, composition, motion. It consumes, and does not
re-derive, the identity from the brand skill, the token architecture and component state
matrices from the design-system skill, and the depth in the frontend-a11y,
frontend-responsive and frontend-performance skills.
Pick a direction before code
"Clean minimal" is not a direction. If a brand exists, extend it in its idiom. If not, commit to one direction the product warrants and write one sentence on why: editorial / magazine, Swiss / International, neo-brutalism, bento, glassmorphism with real depth, light or dark luxury, scrollytelling, retro-futurism. Dark mode is a product decision, not a default. Choose a type pairing with a reason and a palette with semantic roles, not one accent on grey-on-white.
Required qualities
Each meaningful surface demonstrates at least four, and the evidence names which:
- Hierarchy through scale contrast — a real type scale, one obvious focal point.
- Intentional spacing rhythm — tight within groups, generous between them.
- Depth or layering — surfaces, overlap, shadow or motion, not a flat stack.
- Typography with character and a deliberate pairing.
- Colour used semantically, not decoratively.
- Designed hover / focus-visible / active / disabled states.
- Grid-breaking editorial or bento composition where it fits.
- Texture, grain or atmosphere when the direction calls for it.
- Motion that clarifies flow (entry, state change, spatial relationship).
- Data visualisation styled as part of the system (legends, tooltips, accessible colours, never colour-only encoding).
Steps
- Read before designing.
search_lorefor brand, tokens and design decisions; openBRAND.md, the token files and a sibling surface. Match the framework and styling system; never introduce a competing one. - State the direction and the four-plus qualities you will deliver, in one short note you will reuse as evidence.
- Consume tokens. Colour, type scale (
clamp()fluid sizes), space, radius, shadow, duration and easing come from the token layers (thedesign-systemskill). If a value you need is missing, add a token in the right layer — never a literal in a component. - Structure first. Landmarks (
header,nav,main,section,footer), oneh1, headings in order, real buttons and links. Hierarchy comes from structure plus scale. Rich content never goes throughdangerouslySetInnerHTML/innerHTMLunsanitised; third-party scripts loadasync/defer, with Subresource Integrity when served from a CDN, and fit the repo's CSP (nonces, not'unsafe-inline') (thesecurity-input-validationskill). - Compose. Establish the grid, then break it deliberately for the focal moment. Vary card size and emphasis by importance; avoid uniform grids of identical cards. Keep body text at 45–75 characters per line, at least 16px, line-height about 1.5.
- Design every state the surface has: interaction states with a visible
:focus-visiblering (3:1 against its surroundings), loading at final size, empty with a next action, error with recovery. - Motion on the compositor. Animate
transform,opacity, and sparinglyclip-path/filter; neverwidth/height/top/left/margin/font-size. 150–300 ms for UI feedback, ease-out for entrances; wrap non-essential motion in@media (prefers-reduced-motion: no-preference);will-changeonly while animating. - Media and fonts that do not hurt Core Web Vitals. Explicit
width/heightoraspect-ratioon every image; the hero/LCP image eager withfetchpriority="high", everything below the foldloading="lazy"; AVIF/WebP viasrcset/sizes; at most two font families, self-hosted, subset, one critical weight preloaded,font-display: swapwith a metric-matched fallback; heavy libraries (animation, charts, 3D) loaded with dynamicimport(). If the repo sets no bundle budget, aim for roughly 150 KB JS / 30 KB CSS gzipped on a landing page and 300 KB / 50 KB on app pages. Targets and measurement: thefrontend-performanceskill (LCP ≤ 2.5 s, INP ≤ 200 ms, CLS ≤ 0.1 at p75). - Verify the rendered result with the repo's browser tooling (Playwright or the
visual-regression setup, only if already installed): screenshot 320 / 768 / 1024 /
1440 and both themes if both exist, into the repo's git-ignored test output, never
committed unless an AC asks; update baselines only for intended changes; run axe and a
scripted keyboard pass (the
frontend-a11yskill); run the repo's lint, type-check and tests. If nothing can render the page, say so in the evidence. - Evidence per AC with the
record-evidenceskill — screenshot paths, the direction note, the qualities delivered, axe output — then stop.
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.
- 1mo ago Changed · -26 lines 07cda21ef7aa
- 2mo ago First seen · 154 lines · 96 tokens per session scan A 90d485f31cad
frontend-design is a skill published in the GitHub repository tmj-90/gaffer (2 stars, last pushed today), licensed Apache-2.0. It adds 96 tokens to every session and 1,903 once invoked, about $0.0004 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-08-31.
Other skills, from other repositories
visual-companion
Browser-based visual companion for showing mockups, diagrams, comparisons, and interactive options. Use when the user would understand something better by seeing it than reading it.
auditing-ui
Runs a lens-based UI/UX audit of the client and turns its findings into tracked, fenced work items, and measures the rendered page for a design review. Use when auditing the interface for quality gaps, running or scoping an audit (full, one lens, one surface, or a diff), driving the real-browser leg of an audit…
maintaining-dev-playground
Keeps the Dev Playground current with the application. Use when editing UI components in apps/client/src/ — assesses playground candidacy, checks existing playground coverage, and guides adding or updating showcases. Also use when directly editing files in apps/client/src/dev/, building new widgets or features, or…
bulwark-brainstorm
Role-based brainstorming with dual modes: --scoped (sequential Task tool, 5 roles) and --exploratory (Agent Teams peer debate, 4 roles). Use for feasibility assessment and idea validation.
plan-creation
Create structured implementation plans via a 4-role scrum team (Product Owner, Architect, Eng/Delivery Lead, QA/Critic) with optional Agent Teams peer debate mode.
anthropic-validator
Validates Claude Code assets (skills, hooks, agents, commands, MCP servers, plugins) against official Anthropic standards. Fetches latest docs dynamically and produces structured validation reports.