index.html: Single-page app entry point (tabs, layout).styles.css: Theme and component styles (dark/light toggle).app.js: Vanilla JS for routing, filters, dialog, study tools.data/controls.json: Source of truth for CIS v8 controls (IDs, text, checklists).cis_v8_infographic.svgandcis_v8_infographic.html: Infographic assets.CIS Controls V8/: Upstream reference docs (PDF/XLSX). Do not edit.
- Run locally (no build step):
open index.html(macOS) or double‑click in Explorer/Finder.python3 -m http.server 8000then visithttp://localhost:8000.
- Lint (optional if you add tooling):
npx eslint app.jsandnpx prettier -w .(if configured).
- HTML/JS/CSS with 2‑space indentation; wrap at ~100 chars where sensible.
- Filenames: kebab‑case (
cis_v8_infographic.svg,styles.css). - JS: lowerCamelCase for variables/functions, PascalCase for classes, no one‑letter names.
- Keep logic framework‑free, modular, and accessible (ARIA roles, semantic tags).
- No automated tests configured. For manual QA:
- Verify search/filter/sort in Controls tab.
- Open a card: dialog shows Why/How/Metrics; add to Study.
- Study tab: flashcard flip, checklist persistence (localStorage), reset.
- Light/dark toggle persists across refresh.
- If adding tests, place under
tests/and prefer lightweight browser tests (Playwright). Document commands in this section.
- Messages: imperative, concise. Prefer Conventional Commits, e.g.,
feat: add IG filters,fix: dialog close on ESC. - PRs: include summary, screenshots/GIFs for UI, and reference any issue IDs. Limit scope; avoid unrelated refactors.
- Do not commit large binaries (e.g., the included video). Keep external assets out of
data/. - Local file links to PDFs/XLSX rely on hosting from the project root or a static server.
- Treat
data/controls.jsonas the canonical content; validate JSON before commit.