From 75fac771dc7d8ee62d4f3c5832ab12a548f89ca2 Mon Sep 17 00:00:00 2001 From: Nick Hamze Date: Wed, 29 Apr 2026 18:35:26 -0500 Subject: [PATCH] design: scaffold cog (pre-snap content publish) --- cog/AGENTS.md | 224 ++ cog/BRIEF.md | 74 + cog/CHANGELOG.md | 65 + cog/INDEX.md | 450 +++ cog/README.md | 204 + cog/SYSTEM-PROMPT.md | 207 + cog/_examples/pattern.php.txt | 56 + cog/_examples/style-variation.json.txt | 42 + cog/_examples/template.html.txt | 35 + cog/contrast-skip.json | 7 + cog/design-intent.md | 76 + cog/functions.php | 1243 ++++++ cog/languages/.gitkeep | 0 cog/microcopy-overrides.json | 84 + cog/parts/announcement-bar.html | 15 + cog/parts/checkout-header.html | 10 + cog/parts/comments.html | 41 + cog/parts/footer.html | 76 + cog/parts/header.html | 40 + cog/parts/no-results.html | 13 + cog/parts/post-meta.html | 17 + cog/parts/product-meta.html | 6 + cog/patterns/account-cta.php | 34 + cog/patterns/brand-story.php | 41 + cog/patterns/cart-page.php | 63 + cog/patterns/category-tiles.php | 58 + cog/patterns/cta-banner.php | 30 + cog/patterns/faq-accordion.php | 102 + cog/patterns/featured-products.php | 39 + cog/patterns/footer-columns.php | 73 + cog/patterns/hero-image.php | 38 + cog/patterns/hero-split.php | 70 + cog/patterns/hero-text.php | 34 + cog/patterns/testimonials.php | 73 + cog/patterns/value-props.php | 51 + cog/playground/blueprint.json | 90 + cog/playground/content/category-images.json | 8 + cog/playground/content/content.xml | 3388 +++++++++++++++++ cog/playground/content/image-manifest.json | 462 +++ cog/playground/content/product-images.json | 32 + cog/playground/content/products.csv | 54 + cog/playground/generate-images.py | 298 ++ cog/playground/images/cat-curated-bundles.jpg | Bin 0 -> 30473 bytes cog/playground/images/cat-curiosities.jpg | Bin 0 -> 25865 bytes .../images/cat-digital-oddments.jpg | Bin 0 -> 31628 bytes .../images/cat-forbidden-snacks.jpg | Bin 0 -> 31656 bytes cog/playground/images/cat-impossibilities.jpg | Bin 0 -> 29233 bytes cog/playground/images/cat-moods-feelings.jpg | Bin 0 -> 32150 bytes cog/playground/images/imaginary-deed.pdf | Bin 0 -> 2661 bytes cog/playground/images/imaginary-seal.png | Bin 0 -> 20068 bytes cog/playground/images/lost-recipe.pdf | Bin 0 -> 10439 bytes cog/playground/images/one-hand.wav | Bin 0 -> 412844 bytes .../images/product-wo-borrowed-nostalgia.jpg | Bin 0 -> 45724 bytes .../images/product-wo-bottled-morning.jpg | Bin 0 -> 48910 bytes .../images/product-wo-chaos-seasoning.jpg | Bin 0 -> 50224 bytes .../images/product-wo-cosmic-mystery-box.jpg | Bin 0 -> 42855 bytes .../images/product-wo-deja-vu-session.jpg | Bin 0 -> 46219 bytes .../images/product-wo-discount-gravity.jpg | Bin 0 -> 44768 bytes .../images/product-wo-dread-repellent.jpg | Bin 0 -> 48738 bytes .../images/product-wo-fog-in-bottle.jpg | Bin 0 -> 45104 bytes .../images/product-wo-forbidden-honey.jpg | Bin 0 -> 47067 bytes .../images/product-wo-gently-used-luck.jpg | Bin 0 -> 49217 bytes .../images/product-wo-handcrafted-echo.jpg | Bin 0 -> 44959 bytes .../images/product-wo-haunted-candle.jpg | Bin 0 -> 42410 bytes .../images/product-wo-imaginary-deed.jpg | Bin 0 -> 47864 bytes .../images/product-wo-interdim-bazaar.jpg | Bin 0 -> 48080 bytes .../images/product-wo-invisible-umbrella.jpg | Bin 0 -> 43974 bytes .../images/product-wo-left-sock.jpg | Bin 0 -> 42935 bytes .../images/product-wo-lost-recipe-time.jpg | Bin 0 -> 44149 bytes .../images/product-wo-memory-foam-memory.jpg | Bin 0 -> 47130 bytes .../images/product-wo-monday-kit.jpg | Bin 0 -> 40870 bytes .../images/product-wo-moon-dust.jpg | Bin 0 -> 50865 bytes .../images/product-wo-one-hand-clapping.jpg | Bin 0 -> 46930 bytes .../images/product-wo-pocket-thunder.jpg | Bin 0 -> 50387 bytes .../images/product-wo-portable-hole.jpg | Bin 0 -> 44988 bytes .../images/product-wo-sensory-starter.jpg | Bin 0 -> 44910 bytes .../images/product-wo-silence-jar.jpg | Bin 0 -> 42192 bytes .../images/product-wo-spare-key-nowhere.jpg | Bin 0 -> 46701 bytes .../images/product-wo-spare-tuesday.jpg | Bin 0 -> 41442 bytes .../images/product-wo-tangible-wifi.jpg | Bin 0 -> 48008 bytes .../images/product-wo-void-sampler.jpg | Bin 0 -> 42307 bytes .../images/product-wo-whispering-stone.jpg | Bin 0 -> 50535 bytes cog/playground/images/wonders-page-about.png | Bin 0 -> 16288 bytes .../images/wonders-page-contact.png | Bin 0 -> 17391 bytes cog/playground/images/wonders-page-faq.png | Bin 0 -> 14685 bytes cog/playground/images/wonders-page-home.png | Bin 0 -> 15219 bytes .../images/wonders-page-journal.png | Bin 0 -> 16255 bytes .../images/wonders-page-lookbook.png | Bin 0 -> 15552 bytes .../images/wonders-page-privacy-policy.png | Bin 0 -> 18578 bytes .../images/wonders-page-shipping-returns.png | Bin 0 -> 21664 bytes ...ost-behind-the-scenes-bottling-mondays.png | Bin 0 -> 29283 bytes ...ers-post-caring-for-your-portable-hole.png | Bin 0 -> 25773 bytes .../images/wonders-post-carl-on-the-moon.png | Bin 0 -> 20892 bytes ...rs-post-chaos-seasoning-recipe-roundup.png | Bin 0 -> 28517 bytes .../images/wonders-post-fog-season.png | Bin 0 -> 20133 bytes ...rbidden-honey-what-does-forbidden-mean.png | Bin 0 -> 33478 bytes ...post-hidden-gems-5-overlooked-products.png | Bin 0 -> 30296 bytes ...w-to-apply-existential-dread-repellent.png | Bin 0 -> 31173 bytes ...ers-post-imaginary-ownership-beginners.png | Bin 0 -> 29513 bytes .../wonders-post-interview-with-carl.png | Bin 0 -> 22301 bytes ...ders-post-invisible-umbrella-spotlight.png | Bin 0 -> 26279 bytes .../wonders-post-memoirs-of-a-left-sock.png | Bin 0 -> 25463 bytes ...wonders-post-mildly-haunted-candle-faq.png | Bin 0 -> 25896 bytes ...t-philosophy-of-bottled-monday-morning.png | Bin 0 -> 30763 bytes .../wonders-post-pocket-thunder-safety.png | Bin 0 -> 25122 bytes ...wonders-post-spare-tuesday-field-guide.png | Bin 0 -> 25193 bytes ...nders-post-tangible-wifi-30-day-review.png | Bin 0 -> 29317 bytes ...ders-post-the-art-of-artisanal-silence.png | Bin 0 -> 24626 bytes ...s-post-welcome-to-wonders-and-oddities.png | Bin 0 -> 27998 bytes .../images/wonders-post-year-one-abridged.png | Bin 0 -> 22548 bytes cog/readiness.json | 7 + cog/readme.txt | 85 + cog/screenshot.png | Bin 0 -> 300241 bytes cog/spec.json | 46 + cog/style.css | 19 + cog/styles/dark.json | 41 + cog/styles/editorial.json | 71 + cog/styles/high-contrast.json | 47 + cog/templates/404.html | 42 + cog/templates/archive-product.html | 52 + cog/templates/archive.html | 44 + cog/templates/author.html | 46 + cog/templates/category.html | 44 + cog/templates/date.html | 42 + cog/templates/front-page.html | 66 + cog/templates/home.html | 48 + cog/templates/index.html | 32 + cog/templates/order-confirmation.html | 152 + cog/templates/page-cart.html | 15 + cog/templates/page-checkout.html | 13 + cog/templates/page-coming-soon.html | 24 + cog/templates/page-full-width.html | 11 + cog/templates/page-landing.html | 5 + cog/templates/page-my-account.html | 21 + cog/templates/page-no-title.html | 9 + cog/templates/page.html | 19 + cog/templates/product-search-results.html | 51 + cog/templates/search.html | 43 + cog/templates/single-product.html | 123 + cog/templates/single.html | 48 + cog/templates/singular.html | 11 + cog/templates/tag.html | 44 + cog/templates/taxonomy.html | 40 + cog/theme.json | 2362 ++++++++++++ cog/woocommerce/myaccount/dashboard.php | 24 + 145 files changed, 11770 insertions(+) create mode 100644 cog/AGENTS.md create mode 100644 cog/BRIEF.md create mode 100644 cog/CHANGELOG.md create mode 100644 cog/INDEX.md create mode 100644 cog/README.md create mode 100644 cog/SYSTEM-PROMPT.md create mode 100644 cog/_examples/pattern.php.txt create mode 100644 cog/_examples/style-variation.json.txt create mode 100644 cog/_examples/template.html.txt create mode 100644 cog/contrast-skip.json create mode 100644 cog/design-intent.md create mode 100644 cog/functions.php create mode 100644 cog/languages/.gitkeep create mode 100644 cog/microcopy-overrides.json create mode 100644 cog/parts/announcement-bar.html create mode 100644 cog/parts/checkout-header.html create mode 100644 cog/parts/comments.html create mode 100644 cog/parts/footer.html create mode 100644 cog/parts/header.html create mode 100644 cog/parts/no-results.html create mode 100644 cog/parts/post-meta.html create mode 100644 cog/parts/product-meta.html create mode 100644 cog/patterns/account-cta.php create mode 100644 cog/patterns/brand-story.php create mode 100644 cog/patterns/cart-page.php create mode 100644 cog/patterns/category-tiles.php create mode 100644 cog/patterns/cta-banner.php create mode 100644 cog/patterns/faq-accordion.php create mode 100644 cog/patterns/featured-products.php create mode 100644 cog/patterns/footer-columns.php create mode 100644 cog/patterns/hero-image.php create mode 100644 cog/patterns/hero-split.php create mode 100644 cog/patterns/hero-text.php create mode 100644 cog/patterns/testimonials.php create mode 100644 cog/patterns/value-props.php create mode 100644 cog/playground/blueprint.json create mode 100644 cog/playground/content/category-images.json create mode 100644 cog/playground/content/content.xml create mode 100644 cog/playground/content/image-manifest.json create mode 100644 cog/playground/content/product-images.json create mode 100644 cog/playground/content/products.csv create mode 100644 cog/playground/generate-images.py create mode 100644 cog/playground/images/cat-curated-bundles.jpg create mode 100644 cog/playground/images/cat-curiosities.jpg create mode 100644 cog/playground/images/cat-digital-oddments.jpg create mode 100644 cog/playground/images/cat-forbidden-snacks.jpg create mode 100644 cog/playground/images/cat-impossibilities.jpg create mode 100644 cog/playground/images/cat-moods-feelings.jpg create mode 100644 cog/playground/images/imaginary-deed.pdf create mode 100644 cog/playground/images/imaginary-seal.png create mode 100644 cog/playground/images/lost-recipe.pdf create mode 100644 cog/playground/images/one-hand.wav create mode 100644 cog/playground/images/product-wo-borrowed-nostalgia.jpg create mode 100644 cog/playground/images/product-wo-bottled-morning.jpg create mode 100644 cog/playground/images/product-wo-chaos-seasoning.jpg create mode 100644 cog/playground/images/product-wo-cosmic-mystery-box.jpg create mode 100644 cog/playground/images/product-wo-deja-vu-session.jpg create mode 100644 cog/playground/images/product-wo-discount-gravity.jpg create mode 100644 cog/playground/images/product-wo-dread-repellent.jpg create mode 100644 cog/playground/images/product-wo-fog-in-bottle.jpg create mode 100644 cog/playground/images/product-wo-forbidden-honey.jpg create mode 100644 cog/playground/images/product-wo-gently-used-luck.jpg create mode 100644 cog/playground/images/product-wo-handcrafted-echo.jpg create mode 100644 cog/playground/images/product-wo-haunted-candle.jpg create mode 100644 cog/playground/images/product-wo-imaginary-deed.jpg create mode 100644 cog/playground/images/product-wo-interdim-bazaar.jpg create mode 100644 cog/playground/images/product-wo-invisible-umbrella.jpg create mode 100644 cog/playground/images/product-wo-left-sock.jpg create mode 100644 cog/playground/images/product-wo-lost-recipe-time.jpg create mode 100644 cog/playground/images/product-wo-memory-foam-memory.jpg create mode 100644 cog/playground/images/product-wo-monday-kit.jpg create mode 100644 cog/playground/images/product-wo-moon-dust.jpg create mode 100644 cog/playground/images/product-wo-one-hand-clapping.jpg create mode 100644 cog/playground/images/product-wo-pocket-thunder.jpg create mode 100644 cog/playground/images/product-wo-portable-hole.jpg create mode 100644 cog/playground/images/product-wo-sensory-starter.jpg create mode 100644 cog/playground/images/product-wo-silence-jar.jpg create mode 100644 cog/playground/images/product-wo-spare-key-nowhere.jpg create mode 100644 cog/playground/images/product-wo-spare-tuesday.jpg create mode 100644 cog/playground/images/product-wo-tangible-wifi.jpg create mode 100644 cog/playground/images/product-wo-void-sampler.jpg create mode 100644 cog/playground/images/product-wo-whispering-stone.jpg create mode 100644 cog/playground/images/wonders-page-about.png create mode 100644 cog/playground/images/wonders-page-contact.png create mode 100644 cog/playground/images/wonders-page-faq.png create mode 100644 cog/playground/images/wonders-page-home.png create mode 100644 cog/playground/images/wonders-page-journal.png create mode 100644 cog/playground/images/wonders-page-lookbook.png create mode 100644 cog/playground/images/wonders-page-privacy-policy.png create mode 100644 cog/playground/images/wonders-page-shipping-returns.png create mode 100644 cog/playground/images/wonders-post-behind-the-scenes-bottling-mondays.png create mode 100644 cog/playground/images/wonders-post-caring-for-your-portable-hole.png create mode 100644 cog/playground/images/wonders-post-carl-on-the-moon.png create mode 100644 cog/playground/images/wonders-post-chaos-seasoning-recipe-roundup.png create mode 100644 cog/playground/images/wonders-post-fog-season.png create mode 100644 cog/playground/images/wonders-post-forbidden-honey-what-does-forbidden-mean.png create mode 100644 cog/playground/images/wonders-post-hidden-gems-5-overlooked-products.png create mode 100644 cog/playground/images/wonders-post-how-to-apply-existential-dread-repellent.png create mode 100644 cog/playground/images/wonders-post-imaginary-ownership-beginners.png create mode 100644 cog/playground/images/wonders-post-interview-with-carl.png create mode 100644 cog/playground/images/wonders-post-invisible-umbrella-spotlight.png create mode 100644 cog/playground/images/wonders-post-memoirs-of-a-left-sock.png create mode 100644 cog/playground/images/wonders-post-mildly-haunted-candle-faq.png create mode 100644 cog/playground/images/wonders-post-philosophy-of-bottled-monday-morning.png create mode 100644 cog/playground/images/wonders-post-pocket-thunder-safety.png create mode 100644 cog/playground/images/wonders-post-spare-tuesday-field-guide.png create mode 100644 cog/playground/images/wonders-post-tangible-wifi-30-day-review.png create mode 100644 cog/playground/images/wonders-post-the-art-of-artisanal-silence.png create mode 100644 cog/playground/images/wonders-post-welcome-to-wonders-and-oddities.png create mode 100644 cog/playground/images/wonders-post-year-one-abridged.png create mode 100644 cog/readiness.json create mode 100644 cog/readme.txt create mode 100644 cog/screenshot.png create mode 100644 cog/spec.json create mode 100644 cog/style.css create mode 100644 cog/styles/dark.json create mode 100644 cog/styles/editorial.json create mode 100644 cog/styles/high-contrast.json create mode 100644 cog/templates/404.html create mode 100644 cog/templates/archive-product.html create mode 100644 cog/templates/archive.html create mode 100644 cog/templates/author.html create mode 100644 cog/templates/category.html create mode 100644 cog/templates/date.html create mode 100644 cog/templates/front-page.html create mode 100644 cog/templates/home.html create mode 100644 cog/templates/index.html create mode 100644 cog/templates/order-confirmation.html create mode 100644 cog/templates/page-cart.html create mode 100644 cog/templates/page-checkout.html create mode 100644 cog/templates/page-coming-soon.html create mode 100644 cog/templates/page-full-width.html create mode 100644 cog/templates/page-landing.html create mode 100644 cog/templates/page-my-account.html create mode 100644 cog/templates/page-no-title.html create mode 100644 cog/templates/page.html create mode 100644 cog/templates/product-search-results.html create mode 100644 cog/templates/search.html create mode 100644 cog/templates/single-product.html create mode 100644 cog/templates/single.html create mode 100644 cog/templates/singular.html create mode 100644 cog/templates/tag.html create mode 100644 cog/templates/taxonomy.html create mode 100644 cog/theme.json create mode 100644 cog/woocommerce/myaccount/dashboard.php diff --git a/cog/AGENTS.md b/cog/AGENTS.md new file mode 100644 index 00000000..c752d9e5 --- /dev/null +++ b/cog/AGENTS.md @@ -0,0 +1,224 @@ +# AGENTS.md — Cog + +> Cog is one theme inside the **Fifty monorepo**. The monorepo lives one directory up; its `AGENTS.md` (`../AGENTS.md`) and `README.md` (`../README.md`) describe the layout and the rules that apply to every theme. Read this file for Cog-specific rules. Tooling lives in `../bin/`. + +Instructions for AI coding agents working on the Cog theme. Read this file in full before making any changes. Human-oriented docs live in `README.md` and the [project wiki](https://github.com/RegionallyFamous/Fifty/wiki). + +## Required reading order + +1. **`INDEX.md`** -- auto-generated map of every template, part, pattern, style variation, design token, and block style entry. Read this first; it tells you what exists without reading individual files. +2. This file (constraints + workflow). +3. `README.md` (human-facing overview with the project quickstart and links to deeper docs). + +For deeper task-specific reference, read the wiki on demand. The relevant pages are listed below under "Where to find more detail". + +## Tools you should use + +| Command | What it does | +|---|---| +| `python3 ../bin/check.py` | Run every project check. Use this before declaring "done". | +| `python3 ../bin/check.py --quick` | Same, skipping the network-dependent block-name check. | +| `python3 ../bin/check.py --visual` | Run the static checks AND the snap-gated visual regression sweep (`snap.py shoot + diff + report --strict`). Tiered gate; exits 1 only on `fail`. Recommended pre-commit gate after any change to templates, parts, patterns, theme.json, or playground content. | +| `python3 ../bin/snap.py doctor` | One-time check that Pillow, Playwright/Chromium, npx, axe-core, and baseline coverage are all wired up. Run after a fresh clone or Python upgrade. | +| `python3 ../bin/snap.py shoot --routes --viewports ` | Capture a single (route × viewport) PNG into `tmp/snaps/` for the inner edit loop. `Read` the resulting PNG to verify the change. | +| `python3 ../bin/snap.py serve` | Boot this theme's WordPress Playground locally on `http://localhost:9400/` so you can drive it interactively (admin auto-login enabled). | +| `python3 ../bin/build-index.py` | Regenerate `INDEX.md` after adding/removing files or editing `theme.json`. | +| `python3 ../bin/list-tokens.py` | Print every design token in `theme.json`. (`INDEX.md` already contains this; use this script for fresh output if `INDEX.md` is stale.) | +| `python3 ../bin/validate-theme-json.py` | Verify every `core/*` and `woocommerce/*` block name in `theme.json` against trunk. | +| `python3 ../bin/clone.py NEW_NAME` | Clone Cog into a new theme folder, renaming all identifiers. | +| `python3 ../bin/list-templates.py` | Print every template file alongside the WordPress URL it handles. Paste output into LLM context to find the right file without reading the directory. | + +If you remember nothing else from this file: **read `INDEX.md` first, run `python3 ../bin/check.py --visual` last** (or `--quick` for a fast offline subset that skips the visual sweep). + +## What this project is + +Cog is a block-only WooCommerce starter theme for WordPress. It is intended to be copied (use `python3 ../bin/clone.py NEW_NAME`) and then customized by editing `theme.json` and adding project-specific patterns. The framework itself is deliberately small. + +## Hard rules — never violate + +These rules are not preferences. They define what this theme *is*. Do not break them, even if the user's request would be easier to fulfill by breaking them. If a request requires breaking a rule, push back and propose an alternative. + +1. **No CSS files.** `style.css` exists only for the WordPress theme header. Do not create any other `.css` file. Do not add `