Jabberwocky Studios

AGENTS.md

This file provides guidance to Codex (Codex.ai/code) when working with code in this repository.

What this repo is

The official website for Jabberwocky Studios, served by GitHub Pages at the custom domain jabberwockystudios.co (bound via the root CNAME file). The site is hand-written static HTML with a small shared frontend in assets/: style.css (single stylesheet), lattice.js (self-playing ambient backdrop adapted from jb1), and tabberwocky.png (temporary brand logo). There are no markdown sources, no layouts, no theme.

A minimal _config.yml is kept solely so Jekyll’s exclude: list keeps repo-only files out of the published output — most importantly AGENTS.md, which must never be served at /AGENTS.md. Jekyll still runs on GitHub Pages, but it just passes the HTML through unchanged.

Pages-side, builds happen automatically on push to main via GitHub’s Pages build pipeline — there is no separate CI/build workflow checked in. Local builds exist only to preview changes before pushing.

Site structure (architectural intent)

The Jabberblocky game itself lives in a separate repo (~/Coding/jb1) and is not built into this site. This repo is marketing / legal pages only. If the user later asks to host the game here under /jblock/play/ or similar, that’s a deliberate new decision — confirm before wiring it up.

Visual system

Every shipped page (index.html, jblock/index.html, jblock/privacy/index.html) carries two shared visual elements beyond the page content:

When adding a new HTML page: copy the shared header + lattice div + script tag from an existing page. The site uses no templating (per “Plain HTML, no templating” below), so this duplication is intentional and expected.

Colors:

jb1 dependency

assets/lattice.js and parts of assets/style.css are ported from the canonical implementation in ~/Coding/jb1. The port is one-way: jb1 is the source of truth. KEEP IN SYNC pointers in the source files mark each cross-repo coupling:

jwockstudios surface jb1 source of truth
PALETTE constant in lattice.js ~/Coding/jb1/js/palettes.js (bauhaus, light endpoints) and ~/Coding/jb1/DESIGN.md
.lattice-board geometry (28px cells / 6px gap / 300×300 default; 24px / 5px / 256×256 at <360px) ~/Coding/jb1/css/home.css .home-ambient-lattice
.lattice-cell empty-cell tint (rgba(29,36,51,0.05) bg, rgba(29,36,51,0.10) border) ~/Coding/jb1/css/home.css [data-family="light"] .home-ambient-lattice .lattice-cell
Timing constants (TICK_MS=1500, FADE_IN_MS=1200, CLEAR_PULSE_MS=1600, DECAY_AGE=8, DECAY_CHANCE=0.15, CLEAR_EVERY_NTH=5, CELL_PEAK_OPACITY=0.35, GLOW_ALPHA=0.18) ~/Coding/jb1/js/home-ambient.js
@keyframes lattice-clear (0.35 → 0.65 @ brightness(1.25) → 0) ~/Coding/jb1/css/home.css @keyframes home-lattice-clear

When jb1 retunes any of these: mirror the change here. The KEEP IN SYNC comments in lattice.js and style.css are the per-file pointers; this table is the index.

Intentional deviations from jb1’s home-ambient (do NOT “fix” these):

Common commands

There is no build step. To preview locally, any static-file server works:

python3 -m http.server 4000

then visit http://127.0.0.1:4000. Or use Bundler + Jekyll for a Pages-faithful preview (the Gemfile is kept for this reason):

bundle install
bundle exec jekyll serve --livereload

There are no tests, linters, or formatters configured. Don’t invent ones unless asked.

Conventions worth knowing

Why AGENTS.md must never be served

AGENTS.md contains instructions for AI coding agents and may reference internal repo paths, product plans, or rationale that should not be exposed publicly. The protection is the exclude: [AGENTS.md, ...] entry in _config.yml. If you ever switch this site to .nojekyll, you MUST replace that protection with another mechanism (move the file to a .-prefixed directory, or out of the repo) — .nojekyll causes Pages to serve every non-dotfile in the repo verbatim.

Privacy policy is load-bearing

jblock/privacy/index.html is referenced from App Store / Play Store submission metadata. Changes to its URL, headings, or substantive claims (data collection, third-party SDKs, children’s privacy) must be reviewed with the user before merge — these are legal commitments, not copy edits. The “Last updated” date should be bumped whenever substantive content changes.

Pre-launch posture

Jabberblocky has not publicly launched. Marketing copy is intentionally minimal. When the user asks to “fill out the Jabberblocky page” or similar, expect a real content pass against the game’s actual featureset — cross-reference ~/Coding/jb1/docs/ai/jb1-user-features.generated.json if available, and confirm copy with the user before publishing.