@dzhechkov/keysarium 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +70 -10
  2. package/bin/cli.js +0 -0
  3. package/package.json +5 -3
  4. package/src/utils.js +1 -1
  5. package/templates/.claude/commands/analyst-manual.md +38 -0
  6. package/templates/.claude/commands/brain-export.md +2 -0
  7. package/templates/.claude/commands/bto-benchmark.md +302 -0
  8. package/templates/.claude/commands/casarium.md +55 -4
  9. package/templates/.claude/commands/feature-adr.md +8 -0
  10. package/templates/.claude/commands/harvest.md +28 -46
  11. package/templates/.claude/rules/trust-tiers.md +6 -0
  12. package/templates/.claude/shards/feature-adr.shard.md +64 -10
  13. package/templates/.claude/shards/phase-ai-factory.shard.md +109 -0
  14. package/templates/.claude/skills/ai-factory-mapper/README.md +90 -0
  15. package/templates/.claude/skills/ai-factory-mapper/SKILL.md +309 -0
  16. package/templates/.claude/skills/ai-factory-mapper/assets/report-template.md +123 -0
  17. package/templates/.claude/skills/ai-factory-mapper/references/catalog.md +230 -0
  18. package/templates/.claude/skills/ai-factory-mapper/references/coverage-formula.md +219 -0
  19. package/templates/.claude/skills/ai-factory-mapper/references/decomposition-checklist.md +183 -0
  20. package/templates/.claude/skills/ai-factory-mapper/references/pattern-library.md +312 -0
  21. package/templates/.claude/skills/ai-factory-mapper/scripts/build_docx_report.js +423 -0
  22. package/templates/.claude/skills/analyst-manual-full/SKILL.md +286 -0
  23. package/templates/.claude/skills/edu-site-generator/SKILL.md +254 -0
  24. package/templates/.claude/skills/edu-site-generator/examples/sample-course-structure.md +116 -0
  25. package/templates/.claude/skills/edu-site-generator/modules/00-content-analysis.md +84 -0
  26. package/templates/.claude/skills/edu-site-generator/modules/01-course-structure.md +75 -0
  27. package/templates/.claude/skills/edu-site-generator/modules/02-data-generation.md +186 -0
  28. package/templates/.claude/skills/edu-site-generator/modules/03-scaffold.md +249 -0
  29. package/templates/.claude/skills/edu-site-generator/modules/04-components.md +130 -0
  30. package/templates/.claude/skills/edu-site-generator/modules/05-gamification.md +163 -0
  31. package/templates/.claude/skills/edu-site-generator/modules/06-deploy.md +88 -0
  32. package/templates/.claude/skills/edu-site-generator/modules/07-verification.md +97 -0
  33. package/templates/.claude/skills/edu-site-generator/references/component-templates.md +436 -0
  34. package/templates/.claude/skills/edu-site-generator/references/data-schemas.md +164 -0
  35. package/templates/.claude/skills/edu-site-generator/references/exercise-catalog.md +110 -0
  36. package/templates/.claude/skills/edu-site-generator/references/tech-stack.md +69 -0
  37. package/templates/.claude/skills/feature-adr/SKILL.md +245 -59
  38. package/templates/.claude/skills/feature-adr/modules/03-adr.md +43 -0
  39. package/templates/.claude/skills/feature-adr/modules/03.5-ideation-swarm.md +180 -0
  40. package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +56 -7
  41. package/templates/.claude/skills/feature-adr/modules/08-qe.md +87 -23
  42. package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +305 -0
  43. package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +143 -0
  44. package/templates/.claude/skills/feature-adr/references/agentic-qe/brutal-honesty-review.md +240 -0
  45. package/templates/.claude/skills/feature-adr/references/agentic-qe/chaos-engineering-resilience.md +163 -0
  46. package/templates/.claude/skills/feature-adr/references/agentic-qe/code-goal-planner.md +446 -0
  47. package/templates/.claude/skills/feature-adr/references/agentic-qe/enterprise-integration-testing.md +111 -0
  48. package/templates/.claude/skills/feature-adr/references/agentic-qe/mutation-testing.md +236 -0
  49. package/templates/.claude/skills/feature-adr/references/agentic-qe/performance-testing.md +315 -0
  50. package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-ideation-swarm.md +126 -0
  51. package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-production-swarm.md +108 -0
  52. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-coverage-analysis.md +193 -0
  53. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-requirements-validation.md +254 -0
  54. package/templates/.claude/skills/feature-adr/references/agentic-qe/regression-testing.md +233 -0
  55. package/templates/.claude/skills/feature-adr/references/agentic-qe/risk-based-testing.md +212 -0
  56. package/templates/.claude/skills/feature-adr/references/agentic-qe/security-testing.md +311 -0
  57. package/templates/.claude/skills/feature-adr/references/agentic-qe/shift-left-testing.md +231 -0
  58. package/templates/.claude/skills/feature-adr/references/agentic-qe/tdd-london-chicago.md +249 -0
  59. package/templates/.claude/skills/knowledge-extractor/SKILL.md +254 -0
  60. package/templates/.claude/skills/knowledge-extractor/modules/01-extract.md +188 -0
  61. package/templates/.claude/skills/knowledge-extractor/modules/02-classify.md +99 -0
  62. package/templates/.claude/skills/knowledge-extractor/modules/03-gate.md +150 -0
  63. package/templates/.claude/skills/knowledge-extractor/modules/04-integrate.md +159 -0
  64. package/templates/.claude/skills/knowledge-extractor/references/artifact-categories.md +100 -0
  65. package/templates/.claude/skills/knowledge-extractor/references/maturity-model.md +94 -0
  66. package/templates/.claude/skills/knowledge-extractor/references/quality-gates.md +98 -0
  67. package/templates/.claude/skills/knowledge-extractor/templates/artifact-card.md +63 -0
  68. package/templates/.claude/skills/knowledge-extractor/templates/harvest-report.md +102 -0
  69. package/templates/.claude/skills/transcript-site-generator/SKILL.md +287 -0
  70. package/templates/.claude/skills/transcript-site-generator/examples/sample-text-only-site.md +123 -0
  71. package/templates/.claude/skills/transcript-site-generator/examples/sample-transcript-site.md +134 -0
  72. package/templates/.claude/skills/transcript-site-generator/modules/00-input-analysis.md +132 -0
  73. package/templates/.claude/skills/transcript-site-generator/modules/01-content-parsing.md +117 -0
  74. package/templates/.claude/skills/transcript-site-generator/modules/02-site-generation.md +293 -0
  75. package/templates/.claude/skills/transcript-site-generator/modules/03-interactivity.md +406 -0
  76. package/templates/.claude/skills/transcript-site-generator/modules/04-deploy.md +130 -0
  77. package/templates/.claude/skills/transcript-site-generator/modules/05-verification.md +155 -0
  78. package/templates/.claude/skills/transcript-site-generator/references/component-catalog.md +86 -0
  79. package/templates/.claude/skills/transcript-site-generator/references/data-schemas.md +123 -0
  80. package/templates/.claude/skills/transcript-site-generator/references/tech-stack.md +132 -0
  81. package/templates/CLAUDE.md +30 -9
  82. package/templates/docs/continuous-learning-guide.md +622 -0
  83. package/templates/docs/edu-site-generator/01-deployment-guide.md +911 -0
  84. package/templates/docs/edu-site-generator/02-admin-guide.md +901 -0
  85. package/templates/docs/edu-site-generator/03-user-guide.md +1008 -0
  86. package/templates/docs/edu-site-generator/04-infrastructure-requirements.md +489 -0
  87. package/templates/docs/edu-site-generator/05-architecture.md +902 -0
  88. package/templates/docs/edu-site-generator/06-user-flows.md +759 -0
  89. package/templates/docs/improvement-directions.md +8 -4
  90. package/templates/docs/keysarium-core/02-functionality.md +3 -1
  91. package/templates/docs/skills-bto/01-deployment-guide.md +1 -1
  92. package/templates/docs/skills-bto/02-admin-guide.md +4 -1
  93. package/templates/docs/skills-bto/03-user-guide.md +4 -3
  94. package/templates/docs/skills-bto/04-infrastructure-requirements.md +2 -1
  95. package/templates/docs/skills-bto/05-architecture.md +11 -11
  96. package/templates/docs/skills-bto/06-user-flows.md +2 -1
  97. package/templates/docs/transcript-site-generator/01-deployment-guide.md +1042 -0
  98. package/templates/docs/transcript-site-generator/02-admin-guide.md +918 -0
  99. package/templates/docs/transcript-site-generator/03-user-guide.md +925 -0
  100. package/templates/docs/transcript-site-generator/04-infrastructure-requirements.md +482 -0
  101. package/templates/docs/transcript-site-generator/05-architecture.md +1068 -0
  102. package/templates/docs/transcript-site-generator/06-user-flows.md +855 -0
  103. package/templates/lib/dream-engine.md +1 -1
  104. package/templates/lib/memory-protocol.md +6 -2
  105. package/templates/lib/reward-tracker.md +6 -3
