jekyll-theme-zer0 0.15.0 β†’ 0.15.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c1f84062f41461c980a5bbe9e83cc78e3e657ae3ba2de736b2931968c12fa2c
4
- data.tar.gz: ea7b72031d159cbe9057fef78236cea13d465e21de1040365ae1ce47b5dc7ea5
3
+ metadata.gz: 62704de5aed76c7000c418b93977002ded56b588a49183c4548c315bd2b40fdd
4
+ data.tar.gz: acfd3a0d47a33a99af964fe2019e0128bbfb50903640658671bb6090b3b38495
5
5
  SHA512:
6
- metadata.gz: 2c45b5836e177461322d1b8b6a39dcd2e7c3437ddf16fda51fdd162a3ab02e8e6584e893d19e336f3c9c313cef23d70ce09c3fce8c78949efb71d83baca0533b
7
- data.tar.gz: 28b475ad13770cf989d285d3ad1cd73c63216609734c356e312a8c0c62dfdd67a16f09d07e1cf0be5878b198a752d1965bfbe4ca78021707e20e7cb8c7efaff7
6
+ metadata.gz: 8db972fbd75ed902880434ab1e8a79ba24ae276492cebce8987cda3ad085b0aeea26fc2174e8cf72594896884c5d1b3b08f816b97a0d1536044d51afa52c2d5e
7
+ data.tar.gz: 839bbeb76675da98c6136c952722154249264fe4998003b4c5e2152401855dcea16ac31864f89e66a30236589e41ecc789361378fd3308a8c529cd8315c67a0f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.15.2] - 2025-12-19
4
+
5
+ ### Changed
6
+ - Version bump: patch release
7
+
8
+ ### Commits in this release
9
+ - e1342ab Add configuration files for content organization, prerequisites, statistics, and UI text
10
+ - 366e8a2 chore(deps): update Ruby gem dependencies (#16)
11
+
12
+
13
+ ## [0.15.1] - 2025-12-14
14
+
15
+ ### Changed
16
+ - update test runner documentation for Bash 3.2 compatibility
17
+ - update version to 0.15.0 and enhance documentation with new features
18
+
19
+ ### Fixed
20
+ - refactor changelog.sh for Bash 3.2 compatibility (macOS default)
21
+
22
+ ### Other
23
+ - document Bash 3.2 compatibility in automation
24
+ - unfreeze bundler before updating Gemfile.lock in version-bump workflow
25
+ - update Windows Developer Mode instructions and correct spelling errors
26
+ - Social sharing buttons use production URLs instead of localhost
27
+ - update Gemfile.lock for v0.15.0
28
+
29
+
30
+
3
31
  ## [0.15.0] - 2025-12-11
4
32
 
5
33
  ### Added
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  title: zer0-mistakes
3
3
  sub-title: Jekyll Theme
4
4
  description: Docker-optimized Jekyll theme with AI-powered installation automation and comprehensive error handling.
5
- version: 0.11.0
5
+ version: 0.15.0
6
6
  layout: landing
7
7
  tags:
8
8
  - jekyll
@@ -215,12 +215,14 @@ pie title Technology Distribution
215
215
 
216
216
  | Layer | Technology | Purpose |
217
217
  |-------|-----------|---------|
218
- | **Framework** | Jekyll 3.9.5 | Static site generation |
218
+ | **Framework** | Jekyll 3.10.0 | Static site generation |
219
219
  | **Styling** | Bootstrap 5.3.3 | Responsive UI components |
220
+ | **Icons** | Bootstrap Icons | Unified iconography |
220
221
  | **Development** | Docker | Cross-platform consistency |
221
222
  | **Templates** | Liquid | Dynamic content rendering |
222
223
  | **Analytics** | PostHog | Privacy-first tracking |
223
224
  | **Diagrams** | Mermaid 10+ | Documentation visuals |
225
+ | **Navigation** | Intersection Observer | Scroll spy & accessibility |
224
226
 
225
227
  ---
226
228
 
@@ -330,6 +332,33 @@ collections:
330
332
  permalink: /notebooks/:name/
331
333
  ```
332
334
 
335
+ ### 🧭 Enhanced Navigation System (v0.14.0)
336
+
337
+ Modern, accessible sidebar navigation with advanced features:
338
+
339
+ - **Intersection Observer Scroll Spy**: 70% reduction in scroll event overhead
340
+ - **Keyboard Shortcuts**: `[` and `]` for section navigation
341
+ - **Swipe Gestures**: Mobile-friendly left/right edge detection
342
+ - **Skip-to-Content**: Accessibility-first WCAG 2.1 Level AA compliant
343
+ - **Mobile TOC FAB**: Floating action button for table of contents
344
+ - **Unified Bootstrap Icons**: Consistent iconography across all components
345
+ - **Focus Management**: Improved screen reader support with ARIA labels
346
+
347
+ | Shortcut | Action |
348
+ |----------|--------|
349
+ | `[` | Previous section |
350
+ | `]` | Next section |
351
+ | `Tab` | Skip to content |
352
+ | Swipe | Toggle sidebar (mobile) |
353
+
354
+ ### πŸ“‹ Legal & Compliance Pages (v0.15.0)
355
+
356
+ Built-in GDPR/CCPA compliant documentation:
357
+
358
+ - **Privacy Policy**: Comprehensive data collection transparency
359
+ - **Terms of Service**: Ready-to-customize legal framework
360
+ - **Cookie Consent**: Granular user preference management
361
+
333
362
  ---
334
363
 
335
364
  ## πŸ“¦ Installation Methods
@@ -361,7 +390,7 @@ docker-compose up
361
390
 
362
391
  ```ruby
363
392
  # Gemfile
364
- gem "jekyll-theme-zer0", "~> 0.10"
393
+ gem "jekyll-theme-zer0", "~> 0.15"
365
394
  ```
366
395
 
367
396
  ---
@@ -403,12 +432,13 @@ graph TD
403
432
 
404
433
  | Directory | Purpose | Key Files |
405
434
  |-----------|---------|-----------|
406
- | `_layouts/` | Page templates | `default.html`, `journals.html`, `landing.html` |
407
- | `_includes/` | Reusable components | `core/`, `components/`, `analytics/` |
408
- | `_sass/` | Stylesheets | `custom.scss`, `core/` |
409
- | `assets/` | Static files | `css/`, `js/`, `images/` |
410
- | `scripts/` | Automation | `release`, `build`, `version.sh` |
411
- | `docs/` | Technical docs | `features/`, `systems/`, `releases/` |
435
+ | `_layouts/` | Page templates | `default.html`, `journals.html`, `landing.html`, `notebook.html` |
436
+ | `_includes/` | Reusable components | `core/`, `components/`, `analytics/`, `navigation/` |
437
+ | `_sass/` | Stylesheets | `custom.scss`, `notebooks.scss`, `core/` |
438
+ | `assets/` | Static files | `css/`, `js/sidebar.js`, `images/` |
439
+ | `scripts/` | Automation | `release`, `build`, `convert-notebooks.sh` |
440
+ | `docs/` | Technical docs | `SIDEBAR_IMPROVEMENTS.md`, `JUPYTER_NOTEBOOKS.md` |
441
+ | `pages/` | Content pages | `privacy-policy.md`, `terms-of-service.md` |
412
442
 
413
443
  ---
414
444
 
@@ -537,8 +567,10 @@ graph LR
537
567
  | [πŸ“‹ Technical Docs](docs/) | Architecture, systems, implementation |
538
568
  | [πŸ“– User Guides](pages/_docs/) | Published tutorials and references |
539
569
  | [πŸ€– Copilot Instructions](.github/copilot-instructions.md) | AI development guidelines |
540
- | [🌱 Seed Documentation](.github/seed/) | Full reconstruction blueprints |
570
+ | [⌨️ Keyboard Navigation](docs/keyboard-navigation.md) | Accessibility shortcuts guide |
571
+ | [πŸ““ Jupyter Notebooks](docs/JUPYTER_NOTEBOOKS.md) | Notebook conversion documentation |
541
572
  | [πŸ“ PRD](PRD.md) | Product requirements & roadmap |
573
+ | [πŸ”’ Privacy Policy](pages/privacy-policy.md) | GDPR/CCPA compliant privacy docs |
542
574
 
543
575
  ---
544
576
 
@@ -582,9 +614,9 @@ flowchart LR
582
614
  /opt/homebrew/bin/bash scripts/release patch --dry-run
583
615
 
584
616
  # Full release
585
- /opt/homebrew/bin/bash scripts/release patch # 0.10.3 β†’ 0.10.4
586
- /opt/homebrew/bin/bash scripts/release minor # 0.10.3 β†’ 0.11.0
587
- /opt/homebrew/bin/bash scripts/release major # 0.10.3 β†’ 1.0.0
617
+ /opt/homebrew/bin/bash scripts/release patch # 0.15.0 β†’ 0.15.1
618
+ /opt/homebrew/bin/bash scripts/release minor # 0.15.0 β†’ 0.16.0
619
+ /opt/homebrew/bin/bash scripts/release major # 0.15.0 β†’ 1.0.0
588
620
  ```
589
621
 
590
622
  ---
@@ -596,19 +628,19 @@ gantt
596
628
  title zer0-mistakes Roadmap
597
629
  dateFormat YYYY-MM
598
630
  section Current
599
- v0.10.x Maintenance :done, 2025-11, 2025-12
631
+ v0.15.x Maintenance :done, 2025-12, 2026-01
600
632
  section Future
601
- v0.11 - CMS Integration :2026-01, 2026-03
602
- v0.12 - Advanced Analytics:2026-04, 2026-06
603
- v0.13 - i18n Support :2026-07, 2026-09
633
+ v0.16 - CMS Integration :2026-01, 2026-03
634
+ v0.17 - Advanced Analytics:2026-04, 2026-06
635
+ v0.18 - i18n Support :2026-07, 2026-09
604
636
  v1.0 - Production Ready :milestone, 2027-01, 1d
605
637
  ```
606
638
 
607
639
  | Version | Target | Features |
608
640
  |---------|--------|----------|
609
- | **v0.11** | Q1 2026 | Headless CMS integration, content API |
610
- | **v0.12** | Q2 2026 | A/B testing, conversion funnels |
611
- | **v0.13** | Q3 2026 | Multi-language support (i18n) |
641
+ | **v0.16** | Q1 2026 | Headless CMS integration, content API |
642
+ | **v0.17** | Q2 2026 | A/B testing, conversion funnels |
643
+ | **v0.18** | Q3 2026 | Multi-language support (i18n) |
612
644
  | **v1.0** | Q1 2027 | Stable API, 90%+ test coverage |
613
645
 
614
646
  ---
@@ -664,11 +696,11 @@ git push origin feature/awesome-feature
664
696
 
665
697
  | Metric | Value |
666
698
  |--------|-------|
667
- | **Current Version** | 0.10.3 |
699
+ | **Current Version** | 0.15.0 |
668
700
  | **Installation Success** | ~95% |
669
701
  | **Setup Time** | 2-5 minutes |
670
- | **RubyGems Downloads** | 2,500+ |
671
- | **Documentation** | 17,500+ lines |
702
+ | **RubyGems Downloads** | 3,000+ |
703
+ | **Documentation** | 20,000+ lines |
672
704
  | **Lighthouse Score** | 95+ |
673
705
 
674
706
  ---
@@ -688,6 +720,6 @@ Built with these amazing technologies:
688
720
 
689
721
  **Built with ❀️ for the Jekyll community**
690
722
 
691
- **v0.10.3** β€’ [Changelog](CHANGELOG.md) β€’ [License](LICENSE) β€’ [Contributing](CONTRIBUTING.md)
723
+ **v0.15.0** β€’ [Changelog](CHANGELOG.md) β€’ [License](LICENSE) β€’ [Contributing](CONTRIBUTING.md)
692
724
 
693
725
 
data/_data/README.md CHANGED
@@ -1,31 +1,433 @@
1
- ## Getting Started
1
+ # πŸ“Š Zer0-Mistakes Data Directory
2
2
 
3
- These instructions will help you understand the data files in this directory.
3
+ This directory contains YAML data files that power the Zer0-Mistakes Jekyll theme's dynamic features, including navigation, content statistics, internationalization, and content organization.
4
4
 
5
- ### Raw Data
5
+ ## πŸ“ Directory Contents
6
6
 
7
- The `raw` directory contains the raw data files. These files are the original data and have not been processed or manipulated in any way.
7
+ | File | Purpose | Auto-Generated |
8
+ |------|---------|----------------|
9
+ | `navigation/` | Site navigation menus | No |
10
+ | `authors.yml` | Author profile information | No |
11
+ | `content_statistics.yml` | Site content analytics | **Yes** |
12
+ | `statistics_config.yml` | Statistics generation config | No |
13
+ | `ui-text.yml` | Multilingual UI text labels | No |
14
+ | `prerequisites.yml` | Educational prerequisites | No |
15
+ | `posts_organization.yml` | Post section mappings | No |
16
+ | `generate_statistics.rb` | Statistics generator script | No |
17
+ | `generate_statistics.sh` | Bash wrapper script | No |
18
+ | `update_statistics.sh` | CI/CD automation script | No |
19
+ | `github-actions-example.yml` | Example workflow | No |
8
20
 
9
- ### Processed Data
21
+ ---
10
22
 
11
- The `processed` directory contains the data files that have been processed and are ready for analysis. These files have been cleaned, manipulated, or otherwise processed from the raw data files.
23
+ ## πŸ“‚ Navigation
12
24
 
13
- ## Contributing
25
+ ### `navigation/`
14
26
 
15
- Please read [CONTRIBUTING.md](url) for details on our code of conduct, and the process for submitting pull requests to us.
27
+ Contains YAML files for site navigation menus (sidebar, header, footer).
16
28
 
17
- ## Authors
29
+ **Example structure:**
30
+ ```yaml
31
+ # navigation/main.yml
32
+ - title: Home
33
+ url: /
34
+ icon: bi-house
35
+ - title: Documentation
36
+ url: /docs/
37
+ icon: bi-book
38
+ children:
39
+ - title: Getting Started
40
+ url: /docs/getting-started/
41
+ ```
18
42
 
19
- - **Your Name** - _Initial work_ - [YourGithub](url)
43
+ ---
20
44
 
21
- See also the list of [contributors](url) who participated in this project.
45
+ ## πŸ‘€ Authors
22
46
 
23
- ## License
47
+ ### `authors.yml`
24
48
 
25
- This project is licensed under the MIT License - see the [LICENSE.md](url) file for details
49
+ Defines author profiles for multi-author sites.
26
50
 
27
- ## Acknowledgments
51
+ **Structure:**
52
+ ```yaml
53
+ john_doe:
54
+ name: "John Doe"
55
+ bio: "Senior Developer and Technical Writer"
56
+ avatar: /assets/images/authors/john.jpg
57
+ email: john@example.com
58
+ twitter: johndoe
59
+ github: johndoe
60
+ website: https://johndoe.dev
61
+ ```
28
62
 
29
- - Hat tip to anyone whose code was used
30
- - Inspiration
31
- - etc
63
+ **Usage in posts:**
64
+ ```yaml
65
+ ---
66
+ author: john_doe
67
+ ---
68
+ ```
69
+
70
+ ---
71
+
72
+ ## πŸ“ˆ Content Statistics
73
+
74
+ ### `content_statistics.yml` ⚑ *Auto-Generated*
75
+
76
+ Contains computed statistics about site content. **Do not edit manually** - this file is regenerated by `generate_statistics.rb`.
77
+
78
+ **Generated metrics:**
79
+ - `total_posts`: Total number of posts
80
+ - `published`: Published posts count
81
+ - `drafts`: Draft posts count
82
+ - `categories`: Posts per category
83
+ - `category_count`: Total unique categories
84
+ - `tags`: Posts per tag
85
+ - `tag_count`: Total unique tags
86
+ - `focus_areas`: Content by focus area (DevOps, Frontend, etc.)
87
+ - `skill_levels`: Content by difficulty level
88
+ - `content_types`: Content by type (tutorial, guide, etc.)
89
+ - `authors`: Posts per author
90
+ - `content_freshness`: Age distribution of content
91
+ - `date_range`: Earliest and latest post dates
92
+ - `derived_stats`: Calculated averages and insights
93
+ - `generated_at`: Timestamp of generation
94
+
95
+ **Accessing in templates:**
96
+ ```liquid
97
+ {% assign stats = site.data.content_statistics %}
98
+ <p>Total posts: {{ stats.total_posts }}</p>
99
+ <p>Most posts in: {{ stats.derived_stats.most_common_category }}</p>
100
+ ```
101
+
102
+ ### `statistics_config.yml`
103
+
104
+ Configuration for the statistics generator. Defines keyword mappings for content analysis.
105
+
106
+ **Sections:**
107
+ ```yaml
108
+ # Focus area detection keywords
109
+ focus_areas:
110
+ devops: [docker, kubernetes, ci/cd, jenkins, terraform]
111
+ frontend: [javascript, react, vue, css, html]
112
+ backend: [python, node, api, database, sql]
113
+ # ... more areas
114
+
115
+ # Skill level detection
116
+ skill_levels:
117
+ beginner: [introduction, basics, getting started, 101]
118
+ intermediate: [advanced basics, building, implementing]
119
+ advanced: [optimization, architecture, scaling]
120
+ expert: [mastering, deep dive, internals]
121
+
122
+ # Content type detection
123
+ content_types:
124
+ tutorial: [tutorial, how-to, step-by-step, walkthrough]
125
+ guide: [guide, handbook, manual, reference]
126
+ # ... more types
127
+
128
+ # Display preferences
129
+ display:
130
+ top_categories: 10
131
+ top_tags: 20
132
+ top_focus_areas: 8
133
+ ```
134
+
135
+ ---
136
+
137
+ ## πŸ”§ Statistics Scripts
138
+
139
+ ### `generate_statistics.rb`
140
+
141
+ Ruby script that analyzes site content and generates `content_statistics.yml`.
142
+
143
+ **Usage:**
144
+ ```bash
145
+ # Direct execution
146
+ ruby _data/generate_statistics.rb
147
+
148
+ # Via wrapper script
149
+ bash _data/generate_statistics.sh
150
+ ```
151
+
152
+ **Features:**
153
+ - Front matter parsing
154
+ - Category and tag analysis
155
+ - Focus area detection (via keywords)
156
+ - Skill level classification
157
+ - Content freshness calculation
158
+ - Author statistics
159
+ - Derived metrics computation
160
+
161
+ ### `generate_statistics.sh`
162
+
163
+ Bash wrapper script for statistics generation with validation and preview.
164
+
165
+ **Usage:**
166
+ ```bash
167
+ # Generate statistics
168
+ ./generate_statistics.sh
169
+
170
+ # Preview output (requires yq)
171
+ ./generate_statistics.sh --preview
172
+ ```
173
+
174
+ **Features:**
175
+ - Ruby availability check
176
+ - Configuration file validation
177
+ - Content directory verification
178
+ - Color-coded output
179
+ - Optional preview with yq
180
+
181
+ ### `update_statistics.sh`
182
+
183
+ CI/CD automation script for running statistics updates in pipelines.
184
+
185
+ **Environment Variables:**
186
+ ```bash
187
+ CI=true # Indicates CI environment
188
+ AUTO_PUSH=true # Auto-commit and push changes
189
+ FORCE_UPDATE=true # Skip hash comparison
190
+ ```
191
+
192
+ **Features:**
193
+ - CI environment detection
194
+ - Hash-based change detection
195
+ - Automatic git commit/push
196
+ - Skip unchanged content
197
+ - Detailed logging
198
+
199
+ ### `github-actions-example.yml`
200
+
201
+ Example GitHub Actions workflow for automated statistics updates.
202
+
203
+ **Copy to `.github/workflows/update-statistics.yml` to enable.**
204
+
205
+ **Triggers:**
206
+ - Push to `pages/_posts/**`, `pages/_docs/**`, `_data/statistics_config.yml`
207
+ - Manual workflow_dispatch with options
208
+ - Weekly schedule (Monday 6 AM UTC)
209
+
210
+ **Workflow Options:**
211
+ - `force_update`: Update even if no changes detected
212
+ - `skip_push`: Generate but don't commit
213
+
214
+ ---
215
+
216
+ ## 🌐 Internationalization (i18n)
217
+
218
+ ### `ui-text.yml`
219
+
220
+ Multilingual UI text labels for theme components.
221
+
222
+ **Supported Languages:**
223
+ - `en` - English (default)
224
+ - `es` - Spanish
225
+ - `fr` - French
226
+ - `de` - German
227
+ - `ar` - Arabic (RTL)
228
+
229
+ **Structure:**
230
+ ```yaml
231
+ en:
232
+ # Navigation
233
+ skip_links: "Skip to main content"
234
+ menu_label: "Menu"
235
+ search_label: "Search"
236
+
237
+ # Content
238
+ read_more: "Read more"
239
+ table_of_contents: "Table of Contents"
240
+
241
+ # Statistics
242
+ stats_total_posts: "Total Posts"
243
+ stats_published: "Published"
244
+ # ... more labels
245
+ ```
246
+
247
+ **Usage in templates:**
248
+ ```liquid
249
+ {% assign ui = site.data.ui-text[site.lang | default: 'en'] %}
250
+ <span>{{ ui.read_more }}</span>
251
+ ```
252
+
253
+ ---
254
+
255
+ ## πŸ“š Educational Content
256
+
257
+ ### `prerequisites.yml`
258
+
259
+ Defines prerequisites for tutorials and educational content.
260
+
261
+ **Structure:**
262
+ ```yaml
263
+ - id: git-basics
264
+ title: "Git Version Control Basics"
265
+ description: "Understanding commits, branches, and basic git workflow"
266
+ level: beginner
267
+ category: version-control
268
+
269
+ - id: docker-fundamentals
270
+ title: "Docker Container Fundamentals"
271
+ description: "Understanding containers, images, and Docker CLI"
272
+ level: intermediate
273
+ category: devops
274
+ ```
275
+
276
+ **Usage in post front matter:**
277
+ ```yaml
278
+ ---
279
+ prerequisites:
280
+ - git-basics
281
+ - docker-fundamentals
282
+ ---
283
+ ```
284
+
285
+ **Usage in templates:**
286
+ ```liquid
287
+ {% if page.prerequisites %}
288
+ <div class="prerequisites">
289
+ <h4>Prerequisites</h4>
290
+ <ul>
291
+ {% for prereq_id in page.prerequisites %}
292
+ {% assign prereq = site.data.prerequisites | where: "id", prereq_id | first %}
293
+ <li>{{ prereq.title }} - {{ prereq.description }}</li>
294
+ {% endfor %}
295
+ </ul>
296
+ </div>
297
+ {% endif %}
298
+ ```
299
+
300
+ ---
301
+
302
+ ## πŸ“‚ Post Organization
303
+
304
+ ### `posts_organization.yml`
305
+
306
+ Configuration for post section mappings and URL patterns.
307
+
308
+ **Sections:**
309
+ ```yaml
310
+ sections:
311
+ - id: ai-machine-learning
312
+ title: "AI & Machine Learning"
313
+ directory: "pages/_posts/ai & machine learning"
314
+ icon: "bi-robot"
315
+ color: "#8B5CF6"
316
+ description: "Artificial intelligence, ML models, and data science"
317
+ aliases: ["ai", "ml", "machine-learning", "artificial-intelligence"]
318
+ ```
319
+
320
+ **Category to Section Mapping:**
321
+ ```yaml
322
+ category_to_section:
323
+ "ai & machine learning": ai-machine-learning
324
+ "artificial intelligence": ai-machine-learning
325
+ "devops": devops
326
+ "docker": devops
327
+ ```
328
+
329
+ **URL Pattern:**
330
+ ```yaml
331
+ url_pattern: "/:categories/:year/:month/:day/:title/"
332
+ ```
333
+
334
+ ---
335
+
336
+ ## πŸ”„ Automation Workflows
337
+
338
+ ### Setting Up Automated Statistics
339
+
340
+ 1. **Copy the workflow file:**
341
+ ```bash
342
+ cp _data/github-actions-example.yml .github/workflows/update-statistics.yml
343
+ ```
344
+
345
+ 2. **Ensure scripts are executable:**
346
+ ```bash
347
+ chmod +x _data/generate_statistics.sh
348
+ chmod +x _data/update_statistics.sh
349
+ ```
350
+
351
+ 3. **Customize triggers** in the workflow file as needed.
352
+
353
+ 4. **Push to main branch** to enable the workflow.
354
+
355
+ ### Manual Statistics Update
356
+
357
+ ```bash
358
+ # From repository root
359
+ cd _data
360
+ ruby generate_statistics.rb
361
+
362
+ # Or using the wrapper
363
+ bash generate_statistics.sh
364
+ ```
365
+
366
+ ---
367
+
368
+ ## πŸ› οΈ Customization
369
+
370
+ ### Adding New Focus Areas
371
+
372
+ Edit `statistics_config.yml`:
373
+ ```yaml
374
+ focus_areas:
375
+ my_new_area:
376
+ - keyword1
377
+ - keyword2
378
+ - keyword3
379
+ ```
380
+
381
+ ### Adding New Languages
382
+
383
+ Add a new language block to `ui-text.yml`:
384
+ ```yaml
385
+ ja: # Japanese
386
+ skip_links: "パむンコンテンツへスキップ"
387
+ menu_label: "パニγƒ₯γƒΌ"
388
+ # ... translate all labels
389
+ ```
390
+
391
+ ### Adding New Prerequisites
392
+
393
+ Edit `prerequisites.yml`:
394
+ ```yaml
395
+ - id: my-prerequisite
396
+ title: "My New Prerequisite"
397
+ description: "Description of what this covers"
398
+ level: beginner # beginner|intermediate|advanced|expert
399
+ category: my-category
400
+ ```
401
+
402
+ ---
403
+
404
+ ## πŸ“‹ Best Practices
405
+
406
+ 1. **Never edit `content_statistics.yml` manually** - it will be overwritten
407
+ 2. **Keep `statistics_config.yml` updated** when adding new content types
408
+ 3. **Test configuration changes locally** before pushing
409
+ 4. **Use consistent language codes** in `ui-text.yml`
410
+ 5. **Keep prerequisite IDs kebab-case** for URL friendliness
411
+ 6. **Validate YAML syntax** before committing:
412
+ ```bash
413
+ ruby -ryaml -e "YAML.load_file('_data/your-file.yml')"
414
+ ```
415
+
416
+ ---
417
+
418
+ ## 🀝 Contributing
419
+
420
+ When modifying data files:
421
+
422
+ 1. Follow existing YAML formatting conventions
423
+ 2. Test changes locally with `bundle exec jekyll serve`
424
+ 3. Run statistics generation to verify no errors
425
+ 4. Update this README if adding new files or features
426
+
427
+ See [CONTRIBUTING.md](../CONTRIBUTING.md) for full guidelines.
428
+
429
+ ---
430
+
431
+ ## πŸ“„ License
432
+
433
+ This project is licensed under the MIT License - see the [LICENSE](../LICENSE) file for details.