Use when reviewing, debugging, or improving frontend code in this repo (website/ HTML, CSS, JS, service workers, PWA assets) or when asked to "review frontend", "revisa el html/css", "review JS", or "audita el frontend". Reviews for correctness, browser compatibility, accessibility, performance, security (XSS), responsive behavior, and PWA/service-worker correctness, and ends with a "what a user/reviewer would catch" pass.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add sazardev/networking-with-go --skill review-frontend --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Review Frontend?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sazardev-review-frontend)More formats (shields.io, HTML) on the badges page.
---
name: review-frontend
description: Use when reviewing, debugging, or improving frontend code in this repo (website/ HTML, CSS, JS, service workers, PWA assets) or when asked to "review frontend", "revisa el html/css", "review JS", or "audita el frontend". Reviews for correctness, browser compatibility, accessibility, performance, security (XSS), responsive behavior, and PWA/service-worker correctness, and ends with a "what a user/reviewer would catch" pass.
---
# Frontend Review (HTML / CSS / JavaScript)
You review frontend code like a user, a screen-reader user, a security
reviewer, and a mobile browser all at once. You assume the site will be opened
on a slow phone with a screen reader, and that every input is hostile.
## Steps
1. **Read all files in scope** (HTML, CSS, JS, service worker) as a unit —
the bug is usually in the interaction between them.
2. **Check the structure mechanically** — for JS, `node --check file.js` for
syntax; look for unbalanced tags, missing closing braces, undefined
functions used. Note the repo has no build step: the browser runs these
files as-is.
3. **Review the dimensions below.**
4. **Scenario pass** — think like a user on a phone, on an old browser, with
JS disabled, offline, with a screen reader.
5. **Report** in the output format at the bottom.
## Review dimensions
1. **Correctness** — does the JS do what it claims? Right element selected,
right event wiring, no `null`/`undefined` access, no stale references after
DOM changes. Watch for code that only works when scripts load in one order.
2. **Security (XSS and injection)** — never insert untrusted text into the DOM
via `innerHTML`/`outerHTML`/`insertAdjacentHTML` or `document.write`.
Use `textContent` for data. Escape `URLSearchParams`/`location.hash` values
before rendering. Check every place user/URL/query data reaches the DOM.
3. **Accessibility** — semantic HTML (`<nav>`, `<main>`, headings in order),
`alt` text on images, labels tied to inputs, keyboard navigability, focus
states visible, `aria` used correctly and not overused, contrast meets
WCAG AA, no content-only-on-hover. A screen reader must be able to use the
site.
4. **Performance** — render-blocking scripts, image sizes, no layout thrash
(DOM writes between reads), passive listeners for scroll/touch, no
unbounded DOM growth, `requestAnimationFrame` for visual work, caching
headers/service-worker strategies sensible for static content.
5. **Responsive/mobile** — viewport meta present, no fixed pixel widths that
break on small screens, touch targets large enough, media queries testable,
horizontal overflow from long content.
6. **Browser compatibility** — features used are supported or guarded
(`IntersectionObserver`, optional chaining `?.`, `fetch`) with graceful
fallbacks; old browsers degrade, not crash.
7. **Service worker / PWA correctness** — correct scope, cache versioning
(bump or the new version never ships), no stale-cache-after-update bug,
offline fallback sane, no aggressive cache-first for HTML that goes stale,
`sw-precache.js`/`sw.js` strategy matches the asset list.
8. **Robustness** — JS fails gracefully if an element or API is missing; no
`try/catch` that swallows real errors; network errors handled (not just
`.catch(console.error)`).
## Scenario checklist (the superpower)
- **Screen reader** — can a non-sighted user complete the core task?
- **Phone + slow network** — what does it look like at 3G with a 2s
first-paint?
- **JS disabled** — is content readable and links working?
- **Offline** — does the service worker serve something useful?
- **Hostile input** — paste `<img src=x onerror=alert(1)>` into every input
and URL param: does it render or execute?
- **Old browser** — does it crash or degrade?
## Output format
- **Verdict** — per-dimension pass/fail.
- **Issues** prioritized:
- **Critical** — XSS, broken core interaction, service worker serving stale
content forever, inaccessible core path.
- **Important** — performance problems, missing fallbacks, a11y gaps,
unhandled errors.
- **Style** — consistency, naming, cleanup.
Each with `file:line`, the problem, and the fix as a code snippet.
- **Scenario results** — how the site behaves in each scenario above.
- When asked to fix, apply edits and re-check the touched files (syntax check,
re-trace the scenario) before reporting done.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!