jekyll-theme-zer0 1.0.0 → 1.2.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 +4 -4
- data/CHANGELOG.md +60 -0
- data/README.md +68 -20
- data/_data/prompts.yml +274 -156
- data/_includes/components/setup-banner.html +1 -1
- data/_includes/components/setup-check.html +31 -0
- data/_includes/content/intro.html +6 -0
- data/_layouts/welcome.html +337 -0
- data/scripts/lib/changelog.sh +1 -1
- data/scripts/lib/migrate.sh +7 -7
- data/scripts/test/lib/test_analyze_commits.sh +20 -0
- data/scripts/utils/analyze-commits +6 -6
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 557e14c1256d2eb630827e7136486ff6ecbcd99f77f96b1ca2ae0909c8cbd818
|
|
4
|
+
data.tar.gz: 9d3dc46191a9085f004b5790110aa9ef24b030b8c830fcc6adc06ed0f3317367
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9df47e33dbcd2696507527b20a907e081f55f94aa6ad9f1f7dfd517c80549fc87dc96ad0d10d7fa761b1a02b71507465e4c8b130ceb556db54736f1e982449aa
|
|
7
|
+
data.tar.gz: '039d73f1c388b0c0c1f66f212dcd6abf83a73916690baaecc1127a3c0911da5cb529f841998f68c55a0a280b8468da65bfee6e2d6ac0352d3b97def42ab15e64'
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.2.0] - 2026-04-22
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Version bump: minor release
|
|
7
|
+
|
|
8
|
+
### Commits in this release
|
|
9
|
+
- 4bd3e36 feat(welcome): add bare-minimum 3-file remote-theme starter
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## [1.1.0] - 2026-04-21
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- Version bump: minor release
|
|
16
|
+
|
|
17
|
+
### Commits in this release
|
|
18
|
+
- 3d91006 fix(release): replace ((var++)) with var=$((var + 1)) in release path
|
|
19
|
+
- d33e5e6 feat(intro): refocus Copilot Agent prompts on frontend/CMS workflows (#74)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [Unreleased]
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- **Bare-minimum 3-file remote-theme starter.** Consumers can now publish a
|
|
26
|
+
fully styled site to GitHub Pages with only `_config.yml`, `Gemfile`, and
|
|
27
|
+
`index.md` — no installer required. The new `_layouts/welcome.html` shipped
|
|
28
|
+
by the theme detects unconfigured sites and renders an onboarding screen
|
|
29
|
+
with a hero checklist, a 3-step starter accordion, and the embedded
|
|
30
|
+
`_includes/setup/wizard.html` that generates a personalised `_config.yml`
|
|
31
|
+
on the fly. README gained a "Bare-Minimum Starter" section documenting the
|
|
32
|
+
pattern.
|
|
33
|
+
- **Smarter setup detection** in `_includes/components/setup-check.html`.
|
|
34
|
+
When `site_configured` is not set, the heuristic now flags a site as
|
|
35
|
+
unconfigured if it has no owner (`founder`/`author`/`email`) or its title
|
|
36
|
+
matches a known placeholder (`zer0-mistakes`, `zer0-pages-remote`,
|
|
37
|
+
`Your Site Title`, `My Awesome Site`, `Welcome`, `Untitled`, or empty).
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
- **Setup banner link.** `_includes/components/setup-banner.html` no longer
|
|
41
|
+
points at the non-existent `/404.html`; it now links to
|
|
42
|
+
`/#setup-wizard`, which is provided by the new welcome layout.
|
|
43
|
+
- **Version-bump workflow no longer crashes on bash 5.x runners.** `scripts/utils/analyze-commits` (and `scripts/lib/changelog.sh`, `scripts/lib/migrate.sh`) used the `((var++))` post-increment idiom. On bash 5.x, when `var` is 0 the expression evaluates to 0 → exit code 1 → `set -euo pipefail` terminates the script silently. macOS bash 3.2 was more forgiving, so the bug only surfaced in CI. Replaced all release-path sites with `var=$((var + 1))`, which always returns 0. Added a static regression check to the unit tests so the pattern can't return.
|
|
44
|
+
|
|
3
45
|
## [1.0.0] - 2026-04-20
|
|
4
46
|
|
|
5
47
|
First stable major release. Consolidates the breaking-change installer rewrite
|
|
@@ -75,6 +117,24 @@ See [`docs/installation/migration-from-0.x.md`](docs/installation/migration-from
|
|
|
75
117
|
|
|
76
118
|
## [Unreleased]
|
|
77
119
|
|
|
120
|
+
### Changed
|
|
121
|
+
- **Copilot Agent prompts (`_data/prompts.yml`)**: rewritten to focus on
|
|
122
|
+
frontend/CMS workflows for the Jekyll theme. Replaced the previous
|
|
123
|
+
general-purpose software-engineering templates with 10 prompts split into
|
|
124
|
+
two scopes: **Page Improvements** (`improve-page`, `expand-page`,
|
|
125
|
+
`update-page`, `fix-page`, `seo-optimize`, `accessibility-audit`) that act
|
|
126
|
+
on the current page, and **Site Improvements** (`ui-ux-improvement`,
|
|
127
|
+
`new-feature`, `component-enhancement`, `performance-optimization`) for
|
|
128
|
+
theme-wide changes. Every prompt explicitly references the auto-injected
|
|
129
|
+
Page Context table.
|
|
130
|
+
- **Intro component (`_includes/content/intro.html`)**: the Copilot Agent
|
|
131
|
+
dropdown now renders Bootstrap `dropdown-header` section labels and
|
|
132
|
+
dividers when prompt entries declare a `group`. Entries without a
|
|
133
|
+
`group` continue to render as plain items (backward compatible).
|
|
134
|
+
- **Docs (`docs/implementation/copilot-agent-prompt-button.md`)**: updated
|
|
135
|
+
the prompt registry table and YAML schema to document the new `group`
|
|
136
|
+
field and the new template set.
|
|
137
|
+
|
|
78
138
|
### Added
|
|
79
139
|
- **Roadmap data file**: `_data/roadmap.yml` is now the single source of truth for the project roadmap (versions, status, dates, targets, and feature highlights).
|
|
80
140
|
- **Roadmap generator**: `scripts/generate-roadmap.rb` (and shell wrapper `scripts/generate-roadmap.sh`) renders a Mermaid gantt diagram and summary table from `_data/roadmap.yml` and injects them into `README.md` between `<!-- ROADMAP_MERMAID:START/END -->` and `<!-- ROADMAP_TABLE:START/END -->` markers. Supports `--check` mode for CI drift detection and `--stdout` for previewing.
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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.
|
|
5
|
+
version: 1.2.0
|
|
6
6
|
layout: landing
|
|
7
7
|
tags:
|
|
8
8
|
- jekyll
|
|
@@ -20,7 +20,7 @@ categories:
|
|
|
20
20
|
- bootstrap
|
|
21
21
|
- ai-tooling
|
|
22
22
|
created: 2024-02-10T23:51:11.480Z
|
|
23
|
-
lastmod: 2026-04-
|
|
23
|
+
lastmod: 2026-04-22T02:41:59.000Z
|
|
24
24
|
draft: false
|
|
25
25
|
permalink: /
|
|
26
26
|
slug: zer0
|
|
@@ -158,25 +158,73 @@ docker-compose up
|
|
|
158
158
|
# 🌐 Open http://localhost:4000
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
+
### Bare-Minimum Starter (3 files, zero install)
|
|
162
|
+
|
|
163
|
+
Don't want to run the installer? You can publish a working site to GitHub
|
|
164
|
+
Pages with **just three files** in your repo. The remote theme provides every
|
|
165
|
+
layout, style, and even an in-browser configuration wizard.
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
my-site/
|
|
169
|
+
├── _config.yml ← site configuration (remote_theme: bamr87/zer0-mistakes)
|
|
170
|
+
├── Gemfile ← github-pages + jekyll-remote-theme
|
|
171
|
+
└── index.md ← layout: welcome
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`_config.yml`:
|
|
175
|
+
|
|
176
|
+
```yaml
|
|
177
|
+
title: "My Site"
|
|
178
|
+
description: "A site rendered by the zer0-mistakes remote theme."
|
|
179
|
+
remote_theme: bamr87/zer0-mistakes
|
|
180
|
+
plugins:
|
|
181
|
+
- jekyll-remote-theme
|
|
182
|
+
- jekyll-feed
|
|
183
|
+
- jekyll-sitemap
|
|
184
|
+
- jekyll-seo-tag
|
|
185
|
+
site_configured: false # show the welcome wizard until you flip this to true
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
`Gemfile`:
|
|
189
|
+
|
|
190
|
+
```ruby
|
|
191
|
+
source "https://rubygems.org"
|
|
192
|
+
gem "github-pages", group: :jekyll_plugins
|
|
193
|
+
gem "jekyll-remote-theme"
|
|
194
|
+
gem "webrick", "~> 1.7"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
`index.md`:
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
---
|
|
201
|
+
layout: welcome
|
|
202
|
+
title: Home
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
# Welcome to my site
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Push to a GitHub Pages–enabled repository and visit your site. Until you set
|
|
209
|
+
`site_configured: true`, the home page renders the **welcome layout** —
|
|
210
|
+
a hero card listing your three files, a 3-step starter accordion, and a full
|
|
211
|
+
in-browser wizard that generates a personalised `_config.yml` you can
|
|
212
|
+
download. Once you flip the flag (or fill in `title`/`founder`/`email`), the
|
|
213
|
+
welcome screen is replaced by your own content.
|
|
214
|
+
|
|
161
215
|
```mermaid
|
|
162
216
|
sequenceDiagram
|
|
163
217
|
participant You
|
|
164
|
-
participant
|
|
165
|
-
participant
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
You->>Docker: docker-compose up
|
|
175
|
-
Docker->>Docker: Build Jekyll container
|
|
176
|
-
Docker->>Docker: Install dependencies
|
|
177
|
-
Docker-->>Browser: Serve on :4000
|
|
178
|
-
|
|
179
|
-
Browser-->>You: 🎉 Live site
|
|
218
|
+
participant GitHubPages as GitHub Pages
|
|
219
|
+
participant RemoteTheme as bamr87/zer0-mistakes
|
|
220
|
+
|
|
221
|
+
You->>GitHubPages: push 3 files
|
|
222
|
+
GitHubPages->>RemoteTheme: fetch layouts/includes/assets
|
|
223
|
+
RemoteTheme-->>GitHubPages: welcome.html + setup wizard
|
|
224
|
+
GitHubPages-->>You: 🎉 onboarding screen at /
|
|
225
|
+
You->>You: use wizard to generate _config.yml
|
|
226
|
+
You->>GitHubPages: replace _config.yml + set site_configured: true
|
|
227
|
+
GitHubPages-->>You: 🚀 your customised site
|
|
180
228
|
```
|
|
181
229
|
|
|
182
230
|
---
|
|
@@ -1066,7 +1114,7 @@ git push origin feature/awesome-feature
|
|
|
1066
1114
|
|
|
1067
1115
|
| Metric | Value |
|
|
1068
1116
|
|--------|-------|
|
|
1069
|
-
| **Current Version** | 1.
|
|
1117
|
+
| **Current Version** | 1.2.0 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
|
|
1070
1118
|
| **Documented Features** | 43 ([Feature Registry](https://github.com/bamr87/zer0-mistakes/blob/main/_data/features.yml)) |
|
|
1071
1119
|
| **Setup Time** | 2-5 minutes ([install.sh benchmarks](https://github.com/bamr87/zer0-mistakes/blob/main/install.sh)) |
|
|
1072
1120
|
| **Documentation Pages** | 70+ ([browse docs](/pages/)) |
|
|
@@ -1117,6 +1165,6 @@ And these AI partners that make zer0-mistakes truly AI-native:
|
|
|
1117
1165
|
|
|
1118
1166
|
**Built with ❤️ — and a little help from our AI partners — for the Jekyll community**
|
|
1119
1167
|
|
|
1120
|
-
**v1.
|
|
1168
|
+
**v1.2.0** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
|
|
1121
1169
|
|
|
1122
1170
|
|
data/_data/prompts.yml
CHANGED
|
@@ -1,184 +1,302 @@
|
|
|
1
1
|
# _data/prompts.yml
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
#
|
|
3
|
+
# Prompt templates for the Copilot Agent issue button rendered by
|
|
4
|
+
# `_includes/content/intro.html`. Each entry becomes a dropdown item that
|
|
5
|
+
# opens a pre-filled GitHub issue assigned to @copilot.
|
|
6
|
+
#
|
|
7
|
+
# These templates are tuned for a Jekyll/CMS theme (zer0-mistakes) and focus
|
|
8
|
+
# on FRONTEND and CONTENT (CMS) improvements. Two scopes are supported via
|
|
9
|
+
# the `group` field:
|
|
10
|
+
#
|
|
11
|
+
# - "Page Improvements" – act on the page the button was clicked from.
|
|
12
|
+
# The Page Context table injected by intro.html (title, URL, file path,
|
|
13
|
+
# layout, collection, tags, etc.) is what every prompt should reference.
|
|
14
|
+
#
|
|
15
|
+
# - "Site Improvements" – act on theme-wide UI/UX, components, layouts,
|
|
16
|
+
# navigation, performance, or new features. The page is included as the
|
|
17
|
+
# example/entry point, not necessarily the only target.
|
|
18
|
+
#
|
|
19
|
+
# Schema:
|
|
20
|
+
# - id: unique slug
|
|
21
|
+
# label: short text shown in the dropdown
|
|
22
|
+
# icon: Bootstrap Icons class (https://icons.getbootstrap.com/)
|
|
23
|
+
# group: optional section header in the dropdown
|
|
24
|
+
# description: optional one-line subtitle under the label
|
|
25
|
+
# body: prompt instructions appended above the auto-generated
|
|
26
|
+
# Page Context + Environment tables in the issue body.
|
|
27
|
+
|
|
28
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
29
|
+
# Page Improvements — scoped to the current page
|
|
30
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
31
|
+
|
|
32
|
+
- id: improve-page
|
|
33
|
+
label: "Improve Page"
|
|
34
|
+
icon: "bi-stars"
|
|
35
|
+
group: "Page Improvements"
|
|
36
|
+
description: "Polish content, structure, and presentation of this page"
|
|
10
37
|
body: |
|
|
11
|
-
Act as
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
38
|
+
Act as a Senior Content Editor and Frontend Designer for the
|
|
39
|
+
zer0-mistakes Jekyll theme.
|
|
40
|
+
|
|
41
|
+
Improve the page referenced in the **Page Context** table below. Make it
|
|
42
|
+
clearer, more engaging, and visually consistent with the rest of the
|
|
43
|
+
site — without changing its core message or breaking existing links.
|
|
44
|
+
|
|
45
|
+
**Scope (this page only):**
|
|
46
|
+
- Tighten copy: remove fluff, fix grammar, improve readability
|
|
47
|
+
- Strengthen the opening hook and the closing call-to-action
|
|
48
|
+
- Verify heading hierarchy (single H1, logical H2/H3 nesting)
|
|
49
|
+
- Confirm front matter is complete: `title`, `description`, `date`,
|
|
50
|
+
`lastmod`, `layout`, `categories`, `tags`, `permalink`, `preview`
|
|
51
|
+
- Improve visual rhythm: paragraph length, lists, callouts, code blocks
|
|
52
|
+
- Validate internal links and image paths (use `relative_url`)
|
|
53
|
+
- Ensure Bootstrap 5 utility classes are used over custom CSS
|
|
22
54
|
|
|
23
55
|
**Deliverables:**
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
- id:
|
|
29
|
-
label: "
|
|
30
|
-
icon: "bi-
|
|
31
|
-
|
|
56
|
+
- A diff-style proposal of the edited Markdown (front matter + body)
|
|
57
|
+
- A short "Why these changes" rationale (3–5 bullets)
|
|
58
|
+
- A checklist of any follow-up items that are out of scope
|
|
59
|
+
|
|
60
|
+
- id: expand-page
|
|
61
|
+
label: "Expand Page"
|
|
62
|
+
icon: "bi-arrows-angle-expand"
|
|
63
|
+
group: "Page Improvements"
|
|
64
|
+
description: "Add depth, examples, and missing sections to this page"
|
|
32
65
|
body: |
|
|
33
|
-
Act as a
|
|
66
|
+
Act as a Subject Matter Expert and Technical Writer.
|
|
34
67
|
|
|
35
|
-
|
|
68
|
+
Expand the page referenced in the **Page Context** table below by adding
|
|
69
|
+
depth, real examples, and any sections that a reader would reasonably
|
|
70
|
+
expect but are currently missing.
|
|
36
71
|
|
|
37
|
-
**
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
- Add
|
|
41
|
-
-
|
|
42
|
-
-
|
|
72
|
+
**Expansion targets:**
|
|
73
|
+
- Add concrete, copy-pasteable examples (code, configs, screenshots)
|
|
74
|
+
- Add a "Prerequisites" and "Next steps" / "Related" section
|
|
75
|
+
- Add a short FAQ or troubleshooting block when relevant
|
|
76
|
+
- Cross-link to related posts, docs, or theme components in this repo
|
|
77
|
+
- Add or update Mermaid diagrams where they clarify flow/architecture
|
|
78
|
+
- Keep the existing tone, structure, and front matter intact
|
|
43
79
|
|
|
44
80
|
**Deliverables:**
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
description: "
|
|
81
|
+
- The new/expanded Markdown sections, ready to merge into the page
|
|
82
|
+
- A list of any new assets needed (images, diagrams, data files)
|
|
83
|
+
- Suggested updates to `tags`, `categories`, and `description`
|
|
84
|
+
|
|
85
|
+
- id: update-page
|
|
86
|
+
label: "Update Page"
|
|
87
|
+
icon: "bi-arrow-clockwise"
|
|
88
|
+
group: "Page Improvements"
|
|
89
|
+
description: "Refresh outdated content, versions, links, and screenshots"
|
|
54
90
|
body: |
|
|
55
|
-
Act as a
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
91
|
+
Act as a Documentation Maintainer responsible for keeping the
|
|
92
|
+
zer0-mistakes site accurate and current.
|
|
93
|
+
|
|
94
|
+
Audit and update the page referenced in the **Page Context** table below.
|
|
95
|
+
Treat any version numbers, dates, screenshots, or external references as
|
|
96
|
+
suspect and verify them against the current state of the repository and
|
|
97
|
+
the wider ecosystem.
|
|
98
|
+
|
|
99
|
+
**Update checklist:**
|
|
100
|
+
- Bump version numbers, release names, and dependency references
|
|
101
|
+
- Replace deprecated Jekyll/Bootstrap patterns with current equivalents
|
|
102
|
+
- Refresh screenshots, GIFs, and embedded examples
|
|
103
|
+
- Re-validate every external link; replace dead or moved URLs
|
|
104
|
+
- Update `lastmod` in the front matter and add a brief "Updated" note
|
|
105
|
+
- Reconcile content with related files in this repo (configs, layouts,
|
|
106
|
+
includes) so instructions match what the codebase actually does
|
|
65
107
|
|
|
66
108
|
**Deliverables:**
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
- Any
|
|
109
|
+
- Updated Markdown for the page (front matter + body)
|
|
110
|
+
- A short changelog summarising what was refreshed and why
|
|
111
|
+
- Any follow-up issues to file for changes outside this page
|
|
70
112
|
|
|
71
|
-
- id:
|
|
72
|
-
label: "
|
|
113
|
+
- id: fix-page
|
|
114
|
+
label: "Fix Page Issue"
|
|
73
115
|
icon: "bi-bug"
|
|
74
|
-
|
|
116
|
+
group: "Page Improvements"
|
|
117
|
+
description: "Report a typo, broken link, layout glitch, or content bug"
|
|
75
118
|
body: |
|
|
76
|
-
Act as a
|
|
119
|
+
Act as a Frontend QA Engineer for the zer0-mistakes Jekyll theme.
|
|
77
120
|
|
|
78
|
-
|
|
121
|
+
Investigate and fix the issue described below on the page referenced in
|
|
122
|
+
the **Page Context** table. Reproduce it locally with `docker-compose up`
|
|
123
|
+
before proposing a change.
|
|
79
124
|
|
|
80
|
-
**Please
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
125
|
+
**Please describe (fill in before submitting):**
|
|
126
|
+
- **What is wrong?** <!-- typo, broken link, image, layout, behaviour -->
|
|
127
|
+
- **Where on the page?** <!-- section heading, line, screenshot region -->
|
|
128
|
+
- **Expected:** <!-- what should appear / happen -->
|
|
129
|
+
- **Actual:** <!-- what currently appears / happens -->
|
|
130
|
+
- **Browser / device (if visual):** <!-- e.g. Chrome 124 desktop, iOS Safari -->
|
|
85
131
|
|
|
86
|
-
**
|
|
132
|
+
**Deliverables:**
|
|
133
|
+
- Root-cause analysis (content vs. layout vs. include vs. config)
|
|
134
|
+
- Minimal, surgical fix (Markdown, Liquid, SCSS, or front matter)
|
|
135
|
+
- Verification steps and a passing `bundle exec jekyll build`
|
|
136
|
+
|
|
137
|
+
- id: seo-optimize
|
|
138
|
+
label: "SEO Optimize"
|
|
139
|
+
icon: "bi-graph-up-arrow"
|
|
140
|
+
group: "Page Improvements"
|
|
141
|
+
description: "Improve discoverability, metadata, and structured data"
|
|
142
|
+
body: |
|
|
143
|
+
Act as a Technical SEO Specialist.
|
|
87
144
|
|
|
88
|
-
|
|
145
|
+
Optimise the page referenced in the **Page Context** table below for
|
|
146
|
+
search engines and social sharing, without sacrificing readability.
|
|
89
147
|
|
|
90
|
-
**
|
|
148
|
+
**Audit and improve:**
|
|
149
|
+
- Front matter `title` (≤ 60 chars) and `description` (150–160 chars)
|
|
150
|
+
- Primary keyword in H1, first paragraph, and at least one H2
|
|
151
|
+
- `permalink` is short, lowercase, and hyphen-separated
|
|
152
|
+
- `tags` and `categories` align with site taxonomy
|
|
153
|
+
- `preview` image exists, has descriptive alt text, and good aspect ratio
|
|
154
|
+
- Open Graph + Twitter Card metadata via existing includes
|
|
155
|
+
- JSON-LD structured data (Article / BlogPosting) where applicable
|
|
156
|
+
- Internal links to high-value related pages, with descriptive anchors
|
|
91
157
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
158
|
+
**Deliverables:**
|
|
159
|
+
- Updated front matter
|
|
160
|
+
- Specific in-body edits (H1/H2/intro)
|
|
161
|
+
- A keyword/intent map (primary + 3–5 secondary)
|
|
162
|
+
- Any sitemap, robots, or `_config.yml` changes required
|
|
163
|
+
|
|
164
|
+
- id: accessibility-audit
|
|
165
|
+
label: "Accessibility Audit"
|
|
166
|
+
icon: "bi-universal-access"
|
|
167
|
+
group: "Page Improvements"
|
|
168
|
+
description: "Audit this page for WCAG 2.1 AA compliance"
|
|
96
169
|
body: |
|
|
97
|
-
Act as
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
170
|
+
Act as an Accessibility (a11y) Engineer.
|
|
171
|
+
|
|
172
|
+
Audit the page referenced in the **Page Context** table below against
|
|
173
|
+
WCAG 2.1 AA and propose concrete fixes in Markdown, Liquid, or SCSS.
|
|
174
|
+
|
|
175
|
+
**Audit areas:**
|
|
176
|
+
- Semantic HTML and heading order
|
|
177
|
+
- Alt text on every meaningful image; empty alt on decorative ones
|
|
178
|
+
- Sufficient colour contrast (≥ 4.5:1 body, ≥ 3:1 large text/UI)
|
|
179
|
+
- Keyboard navigability and visible focus states
|
|
180
|
+
- ARIA attributes on Bootstrap components (modals, dropdowns, tabs)
|
|
181
|
+
- Form labels, error messages, and `aria-describedby` associations
|
|
182
|
+
- Skip links and landmark regions (`<main>`, `<nav>`, `<aside>`)
|
|
183
|
+
- Reduced-motion and prefers-color-scheme respect
|
|
184
|
+
|
|
185
|
+
**Deliverables:**
|
|
186
|
+
- Findings table: issue, WCAG criterion, severity, fix
|
|
187
|
+
- Patches for the page and any shared includes that need updating
|
|
188
|
+
- A re-test plan (axe-core, Lighthouse, manual keyboard pass)
|
|
189
|
+
|
|
190
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
191
|
+
# Site Improvements — theme-wide UI/UX, components, and features
|
|
192
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
193
|
+
|
|
194
|
+
- id: ui-ux-improvement
|
|
195
|
+
label: "UI/UX Improvement"
|
|
196
|
+
icon: "bi-palette"
|
|
197
|
+
group: "Site Improvements"
|
|
198
|
+
description: "Propose a design or UX refinement for the theme"
|
|
118
199
|
body: |
|
|
119
|
-
Act as
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
200
|
+
Act as a Senior UI/UX Designer working in Bootstrap 5 and Jekyll.
|
|
201
|
+
|
|
202
|
+
Propose a UI/UX improvement for the zer0-mistakes theme. Use the page
|
|
203
|
+
referenced in the **Page Context** table below as the starting example;
|
|
204
|
+
where the change applies site-wide, call that out explicitly.
|
|
205
|
+
|
|
206
|
+
**Cover in your proposal:**
|
|
207
|
+
- **Problem / opportunity** — what user pain or quality gap exists?
|
|
208
|
+
- **Affected surfaces** — layouts, includes, components, or data files
|
|
209
|
+
- **Design direction** — spacing, typography, colour, motion, hierarchy
|
|
210
|
+
- **Bootstrap-first approach** — utilities and components over custom CSS
|
|
211
|
+
- **Responsive behaviour** — xs / sm / md / lg / xl / xxl breakpoints
|
|
212
|
+
- **Accessibility** — contrast, focus, ARIA, reduced-motion
|
|
213
|
+
- **Dark mode / colour scheme** considerations
|
|
214
|
+
- **Before/after sketch or description** of the change
|
|
215
|
+
|
|
216
|
+
**Deliverables:**
|
|
217
|
+
- A concrete change list mapped to files in `_layouts/`, `_includes/`,
|
|
218
|
+
`_sass/`, and `assets/`
|
|
219
|
+
- SCSS / Liquid / HTML snippets ready to drop in
|
|
220
|
+
- A short test plan covering desktop + mobile + keyboard
|
|
221
|
+
|
|
222
|
+
- id: new-feature
|
|
223
|
+
label: "New Feature"
|
|
224
|
+
icon: "bi-lightbulb"
|
|
225
|
+
group: "Site Improvements"
|
|
226
|
+
description: "Propose a new site-wide feature or capability"
|
|
135
227
|
body: |
|
|
136
|
-
Act as a
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
**
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
|
|
148
|
-
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
228
|
+
Act as a Product Manager + Frontend Engineer for the zer0-mistakes
|
|
229
|
+
Jekyll theme.
|
|
230
|
+
|
|
231
|
+
Propose a new feature for the site or theme. Use the page referenced in
|
|
232
|
+
the **Page Context** table below as the inspiration / first consumer of
|
|
233
|
+
the feature where it makes sense.
|
|
234
|
+
|
|
235
|
+
**Please describe:**
|
|
236
|
+
- **User story** — As a [reader / author / theme adopter], I want…
|
|
237
|
+
- **Problem solved** and the success metric
|
|
238
|
+
- **Scope** — pages, layouts, includes, data files, configs touched
|
|
239
|
+
- **Configuration** — what goes into `_config.yml` / `_data/*.yml`?
|
|
240
|
+
- **Dependencies** — any new gems, JS libs, or vendor assets?
|
|
241
|
+
- **Privacy / analytics** — does it need consent gating?
|
|
242
|
+
- **Rollout plan** — feature flag, opt-in via front matter, default-on?
|
|
243
|
+
- **Out of scope** items
|
|
244
|
+
|
|
245
|
+
**Deliverables:**
|
|
246
|
+
- A minimal, working implementation plan (file-by-file)
|
|
247
|
+
- Sample Liquid / HTML / SCSS / JS scaffolding
|
|
248
|
+
- Documentation stub for `docs/` or `pages/_docs/`
|
|
249
|
+
- CHANGELOG entry following Keep a Changelog format
|
|
250
|
+
|
|
251
|
+
- id: component-enhancement
|
|
252
|
+
label: "Component Enhancement"
|
|
253
|
+
icon: "bi-puzzle"
|
|
254
|
+
group: "Site Improvements"
|
|
255
|
+
description: "Improve a Jekyll layout, include, or shared component"
|
|
152
256
|
body: |
|
|
153
|
-
Act as a
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
257
|
+
Act as a Senior Jekyll Theme Developer.
|
|
258
|
+
|
|
259
|
+
Enhance a shared component used by the page referenced in the
|
|
260
|
+
**Page Context** table below — a layout in `_layouts/`, an include in
|
|
261
|
+
`_includes/`, or a partial in `_sass/`. Improvements should benefit every
|
|
262
|
+
page that uses the component, not just this one.
|
|
263
|
+
|
|
264
|
+
**Targets to consider:**
|
|
265
|
+
- Cleaner Liquid: safe `default:` filters, fewer nested `if`s
|
|
266
|
+
- Parameterise hard-coded values via `include.*` arguments
|
|
267
|
+
- Consistent BEM-style class names and Bootstrap utility usage
|
|
268
|
+
- Add the standard component header comment block
|
|
269
|
+
- Improve mobile responsiveness and accessibility
|
|
270
|
+
- Document parameters and usage in the file header
|
|
271
|
+
|
|
272
|
+
**Deliverables:**
|
|
273
|
+
- The enhanced file(s), preserving backward compatibility
|
|
274
|
+
- A migration note if any include parameters changed
|
|
275
|
+
- Before/after rendering notes for at least one page that uses it
|
|
276
|
+
- A test plan: `docker-compose exec jekyll bundle exec jekyll build`
|
|
277
|
+
|
|
278
|
+
- id: performance-optimization
|
|
279
|
+
label: "Performance Optimization"
|
|
280
|
+
icon: "bi-speedometer2"
|
|
281
|
+
group: "Site Improvements"
|
|
282
|
+
description: "Improve load time, Core Web Vitals, and asset delivery"
|
|
173
283
|
body: |
|
|
174
|
-
Act as
|
|
284
|
+
Act as a Web Performance Engineer.
|
|
175
285
|
|
|
176
|
-
|
|
286
|
+
Profile and optimise the site, using the page referenced in the
|
|
287
|
+
**Page Context** table below as a representative measurement target.
|
|
177
288
|
|
|
178
|
-
**
|
|
179
|
-
-
|
|
180
|
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
289
|
+
**Investigate:**
|
|
290
|
+
- Core Web Vitals: LCP (Largest Contentful Paint), CLS (Cumulative
|
|
291
|
+
Layout Shift), and INP (Interaction to Next Paint) for this page
|
|
292
|
+
- Render-blocking CSS/JS in `_includes/core/head.html` and `js-cdn.html`
|
|
293
|
+
- Vendored Bootstrap and Bootstrap Icons under `assets/vendor/`
|
|
294
|
+
- Image strategy: dimensions, `loading="lazy"`, modern formats
|
|
295
|
+
- Liquid hot spots: nested loops, repeated `where` filters
|
|
296
|
+
- Build output size in `_site/` and unused CSS
|
|
297
|
+
|
|
298
|
+
**Deliverables:**
|
|
299
|
+
- Lighthouse / WebPageTest results before and after
|
|
300
|
+
- Specific patches to layouts, includes, SCSS, and config
|
|
301
|
+
- Any new build steps or scripts (must be opt-in, GitHub Pages-safe)
|
|
302
|
+
- A short report on tradeoffs and follow-ups
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<i class="bi bi-gear-wide-connected me-1"></i>
|
|
23
23
|
<strong>Almost there!</strong>
|
|
24
24
|
Your site is running with default settings.
|
|
25
|
-
<a href="{{ '/
|
|
25
|
+
<a href="{{ '/' | relative_url }}#setup-wizard" class="alert-link">Complete setup →</a>
|
|
26
26
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
27
27
|
</div>
|
|
28
28
|
{% endif %}
|
|
@@ -48,6 +48,37 @@
|
|
|
48
48
|
{% endcomment %}
|
|
49
49
|
{% assign site_needs_setup = false %}
|
|
50
50
|
|
|
51
|
+
{% comment %} Explicit opt-out (configured sites set this to true). {% endcomment %}
|
|
51
52
|
{% if site.site_configured == false %}
|
|
52
53
|
{% assign site_needs_setup = true %}
|
|
53
54
|
{% endif %}
|
|
55
|
+
|
|
56
|
+
{% comment %}
|
|
57
|
+
── Heuristic detection (when site_configured is not set explicitly) ──
|
|
58
|
+
Treat the site as "needs setup" if any of these are true:
|
|
59
|
+
• No founder/author/email configured
|
|
60
|
+
• Title is empty or matches a known placeholder
|
|
61
|
+
• The site has no content collections beyond the defaults
|
|
62
|
+
{% endcomment %}
|
|
63
|
+
{% unless site.site_configured %}
|
|
64
|
+
{% assign _has_owner = false %}
|
|
65
|
+
{% if site.founder or site.author or site.email %}
|
|
66
|
+
{% assign _has_owner = true %}
|
|
67
|
+
{% endif %}
|
|
68
|
+
|
|
69
|
+
{% assign _placeholder_titles = "zer0-mistakes,zer0-pages-remote,Your Site Title,My Awesome Site,Welcome,Untitled" | split: "," %}
|
|
70
|
+
{% assign _title_is_placeholder = false %}
|
|
71
|
+
{% if site.title == nil or site.title == "" %}
|
|
72
|
+
{% assign _title_is_placeholder = true %}
|
|
73
|
+
{% else %}
|
|
74
|
+
{% for _t in _placeholder_titles %}
|
|
75
|
+
{% if site.title == _t %}
|
|
76
|
+
{% assign _title_is_placeholder = true %}
|
|
77
|
+
{% endif %}
|
|
78
|
+
{% endfor %}
|
|
79
|
+
{% endif %}
|
|
80
|
+
|
|
81
|
+
{% if _has_owner == false or _title_is_placeholder %}
|
|
82
|
+
{% assign site_needs_setup = true %}
|
|
83
|
+
{% endif %}
|
|
84
|
+
{% endunless %}
|
|
@@ -96,7 +96,13 @@
|
|
|
96
96
|
<span class="d-none d-sm-inline ms-1">Copilot Agent</span>
|
|
97
97
|
</button>
|
|
98
98
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="copilotAgentDropdown">
|
|
99
|
+
{% assign current_group = "" %}
|
|
99
100
|
{% for prompt in site.data.prompts %}
|
|
101
|
+
{% if prompt.group and prompt.group != current_group %}
|
|
102
|
+
{% unless forloop.first %}<li><hr class="dropdown-divider"></li>{% endunless %}
|
|
103
|
+
<li><h6 class="dropdown-header">{{ prompt.group }}</h6></li>
|
|
104
|
+
{% assign current_group = prompt.group %}
|
|
105
|
+
{% endif %}
|
|
100
106
|
{% capture issue_title %}[{{ prompt.label }}] {{ page.title }}{% endcapture %}
|
|
101
107
|
{% capture issue_body %}{{ prompt.body }}
|
|
102
108
|
---
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: root
|
|
3
|
+
---
|
|
4
|
+
<!--
|
|
5
|
+
===================================================================
|
|
6
|
+
WELCOME LAYOUT — Onboarding landing page for new sites
|
|
7
|
+
===================================================================
|
|
8
|
+
|
|
9
|
+
File: welcome.html
|
|
10
|
+
Path: _layouts/welcome.html
|
|
11
|
+
Inherits: root.html
|
|
12
|
+
Purpose: First-run experience for sites that have just installed the
|
|
13
|
+
bamr87/zer0-mistakes remote theme but haven't configured
|
|
14
|
+
anything yet. Shows the configuration wizard, the minimal
|
|
15
|
+
starter checklist, and links to docs.
|
|
16
|
+
|
|
17
|
+
Behaviour:
|
|
18
|
+
• If the site is unconfigured (see components/setup-check.html),
|
|
19
|
+
the wizard + instructions REPLACE the page content.
|
|
20
|
+
• Once site.site_configured == true (or the heuristic passes),
|
|
21
|
+
the page renders the user's content normally.
|
|
22
|
+
|
|
23
|
+
Recommended usage in a brand-new repo:
|
|
24
|
+
|
|
25
|
+
# index.md (one of the only three files you need)
|
|
26
|
+
---
|
|
27
|
+
layout: welcome
|
|
28
|
+
title: Home
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
Welcome to my new site! ← shown after configuration is complete
|
|
32
|
+
|
|
33
|
+
Companion files in a minimal starter:
|
|
34
|
+
_config.yml (just `remote_theme: bamr87/zer0-mistakes`)
|
|
35
|
+
Gemfile (github-pages + jekyll-remote-theme)
|
|
36
|
+
index.md (this layout)
|
|
37
|
+
===================================================================
|
|
38
|
+
-->
|
|
39
|
+
|
|
40
|
+
{% include components/setup-check.html %}
|
|
41
|
+
|
|
42
|
+
{% if site_needs_setup %}
|
|
43
|
+
|
|
44
|
+
<!-- ============================================================ -->
|
|
45
|
+
<!-- HERO -->
|
|
46
|
+
<!-- ============================================================ -->
|
|
47
|
+
<section class="bg-body-tertiary border-bottom">
|
|
48
|
+
<div class="container-lg py-5">
|
|
49
|
+
<div class="row align-items-center g-4">
|
|
50
|
+
<div class="col-lg-7">
|
|
51
|
+
<span class="badge text-bg-primary mb-2">
|
|
52
|
+
<i class="bi bi-stars"></i> zer0-mistakes remote theme
|
|
53
|
+
</span>
|
|
54
|
+
<h1 class="display-5 fw-bold mb-3">
|
|
55
|
+
Welcome — your site is live!
|
|
56
|
+
</h1>
|
|
57
|
+
<p class="lead mb-3">
|
|
58
|
+
GitHub Pages built this page from <strong>just three files</strong>
|
|
59
|
+
in your repository. The layout, styles, and this entire onboarding
|
|
60
|
+
screen are served by the remote theme.
|
|
61
|
+
</p>
|
|
62
|
+
<p class="text-body-secondary mb-4">
|
|
63
|
+
Use the wizard below to generate a personalised
|
|
64
|
+
<code>_config.yml</code>, drop it into your repo, and your site
|
|
65
|
+
will look like <em>your</em> site instead of this welcome page.
|
|
66
|
+
</p>
|
|
67
|
+
<div class="d-flex flex-wrap gap-2">
|
|
68
|
+
<a href="#setup-wizard" class="btn btn-primary btn-lg">
|
|
69
|
+
<i class="bi bi-magic"></i> Start the wizard
|
|
70
|
+
</a>
|
|
71
|
+
<a href="#minimal-starter" class="btn btn-outline-secondary btn-lg">
|
|
72
|
+
<i class="bi bi-list-check"></i> Minimal starter
|
|
73
|
+
</a>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
<div class="col-lg-5">
|
|
77
|
+
<div class="card shadow-sm">
|
|
78
|
+
<div class="card-header bg-body">
|
|
79
|
+
<i class="bi bi-folder2-open"></i>
|
|
80
|
+
<strong>Your repository right now</strong>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="card-body p-0">
|
|
83
|
+
<ul class="list-group list-group-flush small mb-0">
|
|
84
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
85
|
+
<span><i class="bi bi-file-earmark-text"></i> <code>_config.yml</code></span>
|
|
86
|
+
<span class="badge text-bg-success rounded-pill">required</span>
|
|
87
|
+
</li>
|
|
88
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
89
|
+
<span><i class="bi bi-gem"></i> <code>Gemfile</code></span>
|
|
90
|
+
<span class="badge text-bg-success rounded-pill">required</span>
|
|
91
|
+
</li>
|
|
92
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
93
|
+
<span><i class="bi bi-house-door"></i> <code>index.md</code></span>
|
|
94
|
+
<span class="badge text-bg-success rounded-pill">required</span>
|
|
95
|
+
</li>
|
|
96
|
+
<li class="list-group-item d-flex justify-content-between align-items-center text-body-secondary">
|
|
97
|
+
<span><i class="bi bi-folder"></i> <code>pages/</code></span>
|
|
98
|
+
<span class="badge text-bg-secondary rounded-pill">optional</span>
|
|
99
|
+
</li>
|
|
100
|
+
<li class="list-group-item d-flex justify-content-between align-items-center text-body-secondary">
|
|
101
|
+
<span><i class="bi bi-folder"></i> <code>assets/</code></span>
|
|
102
|
+
<span class="badge text-bg-secondary rounded-pill">optional</span>
|
|
103
|
+
</li>
|
|
104
|
+
</ul>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="card-footer text-body-secondary small">
|
|
107
|
+
Everything else — layouts, styles, navigation, search —
|
|
108
|
+
is provided by the remote theme.
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</section>
|
|
115
|
+
|
|
116
|
+
<!-- ============================================================ -->
|
|
117
|
+
<!-- MINIMAL STARTER INSTRUCTIONS -->
|
|
118
|
+
<!-- ============================================================ -->
|
|
119
|
+
<section id="minimal-starter" class="container-lg py-5">
|
|
120
|
+
<div class="row justify-content-center">
|
|
121
|
+
<div class="col-lg-10">
|
|
122
|
+
<h2 class="mb-3"><i class="bi bi-list-check"></i> The 3-file starter</h2>
|
|
123
|
+
<p class="text-body-secondary">
|
|
124
|
+
The only files you need in your repository for GitHub Pages to
|
|
125
|
+
render a full site through the <code>bamr87/zer0-mistakes</code>
|
|
126
|
+
remote theme.
|
|
127
|
+
</p>
|
|
128
|
+
|
|
129
|
+
<div class="accordion mt-4" id="starterAccordion">
|
|
130
|
+
|
|
131
|
+
<!-- _config.yml -->
|
|
132
|
+
<div class="accordion-item">
|
|
133
|
+
<h3 class="accordion-header">
|
|
134
|
+
<button class="accordion-button" type="button"
|
|
135
|
+
data-bs-toggle="collapse" data-bs-target="#starter-config">
|
|
136
|
+
<i class="bi bi-1-circle me-2"></i>
|
|
137
|
+
<code>_config.yml</code>
|
|
138
|
+
<span class="text-body-secondary ms-2">— site configuration</span>
|
|
139
|
+
</button>
|
|
140
|
+
</h3>
|
|
141
|
+
<div id="starter-config" class="accordion-collapse collapse show"
|
|
142
|
+
data-bs-parent="#starterAccordion">
|
|
143
|
+
<div class="accordion-body">
|
|
144
|
+
<p>The minimum viable configuration:</p>
|
|
145
|
+
{% highlight yaml %}
|
|
146
|
+
# _config.yml
|
|
147
|
+
title: "My Site"
|
|
148
|
+
description: "A site rendered by the zer0-mistakes remote theme."
|
|
149
|
+
url: ""
|
|
150
|
+
baseurl: ""
|
|
151
|
+
|
|
152
|
+
# Pull layouts/includes/assets from the published theme
|
|
153
|
+
remote_theme: bamr87/zer0-mistakes
|
|
154
|
+
|
|
155
|
+
# GitHub Pages whitelisted plugins
|
|
156
|
+
plugins:
|
|
157
|
+
- jekyll-remote-theme
|
|
158
|
+
- jekyll-feed
|
|
159
|
+
- jekyll-sitemap
|
|
160
|
+
- jekyll-seo-tag
|
|
161
|
+
|
|
162
|
+
# Hide this welcome screen once you're configured
|
|
163
|
+
site_configured: true
|
|
164
|
+
{% endhighlight %}
|
|
165
|
+
<p class="small text-body-secondary mb-0">
|
|
166
|
+
Use the wizard below to generate a richer file with
|
|
167
|
+
collections, analytics, and social links.
|
|
168
|
+
</p>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<!-- Gemfile -->
|
|
174
|
+
<div class="accordion-item">
|
|
175
|
+
<h3 class="accordion-header">
|
|
176
|
+
<button class="accordion-button collapsed" type="button"
|
|
177
|
+
data-bs-toggle="collapse" data-bs-target="#starter-gemfile">
|
|
178
|
+
<i class="bi bi-2-circle me-2"></i>
|
|
179
|
+
<code>Gemfile</code>
|
|
180
|
+
<span class="text-body-secondary ms-2">— Ruby dependencies</span>
|
|
181
|
+
</button>
|
|
182
|
+
</h3>
|
|
183
|
+
<div id="starter-gemfile" class="accordion-collapse collapse"
|
|
184
|
+
data-bs-parent="#starterAccordion">
|
|
185
|
+
<div class="accordion-body">
|
|
186
|
+
<p>Required when building locally; GitHub Pages installs these for you in CI.</p>
|
|
187
|
+
{% highlight ruby %}
|
|
188
|
+
# Gemfile
|
|
189
|
+
source "https://rubygems.org"
|
|
190
|
+
|
|
191
|
+
gem "github-pages", group: :jekyll_plugins
|
|
192
|
+
gem "jekyll-remote-theme"
|
|
193
|
+
gem "webrick", "~> 1.7"
|
|
194
|
+
{% endhighlight %}
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
<!-- index.md -->
|
|
200
|
+
<div class="accordion-item">
|
|
201
|
+
<h3 class="accordion-header">
|
|
202
|
+
<button class="accordion-button collapsed" type="button"
|
|
203
|
+
data-bs-toggle="collapse" data-bs-target="#starter-index">
|
|
204
|
+
<i class="bi bi-3-circle me-2"></i>
|
|
205
|
+
<code>index.md</code>
|
|
206
|
+
<span class="text-body-secondary ms-2">— your home page</span>
|
|
207
|
+
</button>
|
|
208
|
+
</h3>
|
|
209
|
+
<div id="starter-index" class="accordion-collapse collapse"
|
|
210
|
+
data-bs-parent="#starterAccordion">
|
|
211
|
+
<div class="accordion-body">
|
|
212
|
+
<p>
|
|
213
|
+
While the site is unconfigured, <code>layout: welcome</code>
|
|
214
|
+
shows this onboarding screen. Once you set
|
|
215
|
+
<code>site_configured: true</code> in <code>_config.yml</code>,
|
|
216
|
+
the same file renders your own home-page content.
|
|
217
|
+
</p>
|
|
218
|
+
{% highlight markdown %}
|
|
219
|
+
---
|
|
220
|
+
layout: welcome
|
|
221
|
+
title: Home
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
# Welcome to my site
|
|
225
|
+
|
|
226
|
+
Replace this with your own content. The setup wizard
|
|
227
|
+
will disappear automatically once `site_configured: true`
|
|
228
|
+
is set in `_config.yml`.
|
|
229
|
+
{% endhighlight %}
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
</div>
|
|
233
|
+
|
|
234
|
+
</div><!-- /accordion -->
|
|
235
|
+
|
|
236
|
+
<div class="alert alert-info d-flex align-items-start mt-4" role="alert">
|
|
237
|
+
<i class="bi bi-info-circle-fill me-2 mt-1"></i>
|
|
238
|
+
<div>
|
|
239
|
+
<strong>Local development?</strong>
|
|
240
|
+
Run <code>bundle install && bundle exec jekyll serve</code>
|
|
241
|
+
(or <code>docker compose up</code> if you have a
|
|
242
|
+
<code>docker-compose.yml</code>). Browse to
|
|
243
|
+
<a href="http://localhost:4000/">http://localhost:4000/</a>.
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</section>
|
|
249
|
+
|
|
250
|
+
<!-- ============================================================ -->
|
|
251
|
+
<!-- SETUP WIZARD -->
|
|
252
|
+
<!-- ============================================================ -->
|
|
253
|
+
<section id="setup-wizard" class="bg-body-tertiary border-top py-5">
|
|
254
|
+
{% include setup/wizard.html %}
|
|
255
|
+
</section>
|
|
256
|
+
|
|
257
|
+
<!-- ============================================================ -->
|
|
258
|
+
<!-- NEXT STEPS / RESOURCES -->
|
|
259
|
+
<!-- ============================================================ -->
|
|
260
|
+
<section class="container-lg py-5">
|
|
261
|
+
<h2 class="mb-4"><i class="bi bi-signpost-2"></i> Next steps</h2>
|
|
262
|
+
<div class="row g-3">
|
|
263
|
+
<div class="col-md-4">
|
|
264
|
+
<div class="card h-100">
|
|
265
|
+
<div class="card-body">
|
|
266
|
+
<h5 class="card-title">
|
|
267
|
+
<i class="bi bi-pencil-square text-primary"></i> Add content
|
|
268
|
+
</h5>
|
|
269
|
+
<p class="card-text small">
|
|
270
|
+
Create a <code>pages/</code> folder with collections like
|
|
271
|
+
<code>_posts/</code>, <code>_docs/</code>, or
|
|
272
|
+
<code>_about/</code>. Enable them in <code>_config.yml</code>.
|
|
273
|
+
</p>
|
|
274
|
+
<a class="btn btn-sm btn-outline-primary"
|
|
275
|
+
href="https://github.com/bamr87/zer0-mistakes#content-creation"
|
|
276
|
+
target="_blank" rel="noopener">
|
|
277
|
+
Content guide <i class="bi bi-box-arrow-up-right"></i>
|
|
278
|
+
</a>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
</div>
|
|
282
|
+
<div class="col-md-4">
|
|
283
|
+
<div class="card h-100">
|
|
284
|
+
<div class="card-body">
|
|
285
|
+
<h5 class="card-title">
|
|
286
|
+
<i class="bi bi-palette text-success"></i> Customise styles
|
|
287
|
+
</h5>
|
|
288
|
+
<p class="card-text small">
|
|
289
|
+
Drop an <code>assets/css/user-overrides.css</code> file in
|
|
290
|
+
your repo to override theme styles without forking.
|
|
291
|
+
</p>
|
|
292
|
+
<a class="btn btn-sm btn-outline-success"
|
|
293
|
+
href="https://github.com/bamr87/zer0-mistakes#customisation"
|
|
294
|
+
target="_blank" rel="noopener">
|
|
295
|
+
Customisation <i class="bi bi-box-arrow-up-right"></i>
|
|
296
|
+
</a>
|
|
297
|
+
</div>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
<div class="col-md-4">
|
|
301
|
+
<div class="card h-100">
|
|
302
|
+
<div class="card-body">
|
|
303
|
+
<h5 class="card-title">
|
|
304
|
+
<i class="bi bi-github text-body"></i> Source & issues
|
|
305
|
+
</h5>
|
|
306
|
+
<p class="card-text small">
|
|
307
|
+
File issues, submit PRs, or fork the theme on GitHub.
|
|
308
|
+
Contributions welcome.
|
|
309
|
+
</p>
|
|
310
|
+
<a class="btn btn-sm btn-outline-dark"
|
|
311
|
+
href="https://github.com/bamr87/zer0-mistakes"
|
|
312
|
+
target="_blank" rel="noopener">
|
|
313
|
+
Repository <i class="bi bi-box-arrow-up-right"></i>
|
|
314
|
+
</a>
|
|
315
|
+
</div>
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
</section>
|
|
320
|
+
|
|
321
|
+
{% else %}
|
|
322
|
+
|
|
323
|
+
<!-- ============================================================ -->
|
|
324
|
+
<!-- CONFIGURED SITE — render the user's content -->
|
|
325
|
+
<!-- ============================================================ -->
|
|
326
|
+
<div class="container-lg py-4">
|
|
327
|
+
<div class="row justify-content-center">
|
|
328
|
+
<div class="col-lg-10">
|
|
329
|
+
{% if page.title %}
|
|
330
|
+
<h1 class="mb-3">{{ page.title }}</h1>
|
|
331
|
+
{% endif %}
|
|
332
|
+
{{ content }}
|
|
333
|
+
</div>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
|
|
337
|
+
{% endif %}
|
data/scripts/lib/changelog.sh
CHANGED
|
@@ -137,7 +137,7 @@ generate_changelog() {
|
|
|
137
137
|
while IFS='|' read -r hash subject author date; do
|
|
138
138
|
[[ -z "$hash" ]] && continue
|
|
139
139
|
|
|
140
|
-
((commit_count
|
|
140
|
+
commit_count=$((commit_count + 1))
|
|
141
141
|
|
|
142
142
|
# Skip merge commits
|
|
143
143
|
if echo "$subject" | grep -qE "^Merge (branch|pull request|remote-tracking branch)"; then
|
data/scripts/lib/migrate.sh
CHANGED
|
@@ -146,18 +146,18 @@ install_admin_pages() {
|
|
|
146
146
|
|
|
147
147
|
if [[ ! -f "$template_file" ]]; then
|
|
148
148
|
warn "Template not found: $template_file — skipping"
|
|
149
|
-
((skipped
|
|
149
|
+
skipped=$((skipped + 1))
|
|
150
150
|
continue
|
|
151
151
|
fi
|
|
152
152
|
|
|
153
153
|
if [[ -f "$output_file" ]] && [[ "$force" != "true" ]]; then
|
|
154
154
|
info "Already exists (use --force to overwrite): $output_file"
|
|
155
|
-
((skipped
|
|
155
|
+
skipped=$((skipped + 1))
|
|
156
156
|
continue
|
|
157
157
|
fi
|
|
158
158
|
|
|
159
159
|
dry_run_exec "Render ${page}.md" render_template "$template_file" "$output_file"
|
|
160
|
-
((installed
|
|
160
|
+
installed=$((installed + 1))
|
|
161
161
|
debug "Installed: $output_file"
|
|
162
162
|
done
|
|
163
163
|
|
|
@@ -193,24 +193,24 @@ verify_admin_pages() {
|
|
|
193
193
|
local page page_file
|
|
194
194
|
for page in "${ADMIN_PAGES[@]}"; do
|
|
195
195
|
page_file="$output_dir/${page}.md"
|
|
196
|
-
((total
|
|
196
|
+
total=$((total + 1))
|
|
197
197
|
|
|
198
198
|
if [[ ! -f "$page_file" ]]; then
|
|
199
199
|
warn "Missing: $page_file"
|
|
200
|
-
((errors
|
|
200
|
+
errors=$((errors + 1))
|
|
201
201
|
continue
|
|
202
202
|
fi
|
|
203
203
|
|
|
204
204
|
# Check required front matter fields
|
|
205
205
|
if ! grep -q 'layout: admin' "$page_file" 2>/dev/null; then
|
|
206
206
|
warn "Missing 'layout: admin' in $page_file"
|
|
207
|
-
((errors
|
|
207
|
+
errors=$((errors + 1))
|
|
208
208
|
continue
|
|
209
209
|
fi
|
|
210
210
|
|
|
211
211
|
if ! grep -q 'permalink:' "$page_file" 2>/dev/null; then
|
|
212
212
|
warn "Missing 'permalink' in $page_file"
|
|
213
|
-
((errors
|
|
213
|
+
errors=$((errors + 1))
|
|
214
214
|
continue
|
|
215
215
|
fi
|
|
216
216
|
|
|
@@ -107,3 +107,23 @@ tmp=$(mktemp -d)
|
|
|
107
107
|
) && assert_true "true" "Logs are written to stderr" \
|
|
108
108
|
|| assert_true "false" "Logs are written to stderr"
|
|
109
109
|
rm -rf "$tmp"
|
|
110
|
+
|
|
111
|
+
echo -e "\nTesting safety against ((var++)) + set -e crash on bash 5.x..."
|
|
112
|
+
|
|
113
|
+
# Regression test: in bash 5.x, ((var++)) when var is 0 returns exit code 1,
|
|
114
|
+
# which under `set -euo pipefail` (used by both the analyzer and the CI workflow
|
|
115
|
+
# step that calls it) terminates the script silently. The fix is to use
|
|
116
|
+
# var=$((var + 1)) which always returns 0. This static check ensures we never
|
|
117
|
+
# reintroduce the ((var++)) pattern in the release-path scripts.
|
|
118
|
+
if grep -qE '\(\([a-zA-Z_][a-zA-Z0-9_]*\+\+\)\)' "$ANALYZER"; then
|
|
119
|
+
assert_true "false" "analyze-commits is free of ((var++)) post-increments"
|
|
120
|
+
else
|
|
121
|
+
assert_true "true" "analyze-commits is free of ((var++)) post-increments"
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
CHANGELOG_LIB="$(cd "$SCRIPT_DIR/../../lib" && pwd)/changelog.sh"
|
|
125
|
+
if grep -qE '\(\([a-zA-Z_][a-zA-Z0-9_]*\+\+\)\)' "$CHANGELOG_LIB"; then
|
|
126
|
+
assert_true "false" "changelog.sh is free of ((var++)) post-increments"
|
|
127
|
+
else
|
|
128
|
+
assert_true "true" "changelog.sh is free of ((var++)) post-increments"
|
|
129
|
+
fi
|
|
@@ -110,17 +110,17 @@ analyze_commit() {
|
|
|
110
110
|
|
|
111
111
|
# Critical/breaking change files (MAJOR)
|
|
112
112
|
if echo "$file" | grep -qE "(Gemfile|gemspec|_config\.yml|docker-compose\.yml|Dockerfile)$"; then
|
|
113
|
-
((critical_files
|
|
113
|
+
critical_files=$((critical_files + 1))
|
|
114
114
|
log_debug "Critical file detected: $file"
|
|
115
115
|
|
|
116
116
|
# Feature files (MINOR)
|
|
117
117
|
elif echo "$file" | grep -qE "(_layouts/|_includes/|assets/|pages/.*\.md$|\.rb$|\.js$)"; then
|
|
118
|
-
((feature_files
|
|
118
|
+
feature_files=$((feature_files + 1))
|
|
119
119
|
log_debug "Feature file detected: $file"
|
|
120
120
|
|
|
121
121
|
# Documentation and minor files (PATCH)
|
|
122
122
|
elif echo "$file" | grep -qE "(README|CHANGELOG|\.md$|\.txt$|\.yml$|\.yaml$|test/)"; then
|
|
123
|
-
((patch_files
|
|
123
|
+
patch_files=$((patch_files + 1))
|
|
124
124
|
log_debug "Patch file detected: $file"
|
|
125
125
|
fi
|
|
126
126
|
done <<< "$commit_files"
|
|
@@ -171,17 +171,17 @@ determine_overall_bump() {
|
|
|
171
171
|
|
|
172
172
|
case "$bump_level" in
|
|
173
173
|
"major")
|
|
174
|
-
((major_count
|
|
174
|
+
major_count=$((major_count + 1))
|
|
175
175
|
highest_bump="major"
|
|
176
176
|
;;
|
|
177
177
|
"minor")
|
|
178
|
-
((minor_count
|
|
178
|
+
minor_count=$((minor_count + 1))
|
|
179
179
|
if [[ "$highest_bump" != "major" ]]; then
|
|
180
180
|
highest_bump="minor"
|
|
181
181
|
fi
|
|
182
182
|
;;
|
|
183
183
|
"patch")
|
|
184
|
-
((patch_count
|
|
184
|
+
patch_count=$((patch_count + 1))
|
|
185
185
|
if [[ "$highest_bump" == "none" ]]; then
|
|
186
186
|
highest_bump="patch"
|
|
187
187
|
fi
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jekyll-theme-zer0
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Amr Abdel
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-04-
|
|
11
|
+
date: 2026-04-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: jekyll
|
|
@@ -193,6 +193,7 @@ files:
|
|
|
193
193
|
- _layouts/sitemap-collection.html
|
|
194
194
|
- _layouts/stats.html
|
|
195
195
|
- _layouts/tag.html
|
|
196
|
+
- _layouts/welcome.html
|
|
196
197
|
- _plugins/preview_image_generator.rb
|
|
197
198
|
- _plugins/theme_version.rb
|
|
198
199
|
- _sass/core/_docs-layout.scss
|