Skip to content

Add /add-study-note skill for authoring interactive study notes#31

Merged
Alexdruso merged 3 commits into
masterfrom
claude/repo-production-readiness-a1v0q5
Jun 23, 2026
Merged

Add /add-study-note skill for authoring interactive study notes#31
Alexdruso merged 3 commits into
masterfrom
claude/repo-production-readiness-a1v0q5

Conversation

@Alexdruso

Copy link
Copy Markdown
Owner

What

Adds a Claude Code skill at .claude/skills/add-study-note/ (discoverable as /add-study-note) that scaffolds, fact-checks, and visually verifies the site's interactive Study Note posts before they're pushed.

Contents

  • driver.mjs — the preview harness. Builds the Jekyll site and screenshots a note in light + dark (plus the /study-notes/ index) using headless Chrome (puppeteer-core + chrome-headless-shell). A study note's whole point is its interactive demos and cyan/teal theming in both modes, so the only real verification is to render it and look — this does exactly that.
  • template.html — a conventions-correct scaffold: the {% include study-note-styles.html %} + .study-note wrapper, --sn-* design tokens, a slider demo, and an adaptive SVG chart wired to the theme MutationObserver redraw pattern.
  • SKILL.md — the authoring workflow: research/fact-check with /deep-research → write per docs/_posts/CLAUDE.md → preview via the driver. Documents two real gotchas hit during authoring (see below).
  • .gitignore, package.json / package-lock.json — skill-local puppeteer-core. node_modules/ and screenshots/ are gitignored as regenerated artifacts.

Verification

Every command in SKILL.md was run in this environment:

  1. bundle install + built the site and screenshotted an existing post — charts, demos, and theming render correctly in both light and dark.
  2. Scaffolded a brand-new note from template.html, built, and confirmed it renders and appears atop the /study-notes/ index with its excerpt.
  3. Both temporary test notes were deleted — nothing was added to the live site.

Gotchas documented (both hit while building this)

  • bundle exec jekyll build fails with command not found: jekyll under this repo's rbenv setup even though bundle show jekyll resolves. The driver works around it via bundle exec ruby "$(bundle show jekyll)/exe/jekyll" build.
  • A placeholder date: YYYY-MM-DD aborts the whole build (Invalid date). The template now ships a build-safe 2026-01-01 placeholder, and there's a troubleshooting entry.

Note

The /deep-research step needs outbound web access, which depends on the environment's network policy; the scaffold + preview steps are fully offline.

🤖 Generated with Claude Code

https://claude.ai/code/session_019R3LLsWZr5fdbLwuumEov3


Generated by Claude Code

claude added 3 commits June 23, 2026 22:01
- README: rewrite Structure/CI sections to match the actual tree and
  workflow (removed references to nonexistent head/header/footer.html,
  about.md, blog.md; correct the CI trigger description).
- Gemfile: drop unused jekyll-seo-tag (meta is hand-rolled in
  _includes/meta.html); add html-proofer in a :test group for CI.
- Remove dead Disqus code (site.disqus was never configured, so it never
  rendered): delete _includes/disqus.html and its include in post.html.
- default.html: remove the IE<9 html5shiv block (dead http:// googlecode
  URL) and the leftover "Created with Jekyll Now" comment.
- Harden insecure/protocol-relative URLs to https:// (svg-icons
  StackOverflow link, GoatCounter analytics script).
- _config.yml: trim empty footer-links template fields; drop CNAME from
  exclude (the file no longer exists).
- Commit Gemfile.lock for reproducible builds (un-ignore it).
- CI: add a pull_request job that runs jekyll build + html-proofer
  (internal links/images, UTF-8 locale) so branches are verified before
  merge; gate the CV-build/deploy job to non-PR events.
- CLAUDE.md: generalize the stale hard-coded development-branch reference.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019R3LLsWZr5fdbLwuumEov3
html-proofer 5.2.1 pulls in async → console 1.36, which requires Ruby
>= 3.3. The workflow pinned Ruby 3.2, so `bundle install` failed to
resolve the locked gems. Bump both jobs to Ruby 3.3 to match the
committed Gemfile.lock, and update the matching note in CLAUDE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019R3LLsWZr5fdbLwuumEov3
Adds a skill at .claude/skills/add-study-note/ that scaffolds, fact-checks,
and previews the site's interactive Study Note posts:

- driver.mjs: builds the Jekyll site and screenshots a note in light + dark
  with headless Chrome (puppeteer-core + chrome-headless-shell), plus the
  /study-notes/ index, so a new note can be verified visually before push.
- template.html: a conventions-correct scaffold (.study-note wrapper, --sn-*
  tokens, slider demo, adaptive SVG chart with the theme MutationObserver).
- SKILL.md: the authoring workflow — research/fact-check with /deep-research,
  write per docs/_posts/CLAUDE.md, then preview via the driver. Documents the
  rbenv jekyll-binstub workaround and the placeholder-date build gotcha.

node_modules/ and screenshots/ are gitignored (regenerated artifacts).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019R3LLsWZr5fdbLwuumEov3
@Alexdruso Alexdruso merged commit 44666b0 into master Jun 23, 2026
2 checks passed
@Alexdruso Alexdruso deleted the claude/repo-production-readiness-a1v0q5 branch June 23, 2026 22:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants