@tidyfactor/design 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.tidyfactor +52 -0
- package/AGENTS.md +75 -0
- package/CHANGELOG.md +210 -0
- package/LICENSE +17 -0
- package/README.ar.md +398 -0
- package/README.de.md +44 -0
- package/README.es.md +44 -0
- package/README.fa.md +44 -0
- package/README.fr.md +44 -0
- package/README.md +418 -0
- package/README.pt.md +44 -0
- package/README.zh.md +44 -0
- package/SKILL-REGISTRY.md +69 -0
- package/SKILL.md +46 -0
- package/VISION.md +43 -0
- package/assets/blog.png +0 -0
- package/assets/content_layout.png +0 -0
- package/assets/content_output.png +0 -0
- package/assets/dark.png +0 -0
- package/assets/dashboard_layout.png +0 -0
- package/assets/dashboard_output.png +0 -0
- package/assets/ecommerce_layout.png +0 -0
- package/assets/ecommerce_output.png +0 -0
- package/assets/github-social-preview-2.png +0 -0
- package/assets/github-social-preview.png +0 -0
- package/assets/hero-banner.png +0 -0
- package/assets/light.png +0 -0
- package/assets/media_layout.png +0 -0
- package/assets/media_output.png +0 -0
- package/assets/og-default.png +0 -0
- package/assets/video.png +0 -0
- package/bin/add-skill.js +31 -0
- package/bin/create-kit.js +372 -0
- package/bin/remove-skill.js +137 -0
- package/brand.json +279 -0
- package/memory/01-design-schools.md +85 -0
- package/memory/02-design-tokens.md +41 -0
- package/memory/03-narrative-conversion.md +47 -0
- package/memory/04-motion-principles.md +44 -0
- package/memory/05-component-anatomy.md +34 -0
- package/memory/06-quality-bar.md +83 -0
- package/memory/07-consistency-contract.md +33 -0
- package/memory/08-arabic-bilingual.md +54 -0
- package/memory/09-prototype-flow.md +36 -0
- package/memory/10-python-tooling.md +64 -0
- package/memory/11-brand-json-v2.md +86 -0
- package/memory/12-typography-matrix.md +31 -0
- package/memory/13-layout-archetypes.md +30 -0
- package/memory/14-nav-footer-catalog.md +26 -0
- package/memory/15-performance-budget.md +18 -0
- package/memory/16-design-movements-guide.md +1084 -0
- package/memory/17-storytelling-industries-ux.md +143 -0
- package/memory/18-design-decision-engine.md +81 -0
- package/package.json +64 -0
- package/references/commands/_template.md +27 -0
- package/references/commands/assets.md +35 -0
- package/references/commands/audit.md +15 -0
- package/references/commands/brand.md +85 -0
- package/references/commands/brief.md +107 -0
- package/references/commands/clone.md +26 -0
- package/references/commands/components.md +46 -0
- package/references/commands/dashboard.md +45 -0
- package/references/commands/deploy.md +45 -0
- package/references/commands/flow.md +44 -0
- package/references/commands/handoff.md +53 -0
- package/references/commands/i18n.md +64 -0
- package/references/commands/init.md +30 -0
- package/references/commands/layout.md +81 -0
- package/references/commands/motion.md +62 -0
- package/references/commands/nav-footer.md +54 -0
- package/references/commands/page.md +45 -0
- package/references/commands/palette.md +35 -0
- package/references/commands/perf.md +57 -0
- package/references/commands/retrofit.md +15 -0
- package/references/commands/school.md +41 -0
- package/references/commands/states.md +48 -0
- package/references/commands/study.md +98 -0
- package/references/commands/tokens.md +45 -0
- package/references/commands/typography.md +87 -0
- package/references/foundations/daisyui.md +44 -0
- package/references/foundations/hybrid.md +32 -0
- package/references/foundations/native.md +31 -0
- package/references/foundations/tailwind-utility.md +43 -0
- package/references/memory/01-design-schools.md +85 -0
- package/references/memory/02-design-tokens.md +41 -0
- package/references/memory/03-narrative-conversion.md +47 -0
- package/references/memory/04-motion-principles.md +44 -0
- package/references/memory/05-component-anatomy.md +34 -0
- package/references/memory/06-quality-bar.md +83 -0
- package/references/memory/07-consistency-contract.md +33 -0
- package/references/memory/08-arabic-bilingual.md +54 -0
- package/references/memory/09-prototype-flow.md +36 -0
- package/references/memory/10-python-tooling.md +64 -0
- package/references/memory/11-brand-json-v2.md +86 -0
- package/references/memory/12-typography-matrix.md +31 -0
- package/references/memory/13-layout-archetypes.md +30 -0
- package/references/memory/14-nav-footer-catalog.md +26 -0
- package/references/memory/15-performance-budget.md +18 -0
- package/references/memory/16-design-movements-guide.md +1084 -0
- package/references/memory/17-storytelling-industries-ux.md +143 -0
- package/references/memory/18-design-decision-engine.md +81 -0
- package/references/memory/architecture.md +39 -0
- package/references/memory/decision-points.md +50 -0
- package/references/memory/foundations.md +15 -0
- package/references/memory/quality-bar.md +20 -0
- package/references/tidyfactor-vision.md +66 -0
- package/references/workflow.md +49 -0
- package/references/workflows/audit-prototype.md +26 -0
- package/references/workflows/brief.md +30 -0
- package/references/workflows/clone-prototype.md +27 -0
- package/references/workflows/init-prototype.md +28 -0
- package/references/workflows/retrofit-prototype.md +25 -0
- package/scripts/__pycache__/_utils.cpython-312.pyc +0 -0
- package/scripts/_utils.py +60 -0
- package/scripts/build.py +194 -0
- package/scripts/check_alpha.py +52 -0
- package/scripts/extract_palette.py +139 -0
- package/scripts/generate_transitions.py +105 -0
- package/scripts/inspect_images.py +48 -0
- package/scripts/minify_assets.py +140 -0
- package/scripts/optimize_assets.py +91 -0
- package/scripts/optimize_images.py +176 -0
- package/scripts/prepare_images.py +67 -0
- package/scripts/remove_backgrounds.py +61 -0
- package/scripts/test_build.py +228 -0
- package/templates/design-system/base.css +75 -0
- package/templates/design-system/components.css +229 -0
- package/templates/design-system/interactions.js +31 -0
- package/templates/design-system/motion.js +42 -0
- package/templates/design-system/tokens.css +81 -0
- package/templates/design-system/utilities.css +47 -0
- package/templates/index.html +84 -0
- package/templates/proto-nav.js +56 -0
- package/tools/build-skill.js +126 -0
- package/tools/validate-skill.js +144 -0
- package/tools/validate_skill.py +121 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Command: `dashboard` — Add an App/Dashboard Screen
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Dashboards are structurally different from marketing pages (persistent
|
|
5
|
+
navigation shell, data-density, empty/loading/error states are core to the
|
|
6
|
+
experience, not edge cases) — kept as its own command so those differences
|
|
7
|
+
get deliberate handling instead of the marketing-page template stretched to
|
|
8
|
+
fit.
|
|
9
|
+
|
|
10
|
+
## When to run it
|
|
11
|
+
- Any app-shell screen: overview/analytics, a data table view, a settings
|
|
12
|
+
screen, a detail/record view, an onboarding step.
|
|
13
|
+
- User phrasing: "design a dashboard screen", "add the settings page to
|
|
14
|
+
the app", `dashboard`.
|
|
15
|
+
|
|
16
|
+
## What it does
|
|
17
|
+
1. Confirm (or establish, on the first `dashboard` run) the **persistent
|
|
18
|
+
shell**: sidebar or topbar navigation, defined once as a component,
|
|
19
|
+
reused identically across every dashboard screen — never rebuilt per
|
|
20
|
+
screen.
|
|
21
|
+
2. Compose the screen's content area from `components.css`/foundation
|
|
22
|
+
library data surfaces: stat cards, data tables, charts-as-static-visual
|
|
23
|
+
(a prototype doesn't need live data binding, but the visual should read
|
|
24
|
+
as real data, not a placeholder grid), filters, forms.
|
|
25
|
+
3. **Build the full state set as part of this command, not as an
|
|
26
|
+
afterthought**: populated, empty (with a clear next action), loading
|
|
27
|
+
(skeleton, not a spinner-only blank), and error — a dashboard prototype
|
|
28
|
+
that only shows the happy path isn't credible to a client review.
|
|
29
|
+
4. Keep density and information hierarchy deliberate — a dashboard's job is
|
|
30
|
+
scanning, not persuading; resist marketing-page hero treatment here.
|
|
31
|
+
5. Same drift rule as `page`: any missing pattern gets routed through
|
|
32
|
+
`components`, never improvised in place.
|
|
33
|
+
|
|
34
|
+
## Output convention
|
|
35
|
+
```
|
|
36
|
+
pages/dashboard-<screen-name>.html
|
|
37
|
+
<nav class="app-shell__sidebar">...</nav> ← identical markup across every dashboard screen
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Checklist
|
|
41
|
+
- [ ] Shell (nav) markup identical across all dashboard screens in the
|
|
42
|
+
project
|
|
43
|
+
- [ ] Empty, loading, and error states built alongside the populated state
|
|
44
|
+
- [ ] Data surfaces read as real data, not obvious placeholder content
|
|
45
|
+
- [ ] No page-level CSS/JS — same rule as `page`
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Command: `deploy` — Preview, Present, Export
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Always the last command: verify the prototype actually behaves correctly
|
|
5
|
+
and package it for a client presentation or a developer handoff, with zero
|
|
6
|
+
build step required either way.
|
|
7
|
+
|
|
8
|
+
## When to run it
|
|
9
|
+
- Always last in a full sequence, after `audit` passes.
|
|
10
|
+
- User phrasing: "get this ready to present", "export the prototype",
|
|
11
|
+
`deploy`.
|
|
12
|
+
|
|
13
|
+
## What it does
|
|
14
|
+
1. **Serve locally**: `python -m http.server 8123` or `npx serve` — open in
|
|
15
|
+
a **visible** browser tab (backgrounded tabs pause
|
|
16
|
+
`requestAnimationFrame`, which affects `motion`'s entrance/scroll
|
|
17
|
+
effects and can produce false verification results).
|
|
18
|
+
2. **Present mode**: confirm `proto-nav.js`'s toolbar works — page jump,
|
|
19
|
+
flow start, state toggles — this is the client-facing "click through it
|
|
20
|
+
yourself" experience.
|
|
21
|
+
3. **Confirm portability**: the whole `pages/` + `design-system/` folder
|
|
22
|
+
runs correctly opened via plain static file serving — no server
|
|
23
|
+
process, no build step, matches the zero-dependency promise of every
|
|
24
|
+
TidyFactor track's *output*, whatever the CSS foundation needed at
|
|
25
|
+
design time.
|
|
26
|
+
4. **Handoff note (optional, never assumed)**: if the user wants this
|
|
27
|
+
handed to `tidyfactor-html`/`tidyfactor-php-*` for production, that's a
|
|
28
|
+
separate, explicit request — `deploy` doesn't restructure anything
|
|
29
|
+
toward another skill's conventions unasked.
|
|
30
|
+
5. Final `audit` pass — nothing ships to a client review with open
|
|
31
|
+
structural violations.
|
|
32
|
+
|
|
33
|
+
## Output convention
|
|
34
|
+
```
|
|
35
|
+
project/
|
|
36
|
+
design-system/ ← shipped as-is, still the only source of styling
|
|
37
|
+
pages/
|
|
38
|
+
proto-nav.js (strip before any production handoff — it's a dev tool)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Checklist
|
|
42
|
+
- [ ] Verified in a visible browser tab
|
|
43
|
+
- [ ] `proto-nav.js` present-mode toolbar functions correctly
|
|
44
|
+
- [ ] Runs from plain static file serving, no build step
|
|
45
|
+
- [ ] Final `audit` clean (or open findings explicitly accepted by the user)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Command: `flow` — Click-Through Prototype Navigation
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Turns a folder of independent pages into a navigable prototype a client can
|
|
5
|
+
click through unassisted — the feature that makes this a genuine Figma
|
|
6
|
+
"present mode" alternative rather than a pile of static mockups.
|
|
7
|
+
|
|
8
|
+
## When to run it
|
|
9
|
+
- Enough pages exist to connect into a coherent path (a few pages minimum
|
|
10
|
+
— running this on a single page has nothing to connect).
|
|
11
|
+
- User phrasing: "link these pages together", "make this clickable",
|
|
12
|
+
"prototype the flow from signup to dashboard", `flow`.
|
|
13
|
+
|
|
14
|
+
## What it does
|
|
15
|
+
1. Map the intended user journeys from the brief (e.g. landing → pricing →
|
|
16
|
+
signup → dashboard-overview) — real navigation intent, not just "link
|
|
17
|
+
everything to everything".
|
|
18
|
+
2. Wire real `<a href="...">` links between pages for the primary
|
|
19
|
+
journeys — this must work with plain static hosting/file:// browsing,
|
|
20
|
+
not just the dev server.
|
|
21
|
+
3. Add the shared, dev-only **prototype toolbar** (`proto-nav.js`): a small
|
|
22
|
+
floating control (page jump list, "back to flow start", state toggles
|
|
23
|
+
for pages that expose empty/loading/error states) — visibly styled as a
|
|
24
|
+
tool, not part of the design itself, and easy to strip out before any
|
|
25
|
+
production handoff.
|
|
26
|
+
4. Where a linked page doesn't exist yet, either build it (route to `page`/
|
|
27
|
+
`dashboard`) or mark it clearly as a stub end-point — never a silent
|
|
28
|
+
dead link.
|
|
29
|
+
5. For state toggles (e.g. viewing a dashboard's empty vs. populated state
|
|
30
|
+
without needing separate pages): drive them via a URL query param or the
|
|
31
|
+
toolbar, documented in that page's markup comment.
|
|
32
|
+
|
|
33
|
+
## Output convention
|
|
34
|
+
```
|
|
35
|
+
proto-nav.js ← shared floating toolbar, all pages include it
|
|
36
|
+
pages/*.html ← real <a href> links for primary journeys
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Checklist
|
|
40
|
+
- [ ] Primary journeys from the brief are actually clickable end-to-end
|
|
41
|
+
- [ ] No silent dead links — every reference either resolves or is a
|
|
42
|
+
marked stub
|
|
43
|
+
- [ ] Prototype toolbar is visually distinct from the design itself
|
|
44
|
+
- [ ] Works via plain static file browsing, not only the dev server
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Command: `handoff` — Developer Handoff Spec Generation
|
|
2
|
+
|
|
3
|
+
Runtime entry point for generating clean, developer-ready design system specifications, token maps, component state matrices, and implementation guidelines. Part of the **Delivery & Handoff** lifecycle phase.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- After prototype approval, when handing off to engineering/developers
|
|
8
|
+
- When documenting design system tokens for production implementation
|
|
9
|
+
- When building a component library documentation site
|
|
10
|
+
|
|
11
|
+
## Handoff Package Specification
|
|
12
|
+
|
|
13
|
+
The `handoff` command extracts and formats technical documentation into `docs/handoff/`:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
docs/handoff/
|
|
17
|
+
├── 01-token-map.md ← Exact CSS variables, HSL values, typography scale, spacing grid
|
|
18
|
+
├── 02-component-matrix.md ← Full inventory of components with all 8 interactive states
|
|
19
|
+
├── 03-layout-specs.md ← Spacing rules, grid containers, breakpoint behaviors
|
|
20
|
+
└── 04-motion-handbook.md ← Easings, timing curves, reduced motion fallbacks
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Generated Outputs
|
|
24
|
+
|
|
25
|
+
### 1. Token Map (`01-token-map.md`)
|
|
26
|
+
Export clean tables tracing `brand.json` v2 tokens to CSS variable implementations:
|
|
27
|
+
- Color swatches with hex, HSL, and light/dark role mappings
|
|
28
|
+
- Font family declarations, weights, line-height ratios, letter-spacing
|
|
29
|
+
- Spacing scale values in `rem` and `px`
|
|
30
|
+
- Elevation levels & shadow specs (including `color-mix()` focus rings)
|
|
31
|
+
|
|
32
|
+
### 2. Component Matrix (`02-component-matrix.md`)
|
|
33
|
+
For each shared component in `design-system/components.css`:
|
|
34
|
+
- HTML markup snippet
|
|
35
|
+
- Interactive state inventory: Default, Hover, Active, Focus-Visible, Disabled, Loading, Error, Success
|
|
36
|
+
- Accessibility requirements (ARIA roles, minimum 44px touch targets)
|
|
37
|
+
|
|
38
|
+
### 3. Layout & Grid Specs (`03-layout-specs.md`)
|
|
39
|
+
- Container max-widths (`sm`, `md`, `lg`, `xl`, `2xl`)
|
|
40
|
+
- Section padding discipline
|
|
41
|
+
- RTL mirroring guidelines for bidirectional UI
|
|
42
|
+
|
|
43
|
+
### 4. Motion Handbook (`04-motion-handbook.md`)
|
|
44
|
+
- Cubic-bezier curves and duration values
|
|
45
|
+
- Reduced-motion fallback rules (`prefers-reduced-motion: reduce`)
|
|
46
|
+
|
|
47
|
+
## Checklist
|
|
48
|
+
|
|
49
|
+
- [ ] Complete token mapping table generated
|
|
50
|
+
- [ ] All components documented with interactive states
|
|
51
|
+
- [ ] ARIA roles & WCAG AA contrast notes included
|
|
52
|
+
- [ ] Motion timing curves & reduced motion policy exported
|
|
53
|
+
- [ ] Handoff documentation written to `docs/handoff/`
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Command: `i18n` — Arabic/RTL & Bilingual Sites
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Arabic support is a first-class capability of this skill, not a translation
|
|
5
|
+
pass bolted on at the end — this command carries conventions drawn directly
|
|
6
|
+
from prior production work, not generic RTL guidance. Run this as a real
|
|
7
|
+
step in every project, even English-only ones, so the decision is explicit.
|
|
8
|
+
|
|
9
|
+
## When to run it
|
|
10
|
+
- Always, once, as part of Phase 3 — even to explicitly confirm an
|
|
11
|
+
English-only project isn't accidentally missing a locale decision.
|
|
12
|
+
- User phrasing: "make this bilingual", "add the Arabic version", "flip to
|
|
13
|
+
RTL", `i18n`.
|
|
14
|
+
|
|
15
|
+
## What it does
|
|
16
|
+
1. Set `localization.defaultLocale` / `localization.rtlLocales` in
|
|
17
|
+
`brand.json`; set `html[lang]`/`html[dir]` per page accordingly.
|
|
18
|
+
2. **Typography (non-negotiable)**: Arabic headings = El Messiri, Arabic
|
|
19
|
+
body = Tajawal, defined as `typography.families.arabicHeading` /
|
|
20
|
+
`arabicBody` tokens. **Never Amiri** for display/UI text — it reads as
|
|
21
|
+
calligraphic/traditional, not modern-clean, and has consistently been
|
|
22
|
+
wrong for this kind of work.
|
|
23
|
+
3. **Bilingual sites**: pick and document one pattern per project, don't
|
|
24
|
+
mix:
|
|
25
|
+
- **Separate localized pages** (`pages/home.html` +
|
|
26
|
+
`pages/home.ar.html`) — simplest, works with the `page` command
|
|
27
|
+
unchanged, best when Arabic and English content genuinely differ in
|
|
28
|
+
length/structure.
|
|
29
|
+
- **Single page, dual-tree toggle** (both language trees present, one
|
|
30
|
+
hidden via `[hidden]`/`dir`-scoped CSS, `proto-nav.js` toggle switches
|
|
31
|
+
them) — best for a fast side-by-side client review of both locales.
|
|
32
|
+
4. **Mirroring vs. not**: layout mirrors in RTL (nav, breadcrumbs, form
|
|
33
|
+
label alignment, icon-direction for "next/back" arrows) — but numerals,
|
|
34
|
+
embedded Latin brand names, and code/data stay LTR inside the RTL flow
|
|
35
|
+
(`unicode-bidi: isolate` where needed). Don't blanket-mirror everything.
|
|
36
|
+
Logo/wordmark and any Latin brand name stays unmirrored and identical
|
|
37
|
+
across locales — brand identity doesn't flip.
|
|
38
|
+
5. Re-run the `components` states matrix mentally for RTL: hover/focus
|
|
39
|
+
rings, dropdown open-direction, and modal close-button position all need
|
|
40
|
+
to make sense mirrored, not just the text direction.
|
|
41
|
+
6. If `voice.doNotUse` (brand voice rules) has a localized Arabic block,
|
|
42
|
+
apply it — don't machine-translate the English voice guide.
|
|
43
|
+
|
|
44
|
+
## Output convention
|
|
45
|
+
```
|
|
46
|
+
design-system/tokens.css
|
|
47
|
+
--font-heading-ar: 'El Messiri', serif;
|
|
48
|
+
--font-body-ar: 'Tajawal', sans-serif;
|
|
49
|
+
design-system/brand.json
|
|
50
|
+
"localization": { "defaultLocale": "ar", "rtlLocales": ["ar"] }
|
|
51
|
+
pages/
|
|
52
|
+
home.html (or home.en.html / home.ar.html, per chosen pattern)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Checklist
|
|
56
|
+
- [ ] `html[lang]`/`html[dir]` correct on every page, not left at a
|
|
57
|
+
template default
|
|
58
|
+
- [ ] Arabic type is El Messiri/Tajawal — confirmed never Amiri
|
|
59
|
+
- [ ] One bilingual pattern chosen and applied consistently, not mixed
|
|
60
|
+
across pages
|
|
61
|
+
- [ ] Layout mirrors appropriately; numerals/Latin brand names stay LTR
|
|
62
|
+
where correct
|
|
63
|
+
- [ ] Interactive states (dropdowns, modals) re-checked for sensible RTL
|
|
64
|
+
behavior, not just text direction
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Command: `init` — Foundation + First Page, One Pass
|
|
2
|
+
|
|
3
|
+
Runtime entry point for starting a brand-new interactive prototype from scratch.
|
|
4
|
+
|
|
5
|
+
## Dispatch steps
|
|
6
|
+
|
|
7
|
+
1. Load `references/memory/architecture.md` — locked file tree layout and consistency rules.
|
|
8
|
+
2. Load `references/memory/foundations.md` — CSS foundation selection rules.
|
|
9
|
+
3. Load `references/workflows/init-prototype.md` — execution sequence and validation checklist.
|
|
10
|
+
4. Execute workflow steps per `init-prototype.md`.
|
|
11
|
+
|
|
12
|
+
## Output convention
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
project/
|
|
16
|
+
design-system/
|
|
17
|
+
tokens.css
|
|
18
|
+
base.css
|
|
19
|
+
components.css
|
|
20
|
+
brand.json
|
|
21
|
+
motion.js
|
|
22
|
+
interactions.js
|
|
23
|
+
pages/
|
|
24
|
+
home.html
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Checklist
|
|
28
|
+
|
|
29
|
+
- [ ] Mode and CSS foundation both confirmed and recorded
|
|
30
|
+
- [ ] `references/workflows/init-prototype.md` validation checklist fully satisfied
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Command: `layout` — Surface Layout Archetypes
|
|
2
|
+
|
|
3
|
+
Runtime entry point for selecting and applying specialized surface layout blueprints. Part of the **Architecture** lifecycle phase.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- During `init` to select the page's macrostructure
|
|
8
|
+
- When adding a new page type that doesn't fit standard `page` or `dashboard`
|
|
9
|
+
- When the user describes a surface type (e.g., "real estate showcase", "app launch page", "product showcase")
|
|
10
|
+
|
|
11
|
+
## Dispatch Steps
|
|
12
|
+
|
|
13
|
+
1. Load `memory/13-layout-archetypes.md` — full archetype specifications.
|
|
14
|
+
2. Run the fit test (from `brief`) to narrow the archetype choice.
|
|
15
|
+
3. Load `references/memory/architecture.md` — locked file tree rules.
|
|
16
|
+
4. Scaffold the page with the selected archetype's section rhythm.
|
|
17
|
+
|
|
18
|
+
## Layout Archetype Catalog
|
|
19
|
+
|
|
20
|
+
| Archetype | Codename | Best For | Hero Type | Section Rhythm |
|
|
21
|
+
|---|---|---|---|---|
|
|
22
|
+
| **Film** | `fullbleed` | Physical goods, brand stories, rebrands, fashion, artisan | Product cutout + aura + motes | Hero → Film (600vh canvas) → Product reveal → Lifestyle → CTA |
|
|
23
|
+
| **Story** | `editorial` | Specs-heavy products, founders, events, conferences | Split-screen: image + copy | Hero → Film (420vh) → Feature grid → Origin story → CTA |
|
|
24
|
+
| **Space** | `spatial` | Real estate, architecture, travel, hospitality, venues | Wide establishing shot, no cutout | Hero → Film walkthrough (500vh) → Space details → Location → CTA |
|
|
25
|
+
| **App** | `interface` | SaaS, apps, digital platforms | Device mockup (phone/laptop frame) | Hero → Film (420vh UI flow) → Feature highlights → Social proof → CTA |
|
|
26
|
+
| **Creator** | `minimal` | Personal brands, creators, digital products, books | Centered cutout, clean background | Hero → Statement → About → Portfolio grid → CTA |
|
|
27
|
+
| **Product** | `product` | Single product high-conversion e-commerce | Hero product + price + WhatsApp CTA | Hero → Optional film (480vh) → Specs → Social proof → Buy CTA |
|
|
28
|
+
| **Store** | `store` | Multi-product catalog store | Store banner + WhatsApp CTA | Banner → Category filter → Product grid → Footer CTA |
|
|
29
|
+
| **Auto** | `auto` | Automotive & performance magazine showpiece | Hero car + tachometer gauge preloader | Hero → 3D slider stage → HUD spec tooltips → Gallery → CTA |
|
|
30
|
+
|
|
31
|
+
## Fit Test (Quick Decision Tree)
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
1. One product or many?
|
|
35
|
+
→ Many → "store" archetype
|
|
36
|
+
→ One → continue
|
|
37
|
+
|
|
38
|
+
2. Physical product or digital?
|
|
39
|
+
→ Digital (SaaS/app) → "app" archetype
|
|
40
|
+
→ Physical → continue
|
|
41
|
+
|
|
42
|
+
3. Is it a space/place?
|
|
43
|
+
→ Yes → "space" archetype
|
|
44
|
+
→ No → continue
|
|
45
|
+
|
|
46
|
+
4. Person or brand?
|
|
47
|
+
→ Person → "creator" archetype
|
|
48
|
+
→ Brand → continue
|
|
49
|
+
|
|
50
|
+
5. High-ticket or conversion-focused?
|
|
51
|
+
→ Yes → "product" archetype
|
|
52
|
+
→ No → continue
|
|
53
|
+
|
|
54
|
+
6. Strong transformation story?
|
|
55
|
+
→ Yes → "film" archetype
|
|
56
|
+
→ No → "story" archetype
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Archetype Application
|
|
60
|
+
|
|
61
|
+
When an archetype is selected:
|
|
62
|
+
|
|
63
|
+
1. **Scaffold sections** — create the HTML skeleton with semantic section markers matching the archetype's rhythm
|
|
64
|
+
2. **Set ambient palette direction** — configure the `#ambient` background-color tween targets per section
|
|
65
|
+
3. **Configure hero type** — select the hero component variant matching the archetype (cutout vs. full-bleed vs. split-screen vs. device mockup)
|
|
66
|
+
4. **Lock nav + footer** — route to `memory/14-nav-footer-catalog.md` for genre-appropriate nav (N1–N9) and footer (Ft1–Ft8) selection
|
|
67
|
+
|
|
68
|
+
## Customization
|
|
69
|
+
|
|
70
|
+
Archetypes are **starting points, not straitjackets**. The user can:
|
|
71
|
+
- **Add/remove sections** from the archetype rhythm
|
|
72
|
+
- **Swap hero type** (e.g., use a split-screen hero on a `film` archetype)
|
|
73
|
+
- **Mix elements** from multiple archetypes (document the deviation in the design brief)
|
|
74
|
+
|
|
75
|
+
## Checklist
|
|
76
|
+
|
|
77
|
+
- [ ] Archetype selected via fit test, not defaulted
|
|
78
|
+
- [ ] Section rhythm follows archetype spec
|
|
79
|
+
- [ ] Hero type matches archetype (or deviation is documented)
|
|
80
|
+
- [ ] Nav and footer selected from catalogs (not AI-default)
|
|
81
|
+
- [ ] Ambient palette direction set per section
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Command: `motion` — Shared Animation, Choreography & Micro-Delight
|
|
2
|
+
|
|
3
|
+
Runtime entry point for configuring global motion tokens, scroll-reveals, and micro-delight interactions in `motion.js` and `interactions.js`.
|
|
4
|
+
|
|
5
|
+
## 4-Tier Whimsy & Micro-Interaction Taxonomy
|
|
6
|
+
|
|
7
|
+
Incorporate purposeful micro-interactions across 4 operational tiers to give prototypes distinct brand character without sacrificing usability or accessibility:
|
|
8
|
+
|
|
9
|
+
1. **Tier 1: Subtle Whimsy (Default UI Feedback)**
|
|
10
|
+
- Micro-lifts on hover (`transform: translateY(-2px)`), smooth button scale on click, subtle focus ring glows.
|
|
11
|
+
- Defined in `tokens.css` and `components.css`.
|
|
12
|
+
2. **Tier 2: Interactive Whimsy (Task Celebrations)**
|
|
13
|
+
- Sparkle animation on form validation, smooth checkmark draw on task completion, progress step rewards.
|
|
14
|
+
- Defined in `interactions.js`.
|
|
15
|
+
3. **Tier 3: Discovery Whimsy (Exploration Rewards)**
|
|
16
|
+
- Subtle Easter eggs, custom keyboard shortcuts (`⌘+K`, `?` modal), hidden theme toggles.
|
|
17
|
+
4. **Tier 4: Contextual Whimsy (Charming Microcopy & States)**
|
|
18
|
+
- Playful empty states with micro-illustrations, empathetic 404 error states, animated loading dot pulses.
|
|
19
|
+
|
|
20
|
+
## Advanced Motion Recipes & Fixed Z-Stack Layers
|
|
21
|
+
|
|
22
|
+
### Fixed Z-Stack Background Layers
|
|
23
|
+
Implement 5 persistent background layers behind page content for ambient depth:
|
|
24
|
+
- `#ambient` — Fullscreen background color, GSAP-tweened per section (`onEnter`/`onEnterBack`).
|
|
25
|
+
- `#glow` — Soft radial lighting; opacity animates based on active section.
|
|
26
|
+
- `#vignette` — Subtle edge darkening to direct visual focus toward center.
|
|
27
|
+
- `#grain` — SVG fractal noise data-URI film grain overlay with low opacity.
|
|
28
|
+
- `#progress` — Thin accent scroll-progress bar fixed at top of viewport.
|
|
29
|
+
|
|
30
|
+
### Ambient Section Background Color Tweening
|
|
31
|
+
```javascript
|
|
32
|
+
ScrollTrigger.create({
|
|
33
|
+
trigger: section,
|
|
34
|
+
onEnter: () => gsap.to('#ambient', { backgroundColor: section.dataset.ambient, duration: 1.1 }),
|
|
35
|
+
onEnterBack: () => gsap.to('#ambient', { backgroundColor: section.dataset.ambient, duration: 1.1 })
|
|
36
|
+
});
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Canvas Scroll-Film Engine
|
|
40
|
+
For smooth video-like scroll reveals without H.264 playback stutter, draw pre-rendered frame sequences (`assets/seq/f000.jpg`) directly onto a fixed `<canvas>` element mapped to scroll progress.
|
|
41
|
+
|
|
42
|
+
## Global Motion Rules
|
|
43
|
+
|
|
44
|
+
1. **Token Discipline**: Every duration (`--duration-fast`, `--duration-base`) and easing curve (`--ease-out-quint`) must reference a CSS variable in `tokens.css`.
|
|
45
|
+
2. **Accessibility & Reduced Motion**: `prefers-reduced-motion: reduce` must automatically disable keyframe translates and scale bounces across all pages, falling back to simple opacity fades.
|
|
46
|
+
3. **Single Shared Script**: All interaction choreography lives inside `design-system/motion.js` and `design-system/interactions.js` — zero per-page JS scripts allowed.
|
|
47
|
+
|
|
48
|
+
## Output Convention
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
design-system/
|
|
52
|
+
├── motion.js ← Shared entrance reveals & scroll choreography
|
|
53
|
+
├── interactions.js ← Tier 1-4 micro-delight & component interactions
|
|
54
|
+
└── tokens.css ← Motion easings & duration tokens
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Checklist
|
|
58
|
+
|
|
59
|
+
- [ ] Micro-interactions implemented across Tier 1-4 Whimsy taxonomy
|
|
60
|
+
- [ ] Every motion duration/easing traces to a token in `tokens.css`
|
|
61
|
+
- [ ] `prefers-reduced-motion` compliance enforced globally across all tiers
|
|
62
|
+
- [ ] No per-page motion scripts exist in `pages/`
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Command: `nav-footer` — Navigation & Footer Archetype Catalogs
|
|
2
|
+
|
|
3
|
+
Runtime entry point for selecting, customizing, and auditing Navigation (N1–N9) and Footer (Ft1–Ft8) components. Part of the **Architecture** lifecycle phase.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- During `init` or `layout` when scaffolding page macrostructure
|
|
8
|
+
- When replacing a generic AI nav or footer with a genre-authentic archetype
|
|
9
|
+
- When auditing a page for anti-AI navigation/footer tells
|
|
10
|
+
|
|
11
|
+
## Navigation Catalog (N1–N9)
|
|
12
|
+
|
|
13
|
+
| ID | Name | Structure | Best For |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| **N1** | Floating Pill | Glassmorphic floating island (`max-w-fit mx-auto`), rounded-full | SaaS, modern minimal, mobile-first |
|
|
16
|
+
| **N2** | Newspaper Masthead | Centered title block top, rule divider, category links row below | Editorial, literary, publishing |
|
|
17
|
+
| **N3** | Brutal Slab | Stark thick bottom border (`border-b-4`), uppercase mono text | Industrial, dev tools, brutalist |
|
|
18
|
+
| **N4** | Terminal / CLI | Dark background, prompt symbol (`>`), monospace links | Developer tools, CLI apps, tech |
|
|
19
|
+
| **N5** | Edge-Aligned Minimal | Wordmark hard-left, navigation hard-right, no center links | Portfolio, creator, luxury |
|
|
20
|
+
| **N6** | Split Brand | Emblem center, links distributed evenly left & right | Fashion, luxury, artisan physical goods |
|
|
21
|
+
| **N7** | Double-Decker Utility | Top utility bar (announcement/currency/lang), main header below | E-commerce, multi-locale, enterprise |
|
|
22
|
+
| **N8** | Vertical Rail | Fixed side navigation bar (collapsed/expanded on hover) | Dashboards, complex web apps |
|
|
23
|
+
| **N9** | Fullscreen Overlay | Minimal trigger icon, click expands to full-screen menu modal | High-fashion, artistic showcases |
|
|
24
|
+
|
|
25
|
+
## Anti-AI Navigation Tell (Auto-Reject Rule #11)
|
|
26
|
+
> **The AI Nav**: Wordmark left, 4-5 links center, primary CTA right, 1px bottom border.
|
|
27
|
+
>
|
|
28
|
+
> *Rule*: If N1–N9 is not explicitly declared, the nav must use an opinionated layout variance (e.g. N1 floating pill or N5 edge-aligned), never the default AI Nav template.
|
|
29
|
+
|
|
30
|
+
## Footer Catalog (Ft1–Ft8)
|
|
31
|
+
|
|
32
|
+
| ID | Name | Structure | Best For |
|
|
33
|
+
|---|---|---|---|
|
|
34
|
+
| **Ft1** | Mast-Headed | Giant brand display wordmark at top, multi-column grid below | Flagship brands, luxury, editorial |
|
|
35
|
+
| **Ft2** | Minimal Inline | Single horizontal line: Wordmark · Links · Copyright | Minimalist, single-page, creator |
|
|
36
|
+
| **Ft3** | Colophon / Credits | Technical metadata, font credits, server region, timestamp | Developer tools, design engineering |
|
|
37
|
+
| **Ft4** | Big Statement | Huge opinionated quote/tagline block, minimal links below | Personal brand, agency, manifesto |
|
|
38
|
+
| **Ft5** | Letter Close | Signed founder letter / closing note + CTA + copyright | Founder-led, indie hacker, newsletter |
|
|
39
|
+
| **Ft6** | Newsletter-First | Large email input form taking top 50% of footer | Content, publishing, e-commerce |
|
|
40
|
+
| **Ft7** | Marquee Scroll | Infinite scrolling text marquee above standard links | Fashion, agencies, events |
|
|
41
|
+
| **Ft8** | Sitemap Grid | Structured multi-section directory grid + locale switcher | Enterprise, SaaS, docs |
|
|
42
|
+
|
|
43
|
+
## Anti-AI Footer Tell (Auto-Reject Rule #12)
|
|
44
|
+
> **The AI Footer**: 4 equal columns (Product, Company, Resources, Legal) + social row + copyright line.
|
|
45
|
+
>
|
|
46
|
+
> *Rule*: Reject 4-column equal grids without asymmetric visual hierarchy or distinctive hero elements (e.g. Ft1 giant wordmark or Ft5 letter close).
|
|
47
|
+
|
|
48
|
+
## Checklist
|
|
49
|
+
|
|
50
|
+
- [ ] Nav selected from N1–N9 catalog (or explicitly customized)
|
|
51
|
+
- [ ] Footer selected from Ft1–Ft8 catalog
|
|
52
|
+
- [ ] No generic 4-link center AI nav used
|
|
53
|
+
- [ ] No generic 4-column equal AI footer used
|
|
54
|
+
- [ ] RTL mirroring rules respected (`localization.mirrorOnRtl` in `brand.json`)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Command: `page` — Add a Marketing/Content Page
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
The recurring loop this whole skill exists to support: add another page to
|
|
5
|
+
the prototype without any risk of visual drift, however large the site
|
|
6
|
+
grows. This is the command most likely to run dozens of times on one
|
|
7
|
+
project — its discipline matters more than any other command's.
|
|
8
|
+
|
|
9
|
+
## When to run it
|
|
10
|
+
- Any time a new website page (not a dashboard/app screen — see
|
|
11
|
+
`dashboard` for that) is needed: landing, pricing, about, feature,
|
|
12
|
+
listing, detail, contact, 404...
|
|
13
|
+
- User phrasing: "add a pricing page", "build the about page", `page`.
|
|
14
|
+
|
|
15
|
+
## What it does
|
|
16
|
+
1. Confirm `design-system/tokens.css` and `components.css` (or the
|
|
17
|
+
foundation's theme) are current — never build against a stale set.
|
|
18
|
+
2. Apply the `references/foundations/<choice>.md` narrative-quality
|
|
19
|
+
principles: the hero is a thesis for *this* page's job, structure
|
|
20
|
+
encodes real information (no decorative numbering unless it's a real
|
|
21
|
+
sequence), copy is real content for this page, not lorem ipsum.
|
|
22
|
+
3. Compose the page **only** from existing `components.css` classes /
|
|
23
|
+
daisyUI components / Tailwind utilities per the locked foundation.
|
|
24
|
+
4. **Hit a design need with no existing match?** Stop. Route it through
|
|
25
|
+
`components` first. Never write it inline "just this once" — that's
|
|
26
|
+
exactly the drift this architecture prevents.
|
|
27
|
+
5. Add the page to `flow`'s navigation map if a prototype nav flow already
|
|
28
|
+
exists (don't leave new pages orphaned/unreachable).
|
|
29
|
+
6. Verify: view source for any `<style>` tag or inline `style="..."`
|
|
30
|
+
attribute, and for any `<script>` beyond the shared includes — both are
|
|
31
|
+
automatic fails.
|
|
32
|
+
|
|
33
|
+
## Output convention
|
|
34
|
+
```
|
|
35
|
+
pages/<page-name>.html ← markup only, references design-system/* in <head>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Checklist
|
|
39
|
+
- [ ] Zero inline `<style>`, zero `style="..."` attributes
|
|
40
|
+
- [ ] Zero page-specific `<script>` logic (shared includes only)
|
|
41
|
+
- [ ] Every component used exists in `components.css`/foundation library —
|
|
42
|
+
none invented ad hoc
|
|
43
|
+
- [ ] Hero/opening treats the page's specific job as a thesis, not a
|
|
44
|
+
generic template
|
|
45
|
+
- [ ] Reachable from the prototype's `flow` navigation, if one exists
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Command: `palette` — Brand Color Extraction & WCAG Contrast Check
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Extract dominant brand colors, background tones, accent highlights, and WCAG 2.1 AA contrast compliance scores from reference images, logos, or hero screenshots using the built-in Python tool `scripts/extract_palette.py`. Automatically updates `brand.json` and appends CSS custom properties to `design-system/tokens.css`.
|
|
5
|
+
|
|
6
|
+
## When to run it
|
|
7
|
+
- User phrased: "extract color palette", "extract colors from logo", "check contrast ratio", "palette", `/palette`.
|
|
8
|
+
- During `init` or `clone` when converting a reference logo or screenshot into a design token system.
|
|
9
|
+
|
|
10
|
+
## What it does
|
|
11
|
+
1. **Color Quantization & Extraction**:
|
|
12
|
+
- Runs `python scripts/extract_palette.py <image_path> --json brand.json --css design-system/tokens.css`.
|
|
13
|
+
- Quantizes the image palette to identify dominant Primary, Secondary, and Accent brand colors.
|
|
14
|
+
2. **WCAG 2.1 AA Contrast Analysis**:
|
|
15
|
+
- Computes relative luminance and contrast ratios between text/primary colors against dark (`#0F172A`) and light (`#F8FAFC`) background surfaces.
|
|
16
|
+
- Ensures text meets minimum 4.5:1 ratio (WCAG AA compliant).
|
|
17
|
+
3. **Token Synchronization**:
|
|
18
|
+
- Updates `brand.json` colors object.
|
|
19
|
+
- Appends CSS variables (`--color-primary`, `--color-secondary`, `--color-accent`) to `design-system/tokens.css`.
|
|
20
|
+
|
|
21
|
+
## Usage Examples
|
|
22
|
+
```bash
|
|
23
|
+
# Extract palette from logo and update brand.json
|
|
24
|
+
python scripts/extract_palette.py assets/logo.png --json brand.json
|
|
25
|
+
|
|
26
|
+
# Append extracted tokens to tokens.css
|
|
27
|
+
python scripts/extract_palette.py reference.png --css design-system/tokens.css
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Checklist
|
|
31
|
+
- [ ] Image path is valid and readable by Pillow
|
|
32
|
+
- [ ] Primary, secondary, and accent colors extracted cleanly
|
|
33
|
+
- [ ] WCAG contrast ratio verified (≥ 4.5:1 for body text)
|
|
34
|
+
- [ ] `brand.json` updated with new color tokens
|
|
35
|
+
- [ ] `design-system/tokens.css` updated with matching CSS variables
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Command: `perf` — Asset Performance Budgets & Optimization Check
|
|
2
|
+
|
|
3
|
+
Runtime entry point for checking asset performance budgets, script preconnects, and load optimization. Part of the **Quality & Audit** lifecycle phase.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- Before running `deploy` or finalizing any prototype
|
|
8
|
+
- During `audit` to verify asset weight compliance
|
|
9
|
+
- When performance or slow page load is flagged
|
|
10
|
+
|
|
11
|
+
## Asset Performance Budgets (Mechanical Checklist)
|
|
12
|
+
|
|
13
|
+
Report as a **table with actual numbers vs budget limit**, not generic pass/fail prose:
|
|
14
|
+
|
|
15
|
+
| Asset Class | Budget Limit | Rationale |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| **Total Frame Sequence** (`assets/seq/*.jpg`) | ≤ 6.0 MB total (~90–120 frames) | Frame sequence payload on scroll-driven canvas |
|
|
18
|
+
| **Single JPG Frame** | ≤ 60 KB at 1280px wide (q≈80) | Prevents un-scaled frame extraction issues |
|
|
19
|
+
| **Hero Cutout PNG** | ≤ 400 KB (max width 1200px) | Transparent PNGs compress poorly; resize before optimization |
|
|
20
|
+
| **Brand Logo PNG / SVG** | ≤ 40 KB (max width 240px) | Header/footer brand emblem |
|
|
21
|
+
| **Google Fonts Payload** | ≤ 3 families, ≤ 4 weights total | Excess font families delay First Text Paint |
|
|
22
|
+
| **Total CSS Payload** | ≤ 150 KB (gzipped/uncompressed) | Zero per-page CSS constraint enforces shared tokens |
|
|
23
|
+
|
|
24
|
+
## Execution Protocol
|
|
25
|
+
|
|
26
|
+
1. **Sum directory sizes**:
|
|
27
|
+
- Check `assets/` and `design-system/` file sizes.
|
|
28
|
+
2. **Check Font `<link>` references**:
|
|
29
|
+
- Verify `<link rel="preconnect" href="https://fonts.googleapis.com">` exists.
|
|
30
|
+
- Verify `<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>` exists.
|
|
31
|
+
- Ensure loaded font families match only those referenced in `brand.json`.
|
|
32
|
+
3. **Verify LCP Optimization**:
|
|
33
|
+
- Confirm hero image does **NOT** have `loading="lazy"` (violates AI Anti-Pattern Rule #16).
|
|
34
|
+
- Below-the-fold images MUST use `loading="lazy"`.
|
|
35
|
+
4. **Clean Script Tags**:
|
|
36
|
+
- Check for dead/duplicate script tags.
|
|
37
|
+
|
|
38
|
+
## Report Output Format
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Asset Class Actual Weight Budget Limit Status
|
|
42
|
+
------------------------------------------------------------
|
|
43
|
+
Hero Cutout PNG 340 KB 400 KB ✅ PASS
|
|
44
|
+
Brand Logo SVG 12 KB 40 KB ✅ PASS
|
|
45
|
+
Google Fonts 2 families 3 families ✅ PASS
|
|
46
|
+
Total CSS 48 KB 150 KB ✅ PASS
|
|
47
|
+
LCP Image Eager Yes Yes ✅ PASS
|
|
48
|
+
Font Preconnects Present Present ✅ PASS
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Checklist
|
|
52
|
+
|
|
53
|
+
- [ ] All numeric budgets checked and reported in data table
|
|
54
|
+
- [ ] Preconnect tags present for font and CDN domains
|
|
55
|
+
- [ ] No `loading="lazy"` on LCP hero image
|
|
56
|
+
- [ ] Lazy loading enabled for below-the-fold assets
|
|
57
|
+
- [ ] Font families strictly capped at ≤ 3 families / 4 weights
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Command: `retrofit` — Improve Mode Prototype Unification
|
|
2
|
+
|
|
3
|
+
Runtime entry point for unifying a drifted prototype under one design system.
|
|
4
|
+
|
|
5
|
+
## Dispatch steps
|
|
6
|
+
|
|
7
|
+
1. Load `references/memory/architecture.md` — locked file tree layout and consistency rules.
|
|
8
|
+
2. Load `memory/07-consistency-contract.md` — zero-drift contract rules.
|
|
9
|
+
3. Load `references/workflows/retrofit-prototype.md` — execution sequence and validation checklist.
|
|
10
|
+
4. Execute workflow steps per `retrofit-prototype.md`.
|
|
11
|
+
|
|
12
|
+
## Checklist
|
|
13
|
+
|
|
14
|
+
- [ ] All per-page CSS and inline styles purged
|
|
15
|
+
- [ ] `references/workflows/retrofit-prototype.md` validation checklist fully satisfied
|