web-dev
TypeScript and Python web development: React, Vue or Svelte UI, Node and Python backends, accessibility audits, CI, deploy and rollback. Use for components, forms, API routes, migrations, WCAG, Docker
SKILL.mdskills/web-dev/SKILL.md
GitHubWeb dev
Load the reference that matches the work; a change spanning layers loads each one it touches.
| Work | Reference |
|---|---|
| Components, pages, hooks, state, styling, performance | references/frontend.md |
| Routes, middleware, data, async, logging, CI, deploy, rollback | references/backend.md |
| Accessibility audit of a page or flow against WCAG 2.2 AA | references/a11y.md |
Rules for every layer
- Types are not negotiable. TypeScript
strict, Python annotated and checked (mypy --strictorpyright). Noany,@ts-ignore,# type: ignoreoras unknown as Tto silence a checker; fix the type. - Validate at every boundary (request, response, storage, URL, env) with a schema (
zod,pydantic); inferred types come from the schema, not the reverse. - Match the project. Use its styling system, framework data layer, package manager and conventions; do not introduce a second one.
- Reuse before writing. Search for the existing component, hook, util or route first.
- Idempotent, loud, reproducible. Scripts fail on any unhandled error, run twice with the same result, and work from a clean checkout.
- Measure before optimizing. Profile, Lighthouse,
EXPLAIN ANALYZE; never cargo-cult memoization or indexes.
Hand-offs
- Auth, tokens, sessions, uploads, SSRF:
security-reviewbefore wiring them. - Writing or fixing tests:
qa-automation. Browser, HTTP or CLI journeys live in itsreferences/e2e.md. - Launching the app to prove a change:
see-it-live. - Design and boundary critique of the result:
architect-review.
Done means
Type-check, lint and tests pass; the feature was exercised in the running app on the golden path and the error states; for services, the endpoint was hit with a real payload and the response matches the schema; for migrations, forward and rollback ran against a real database copy; for UI, axe or Lighthouse ran on the changed pages. Type-check passing is not feature-correctness.