From e717b26c57065cb626e49c06687d05f2f7363344 Mon Sep 17 00:00:00 2001 From: Nick Hamze Date: Wed, 29 Apr 2026 18:57:26 -0500 Subject: [PATCH] design: scaffold deco (pre-snap content publish) --- deco/AGENTS.md | 224 ++ deco/BRIEF.md | 74 + deco/CHANGELOG.md | 65 + deco/INDEX.md | 452 +++ deco/README.md | 221 ++ deco/SYSTEM-PROMPT.md | 207 + deco/_examples/pattern.php.txt | 56 + deco/_examples/style-variation.json.txt | 42 + deco/_examples/template.html.txt | 35 + deco/assets/fonts/anton-regular.woff2 | Bin 0 -> 32708 bytes deco/design-intent.md | 84 + deco/functions.php | 1189 ++++++ deco/languages/.gitkeep | 0 deco/microcopy-overrides.json | 86 + deco/parts/announcement-bar.html | 7 + deco/parts/checkout-header.html | 10 + deco/parts/comments.html | 41 + deco/parts/footer.html | 77 + deco/parts/header.html | 38 + deco/parts/no-results.html | 13 + deco/parts/post-meta.html | 17 + deco/parts/product-meta.html | 6 + deco/patterns/brand-story.php | 41 + deco/patterns/cart-page.php | 63 + deco/patterns/category-tiles.php | 58 + deco/patterns/cta-banner.php | 30 + deco/patterns/explore-the-shop.php | 42 + deco/patterns/faq-accordion.php | 102 + deco/patterns/featured-products.php | 41 + deco/patterns/hero-feature-image.php | 31 + deco/patterns/hero-image.php | 38 + deco/patterns/hero-text.php | 34 + deco/patterns/testimonials.php | 73 + deco/patterns/value-props.php | 51 + deco/playground/blueprint.json | 90 + deco/playground/content/category-images.json | 8 + deco/playground/content/content.xml | 3388 +++++++++++++++++ deco/playground/content/image-manifest.json | 464 +++ deco/playground/content/product-images.json | 32 + deco/playground/content/products.csv | 54 + deco/playground/generate-images.py | 314 ++ .../playground/images/cat-curated-bundles.jpg | Bin 0 -> 29803 bytes deco/playground/images/cat-curiosities.jpg | Bin 0 -> 25233 bytes .../images/cat-digital-oddments.jpg | Bin 0 -> 30992 bytes .../images/cat-forbidden-snacks.jpg | Bin 0 -> 31076 bytes .../playground/images/cat-impossibilities.jpg | Bin 0 -> 28632 bytes deco/playground/images/cat-moods-feelings.jpg | Bin 0 -> 31584 bytes deco/playground/images/imaginary-deed.pdf | Bin 0 -> 2661 bytes deco/playground/images/imaginary-seal.png | Bin 0 -> 13402 bytes deco/playground/images/lost-recipe.pdf | Bin 0 -> 10439 bytes deco/playground/images/one-hand.wav | Bin 0 -> 412844 bytes .../images/product-wo-borrowed-nostalgia.jpg | Bin 0 -> 46521 bytes .../images/product-wo-bottled-morning.jpg | Bin 0 -> 48874 bytes .../images/product-wo-chaos-seasoning.jpg | Bin 0 -> 49622 bytes .../images/product-wo-cosmic-mystery-box.jpg | Bin 0 -> 42864 bytes .../images/product-wo-deja-vu-session.jpg | Bin 0 -> 46012 bytes .../images/product-wo-discount-gravity.jpg | Bin 0 -> 44828 bytes .../images/product-wo-dread-repellent.jpg | Bin 0 -> 48828 bytes .../images/product-wo-fog-in-bottle.jpg | Bin 0 -> 44982 bytes .../images/product-wo-forbidden-honey.jpg | Bin 0 -> 47319 bytes .../images/product-wo-gently-used-luck.jpg | Bin 0 -> 47987 bytes .../images/product-wo-handcrafted-echo.jpg | Bin 0 -> 45103 bytes .../images/product-wo-haunted-candle.jpg | Bin 0 -> 42223 bytes .../images/product-wo-imaginary-deed.jpg | Bin 0 -> 47618 bytes .../images/product-wo-interdim-bazaar.jpg | Bin 0 -> 47963 bytes .../images/product-wo-invisible-umbrella.jpg | Bin 0 -> 43956 bytes .../images/product-wo-left-sock.jpg | Bin 0 -> 42967 bytes .../images/product-wo-lost-recipe-time.jpg | Bin 0 -> 44759 bytes .../images/product-wo-memory-foam-memory.jpg | Bin 0 -> 47336 bytes .../images/product-wo-monday-kit.jpg | Bin 0 -> 40623 bytes .../images/product-wo-moon-dust.jpg | Bin 0 -> 50714 bytes .../images/product-wo-one-hand-clapping.jpg | Bin 0 -> 46817 bytes .../images/product-wo-pocket-thunder.jpg | Bin 0 -> 49624 bytes .../images/product-wo-portable-hole.jpg | Bin 0 -> 45272 bytes .../images/product-wo-sensory-starter.jpg | Bin 0 -> 44851 bytes .../images/product-wo-silence-jar.jpg | Bin 0 -> 42485 bytes .../images/product-wo-spare-key-nowhere.jpg | Bin 0 -> 46412 bytes .../images/product-wo-spare-tuesday.jpg | Bin 0 -> 40985 bytes .../images/product-wo-tangible-wifi.jpg | Bin 0 -> 47909 bytes .../images/product-wo-void-sampler.jpg | Bin 0 -> 41935 bytes .../images/product-wo-whispering-stone.jpg | Bin 0 -> 49114 bytes deco/playground/images/wonders-page-about.png | Bin 0 -> 16351 bytes .../images/wonders-page-contact.png | Bin 0 -> 17499 bytes deco/playground/images/wonders-page-faq.png | Bin 0 -> 14530 bytes deco/playground/images/wonders-page-home.png | Bin 0 -> 15364 bytes .../images/wonders-page-journal.png | Bin 0 -> 16439 bytes .../images/wonders-page-lookbook.png | Bin 0 -> 15769 bytes .../images/wonders-page-privacy-policy.png | Bin 0 -> 18725 bytes .../images/wonders-page-shipping-returns.png | Bin 0 -> 21453 bytes ...ost-behind-the-scenes-bottling-mondays.png | Bin 0 -> 29364 bytes ...ers-post-caring-for-your-portable-hole.png | Bin 0 -> 25935 bytes .../images/wonders-post-carl-on-the-moon.png | Bin 0 -> 21043 bytes ...rs-post-chaos-seasoning-recipe-roundup.png | Bin 0 -> 28943 bytes .../images/wonders-post-fog-season.png | Bin 0 -> 20300 bytes ...rbidden-honey-what-does-forbidden-mean.png | Bin 0 -> 33105 bytes ...post-hidden-gems-5-overlooked-products.png | Bin 0 -> 29932 bytes ...w-to-apply-existential-dread-repellent.png | Bin 0 -> 30004 bytes ...ers-post-imaginary-ownership-beginners.png | Bin 0 -> 29279 bytes .../wonders-post-interview-with-carl.png | Bin 0 -> 21654 bytes ...ders-post-invisible-umbrella-spotlight.png | Bin 0 -> 26380 bytes .../wonders-post-memoirs-of-a-left-sock.png | Bin 0 -> 25016 bytes ...wonders-post-mildly-haunted-candle-faq.png | Bin 0 -> 25266 bytes ...t-philosophy-of-bottled-monday-morning.png | Bin 0 -> 30478 bytes .../wonders-post-pocket-thunder-safety.png | Bin 0 -> 24637 bytes ...wonders-post-spare-tuesday-field-guide.png | Bin 0 -> 25111 bytes ...nders-post-tangible-wifi-30-day-review.png | Bin 0 -> 28819 bytes ...ders-post-the-art-of-artisanal-silence.png | Bin 0 -> 24426 bytes ...s-post-welcome-to-wonders-and-oddities.png | Bin 0 -> 27792 bytes .../images/wonders-post-year-one-abridged.png | Bin 0 -> 22463 bytes deco/readiness.json | 7 + deco/readme.txt | 85 + deco/screenshot.png | Bin 0 -> 335788 bytes deco/spec.json | 46 + deco/style.css | 19 + deco/styles/dark.json | 41 + deco/styles/editorial.json | 71 + deco/styles/high-contrast.json | 47 + deco/templates/404.html | 42 + deco/templates/archive-product.html | 52 + deco/templates/archive.html | 44 + deco/templates/author.html | 46 + deco/templates/category.html | 44 + deco/templates/date.html | 42 + deco/templates/front-page.html | 140 + deco/templates/home.html | 48 + deco/templates/index.html | 32 + deco/templates/order-confirmation.html | 152 + deco/templates/page-cart.html | 15 + deco/templates/page-checkout.html | 13 + deco/templates/page-coming-soon.html | 24 + deco/templates/page-full-width.html | 11 + deco/templates/page-landing.html | 5 + deco/templates/page-my-account.html | 21 + deco/templates/page-no-title.html | 9 + deco/templates/page.html | 19 + deco/templates/product-search-results.html | 51 + deco/templates/search.html | 43 + deco/templates/single-product.html | 123 + deco/templates/single.html | 48 + deco/templates/singular.html | 11 + deco/templates/tag.html | 44 + deco/templates/taxonomy.html | 40 + deco/theme.json | 2412 ++++++++++++ deco/woocommerce/myaccount/dashboard.php | 24 + 144 files changed, 11769 insertions(+) create mode 100644 deco/AGENTS.md create mode 100644 deco/BRIEF.md create mode 100644 deco/CHANGELOG.md create mode 100644 deco/INDEX.md create mode 100644 deco/README.md create mode 100644 deco/SYSTEM-PROMPT.md create mode 100644 deco/_examples/pattern.php.txt create mode 100644 deco/_examples/style-variation.json.txt create mode 100644 deco/_examples/template.html.txt create mode 100644 deco/assets/fonts/anton-regular.woff2 create mode 100644 deco/design-intent.md create mode 100644 deco/functions.php create mode 100644 deco/languages/.gitkeep create mode 100644 deco/microcopy-overrides.json create mode 100644 deco/parts/announcement-bar.html create mode 100644 deco/parts/checkout-header.html create mode 100644 deco/parts/comments.html create mode 100644 deco/parts/footer.html create mode 100644 deco/parts/header.html create mode 100644 deco/parts/no-results.html create mode 100644 deco/parts/post-meta.html create mode 100644 deco/parts/product-meta.html create mode 100644 deco/patterns/brand-story.php create mode 100644 deco/patterns/cart-page.php create mode 100644 deco/patterns/category-tiles.php create mode 100644 deco/patterns/cta-banner.php create mode 100644 deco/patterns/explore-the-shop.php create mode 100644 deco/patterns/faq-accordion.php create mode 100644 deco/patterns/featured-products.php create mode 100644 deco/patterns/hero-feature-image.php create mode 100644 deco/patterns/hero-image.php create mode 100644 deco/patterns/hero-text.php create mode 100644 deco/patterns/testimonials.php create mode 100644 deco/patterns/value-props.php create mode 100644 deco/playground/blueprint.json create mode 100644 deco/playground/content/category-images.json create mode 100644 deco/playground/content/content.xml create mode 100644 deco/playground/content/image-manifest.json create mode 100644 deco/playground/content/product-images.json create mode 100644 deco/playground/content/products.csv create mode 100644 deco/playground/generate-images.py create mode 100644 deco/playground/images/cat-curated-bundles.jpg create mode 100644 deco/playground/images/cat-curiosities.jpg create mode 100644 deco/playground/images/cat-digital-oddments.jpg create mode 100644 deco/playground/images/cat-forbidden-snacks.jpg create mode 100644 deco/playground/images/cat-impossibilities.jpg create mode 100644 deco/playground/images/cat-moods-feelings.jpg create mode 100644 deco/playground/images/imaginary-deed.pdf create mode 100644 deco/playground/images/imaginary-seal.png create mode 100644 deco/playground/images/lost-recipe.pdf create mode 100644 deco/playground/images/one-hand.wav create mode 100644 deco/playground/images/product-wo-borrowed-nostalgia.jpg create mode 100644 deco/playground/images/product-wo-bottled-morning.jpg create mode 100644 deco/playground/images/product-wo-chaos-seasoning.jpg create mode 100644 deco/playground/images/product-wo-cosmic-mystery-box.jpg create mode 100644 deco/playground/images/product-wo-deja-vu-session.jpg create mode 100644 deco/playground/images/product-wo-discount-gravity.jpg create mode 100644 deco/playground/images/product-wo-dread-repellent.jpg create mode 100644 deco/playground/images/product-wo-fog-in-bottle.jpg create mode 100644 deco/playground/images/product-wo-forbidden-honey.jpg create mode 100644 deco/playground/images/product-wo-gently-used-luck.jpg create mode 100644 deco/playground/images/product-wo-handcrafted-echo.jpg create mode 100644 deco/playground/images/product-wo-haunted-candle.jpg create mode 100644 deco/playground/images/product-wo-imaginary-deed.jpg create mode 100644 deco/playground/images/product-wo-interdim-bazaar.jpg create mode 100644 deco/playground/images/product-wo-invisible-umbrella.jpg create mode 100644 deco/playground/images/product-wo-left-sock.jpg create mode 100644 deco/playground/images/product-wo-lost-recipe-time.jpg create mode 100644 deco/playground/images/product-wo-memory-foam-memory.jpg create mode 100644 deco/playground/images/product-wo-monday-kit.jpg create mode 100644 deco/playground/images/product-wo-moon-dust.jpg create mode 100644 deco/playground/images/product-wo-one-hand-clapping.jpg create mode 100644 deco/playground/images/product-wo-pocket-thunder.jpg create mode 100644 deco/playground/images/product-wo-portable-hole.jpg create mode 100644 deco/playground/images/product-wo-sensory-starter.jpg create mode 100644 deco/playground/images/product-wo-silence-jar.jpg create mode 100644 deco/playground/images/product-wo-spare-key-nowhere.jpg create mode 100644 deco/playground/images/product-wo-spare-tuesday.jpg create mode 100644 deco/playground/images/product-wo-tangible-wifi.jpg create mode 100644 deco/playground/images/product-wo-void-sampler.jpg create mode 100644 deco/playground/images/product-wo-whispering-stone.jpg create mode 100644 deco/playground/images/wonders-page-about.png create mode 100644 deco/playground/images/wonders-page-contact.png create mode 100644 deco/playground/images/wonders-page-faq.png create mode 100644 deco/playground/images/wonders-page-home.png create mode 100644 deco/playground/images/wonders-page-journal.png create mode 100644 deco/playground/images/wonders-page-lookbook.png create mode 100644 deco/playground/images/wonders-page-privacy-policy.png create mode 100644 deco/playground/images/wonders-page-shipping-returns.png create mode 100644 deco/playground/images/wonders-post-behind-the-scenes-bottling-mondays.png create mode 100644 deco/playground/images/wonders-post-caring-for-your-portable-hole.png create mode 100644 deco/playground/images/wonders-post-carl-on-the-moon.png create mode 100644 deco/playground/images/wonders-post-chaos-seasoning-recipe-roundup.png create mode 100644 deco/playground/images/wonders-post-fog-season.png create mode 100644 deco/playground/images/wonders-post-forbidden-honey-what-does-forbidden-mean.png create mode 100644 deco/playground/images/wonders-post-hidden-gems-5-overlooked-products.png create mode 100644 deco/playground/images/wonders-post-how-to-apply-existential-dread-repellent.png create mode 100644 deco/playground/images/wonders-post-imaginary-ownership-beginners.png create mode 100644 deco/playground/images/wonders-post-interview-with-carl.png create mode 100644 deco/playground/images/wonders-post-invisible-umbrella-spotlight.png create mode 100644 deco/playground/images/wonders-post-memoirs-of-a-left-sock.png create mode 100644 deco/playground/images/wonders-post-mildly-haunted-candle-faq.png create mode 100644 deco/playground/images/wonders-post-philosophy-of-bottled-monday-morning.png create mode 100644 deco/playground/images/wonders-post-pocket-thunder-safety.png create mode 100644 deco/playground/images/wonders-post-spare-tuesday-field-guide.png create mode 100644 deco/playground/images/wonders-post-tangible-wifi-30-day-review.png create mode 100644 deco/playground/images/wonders-post-the-art-of-artisanal-silence.png create mode 100644 deco/playground/images/wonders-post-welcome-to-wonders-and-oddities.png create mode 100644 deco/playground/images/wonders-post-year-one-abridged.png create mode 100644 deco/readiness.json create mode 100644 deco/readme.txt create mode 100644 deco/screenshot.png create mode 100644 deco/spec.json create mode 100644 deco/style.css create mode 100644 deco/styles/dark.json create mode 100644 deco/styles/editorial.json create mode 100644 deco/styles/high-contrast.json create mode 100644 deco/templates/404.html create mode 100644 deco/templates/archive-product.html create mode 100644 deco/templates/archive.html create mode 100644 deco/templates/author.html create mode 100644 deco/templates/category.html create mode 100644 deco/templates/date.html create mode 100644 deco/templates/front-page.html create mode 100644 deco/templates/home.html create mode 100644 deco/templates/index.html create mode 100644 deco/templates/order-confirmation.html create mode 100644 deco/templates/page-cart.html create mode 100644 deco/templates/page-checkout.html create mode 100644 deco/templates/page-coming-soon.html create mode 100644 deco/templates/page-full-width.html create mode 100644 deco/templates/page-landing.html create mode 100644 deco/templates/page-my-account.html create mode 100644 deco/templates/page-no-title.html create mode 100644 deco/templates/page.html create mode 100644 deco/templates/product-search-results.html create mode 100644 deco/templates/search.html create mode 100644 deco/templates/single-product.html create mode 100644 deco/templates/single.html create mode 100644 deco/templates/singular.html create mode 100644 deco/templates/tag.html create mode 100644 deco/templates/taxonomy.html create mode 100644 deco/theme.json create mode 100644 deco/woocommerce/myaccount/dashboard.php diff --git a/deco/AGENTS.md b/deco/AGENTS.md new file mode 100644 index 00000000..2151cab5 --- /dev/null +++ b/deco/AGENTS.md @@ -0,0 +1,224 @@ +# AGENTS.md — Deco + +> Deco 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 Deco-specific rules. Tooling lives in `../bin/`. + +Instructions for AI coding agents working on the Deco 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 Deco 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 + +Deco 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 `