jekyll-theme-zer0 1.18.1 → 1.19.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75211dc29d6baba87f5cc1264e9b3f47ecbff99d02cbe875f9b2290472c3bd09
4
- data.tar.gz: 3fb6eb26ee2507c079ebc1f1c91db92687706a14607cba9685b95ff20ad0ffa8
3
+ metadata.gz: 277ffc84c92ed643b68bbe64d065aceecf224f7958b12981ce50d96380d0f6fa
4
+ data.tar.gz: a4dfdb91f9aec555691bc6ba65ed43347e5b5d3d38d417ee223e0b02b2582efd
5
5
  SHA512:
6
- metadata.gz: f7b6b73449bbc1efbea5243b4fc65e3b470b7c260c6e853f1729559d2a8402d0f3070e684cf3d9277d1ccee2b077022c32142c9de8a2b922825415d2cde46534
7
- data.tar.gz: 012f8d69f7c6305f7d9901292ba57ae2d0884f9ffb162e10836efb739cf17546b709de109d86b05fdfa6929f89c1e84398f6e4a61bb6c7552a7e574de7f9d627
6
+ metadata.gz: c8dbd6e150f9c7f8718bdbc580492f4557050ae8c33d5380969c2c2136f1370416e46d11a79fe0a217398c43fa017cf3f3e45ff04d5269bfdbb2cc55a64a2dee
7
+ data.tar.gz: 3ea82107a91aa08288cab4ba9e94a6c2c19212b570719166b2a495ff1555c3e4aa2e78c28e662d94bf6dbe37dc7404159c452481a468b689d8882fcd3af2893f
data/CHANGELOG.md CHANGED
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.19.0] - 2026-06-16
9
+
10
+ ### Changed
11
+ - Version bump: minor release
12
+
13
+ ### Commits in this release
14
+ - 9c7ae494 docs: fix broken internal docs/ links in pages/_docs (#172)
15
+ - 3d4c9464 chore(hub): refresh dashboard metadata
16
+ - a2ec16c4 updates (#173)
17
+ - 7b7a6dd4 chore(backlog): audit 2026-06-15 (#162)
18
+ - 02e81afb feat(chat): rebuild AI assistant on Claude API with GitHub issue/PR tools + OAuth connector (#151)
19
+ - 7597351a feat(home): opt-out flags for RSS link and visible title (#157)
20
+ - 12d701e8 fix(analytics): only load GA/GTM in production and skip dev hostnames (#160)
21
+ - 4a391327 chore(skills): add run-zer0-mistakes launch & screenshot skill (#159)
22
+ - 95e249d6 docs(content): tighten guide SEO metadata and fix broken cross-links (#158)
23
+ - 69394a80 docs(content): resolve AI content-review findings across 3 pages (#156)
24
+
25
+ ### Added
26
+ - **Org Content Hub (federated)**: tooling to publish one GitHub Pages site per
27
+ org repository — each renders its own content at `<org>.github.io/<repo>/`
28
+ with this theme via `remote_theme`; content never leaves the source repo.
29
+ Adds the `_data/hub.yml` registry with auto-discovery, a shared
30
+ `scripts/lib/hub.rb`, `scripts/provision-org-sites.{rb,sh}` to roll the Pages
31
+ scaffold (`templates/org-site/*`) out to org repos and enable Pages,
32
+ `scripts/sync-hub-metadata.{rb,sh}` to refresh API-only dashboard data
33
+ (`_data/hub_index.yml` + `_data/navigation/hub.yml`, deterministic), a `/hub/`
34
+ dashboard page that tracks every site's live/pending status, and a daily
35
+ `hub-sync.yml` workflow that commits only when the org changed
36
+ (see `docs/systems/content-hub.md`)
37
+
8
38
  ## [1.18.1] - 2026-06-14
9
39
 
10
40
  ### Changed
@@ -36,6 +66,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
36
66
  - c78433f1 fix(content): render mermaid on 12 pages, restore Obsidian graph, migration tests (T-019) (#150)
37
67
 
38
68
  ### Added
69
+ - **Chat GitHub actions**: the assistant can file GitHub issues and open content/UI-improvement pull requests via Claude tool use (`get_page_source`, `create_github_issue`, `create_pull_request`), every creation gated by an in-chat confirmation card; `ai_chat.github.mode: 'url'` (default) opens pre-filled github.com forms with no token anywhere, `'proxy'` creates them server-side
70
+ - **Chat proxy template** (`templates/deploy/chat-proxy/`): Cloudflare Worker that streams `/api/chat` to the Claude Messages API and serves `/api/github/issue` + `/api/github/pull-request` with a server-side fine-grained token, an origin allowlist, and server-pinned model/max_tokens
71
+ - **Chat proxy: Claude Code connector (OAuth) auth**: the proxy can authenticate to Claude with a Claude Code / Claude.ai OAuth login token (`Authorization: Bearer` + `anthropic-beta: oauth-2025-04-20`) instead of an API key — three auto-detected modes by precedence: rotating `ANTHROPIC_OAUTH_REFRESH_TOKEN` (KV-cached, auto-refreshed), long-lived `CLAUDE_CODE_OAUTH_TOKEN` (from `claude setup-token`), and `ANTHROPIC_API_KEY`; OAuth modes pair with a Cloudflare Access gate for private deployments
72
+ - **Chat local dev proxy** (`templates/deploy/chat-proxy/dev-proxy.mjs`): runs the same Worker logic on Node, reads `CLAUDE_CODE_OAUTH_TOKEN`/`ANTHROPIC_API_KEY` from `.env`, and serves `/api/chat` at `localhost:8787` so the assistant works during `docker-compose up` with no Cloudflare deploy; `_config_dev.yml` wires the widget to it
73
+ - **Chat proxy CI deploy** (`.github/workflows/deploy-chat-proxy.yml` + `templates/deploy/chat-proxy/wrangler.toml`): deploys the Worker to Cloudflare (`workers.dev`, cross-origin) on push to `main` or manual dispatch, setting `ANTHROPIC_API_KEY` from a GitHub Actions secret via `wrangler-action`; requires only `CLOUDFLARE_API_TOKEN`/`CLOUDFLARE_ACCOUNT_ID`/`ANTHROPIC_API_KEY` repo secrets
74
+ - **Chat local page editing (dev only)**: with `ai_chat.local_edit: true` (set in `_config_dev.yml`), the assistant gains an `update_page_content` tool and the dev proxy exposes sandboxed `/api/page/source` + `/api/page/update` routes (`templates/deploy/chat-proxy/page-store.mjs`) so it can rewrite the current page's source file in the working tree — the dev server `--watch` rebuilds it live. Path-confined to the repo, content extensions only, existing files only; off in production (the Worker has no filesystem)
75
+ - **Chat feature registered in the layered guidance system**: new `.github/instructions/ai-chat.instructions.md` (auth modes, server caps, confirmation/safety contracts) registered in `CLAUDE.md`, `AGENTS.md`, the instructions index, and the ZER0-060 registry; resolved the `templates/deploy/**` glob collision with `install.instructions.md`; documented the shared `ANTHROPIC_API_KEY` (chat proxy + content reviewer) in `docs/systems/github-secrets-setup.md`; chat edit/PR prompts now bump `lastmod` and follow the content-review conventions so chat-authored changes pass the automated reviewer
39
76
  - **AI content reviewer framework**: a two-tier reviewer that runs on every PR
40
77
  touching `pages/**/*.md` and integrates with Claude Code agents to ensure SEO
41
78
  is met and content is consistent, polished, and styled to the collection's
@@ -56,6 +93,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
56
93
  thresholds + assigned skills/prompts), `.github/instructions/content-review.instructions.md`,
57
94
  the `/content-review` prompt + Cursor command, and the `content-review` skill.
58
95
 
96
+ ### Changed
97
+ - **AI Chat Assistant rebuilt on the Claude Messages API**: requests use the `POST /v1/messages` shape (top-level `system`, content blocks, `anthropic-version`; direct mode adds `anthropic-dangerous-direct-browser-access`) instead of OpenAI Chat Completions; responses stream token-by-token over SSE; default model is `claude-opus-4-8` and the unsupported `temperature` knob was removed; widget logic moved from inline `<script>` to `assets/js/ai-chat.js`
98
+
59
99
  ## [1.17.1] - 2026-06-13
60
100
 
61
101
  ### Changed
data/README.md CHANGED
@@ -2,8 +2,12 @@
2
2
  title: zer0-mistakes
3
3
  sub-title: AI-Native Jekyll Theme
4
4
  description: AI-native Jekyll theme for GitHub Pages — Docker-first development, AI-powered installation, multi-agent integration (Copilot, Codex, Cursor, Claude), AI preview-image generation, and AIEO content optimization with Bootstrap 5.3.
5
- version: 1.18.1
5
+ version: 1.19.0
6
6
  layout: landing
7
+ # This repo now serves as the year-of-ai organization root site; the homepage
8
+ # lives in pages/home.md. README stays as the repository README on GitHub but
9
+ # is not published as a site page.
10
+ published: false
7
11
  tags:
8
12
  - jekyll
9
13
  - docker
@@ -20,7 +24,7 @@ categories:
20
24
  - bootstrap
21
25
  - ai-tooling
22
26
  created: 2024-02-10T23:51:11.480Z
23
- lastmod: 2026-06-14T14:41:09.000Z
27
+ lastmod: 2026-06-16T04:22:14.000Z
24
28
  draft: false
25
29
  permalink: /
26
30
  slug: zer0
@@ -911,7 +915,7 @@ git push origin feature/awesome-feature
911
915
 
912
916
  | Metric | Value |
913
917
  |--------|-------|
914
- | **Current Version** | 1.18.1 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
918
+ | **Current Version** | 1.19.0 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
915
919
  | **Documented Features** | 43 ([Feature Registry](https://github.com/bamr87/zer0-mistakes/blob/main/_data/features.yml)) |
916
920
  | **Setup Time** | 2-5 minutes ([install.sh benchmarks](https://github.com/bamr87/zer0-mistakes/blob/main/install.sh)) |
917
921
  | **Documentation Pages** | 70+ ([browse docs](https://zer0-mistakes.com/pages/)) |
@@ -966,6 +970,6 @@ And these AI partners that make zer0-mistakes truly AI-native:
966
970
 
967
971
  **Built with ❤️ — and a little help from our AI partners — for the Jekyll community**
968
972
 
969
- **v1.18.1** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
973
+ **v1.19.0** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
970
974
 
971
975
 
data/_data/backlog.yml CHANGED
@@ -55,8 +55,8 @@
55
55
 
56
56
  meta:
57
57
  title: "zer0-mistakes Backlog"
58
- updated: 2026-06-12
59
- next_id: 22
58
+ updated: 2026-06-15
59
+ next_id: 27
60
60
 
61
61
  tasks:
62
62
  # --- Housekeeping (seeded so the loop has work on day one) ------------------
@@ -573,3 +573,136 @@ tasks:
573
573
  links: { issue: null, pr: null, roadmap: null }
574
574
  created: 2026-06-13
575
575
  updated: 2026-06-13
576
+
577
+ # --- 2026-06-15 audit -------------------------------------------------------
578
+
579
+ - id: T-022
580
+ title: "Record shipped milestones v1.15–v1.18 in _data/roadmap.yml"
581
+ status: open
582
+ priority: P2
583
+ area: docs
584
+ risk: low
585
+ effort: S
586
+ source: audit
587
+ summary: >-
588
+ `ruby scripts/generate-roadmap.rb --validate` warns: "Active milestone is
589
+ v1.14 but the gem is at v1.18.1 (series 1.18). Advance the roadmap to
590
+ track the shipped version." Four minor and two patch releases (v1.15–v1.18)
591
+ shipped since the last roadmap update but are not recorded as `completed`
592
+ milestones. The roadmap page therefore shows v1.14 as the current work while
593
+ the gem is four minors ahead.
594
+ acceptance:
595
+ - "Milestones v1.15 (quality framework batch), v1.16 (AI chat + consumer audit), v1.17 (a11y + mermaid + migration tests), and v1.18 (AI content reviewer) added as `status: completed` with accurate `released:` dates from CHANGELOG.md."
596
+ - "The active milestone is advanced to v1.19 or the next planned entry, so only one `active` milestone remains."
597
+ - "`ruby scripts/generate-roadmap.rb --validate` exits 0 with no warnings."
598
+ - "`ruby scripts/generate-roadmap.rb --check` passes and the README roadmap section is regenerated."
599
+ links: { issue: null, pr: null, roadmap: null }
600
+ created: 2026-06-15
601
+ updated: 2026-06-15
602
+
603
+ - id: T-023
604
+ title: "Unit tests for sanitize_config_filter.rb (security-critical plugin)"
605
+ status: open
606
+ priority: P2
607
+ area: tests
608
+ risk: standard
609
+ effort: S
610
+ source: audit
611
+ summary: >-
612
+ `_plugins/sanitize_config_filter.rb` — the Liquid filter that redacts
613
+ credential lines from the admin config-page DOM — has no unit tests.
614
+ The filter has two distinct regex paths (SENSITIVE_KEY_RE for key-name
615
+ matching, PHC_VALUE_RE for PostHog token values) and is security-critical:
616
+ a broken regex silently exposes secrets in the rendered HTML. Only an
617
+ integration assertion in `test/visual/security.spec.js` exercises the
618
+ output end-to-end; no isolated unit test verifies each pattern or the
619
+ line-join output shape. Edge cases (multiline input, mixed-case keys,
620
+ partial matches, empty string) are unchecked.
621
+ acceptance:
622
+ - "A Minitest spec in `test/test_plugins.rb` (or a new `test_sanitize_filter.rb`) covers: SENSITIVE_KEY_RE matches `api_key`, `apikey`, `secret`, `password`, `token` (case-insensitive) and leaves non-secret lines untouched."
623
+ - "PHC_VALUE_RE coverage: a line with `phc_AbcDef123` is redacted; a line without it passes through."
624
+ - "Mixed input: a config block containing both a secret key and a safe key returns the correct partial redaction."
625
+ - "Edge cases: empty string and nil input return without error."
626
+ - "`./scripts/bin/test` stays green with the new specs included."
627
+ links: { issue: null, pr: null, roadmap: null }
628
+ created: 2026-06-15
629
+ updated: 2026-06-15
630
+
631
+ - id: T-024
632
+ title: "Unit tests for scripts/content-review.rb scoring engine"
633
+ status: open
634
+ priority: P2
635
+ area: tests
636
+ risk: standard
637
+ effort: M
638
+ source: audit
639
+ summary: >-
640
+ `scripts/content-review.rb` is a 470-line deterministic Ruby script that
641
+ powers the AI content-reviewer framework (v1.18) — it scores Markdown files
642
+ 0–100 across front-matter, SEO, structure, and terminology dimensions using
643
+ per-collection thresholds from `.github/config/content_review.yml`. A
644
+ scoring regression (code-fence false-positive) was already fixed in v1.18.1
645
+ (PR #155) demonstrating the need for unit coverage. Currently zero lib tests
646
+ exist for it; the CI runs it only as a side-effect of the `ai-content-review`
647
+ workflow on PRs that touch `pages/**`.
648
+ acceptance:
649
+ - "A test in `scripts/test/lib/` (or `test/test_quality.sh` expansion) runs `content-review.rb --files` against synthetic Markdown fixtures and asserts: a well-formed post scores ≥ 80, a file missing `description` front-matter loses points, a properly tagged code fence does not penalise the closing ` ``` ` line."
650
+ - "At least one test verifies the `--strict` flag exits non-zero when the fail threshold is crossed."
651
+ - "Tests run under `LC_ALL=C` (locale-independence parity with T-015 guard)."
652
+ - "`./scripts/bin/test` stays green with the new tests included."
653
+ links: { issue: null, pr: null, roadmap: null }
654
+ created: 2026-06-15
655
+ updated: 2026-06-15
656
+
657
+ - id: T-025
658
+ title: "Playwright smoke tests for the site-wide search modal"
659
+ status: open
660
+ priority: P2
661
+ area: tests
662
+ risk: standard
663
+ effort: S
664
+ source: audit
665
+ summary: >-
666
+ The client-side site search (`assets/js/search-modal.js` + `search.json`
667
+ endpoint, feature ZER0-032) has no dedicated Playwright spec. The smoke
668
+ tier's 223 passing tests exercise many layout pages but none explicitly
669
+ verify that the search modal opens, accepts input, or populates results from
670
+ the `/search.json` index. Core behaviors to cover: keyboard shortcut `/`
671
+ triggers `navigation:searchRequest` → modal opens; typing a query filters
672
+ results; Escape closes the modal; the modal is mutually exclusive with the
673
+ Settings offcanvas (no stacked backdrops).
674
+ acceptance:
675
+ - "A new spec (e.g. `test/visual/search.spec.js`) or an expansion of `ui-refresh.spec.js` includes at minimum: modal opens on `/` keypress, search input is focused, Escape closes it."
676
+ - "A result-population check: query matching a known post title (e.g. 'Hello World') yields at least one result `<a>` element."
677
+ - "Mutual-exclusion guard: opening search while Settings offcanvas is open closes the offcanvas first (no stacked backdrops)."
678
+ - "Spec runs in the smoke project (`npx playwright test --project=smoke`) without a network request to an external index."
679
+ links: { issue: null, pr: null, roadmap: null }
680
+ created: 2026-06-15
681
+ updated: 2026-06-15
682
+
683
+ - id: T-026
684
+ title: "Playwright smoke test for AI chat widget render guard and FAB visibility"
685
+ status: open
686
+ priority: P3
687
+ area: tests
688
+ risk: standard
689
+ effort: S
690
+ source: audit
691
+ summary: >-
692
+ The AI chat widget (`_includes/components/ai-chat.html`, feature ZER0-060,
693
+ shipped in v1.16) has no dedicated Playwright test. The widget has a
694
+ multi-condition render guard — it is hidden unless `ai_chat.enabled: true`
695
+ AND either `proxy_ready: true` (proxy mode) or a non-empty `api_key`
696
+ (direct mode). A previous bug (Liquid `assign` returning truthy strings)
697
+ would have rendered a dead FAB on every page; such regressions are invisible
698
+ without a smoke test. The default `_config_dev.yml` has `proxy_ready: false`,
699
+ so the FAB should NOT appear in the test environment — that case is easily
700
+ asserted.
701
+ acceptance:
702
+ - "A new spec (or addition to `ui-refresh.spec.js`) asserts: with default dev config, no `#ai-chat-fab` element is visible on the homepage."
703
+ - "A mock-config test (inject `data-ai-chat-enabled` attribute or use a fixture page with the widget force-enabled) verifies the FAB renders and the chat panel toggles open/closed on click."
704
+ - "The test passes in the smoke project without a live AI backend."
705
+ - "`./scripts/bin/test` (including the Playwright smoke tier) stays green."
706
+ links: { issue: null, pr: null, roadmap: null }
707
+ created: 2026-06-15
708
+ updated: 2026-06-15
data/_data/features.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  # zer0-mistakes Theme Features Registry
2
2
  # Comprehensive feature tracking for the zer0-mistakes Jekyll theme
3
- # Version: 1.6.1
4
- # Last Updated: 2026-05-05
3
+ # Version: 1.16.0
4
+ # Last Updated: 2026-06-12
5
5
 
6
6
  features:
7
7
  # ============================================================================
@@ -1281,18 +1281,39 @@ features:
1281
1281
  plugin: "_plugins/obsidian_links.rb"
1282
1282
  includes:
1283
1283
  - "_includes/content/backlinks.html"
1284
-
1285
-
1286
1284
  - id: ZER0-060
1287
- title: "AI Chat Assistant (Proxy-First)"
1288
- description: "Opt-in floating chat widget grounded in the current page's content. Proxy-first auth (no client-side key by default); renders nothing until ai_chat.enabled plus a deployed proxy (proxy_ready) or an explicit direct-mode key are configured"
1285
+ title: "AI Chat Assistant (Claude + GitHub)"
1286
+ description: "Claude-powered floating chat grounded in the current page: streaming replies, GitHub issue/PR actions (after confirmation), and a dev-only mode that edits the page source file live"
1289
1287
  implemented: true
1290
- version: "1.16.0"
1288
+ version: "1.18.0"
1291
1289
  link: "/docs/features/ai-chat-assistant/"
1292
1290
  docs: "/docs/features/ai-chat-assistant/"
1293
- tags: [ai, chatbot, openai, proxy, accessibility]
1294
- date: 2026-06-12
1291
+ tags: [ai, chatbot, claude, github, proxy, accessibility]
1292
+ date: 2026-06-13
1295
1293
  references:
1296
1294
  includes: ["_includes/components/ai-chat.html"]
1297
1295
  layouts: ["_layouts/root.html"]
1298
- config: "_config.yml"
1296
+ config: "_config.yml"
1297
+
1298
+ - id: ZER0-061
1299
+ title: "Org Content Hub (Federated)"
1300
+ description: "Tooling to publish one GitHub Pages site per org repository — each renders its own content at <org>.github.io/<repo>/ with this theme via remote_theme — plus a /hub/ dashboard that tracks them all from GitHub API metadata. Content never leaves the source repo"
1301
+ implemented: true
1302
+ version: "1.17.0"
1303
+ link: "/hub/"
1304
+ docs: "https://github.com/bamr87/zer0-mistakes/blob/main/docs/systems/content-hub.md"
1305
+ tags: [content, automation, ci-cd, navigation]
1306
+ date: 2026-06-12
1307
+ references:
1308
+ scripts:
1309
+ - "scripts/provision-org-sites.rb"
1310
+ - "scripts/sync-hub-metadata.rb"
1311
+ - "scripts/lib/hub.rb"
1312
+ data: "_data/hub.yml"
1313
+ workflow: ".github/workflows/hub-sync.yml"
1314
+ docs: "docs/systems/content-hub.md"
1315
+ features:
1316
+ - "Provisions org repos as Pages sites (remote_theme) via PR — templates/org-site/*"
1317
+ - "Auto-discovers org repositories via the gh CLI (registry: _data/hub.yml)"
1318
+ - "Metadata-only dashboard — clones nothing, copies no content"
1319
+ - "Dashboard at /hub/ shows each site's live/pending status and links"
data/_data/hub.yml ADDED
@@ -0,0 +1,68 @@
1
+ # =============================================================================
2
+ # Content Hub registry — _data/hub.yml
3
+ # =============================================================================
4
+ #
5
+ # Source of truth for the org content hub. Content NEVER leaves the source
6
+ # repos: each org repo publishes its own GitHub Pages project site at
7
+ # https://<org>.github.io/<repo>/ using this theme via `remote_theme`, and
8
+ # this site is the dashboard that presents and monitors them.
9
+ #
10
+ # Consumers of this registry:
11
+ # scripts/provision-org-sites.sh rolls the Pages scaffold out to org repos
12
+ # (templates/org-site/*) and enables Pages
13
+ # scripts/sync-hub-metadata.sh refreshes the generated dashboard data:
14
+ # _data/hub_index.yml (repo stats)
15
+ # _data/navigation/hub.yml (sidebar tree)
16
+ #
17
+ # Validated by `./scripts/sync-hub-metadata.sh --check` (CI gate).
18
+ # =============================================================================
19
+
20
+ # GitHub organization (or user) whose repositories make up the hub.
21
+ org: year-of-ai
22
+
23
+ # When true, every non-archived repo in the org is included unless listed in
24
+ # `exclude_repos`. When false, only repos listed under `repos:` are included.
25
+ auto_discover: true
26
+
27
+ # Repos that are never treated as content sites.
28
+ exclude_repos:
29
+ - zer0-mistakes # this site/theme itself
30
+ - .github # org meta repo, if one appears
31
+
32
+ # Settings applied when provisioning org repos as Pages sites.
33
+ pages:
34
+ # Value for `remote_theme:` in the generated _config.yml of each org repo.
35
+ # The org root site (year-of-ai/year-of-ai.github.io) is a fork of the
36
+ # zer0-mistakes theme and doubles as the remote_theme source for the years.
37
+ theme_repo: year-of-ai/year-of-ai.github.io
38
+ # Git ref to scaffold against / publish from. Empty = repo default branch.
39
+ branch: ""
40
+
41
+ # Rules applied to every repo unless overridden per-repo below.
42
+ defaults:
43
+ # Paths that are repo/agent plumbing rather than content. Used both for the
44
+ # generated Pages `exclude:` list and for the dashboard page counts.
45
+ exclude:
46
+ - "README.md" # rendered as the site homepage, not counted as content
47
+ - "CLAUDE.md"
48
+ - "AGENTS.md"
49
+ - "LIFECYCLE.md"
50
+ - "ROADMAP.md"
51
+ - "lifecycle.yml"
52
+ - "seed.md"
53
+ - "seed-package/**"
54
+ - "telemetry/**"
55
+ - ".github/**"
56
+ - ".claude/**"
57
+
58
+ # Optional per-repo overrides, merged onto discovered repos by `name`.
59
+ # Supported keys: name (required), title, description, branch.
60
+ repos:
61
+ - name: "2005"
62
+ title: "2005 — Year Knowledge Base"
63
+ - name: "2006"
64
+ title: "2006 — Year Knowledge Base"
65
+ - name: "2007"
66
+ title: "2007 — Year Knowledge Base"
67
+ - name: "2008"
68
+ title: "2008 — Year Knowledge Base"
@@ -0,0 +1,203 @@
1
+ # =============================================================================
2
+ # GENERATED FILE — do not edit by hand.
3
+ # Regenerate with: ./scripts/sync-hub-metadata.sh
4
+ # Source registry: _data/hub.yml
5
+ # =============================================================================
6
+ org: year-of-ai
7
+ totals:
8
+ repos: 5
9
+ pages: 402
10
+ repos:
11
+ - name: '1776'
12
+ title: '1776'
13
+ description: A self-growing knowledge base about the year 1776. Next era of the
14
+ year-of-ai lineage, spawned from 2005-2011.
15
+ url: https://github.com/year-of-ai/1776
16
+ site_url: https://year-of-ai.github.io/1776/
17
+ pages_enabled: false
18
+ scaffolded: false
19
+ branch: main
20
+ pushed_at: '2026-06-15T12:43:06Z'
21
+ page_count: 17
22
+ sections:
23
+ - name: arts
24
+ title: Arts & Culture
25
+ url: https://year-of-ai.github.io/1776/arts/
26
+ count: 2
27
+ - name: economics
28
+ title: Economics & Trade
29
+ url: https://year-of-ai.github.io/1776/economics/
30
+ count: 1
31
+ - name: military
32
+ title: Military Events
33
+ url: https://year-of-ai.github.io/1776/military/
34
+ count: 2
35
+ - name: people
36
+ title: Key Figures
37
+ url: https://year-of-ai.github.io/1776/people/
38
+ count: 1
39
+ - name: politics
40
+ title: Political Events
41
+ url: https://year-of-ai.github.io/1776/politics/
42
+ count: 2
43
+ - name: science
44
+ title: Science & Discovery
45
+ url: https://year-of-ai.github.io/1776/science/
46
+ count: 1
47
+ root_pages:
48
+ - title: Timeline
49
+ url: https://year-of-ai.github.io/1776/TIMELINE/
50
+ - name: '1777'
51
+ title: '1777'
52
+ description: A self-growing encyclopedic knowledge base covering the events, people,
53
+ works, and discoveries of 1777.
54
+ url: https://github.com/year-of-ai/1777
55
+ site_url: https://year-of-ai.github.io/1777/
56
+ pages_enabled: false
57
+ scaffolded: false
58
+ branch: main
59
+ pushed_at: '2026-06-15T12:43:43Z'
60
+ page_count: 14
61
+ sections:
62
+ - name: arts
63
+ title: Arts & Culture — 1777
64
+ url: https://year-of-ai.github.io/1777/arts/
65
+ count: 0
66
+ - name: economics
67
+ title: Economics & Trade — 1777
68
+ url: https://year-of-ai.github.io/1777/economics/
69
+ count: 0
70
+ - name: military
71
+ title: Military Events — 1777
72
+ url: https://year-of-ai.github.io/1777/military/
73
+ count: 2
74
+ - name: people
75
+ title: Key Figures — 1777
76
+ url: https://year-of-ai.github.io/1777/people/
77
+ count: 1
78
+ - name: politics
79
+ title: Political Events — 1777
80
+ url: https://year-of-ai.github.io/1777/politics/
81
+ count: 3
82
+ - name: science
83
+ title: Science & Discovery — 1777
84
+ url: https://year-of-ai.github.io/1777/science/
85
+ count: 0
86
+ root_pages:
87
+ - title: Timeline
88
+ url: https://year-of-ai.github.io/1777/TIMELINE/
89
+ - name: '1778'
90
+ title: '1778'
91
+ description: 'Self-growing knowledge base: the year 1778'
92
+ url: https://github.com/year-of-ai/1778
93
+ site_url: https://year-of-ai.github.io/1778/
94
+ pages_enabled: false
95
+ scaffolded: false
96
+ branch: main
97
+ pushed_at: '2026-06-15T12:33:17Z'
98
+ page_count: 0
99
+ sections: []
100
+ root_pages: []
101
+ - name: 2005-2011
102
+ title: 2005-2011
103
+ description: A consolidated knowledge base spanning the years 2005–2011, merging
104
+ the year-of-ai lineage.
105
+ url: https://github.com/year-of-ai/2005-2011
106
+ site_url: https://year-of-ai.github.io/2005-2011/
107
+ pages_enabled: false
108
+ scaffolded: false
109
+ branch: main
110
+ pushed_at: '2026-06-14T01:18:32Z'
111
+ page_count: 105
112
+ sections:
113
+ - name: '2005'
114
+ title: '2005'
115
+ url: https://year-of-ai.github.io/2005-2011/2005/
116
+ count: 7
117
+ - name: '2006'
118
+ title: '2006'
119
+ url: https://year-of-ai.github.io/2005-2011/2006/
120
+ count: 10
121
+ - name: '2007'
122
+ title: '2007'
123
+ url: https://year-of-ai.github.io/2005-2011/2007/
124
+ count: 10
125
+ - name: '2008'
126
+ title: '2008'
127
+ url: https://year-of-ai.github.io/2005-2011/2008/
128
+ count: 9
129
+ - name: '2009'
130
+ title: '2009'
131
+ url: https://year-of-ai.github.io/2005-2011/2009/
132
+ count: 10
133
+ - name: '2010'
134
+ title: '2010'
135
+ url: https://year-of-ai.github.io/2005-2011/2010/
136
+ count: 9
137
+ - name: '2011'
138
+ title: '2011'
139
+ url: https://year-of-ai.github.io/2005-2011/2011/
140
+ count: 12
141
+ root_pages:
142
+ - title: Timeline
143
+ url: https://year-of-ai.github.io/2005-2011/TIMELINE/
144
+ - name: year-of-ai.github.io
145
+ title: year-of-ai.github.io
146
+ description: Github Pages compatible Jekyll theme using Bootstrap 5
147
+ url: https://github.com/year-of-ai/year-of-ai.github.io
148
+ site_url: https://year-of-ai.github.io/
149
+ pages_enabled: true
150
+ scaffolded: true
151
+ branch: main
152
+ pushed_at: '2026-06-16T02:59:40Z'
153
+ page_count: 266
154
+ sections:
155
+ - name: _data
156
+ title: Data
157
+ url: https://year-of-ai.github.io/_data/
158
+ count: 2
159
+ - name: _includes
160
+ title: Includes
161
+ url: https://year-of-ai.github.io/_includes/
162
+ count: 3
163
+ - name: _layouts
164
+ title: Layouts
165
+ url: https://year-of-ai.github.io/_layouts/
166
+ count: 1
167
+ - name: docker
168
+ title: Docker
169
+ url: https://year-of-ai.github.io/docker/
170
+ count: 1
171
+ - name: docs
172
+ title: Docs
173
+ url: https://year-of-ai.github.io/docs/
174
+ count: 66
175
+ - name: features
176
+ title: Features
177
+ url: https://year-of-ai.github.io/features/
178
+ count: 1
179
+ - name: pages
180
+ title: Pages
181
+ url: https://year-of-ai.github.io/pages/
182
+ count: 150
183
+ - name: scripts
184
+ title: Scripts
185
+ url: https://year-of-ai.github.io/scripts/
186
+ count: 8
187
+ - name: templates
188
+ title: Templates
189
+ url: https://year-of-ai.github.io/templates/
190
+ count: 10
191
+ - name: test
192
+ title: Test
193
+ url: https://year-of-ai.github.io/test/
194
+ count: 2
195
+ root_pages:
196
+ - title: Changelog
197
+ url: https://year-of-ai.github.io/CHANGELOG/
198
+ - title: Code Of Conduct
199
+ url: https://year-of-ai.github.io/CODE_OF_CONDUCT/
200
+ - title: Contributing
201
+ url: https://year-of-ai.github.io/CONTRIBUTING/
202
+ - title: Security
203
+ url: https://year-of-ai.github.io/SECURITY/