Frontend that's fast in SEO and speed — by default.
Next.js or Astro with strict TypeScript, secrets always server-side, WCAG 2.2 AA accessibility, Core Web Vitals as a contract, SEO and structured data, i18n with per-language URLs and an auto-generated sitemap. The frontend counterpart to schematize-go.
$ schematize install webNon-negotiable floors
Never switched off "to go faster". Full list in the skill.
Secrets server-side
Never in the bundle or NEXT_PUBLIC_/VITE_/PUBLIC_. Keyed calls go through a BFF. Token in an HttpOnly cookie, never localStorage.
Truly accessible
WCAG 2.2 AA is the floor: semantics, keyboard, managed focus, contrast, reduced-motion. Disabling a11y lint is forbidden.
Core Web Vitals
LCP/INP/CLS in the "good" range (p75, mobile first). Bundle and metric budgets measured in CI — regressions block the merge.
SEO and i18n by default
Structured data, auto-generated sitemap and a per-language URL with hreflang. All content translated.
Real green
Unit, component, e2e (Playwright), a11y (axe) and visual regression. Smoke proves content, not just 200.
Always archive
Decisions and context become .md in the archive, every time. The component index is the source of truth.
Commands
Installed in .claude/commands/. Run /web-help anytime.
/web-helpLists every command./web-ccContext compact: writes context + checklist to the archive and runs /compact./web-handoffWrites the handoff without compacting — session end or task switch./web-qaPlan-first frontend QA: a11y, Core Web Vitals, e2e and visual regression./web-reviewDefinition-of-Done and frontend anti-pattern gate on the diff./web-index(Re)generates the component/hook index from doc-comments.For AI agents
Install with no human in the loop. Metadata in llms.txt.
- Run: git clone https://github.com/schematizeme/skill-web.git && ./skill-web/install.sh
- Or download: https://github.com/schematizeme/skill-web/releases/latest/download/skill-web.zip and unzip into .claude/skills/
- Copy assets/CLAUDE.md to the repo root (always-on rule).
- Confirm with /web-help.