Vanilla Web (HTML/CSS/JS)
Baseline constraints (from the rule)
Use these as non-negotiables:
- "HTML/CSS/JS only (no framework)."
- "Keep JS modular (ESM), split responsibilities (SRP)."
- "Prefer small, focused functions and pure utilities; avoid global state."
- "Ship complete runnable files and minimal tests before marking done."
When to activate this skill
Activate when the user asks for:
- vanilla JS / plain HTML/CSS/JS / static page
- “no framework”, “no React/Vue/Angular”
- small UI components (modal, tabs, dropdown, form validation) built directly in the DOM
- refactors to remove framework dependencies or reduce JS complexity
Output expectations
- Deliver complete runnable files (no missing imports/paths, no TODO placeholders).
- Keep changes small, testable, and incremental.
- Provide a short runbook: how to run/verify locally + what to check in DevTools.
Implementation workflow
1) Clarify only what blocks correctness
Ask up to 3 questions only if requirements are ambiguous in a way that changes implementation. Otherwise proceed with explicit assumptions.
2) Structure & responsibilities
- Prefer this split:
index.html(semantic markup)styles.css(orcss/…)js/main.jsas an ESM entrypoint +js/modules/*.jsfor components/utilities
- SRP: each module does one thing (DOM wiring, state, rendering, API, utilities).
- Avoid global mutable state. If state is needed, encapsulate it in a module and expose minimal functions.
3) HTML guidelines
- Use semantic tags (
header,main,nav,button,dialogwhere applicable). - Accessibility baseline: keyboard navigation, focus states, ARIA only when needed (don’t ARIA-overuse).
4) CSS guidelines
- Prefer simple, predictable naming (BEM-like optional).
- Use CSS variables for theme primitives.
- Keep layout responsive by default (flex/grid + relative units).
5) JavaScript guidelines (ESM)
- Use
type="module"and explicit imports/exports. - Prefer pure utilities and small functions.
- Use event delegation for lists/dynamic UIs.
- Handle errors explicitly (network failures, missing DOM nodes, invalid inputs).
Verification checklist
Use the detailed checklist in:
references/checklist.md
When finishing work, ensure:
- No console errors/warnings caused by the change
- All referenced assets resolve (paths/imports)
- Feature works with keyboard and without requiring a framework runtime
Progressive disclosure
Keep this SKILL.md lean; store deeper examples and checklists under references/.
Do not paste large style guides into SKILL.md—link to repo examples instead.
Suggested companion scripts (optional)
scripts/serve.shfor quick static serving (manual verification)
See:
scripts/serve.sh