From 24eb811f342bf3d387442727a0e7ce5555ab84d5 Mon Sep 17 00:00:00 2001 From: Andreas Reinhold / reini Date: Wed, 16 Sep 2026 11:07:54 +0200 Subject: [PATCH] Teach 2.0's plain CSS in the Boost guidelines and skills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2.0.0 took Tailwind out of the stack, but the texts Boost copies into every application still taught its utilities: the core guideline said "built on Tailwind CSS", the always-on material-3 guideline wrote every rule as `bg-primary`, `type-*`, `rounded-corner-*`, `state-layer` and `medium:`, and both skills' tables and examples did the same. None of those classes exists in 2.0's stylesheets, so an agent following the guideline wrote markup that compiled to nothing. Found moving ReStride onto 2.0: its CLAUDE.md, and SealShare's, carry these texts. The guidelines and skills now teach what 2.0 has: component and layout component props (`gap="space200"`, `hide-from="medium"`), the `md-type-*`, `md-ink-*` and interaction classes, and `--md-sys-*` tokens in the application's own CSS, with breakpoints as range media queries. UPGRADE.md §1, §2 and §4 describe the finished move instead of the in-between state, and header comments that pointed at the removed tokens/utilities.css and tailwind.css, or called a component "still Tailwind", say what is true now. BoostVocabularyTest runs DesignGuard over the code in every shipped guideline and skill (fenced Blade and CSS, and each inline class list), so a text that teaches a class the stylesheets do not define fails the suite; it finds 268 violations in the texts as 2.0.0 shipped them. The guard's own table of what it reports is exempt. BoostResourcesTest now asks the design skill for each breakpoint's prop value and media query instead of the removed `medium:` variants. Co-Authored-By: Claude Opus 5 (1M context) --- UPGRADE.md | 66 +++-- resources/boost/guidelines/core.blade.php | 5 +- .../boost/guidelines/material-3.blade.php | 47 ++-- .../livewire-material-development/SKILL.md | 165 +++++++----- .../boost/skills/material-3-design/SKILL.md | 240 +++++++++--------- resources/css/components/field.css | 6 +- resources/css/components/menu.css | 2 +- resources/css/components/progress.css | 5 +- resources/css/foundation.css | 2 +- resources/css/foundation/interaction.css | 9 +- resources/css/text.css | 5 +- resources/css/tokens/state.css | 2 +- resources/css/tokens/type.css | 4 +- resources/js/breakpoints.js | 8 +- .../views/components/navigation-bar.blade.php | 4 +- resources/views/components/progress.blade.php | 6 +- tests/Feature/BoostResourcesTest.php | 7 +- tests/Feature/BoostVocabularyTest.php | 137 ++++++++++ 18 files changed, 462 insertions(+), 258 deletions(-) create mode 100644 tests/Feature/BoostVocabularyTest.php diff --git a/UPGRADE.md b/UPGRADE.md index ef9c2af7..c2551dda 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -8,35 +8,43 @@ the change is inside the components. What reaches an application is below, in th ### 1. Breakpoints are M3's window size classes -Tailwind's `sm:`, `md:`, `lg:`, `xl:` and `2xl:` no longer compile. The variants are -`medium:` (600px), `expanded:` (840px), `large:` (1200px) and `extra-large:` (1600px), plus -`max-medium:` and friends for "below"; compact is everything below `medium`. Replace every -prefix in the application's views: +Tailwind's `sm:`, `md:`, `lg:`, `xl:` and `2xl:` no longer compile, and there are no responsive +variants in their place: the breakpoints are M3's window size classes — compact below 600px, then +medium (600px), expanded (840px), large (1200px) and extra-large (1600px) — and only those. A +layout component takes the class as a prop (`hide-below`, `hide-from`, `stack-below`, ``'s +`columns` map); the application's own CSS writes the width as a range media query: | Was | Becomes | |---|---| -| `sm:` / `max-sm:` (640) | `medium:` / `max-medium:` (600) | -| `md:` / `max-md:` (768) | `medium:` or `expanded:` — choose by what the layout means | -| `lg:` / `max-lg:` (1024) | `expanded:` / `max-expanded:` (840) | -| `xl:` / `max-xl:` (1280) | `large:` / `max-large:` (1200) | -| `2xl:` (1536) | `extra-large:` (1600) | +| `sm:` / `max-sm:` (640) | `medium` · `@media (width >= 600px)` / `(width < 600px)` | +| `md:` / `max-md:` (768) | `medium` or `expanded` — choose by what the layout means | +| `lg:` / `max-lg:` (1024) | `expanded` · `@media (width >= 840px)` / `(width < 840px)` | +| `xl:` / `max-xl:` (1280) | `large` · `@media (width >= 1200px)` / `(width < 1200px)` | +| `2xl:` (1536) | `extra-large` · `@media (width >= 1600px)` | -Scripts read the same numbers from `resources/js/breakpoints.js` (`from('expanded')`, -`upTo('medium')`). `DesignGuard` reports every leftover prefix with its replacement. +`