@@ -0,0 +1,489 @@
1
+ # Infrastructure Requirements — @dzhechkov/skills-edu-site
2
+
3
+ ## Contents
4
+
5
+ 1. [Architecture Overview](#1-architecture-overview)
6
+ 2. [Build Requirements](#2-build-requirements)
7
+ 3. [Runtime Dependencies](#3-runtime-dependencies)
8
+ 4. [Storage Requirements](#4-storage-requirements)
9
+ 5. [Hosting Options](#5-hosting-options)
10
+ 6. [Network Requirements](#6-network-requirements)
11
+ 7. [Browser Support](#7-browser-support)
12
+ 8. [Accessibility](#8-accessibility)
13
+ 9. [Readiness Checklist](#9-readiness-checklist)
14
+
15
+ ---
16
+
17
+ ## 1. Architecture Overview
18
+
19
+ @dzhechkov/skills-edu-site generates a fully static React SPA. The architecture has two distinct phases with fundamentally different infrastructure needs:
20
+
21
+ ```
22
+ PHASE 1: GENERATION PHASE 2: RUNTIME (post-build)
23
+ (Claude Code + Anthropic API) (Static files only)
24
+
25
+ +------------------------------+ +-------------------------+
26
+ | Developer Machine | | Static File Server |
27
+ | | | (GitHub Pages, etc.) |
28
+ | +------------------------+ | | |
29
+ | | Claude Code CLI | | | dist/ |
30
+ | | +-- edu-site-generator| | | +-- index.html |
31
+ | | skill | | | +-- assets/ |
32
+ | +----------+-------------+ | | | +-- index-*.js |
33
+ | | HTTPS | | | +-- index-*.css |
34
+ +-------------+----------------+ | +-- favicon.ico |
35
+ | | |
36
+ +-------v--------+ +-------------------------+
37
+ | Anthropic API | |
38
+ | (generation | | HTTPS
39
+ | phase only) | |
40
+ +----------------+ +------v-------+
41
+ | Browser |
42
+ | (end user) |
43
+ | No API calls|
44
+ | All offline |
45
+ +--------------+
46
+ ```
47
+
48
+ **Key architectural property:** After `npm run build`, the generated site is a collection of static files. No server-side code runs. No API calls are made. No database is needed. The entire application — content, exercises, gamification logic — runs in the browser.
49
+
50
+ This means:
51
+ - **Generation phase** requires Node.js, Claude Code CLI, and Anthropic API access
52
+ - **Runtime phase** requires only a static file server (or even opening `index.html` locally)
53
+
54
+ ---
55
+
56
+ ## 2. Build Requirements
57
+
58
+ These requirements apply to the developer machine where the site is generated and built.
59
+
60
+ ### 2.1. Software dependencies
61
+
62
+ | Component | Minimum version | Recommended | Check | Purpose |
63
+ |-----------|----------------|-------------|-------|---------|
64
+ | Node.js | 16.0.0 | 20 LTS | `node --version` | Build toolchain, Vite, React |
65
+ | npm | 8.0.0 | 10+ | `npm --version` | Package management |
66
+ | Claude Code CLI | Latest | Latest | `claude --version` | Skill execution environment |
67
+ | git | 2.20+ | Latest | `git --version` | Version control, GitHub Pages deploy |
68
+
69
+ ### 2.2. Hardware requirements
70
+
71
+ The build process is lightweight. Vite is fast and requires minimal resources.
72
+
73
+ | Component | Minimum | Recommended | Notes |
74
+ |-----------|---------|-------------|-------|
75
+ | CPU | 1 core | 2+ cores | Vite build is fast even on single core |
76
+ | RAM | 1 GB free | 2+ GB | Node.js process during build |
77
+ | Disk | 100 MB free | 500 MB | node_modules (~150 MB) + build output |
78
+ | Terminal | 80 x 24 | 120+ columns | Wider terminals display pipeline output better |
79
+
80
+ ### 2.3. Build commands
81
+
82
+ ```bash
83
+ # Install dependencies (one-time, or after generation)
84
+ npm install
85
+
86
+ # Development server with hot module replacement
87
+ npm run dev
88
+
89
+ # Production build
90
+ npm run build
91
+
92
+ # Preview production build locally
93
+ npm run preview
94
+ ```
95
+
96
+ ### 2.4. Build output
97
+
98
+ The `npm run build` command produces the `dist/` directory:
99
+
100
+ ```
101
+ dist/
102
+ +-- index.html (~2 KB)
103
+ +-- assets/
104
+ | +-- index-[hash].js (~100-300 KB, gzipped ~40-120 KB)
105
+ | +-- index-[hash].css (~10-30 KB, gzipped ~3-8 KB)
106
+ +-- favicon.ico (~1 KB)
107
+ ```
108
+
109
+ Total output size: 200-500 KB uncompressed, 50-150 KB gzipped.
110
+
111
+ ---
112
+
113
+ ## 3. Runtime Dependencies
114
+
115
+ These are the npm packages included in the generated project.
116
+
117
+ ### 3.1. Production dependencies
118
+
119
+ | Package | Version | Size (gzip) | Purpose |
120
+ |---------|---------|------------|---------|
121
+ | react | ^19.0.0 | ~6 KB | UI library |
122
+ | react-dom | ^19.0.0 | ~40 KB | DOM rendering |
123
+ | react-router-dom | ^7.0.0 | ~12 KB | Client-side routing (HashRouter) |
124
+ | zustand | ^5.0.0 | ~1 KB | State management with persist |
125
+
126
+ ### 3.2. Dev dependencies
127
+
128
+ | Package | Version | Purpose |
129
+ |---------|---------|---------|
130
+ | vite | ^6.0.0 | Build tool and dev server |
131
+ | @vitejs/plugin-react | ^4.0.0 | React Fast Refresh for Vite |
132
+ | tailwindcss | ^4.0.0 | Utility-first CSS framework |
133
+ | @tailwindcss/vite | ^4.0.0 | TailwindCSS v4 Vite integration |
134
+
135
+ ### 3.3. No runtime API dependencies
136
+
137
+ The generated site makes **zero network requests** after loading. All content — sections, exercises, quiz questions, achievements — is bundled into the JavaScript assets at build time. The site works fully offline once loaded.
138
+
139
+ This is a deliberate design choice:
140
+ - No backend server to maintain
141
+ - No API keys to manage
142
+ - No CORS issues
143
+ - Works in air-gapped environments
144
+ - Instant page transitions (all data is local)
145
+
146
+ ---
147
+
148
+ ## 4. Storage Requirements
149
+
150
+ ### 4.1. Source project (before build)
151
+
152
+ | Directory | Typical size | Contains |
153
+ |-----------|-------------|---------|
154
+ | `node_modules/` | ~150 MB | npm dependencies (not deployed) |
155
+ | `src/` | 50-200 KB | Application source code |
156
+ | `public/` | 1-10 KB | Static assets (favicon) |
157
+ | `.github/` | 1 KB | GitHub Actions workflow |
158
+ | **Total (with node_modules)** | **~150 MB** | |
159
+ | **Total (without node_modules)** | **~100-250 KB** | |
160
+
161
+ ### 4.2. Build output
162
+
163
+ | File | Typical size |
164
+ |------|-------------|
165
+ | `dist/index.html` | 1-3 KB |
166
+ | `dist/assets/*.js` | 100-300 KB |
167
+ | `dist/assets/*.css` | 10-30 KB |
168
+ | `dist/favicon.ico` | ~1 KB |
169
+ | **Total dist/** | **200-500 KB** |
170
+
171
+ ### 4.3. Client-side storage (localStorage)
172
+
173
+ The Zustand persist middleware stores user progress in localStorage:
174
+
175
+ | Data | Typical size | Description |
176
+ |------|-------------|-------------|
177
+ | Completed exercises | 0.5-2 KB | Set of exercise IDs per section |
178
+ | Points and streaks | < 0.1 KB | Numeric values |
179
+ | Unlocked achievements | 0.2-0.5 KB | Array of achievement IDs |
180
+ | Final test results | 0.5-1 KB | Answers and score |
181
+ | **Total localStorage** | **~1-4 KB** | |
182
+
183
+ This is well within browser localStorage limits (5-10 MB typical).
184
+
185
+ ---
186
+
187
+ ## 5. Hosting Options
188
+
189
+ ### 5.1. GitHub Pages (recommended, free)
190
+
191
+ The generated project includes a GitHub Actions workflow (`.github/workflows/deploy.yml`) for automated deployment.
192
+
193
+ **Setup:**
194
+ 1. Push the generated project to a GitHub repository
195
+ 2. Go to Settings > Pages > Source: GitHub Actions
196
+ 3. The workflow runs on every push to `main`
197
+
198
+ **Requirements:**
199
+ - GitHub account (free tier is sufficient)
200
+ - Repository (public or private — Pages works with both on paid plans)
201
+ - Correct `base` path in `vite.config.js` matching the repository name
202
+
203
+ **URL format:** `https://username.github.io/repository-name/`
204
+
205
+ **Limitations:**
206
+ - Max site size: 1 GB (generated sites are well under this)
207
+ - Bandwidth: 100 GB/month on free tier
208
+ - Build minutes: 2,000/month on free tier
209
+
210
+ ### 5.2. Self-hosted static file server
211
+
212
+ Any static file server can host the `dist/` directory.
213
+
214
+ **Nginx example:**
215
+ ```nginx
216
+ server {
217
+ listen 80;
218
+ server_name edu.example.com;
219
+ root /var/www/edu-site/dist;
220
+ index index.html;
221
+
222
+ location / {
223
+ try_files $uri $uri/ /index.html;
224
+ }
225
+
226
+ # Cache static assets
227
+ location /assets/ {
228
+ expires 1y;
229
+ add_header Cache-Control "public, immutable";
230
+ }
231
+ }
232
+ ```
233
+
234
+ **Requirements:** Any server capable of serving static files (Nginx, Apache, Caddy, Python http.server).
235
+
236
+ ### 5.3. Vercel
237
+
238
+ ```bash
239
+ # Install Vercel CLI
240
+ npm i -g vercel
241
+
242
+ # Deploy (from project root)
243
+ vercel --prod
244
+ ```
245
+
246
+ Set `base: '/'` in `vite.config.js` when deploying to Vercel.
247
+
248
+ ### 5.4. Netlify
249
+
250
+ ```bash
251
+ # Install Netlify CLI
252
+ npm i -g netlify-cli
253
+
254
+ # Deploy
255
+ netlify deploy --prod --dir=dist
256
+ ```
257
+
258
+ Create `netlify.toml` in the project root:
259
+ ```toml
260
+ [build]
261
+ command = "npm run build"
262
+ publish = "dist"
263
+
264
+ [[redirects]]
265
+ from = "/*"
266
+ to = "/index.html"
267
+ status = 200
268
+ ```
269
+
270
+ ### 5.5. Local file system (offline)
271
+
272
+ For offline use or internal distribution, the built site can be opened directly from the file system. Since the project uses `HashRouter` (not `BrowserRouter`), routing works correctly without a server.
273
+
274
+ ```bash
275
+ # Build the project
276
+ npm run build
277
+
278
+ # Open directly in browser
279
+ open dist/index.html # macOS
280
+ xdg-open dist/index.html # Linux
281
+ start dist/index.html # Windows
282
+ ```
283
+
284
+ ---
285
+
286
+ ## 6. Network Requirements
287
+
288
+ ### 6.1. Generation phase
289
+
290
+ During generation (running `/edu-site` in Claude Code), the tool requires:
291
+
292
+ | Destination | Port | Protocol | Purpose |
293
+ |-------------|------|----------|---------|
294
+ | api.anthropic.com | 443 | HTTPS | Claude API calls |
295
+ | Target documentation URL (if applicable) | 443 | HTTPS | Content fetching (Step 1) |
296
+ | registry.npmjs.org | 443 | HTTPS | npm install (one-time) |
297
+
298
+ If behind a firewall or proxy, ensure outbound HTTPS access to these domains.
299
+
300
+ ### 6.2. Build phase
301
+
302
+ ```bash
303
+ npm install # Requires network (downloads packages)
304
+ npm run build # No network required (local operation)
305
+ ```
306
+
307
+ After `npm install` completes, `npm run build` runs entirely offline.
308
+
309
+ ### 6.3. Runtime phase
310
+
311
+ **The generated site makes zero network calls.** Once the browser loads the HTML, CSS, and JS assets, everything runs locally. No analytics, no tracking, no telemetry, no API calls.
312
+
313
+ This means:
314
+ - The site works after initial load even if the network goes down
315
+ - The site works in incognito/private mode
316
+ - The site works behind restrictive firewalls
317
+ - The site works on local intranets with no internet access
318
+
319
+ ---
320
+
321
+ ## 7. Browser Support
322
+
323
+ ### 7.1. Supported browsers
324
+
325
+ The generated site targets modern browsers with ES2020+ support:
326
+
327
+ | Browser | Minimum version | Status |
328
+ |---------|----------------|--------|
329
+ | Chrome | 80+ | Fully supported |
330
+ | Firefox | 80+ | Fully supported |
331
+ | Safari | 14+ | Fully supported |
332
+ | Edge | 80+ (Chromium-based) | Fully supported |
333
+ | Mobile Chrome | 80+ | Fully supported |
334
+ | Mobile Safari | 14+ | Fully supported |
335
+ | Internet Explorer | Any | Not supported |
336
+
337
+ ### 7.2. JavaScript features used
338
+
339
+ The generated code uses:
340
+ - ES Modules (`import` / `export`)
341
+ - Optional chaining (`?.`)
342
+ - Nullish coalescing (`??`)
343
+ - `Array.prototype.at()`
344
+ - Template literals
345
+ - Destructuring
346
+ - Arrow functions
347
+ - `async` / `await` (for lazy loading)
348
+
349
+ All of these are supported in the browser versions listed above.
350
+
351
+ ### 7.3. CSS features used
352
+
353
+ TailwindCSS v4 output uses:
354
+ - CSS Custom Properties (`--color-primary`)
355
+ - CSS Grid and Flexbox
356
+ - `@media` queries for responsive design
357
+ - `clamp()` for fluid typography (optional)
358
+ - `:has()` pseudo-class (in some generated patterns)
359
+
360
+ ### 7.4. Touch support
361
+
362
+ Drag-to-Order and Matching exercises support both mouse and touch events. The generated components use pointer events where possible and fall back to touch events for older mobile browsers.
363
+
364
+ ---
365
+
366
+ ## 8. Accessibility
367
+
368
+ ### 8.1. Keyboard navigation
369
+
370
+ All interactive elements are keyboard-accessible:
371
+
372
+ | Element | Key | Action |
373
+ |---------|-----|--------|
374
+ | Quiz options | Tab, Space/Enter | Navigate and select |
375
+ | Flashcards | Space/Enter | Flip card |
376
+ | Navigation links | Tab, Enter | Navigate between pages |
377
+ | Buttons | Tab, Space/Enter | Activate |
378
+ | Modal/Toast | Escape | Dismiss |
379
+
380
+ ### 8.2. ARIA attributes
381
+
382
+ Generated components include relevant ARIA attributes:
383
+
384
+ ```jsx
385
+ // Quiz example
386
+ <div role="radiogroup" aria-labelledby="question-title">
387
+ <label>
388
+ <input
389
+ type="radio"
390
+ name="answer"
391
+ value={index}
392
+ aria-checked={selected === index}
393
+ />
394
+ {option}
395
+ </label>
396
+ </div>
397
+
398
+ // Progress bar
399
+ <div
400
+ role="progressbar"
401
+ aria-valuenow={progress}
402
+ aria-valuemin={0}
403
+ aria-valuemax={100}
404
+ aria-label="Section progress"
405
+ />
406
+
407
+ // Toast notification
408
+ <div
409
+ role="status"
410
+ aria-live="polite"
411
+ aria-atomic="true"
412
+ >
413
+ Achievement Unlocked!
414
+ </div>
415
+ ```
416
+
417
+ ### 8.3. Color contrast
418
+
419
+ The default themes meet WCAG 2.1 AA contrast ratios:
420
+ - Text on background: minimum 4.5:1
421
+ - Large text on background: minimum 3:1
422
+ - Interactive element boundaries: minimum 3:1
423
+
424
+ ### 8.4. Screen reader support
425
+
426
+ - All pages have descriptive `<title>` tags
427
+ - Headings follow a logical hierarchy (h1 > h2 > h3)
428
+ - Images (if added) require `alt` attributes
429
+ - Form inputs have associated `<label>` elements
430
+ - Navigation landmarks use `<nav>`, `<main>`, `<aside>`, `<footer>`
431
+
432
+ ---
433
+
434
+ ## 9. Readiness Checklist
435
+
436
+ Use this checklist before running your first edu-site generation.
437
+
438
+ ### Generation environment
439
+
440
+ - [ ] Node.js 16+ installed (`node --version` returns v16.x.x or higher)
441
+ - [ ] npm 8+ installed (`npm --version` returns 8.x.x or higher)
442
+ - [ ] Claude Code CLI installed (`claude --version` succeeds)
443
+ - [ ] git installed (`git --version` succeeds)
444
+ - [ ] @dzhechkov/skills-edu-site initialized (`npx @dzhechkov/skills-edu-site init` completed)
445
+
446
+ ### Skill files
447
+
448
+ - [ ] `.claude/skills/edu-site-generator/SKILL.md` exists and is non-empty
449
+ - [ ] `.claude/skills/edu-site-generator/modules/` contains 8 module files
450
+ - [ ] `.claude/skills/edu-site-generator/references/` contains 5 reference files
451
+ - [ ] `.claude/commands/edu-site.md` exists
452
+
453
+ ### API access (generation phase only)
454
+
455
+ - [ ] `ANTHROPIC_API_KEY` environment variable set, or `claude auth login` completed
456
+ - [ ] Outbound HTTPS to `api.anthropic.com:443` is permitted
457
+ - [ ] (Optional) Outbound HTTPS to documentation URLs is permitted
458
+
459
+ ### Deployment (if using GitHub Pages)
460
+
461
+ - [ ] GitHub account active
462
+ - [ ] Target repository created
463
+ - [ ] GitHub Pages enabled (Settings > Pages > Source: GitHub Actions)
464
+
465
+ ### Verification
466
+
467
+ Run the doctor command to confirm the skill installation:
468
+
469
+ ```bash
470
+ npx @dzhechkov/skills-edu-site doctor
471
+ ```
472
+
473
+ Expected output when everything is in order:
474
+
475
+ ```
476
+ Edu-Site Doctor -- Health Check
477
+ ---
478
+ Node.js: v20.11.0 OK
479
+ npm: 10.2.4 OK
480
+ Claude Code: 1.x.x OK
481
+ SKILL.md: present OK
482
+ modules/: 8 files OK
483
+ references/: 5 files OK
484
+ commands/: 1 file OK
485
+ API key: present OK (not validated)
486
+ ---
487
+ Status: READY
488
+ Run /edu-site "test topic" to verify end-to-end.
489
+ ```