Add CI checks, pin Ruby, fix OG fallback, and improve accessibility#4
Merged
Conversation
…ility Brings the site up to date by closing gaps between configured tooling and what is actually enforced, plus a few correctness and a11y fixes. - ci: add pull_request workflow that builds the site and runs html-proofer, RuboCop and Prettier — none of these were gating changes before (the existing workflow only builds and deploys on push to main). - ci: pin Ruby via .ruby-version (single source of truth) and drop the hardcoded ruby-version from the deploy workflow. - seo/social: the default Open Graph/Twitter image referenced a file that does not exist, producing broken share previews. Drive it from a new site.og_image_default config value (empty by default) so no broken tag is emitted; the card degrades to summary when unset. Images to be added later. - cleanup: remove the deprecated Twitter follow-button iframe and the unused footer.links block from _config.yml. - a11y: add a skip-to-content link and wrap page content in <main id="main">; give the footer logo a real alt text. - security: add rel="noopener" to all target="_blank" links. - seo: add robots.txt pointing at the generated sitemap. - repo hygiene: gitignore .DS_Store. Note: a full local Jekyll build could not be run in this environment (offline, gems not installed), so the Liquid/build is verified by the new CI workflow on this PR rather than locally. Prettier and YAML validation pass locally. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jul 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the site up to date by closing gaps between the tooling that was already configured and what actually runs, plus a few correctness, accessibility, and SEO fixes. Scoped to the top recommendations from a repo review — no redesign, no dependency bumps (deps were updated recently), and no image files changed (those will be handled separately).
What changed
1. CI actually validates changes now
html-proofer,rubocop, andprettierwere all configured but nothing ran them — the only workflow builds and deploys on push tomain. Added.github/workflows/ci.ymlthat runs on every PR: builds the site, then checks internal links, Ruby lint, and formatting. This is the safety net the repo was missing.2. Ruby version pinned
No
.ruby-versionexisted, while CI hardcoded3.3— local and CI could silently diverge. Added.ruby-versionas the single source of truth and removed the hardcoded value from the deploy workflow (ruby/setup-rubyreads the file automatically).3. Fixed broken social-share image
head.htmlreferenced/assets/images/og-image-default.pngas the default OG/Twitter image — the file does not exist, so every shared link without an explicit image rendered a broken preview. The default is now driven by a newsite.og_image_defaultconfig value (empty for now); when unset, no image tag is emitted (no broken reference) and the Twitter card degrades fromsummary_large_imagetosummary. A proper image can be dropped in later by setting one config value.4. Removed dead embeds/config
<iframe>(third-party request on every page, renders empty).footer.linksblock from_config.yml(six platforms, all URLs commented out, referenced nowhere).5. Accessibility + SEO baseline
<main id="main">(both layouts).alt(was empty).rel="noopener"to alltarget="_blank"links.robots.txtpointing at the generated sitemap..gitignorenow covers.DS_Store.Verification
Prettier and YAML validation pass locally. A full Jekyll build could not be run in the authoring environment (offline, gems not installed) — the build and link-check are therefore verified by the new CI workflow on this PR. Please confirm CI is green before merging.
Note:
README.MDincludes a small pre-existing local edit (hosting note + whitespace trim).🤖 Generated with Claude Code