CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
# Install dependencies (both Ruby and Node)
bundle install && npm install
# Serve locally with live reload
bundle exec jekyll serve --livereload
# Build
bundle exec jekyll build
# Lint SCSS
npx stylelint "_sass/**/*.scss" "assets/css/**/*.scss"
# Lint YAML
yamllint _config.yml _data/ .github/
# HTML validation (runs build first)
bundle exec jekyll build && bundle exec htmlproofer ./_site --disable-external
Architecture
This is a Jekyll static site for Helm Information Security, deployed to GitHub Pages at helminfosec.com.
Content model:
_data/services.yml— authoritative service definitions; service pages inservices/pull from this via Liquid_data/posts.json— auto-generated blog posts synced daily from Substack via.github/workflows/fetch-substack.yml+_scripts/parse_substack.py; do not hand-editproducts/— standalone product pages with their ownproductlayout
Layouts and includes:
_layouts/default.html→page.html(standard pages) /service.html(service pages) /product.html(product pages)_includes/holds partials:head.html,header.html,footer.html,json-ld-org.html(Schema.org structured data)
Styles:
- Entry point:
assets/css/main.scss - Source:
_sass/*.scss— follow existing BEM naming (block__element--modifier) and use only lowercase hyphenated dollar variables - Font: Inter (self-hosted woff2 at
assets/fonts/)
Navigation and products index:
- The main nav is in
_includes/header.html; the products index isproducts/index.html - When adding a new service or product page, update both the nav and the relevant index page
CI
All PRs run: SCSS lint → YAML lint → bundle exec jekyll build + HTML Proofer → bundle audit check. All four must pass before merging.