@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.
Files changed (136) hide show
  1. package/.tidyfactor +52 -0
  2. package/AGENTS.md +75 -0
  3. package/CHANGELOG.md +210 -0
  4. package/LICENSE +17 -0
  5. package/README.ar.md +398 -0
  6. package/README.de.md +44 -0
  7. package/README.es.md +44 -0
  8. package/README.fa.md +44 -0
  9. package/README.fr.md +44 -0
  10. package/README.md +418 -0
  11. package/README.pt.md +44 -0
  12. package/README.zh.md +44 -0
  13. package/SKILL-REGISTRY.md +69 -0
  14. package/SKILL.md +46 -0
  15. package/VISION.md +43 -0
  16. package/assets/blog.png +0 -0
  17. package/assets/content_layout.png +0 -0
  18. package/assets/content_output.png +0 -0
  19. package/assets/dark.png +0 -0
  20. package/assets/dashboard_layout.png +0 -0
  21. package/assets/dashboard_output.png +0 -0
  22. package/assets/ecommerce_layout.png +0 -0
  23. package/assets/ecommerce_output.png +0 -0
  24. package/assets/github-social-preview-2.png +0 -0
  25. package/assets/github-social-preview.png +0 -0
  26. package/assets/hero-banner.png +0 -0
  27. package/assets/light.png +0 -0
  28. package/assets/media_layout.png +0 -0
  29. package/assets/media_output.png +0 -0
  30. package/assets/og-default.png +0 -0
  31. package/assets/video.png +0 -0
  32. package/bin/add-skill.js +31 -0
  33. package/bin/create-kit.js +372 -0
  34. package/bin/remove-skill.js +137 -0
  35. package/brand.json +279 -0
  36. package/memory/01-design-schools.md +85 -0
  37. package/memory/02-design-tokens.md +41 -0
  38. package/memory/03-narrative-conversion.md +47 -0
  39. package/memory/04-motion-principles.md +44 -0
  40. package/memory/05-component-anatomy.md +34 -0
  41. package/memory/06-quality-bar.md +83 -0
  42. package/memory/07-consistency-contract.md +33 -0
  43. package/memory/08-arabic-bilingual.md +54 -0
  44. package/memory/09-prototype-flow.md +36 -0
  45. package/memory/10-python-tooling.md +64 -0
  46. package/memory/11-brand-json-v2.md +86 -0
  47. package/memory/12-typography-matrix.md +31 -0
  48. package/memory/13-layout-archetypes.md +30 -0
  49. package/memory/14-nav-footer-catalog.md +26 -0
  50. package/memory/15-performance-budget.md +18 -0
  51. package/memory/16-design-movements-guide.md +1084 -0
  52. package/memory/17-storytelling-industries-ux.md +143 -0
  53. package/memory/18-design-decision-engine.md +81 -0
  54. package/package.json +64 -0
  55. package/references/commands/_template.md +27 -0
  56. package/references/commands/assets.md +35 -0
  57. package/references/commands/audit.md +15 -0
  58. package/references/commands/brand.md +85 -0
  59. package/references/commands/brief.md +107 -0
  60. package/references/commands/clone.md +26 -0
  61. package/references/commands/components.md +46 -0
  62. package/references/commands/dashboard.md +45 -0
  63. package/references/commands/deploy.md +45 -0
  64. package/references/commands/flow.md +44 -0
  65. package/references/commands/handoff.md +53 -0
  66. package/references/commands/i18n.md +64 -0
  67. package/references/commands/init.md +30 -0
  68. package/references/commands/layout.md +81 -0
  69. package/references/commands/motion.md +62 -0
  70. package/references/commands/nav-footer.md +54 -0
  71. package/references/commands/page.md +45 -0
  72. package/references/commands/palette.md +35 -0
  73. package/references/commands/perf.md +57 -0
  74. package/references/commands/retrofit.md +15 -0
  75. package/references/commands/school.md +41 -0
  76. package/references/commands/states.md +48 -0
  77. package/references/commands/study.md +98 -0
  78. package/references/commands/tokens.md +45 -0
  79. package/references/commands/typography.md +87 -0
  80. package/references/foundations/daisyui.md +44 -0
  81. package/references/foundations/hybrid.md +32 -0
  82. package/references/foundations/native.md +31 -0
  83. package/references/foundations/tailwind-utility.md +43 -0
  84. package/references/memory/01-design-schools.md +85 -0
  85. package/references/memory/02-design-tokens.md +41 -0
  86. package/references/memory/03-narrative-conversion.md +47 -0
  87. package/references/memory/04-motion-principles.md +44 -0
  88. package/references/memory/05-component-anatomy.md +34 -0
  89. package/references/memory/06-quality-bar.md +83 -0
  90. package/references/memory/07-consistency-contract.md +33 -0
  91. package/references/memory/08-arabic-bilingual.md +54 -0
  92. package/references/memory/09-prototype-flow.md +36 -0
  93. package/references/memory/10-python-tooling.md +64 -0
  94. package/references/memory/11-brand-json-v2.md +86 -0
  95. package/references/memory/12-typography-matrix.md +31 -0
  96. package/references/memory/13-layout-archetypes.md +30 -0
  97. package/references/memory/14-nav-footer-catalog.md +26 -0
  98. package/references/memory/15-performance-budget.md +18 -0
  99. package/references/memory/16-design-movements-guide.md +1084 -0
  100. package/references/memory/17-storytelling-industries-ux.md +143 -0
  101. package/references/memory/18-design-decision-engine.md +81 -0
  102. package/references/memory/architecture.md +39 -0
  103. package/references/memory/decision-points.md +50 -0
  104. package/references/memory/foundations.md +15 -0
  105. package/references/memory/quality-bar.md +20 -0
  106. package/references/tidyfactor-vision.md +66 -0
  107. package/references/workflow.md +49 -0
  108. package/references/workflows/audit-prototype.md +26 -0
  109. package/references/workflows/brief.md +30 -0
  110. package/references/workflows/clone-prototype.md +27 -0
  111. package/references/workflows/init-prototype.md +28 -0
  112. package/references/workflows/retrofit-prototype.md +25 -0
  113. package/scripts/__pycache__/_utils.cpython-312.pyc +0 -0
  114. package/scripts/_utils.py +60 -0
  115. package/scripts/build.py +194 -0
  116. package/scripts/check_alpha.py +52 -0
  117. package/scripts/extract_palette.py +139 -0
  118. package/scripts/generate_transitions.py +105 -0
  119. package/scripts/inspect_images.py +48 -0
  120. package/scripts/minify_assets.py +140 -0
  121. package/scripts/optimize_assets.py +91 -0
  122. package/scripts/optimize_images.py +176 -0
  123. package/scripts/prepare_images.py +67 -0
  124. package/scripts/remove_backgrounds.py +61 -0
  125. package/scripts/test_build.py +228 -0
  126. package/templates/design-system/base.css +75 -0
  127. package/templates/design-system/components.css +229 -0
  128. package/templates/design-system/interactions.js +31 -0
  129. package/templates/design-system/motion.js +42 -0
  130. package/templates/design-system/tokens.css +81 -0
  131. package/templates/design-system/utilities.css +47 -0
  132. package/templates/index.html +84 -0
  133. package/templates/proto-nav.js +56 -0
  134. package/tools/build-skill.js +126 -0
  135. package/tools/validate-skill.js +144 -0
  136. 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