agentleFS
TylerAkinsTylerAkins/ai-agent-skills/skills/frontend-engineering/SKILL.md

frontend-engineering

Skill1 starsChanged 30 days agoMITView on GitHub

Build and improve user interfaces with coherent visual design, responsive layout, accessible interaction, and reliable state. Use for pages, components, forms, frontend behavior, and UI polish. Follow the project's framework and design system and verify rendered behavior rather than relying on source or screenshots alone.

13 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use observability and git-workflow.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • OpenAISkill

    observability

    Vercel Observability expert guidance — Drains (logs, traces, speed insights, web analytics), Web Analytics, Speed Insights, runtime logs, custom events, OpenTelemetry integration, and monitoring dashboards. Use when instrumenting, debugging, or optimizing application performance and user experience on Vercel.

    Also in 3 projects that use this

  • Microsoft AzureSkill

    git-workflow

    Squad branching model: dev-first workflow with insiders preview channel

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. 0 are common, 16 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 9 edited versions we read keep these.

  • 16

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read anti-ai-writing before drafting copy, comments, or reports.

    line 12
  2. Distinctive:

    Use the existing stack and utilities.

    line 15
  3. Distinctive:

    When a new visual direction is needed, study relevant references and translate their useful hierarchy, density, navigation, and interaction …

    line 26
  4. Distinctive:

    Use coherent typography, spacing, colors, radii, and emphasis from project tokens.

    line 32
  5. Distinctive:

    Use realistic content, including long labels and sparse/dense data.

    line 36
  6. Distinctive:

    Use writing-clean-simple-code for focused responsibilities and justified abstractions.

    line 45
  7. Distinctive:

    Keep local interaction state local and shared state with its shared owner.

    line 53
  8. Distinctive:

    Avoid duplicated derived state and contradictory booleans.

    line 56
  9. Distinctive:

    After recoverable errors, preserve entered data and explain how to proceed.

    line 64
  10. Distinctive:

    Keep authorization enforced on the server.

    line 68
  11. Distinctive:

    Read accessibility and responsive checks.

    line 72
  12. Distinctive:

    Prefer native semantic HTML and tested accessible primitives.

    line 73
  13. Distinctive:

    Use flexible layouts, appropriate width limits, and responsive assets.

    line 78
  14. Distinctive:

    Treat remote content and URLs as untrusted.

    line 84
  15. Distinctive:

    Avoid needless fetch waterfalls, expensive repeated work, oversized dependencies, and layout shifts.

    line 89
  16. Distinctive:

    Use test-authoring for behavioral coverage.

    line 97

“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Frontend Engineering

Read anti-ai-writing before drafting copy, comments, or reports. Read repository instructions, existing screens and components, design tokens, framework/dependency versions, routing, data contracts, and test conventions. Use the existing stack and utilities; verify unfamiliar APIs against that version's official documentation. Preserve unrelated work and established product behavior.

1. Establish the screen's job and design

Identify the audience, user task, primary action, content hierarchy, required states, and acceptance criteria. Use supplied designs and existing product patterns first. For substantial new interfaces, clarify consequential missing requirements and use agent-planning when a plan helps. Do not require a design ceremony for a small, understood change.

When a new visual direction is needed, study relevant references and translate their useful hierarchy, density, navigation, and interaction principles into the product's own language. Do not copy proprietary branding, text, assets, or exact layouts. Record enough design decisions to guide implementation without inventing an entire design system for one screen.

Use coherent typography, spacing, colors, radii, and emphasis from project tokens. Prioritize the user's action and information instead of defaulting to generic hero sections, uniform cards, oversized spacing, or decorative gradients. These patterns can be appropriate when the product calls for them; do not impose aesthetic bans. Use realistic content, including long labels and sparse/dense data. Remove unrelated implementation details from product copy. Keep all exposed controls functional or clearly identified as unavailable; never disguise a placeholder as a working feature.

2. Implement components and state

For changed frontend/backend contracts, use api-design and preserve supported consumers. Do not infer a backend contract from UI fixtures.

Use writing-clean-simple-code for focused responsibilities and justified abstractions. Prefer composition and established component APIs over a large matrix of unrelated flags. Split by responsibility, not arbitrary line counts. Keep data and presentation ownership clear without forcing a separate container or hook for every component.

Resolve state ownership before wiring interactions:

  • Keep local interaction state local and shared state with its shared owner. Use URL state for navigable/shareable views and existing server-state tooling for remote data. Do not introduce a global store merely to avoid a few props.
  • Avoid duplicated derived state and contradictory booleans. Preserve stable item identity, history navigation, deep links, and framework rendering/hydration contracts where relevant.

Implement the applicable interaction paths:

  • Handle loading, empty, success, error, disabled, pending, and permission states. Distinguish no data from filtered-out results.
  • After recoverable errors, preserve entered data and explain how to proceed. Prevent duplicate submissions.
  • For optimistic updates, account for failure, concurrent changes, stale responses, and reconciliation. Trace cancellation ownership before cancelling shared requests.
  • Keep authorization enforced on the server; hidden controls are not authorization.

3. Make layout and interaction inclusive

Read accessibility and responsive checks. Prefer native semantic HTML and tested accessible primitives. Custom interaction must implement its complete keyboard, focus, and state contract. Labels, errors, and status feedback should be understandable without relying on color or animation.

Choose breakpoints where the content needs them and respect existing layout tokens. Use flexible layouts, appropriate width limits, and responsive assets. Check narrow and wide views, zoom, long text, empty states, and overflow. Preserve meaningful content and actions on small screens rather than hiding them to fit a screenshot.

4. Preserve security and performance

Treat remote content and URLs as untrusted. Use framework-safe rendering; sanitize only through vetted mechanisms when rich HTML is required. Do not expose secrets or private records in client bundles, telemetry, or error messages. Scope cached data to identity/tenant and clear or invalidate it on relevant context changes.

Avoid needless fetch waterfalls, expensive repeated work, oversized dependencies, and layout shifts. Use the framework's asset, rendering, and loading conventions. Optimize from measured evidence and product budgets; do not add memoization, virtualization, or code splitting mechanically. Lab results and field performance are different evidence and should be reported separately.

5. Verify the rendered result

Use test-authoring for behavioral coverage. Run relevant repository checks and inspect the application in an available browser with realistic data. Exercise affected actions and state transitions, keyboard navigation, focus, validation, responsive layout, and applicable browser targets. Inspect console and network failures relevant to the change. Screenshots establish appearance, not interaction correctness; automated accessibility scans do not establish conformance.

Compare rendered output with accepted designs or the project's established screens. Fix discovered clipping, spacing, contrast, or interaction issues and recheck affected states. Do not run destructive live actions merely to verify a UI; use safe fixtures or an authorized test environment. If browser access is unavailable, state exactly what remains unverified rather than calling the interface visually validated.

Report actual changes, tested flows/viewports, and material limits. Use code-review when independent review is warranted, available, and authorized. Commit, push, and publication use authorized git-delivery.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.