agemon 0.1.0 → 6.3.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/README.md +983 -30
- package/assets/skills/architecture/agemon-architecture/LICENSE +21 -0
- package/assets/skills/architecture/agemon-architecture/NOTICE.md +9 -0
- package/assets/skills/architecture/agemon-architecture/SKILL.md +275 -0
- package/assets/skills/code-quality/agemon-clean-code/LICENSE +21 -0
- package/assets/skills/code-quality/agemon-clean-code/NOTICE.md +9 -0
- package/assets/skills/code-quality/agemon-clean-code/SKILL.md +78 -0
- package/assets/skills/code-quality/agemon-house-rules/SKILL.md +103 -0
- package/assets/skills/commit/agemon-commit/SKILL.md +87 -0
- package/assets/skills/design/agemon-design/LICENSE +21 -0
- package/assets/skills/design/agemon-design/NOTICE.md +43 -0
- package/assets/skills/design/agemon-design/SKILL.md +128 -0
- package/assets/skills/design/agemon-design/references/accessibility.md +182 -0
- package/assets/skills/design/agemon-design/references/actions.md +215 -0
- package/assets/skills/design/agemon-design/references/ai-chat.md +158 -0
- package/assets/skills/design/agemon-design/references/brief.md +190 -0
- package/assets/skills/design/agemon-design/references/color.md +216 -0
- package/assets/skills/design/agemon-design/references/components.md +91 -0
- package/assets/skills/design/agemon-design/references/copy.md +300 -0
- package/assets/skills/design/agemon-design/references/core-rules.md +166 -0
- package/assets/skills/design/agemon-design/references/craft-intent.md +162 -0
- package/assets/skills/design/agemon-design/references/dashboard.md +131 -0
- package/assets/skills/design/agemon-design/references/dataviz.md +197 -0
- package/assets/skills/design/agemon-design/references/finish-bar.md +243 -0
- package/assets/skills/design/agemon-design/references/forms.md +192 -0
- package/assets/skills/design/agemon-design/references/heuristics.md +319 -0
- package/assets/skills/design/agemon-design/references/inspiration.md +287 -0
- package/assets/skills/design/agemon-design/references/layout.md +236 -0
- package/assets/skills/design/agemon-design/references/loops.md +155 -0
- package/assets/skills/design/agemon-design/references/metadata.md +98 -0
- package/assets/skills/design/agemon-design/references/modern-css.md +448 -0
- package/assets/skills/design/agemon-design/references/motion.md +434 -0
- package/assets/skills/design/agemon-design/references/personas.md +206 -0
- package/assets/skills/design/agemon-design/references/preset-dashboard.md +109 -0
- package/assets/skills/design/agemon-design/references/preset-editorial.md +94 -0
- package/assets/skills/design/agemon-design/references/preset-minimal.md +93 -0
- package/assets/skills/design/agemon-design/references/principles-catalog.md +299 -0
- package/assets/skills/design/agemon-design/references/recipe-auth.md +88 -0
- package/assets/skills/design/agemon-design/references/recipe-dashboard.md +130 -0
- package/assets/skills/design/agemon-design/references/recipe-landing.md +120 -0
- package/assets/skills/design/agemon-design/references/responsive.md +168 -0
- package/assets/skills/design/agemon-design/references/review.md +340 -0
- package/assets/skills/design/agemon-design/references/routing.md +143 -0
- package/assets/skills/design/agemon-design/references/sound.md +150 -0
- package/assets/skills/design/agemon-design/references/spec.md +123 -0
- package/assets/skills/design/agemon-design/references/stack.md +522 -0
- package/assets/skills/design/agemon-design/references/stage-assets.md +106 -0
- package/assets/skills/design/agemon-design/references/stage-build.md +46 -0
- package/assets/skills/design/agemon-design/references/stage-critique.md +34 -0
- package/assets/skills/design/agemon-design/references/stage-directions.md +44 -0
- package/assets/skills/design/agemon-design/references/stage-intake.md +34 -0
- package/assets/skills/design/agemon-design/references/stage-verify.md +44 -0
- package/assets/skills/design/agemon-design/references/state-design.md +188 -0
- package/assets/skills/design/agemon-design/references/tells-2026-11.md +32 -0
- package/assets/skills/design/agemon-design/references/themes.md +233 -0
- package/assets/skills/design/agemon-design/references/third-party-licenses.md +323 -0
- package/assets/skills/design/agemon-design/references/tokens.md +350 -0
- package/assets/skills/design/agemon-design/references/typography.md +248 -0
- package/assets/skills/design/agemon-design/scripts/audit-page.js +532 -0
- package/assets/skills/design/agemon-design/scripts/check-source.mjs +358 -0
- package/assets/skills/design/agemon-design/scripts/deal.mjs +231 -0
- package/assets/skills/design/agemon-design/scripts/inventory.mjs +676 -0
- package/assets/skills/essentials/web-design-guidelines/LICENSE +21 -0
- package/assets/skills/essentials/web-design-guidelines/NOTICE.md +14 -0
- package/assets/skills/essentials/web-design-guidelines/SKILL.md +18 -0
- package/assets/skills/essentials/web-design-guidelines/references/guidelines.md +184 -0
- package/assets/skills/essentials/writing-guidelines/LICENSE +21 -0
- package/assets/skills/essentials/writing-guidelines/NOTICE.md +14 -0
- package/assets/skills/essentials/writing-guidelines/SKILL.md +18 -0
- package/assets/skills/essentials/writing-guidelines/references/guidelines.md +250 -0
- package/assets/skills/founder/agemon-founder-board/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-board/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-board/SKILL.md +111 -0
- package/assets/skills/founder/agemon-founder-board/lenses.md +84 -0
- package/assets/skills/founder/agemon-founder-brand/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-brand/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-brand/SKILL.md +77 -0
- package/assets/skills/founder/agemon-founder-cfo/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-cfo/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-cfo/SKILL.md +109 -0
- package/assets/skills/founder/agemon-founder-cfo/example.json +27 -0
- package/assets/skills/founder/agemon-founder-cfo/unit_economics.py +270 -0
- package/assets/skills/founder/agemon-founder-competitors/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-competitors/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-competitors/SKILL.md +84 -0
- package/assets/skills/founder/agemon-founder-consumer/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-consumer/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-consumer/SKILL.md +126 -0
- package/assets/skills/founder/agemon-founder-consumer/customer.example.json +34 -0
- package/assets/skills/founder/agemon-founder-consumer/panel.py +424 -0
- package/assets/skills/founder/agemon-founder-consumer/pitch.example.md +3 -0
- package/assets/skills/founder/agemon-founder-launch/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-launch/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-launch/SKILL.md +65 -0
- package/assets/skills/founder/agemon-founder-marketing/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-marketing/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-marketing/SKILL.md +80 -0
- package/assets/skills/founder/agemon-founder-offer/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-offer/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-offer/SKILL.md +75 -0
- package/assets/skills/founder/agemon-founder-ops/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-ops/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-ops/SKILL.md +77 -0
- package/assets/skills/founder/agemon-founder-plan/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-plan/NOTICE.md +11 -0
- package/assets/skills/founder/agemon-founder-plan/SKILL.md +88 -0
- package/assets/skills/founder/agemon-founder-plan/compile.py +178 -0
- package/assets/skills/founder/agemon-founder-pricing/LICENSE +21 -0
- package/assets/skills/founder/agemon-founder-pricing/NOTICE.md +12 -0
- package/assets/skills/founder/agemon-founder-pricing/SKILL.md +92 -0
- package/assets/skills/founder/agemon-founder-pricing/van_westendorp.py +172 -0
- package/assets/skills/geo-seo/geo/LICENSE +21 -0
- package/assets/skills/geo-seo/geo/NOTICE.md +18 -0
- package/assets/skills/geo-seo/geo/SKILL.md +145 -0
- package/assets/skills/geo-seo/geo-audit/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-audit/NOTICE.md +17 -0
- package/assets/skills/geo-seo/geo-audit/SKILL.md +371 -0
- package/assets/skills/geo-seo/geo-audit/references/ai-visibility.md +233 -0
- package/assets/skills/geo-seo/geo-audit/references/content.md +329 -0
- package/assets/skills/geo-seo/geo-audit/references/platform-analysis.md +294 -0
- package/assets/skills/geo-seo/geo-audit/references/schema.md +383 -0
- package/assets/skills/geo-seo/geo-audit/references/technical.md +368 -0
- package/assets/skills/geo-seo/geo-brand-mentions/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-brand-mentions/NOTICE.md +15 -0
- package/assets/skills/geo-seo/geo-brand-mentions/SKILL.md +459 -0
- package/assets/skills/geo-seo/geo-citability/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-citability/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-citability/SKILL.md +320 -0
- package/assets/skills/geo-seo/geo-content/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-content/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-content/SKILL.md +352 -0
- package/assets/skills/geo-seo/geo-crawlers/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-crawlers/NOTICE.md +15 -0
- package/assets/skills/geo-seo/geo-crawlers/SKILL.md +388 -0
- package/assets/skills/geo-seo/geo-llmstxt/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-llmstxt/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-llmstxt/SKILL.md +433 -0
- package/assets/skills/geo-seo/geo-platform-optimizer/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-platform-optimizer/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-platform-optimizer/SKILL.md +282 -0
- package/assets/skills/geo-seo/geo-report/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-report/NOTICE.md +14 -0
- package/assets/skills/geo-seo/geo-report/SKILL.md +406 -0
- package/assets/skills/geo-seo/geo-report-pdf/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-report-pdf/NOTICE.md +20 -0
- package/assets/skills/geo-seo/geo-report-pdf/SKILL.md +153 -0
- package/assets/skills/geo-seo/geo-report-pdf/templates/geo-report-template.html +548 -0
- package/assets/skills/geo-seo/geo-schema/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-schema/NOTICE.md +16 -0
- package/assets/skills/geo-seo/geo-schema/SKILL.md +396 -0
- package/assets/skills/geo-seo/geo-technical/LICENSE +21 -0
- package/assets/skills/geo-seo/geo-technical/NOTICE.md +15 -0
- package/assets/skills/geo-seo/geo-technical/SKILL.md +566 -0
- package/assets/skills/output-style/agemon-adhd/LICENSE +21 -0
- package/assets/skills/output-style/agemon-adhd/NOTICE.md +13 -0
- package/assets/skills/output-style/agemon-adhd/SKILL.md +138 -0
- package/assets/skills/performance/agemon-performance/NOTICE.md +1 -0
- package/assets/skills/performance/agemon-performance/SKILL.md +76 -0
- package/assets/skills/security/agemon-security/LICENSE +21 -0
- package/assets/skills/security/agemon-security/NOTICE.md +8 -0
- package/assets/skills/security/agemon-security/SKILL.md +356 -0
- package/assets/skills/security/agemon-security-audit/AI-AND-LLM.md +83 -0
- package/assets/skills/security/agemon-security-audit/ATTACK-CLASSES.md +130 -0
- package/assets/skills/security/agemon-security-audit/CLIENT-SIDE.md +83 -0
- package/assets/skills/security/agemon-security-audit/CLOUD-AND-DEPLOYMENT.md +86 -0
- package/assets/skills/security/agemon-security-audit/DATA-ISOLATION-AND-LIFECYCLE.md +84 -0
- package/assets/skills/security/agemon-security-audit/DESKTOP-MOBILE-AND-LOCAL-IPC.md +89 -0
- package/assets/skills/security/agemon-security-audit/HUNTING.md +251 -0
- package/assets/skills/security/agemon-security-audit/LICENSE +21 -0
- package/assets/skills/security/agemon-security-audit/MEMORY-SAFETY-AND-BINARY.md +101 -0
- package/assets/skills/security/agemon-security-audit/NOTICE.md +12 -0
- package/assets/skills/security/agemon-security-audit/PROTOCOLS-RPC-AND-MESSAGING.md +81 -0
- package/assets/skills/security/agemon-security-audit/RECONNAISSANCE.md +156 -0
- package/assets/skills/security/agemon-security-audit/RESOURCE-EXHAUSTION-AND-AVAILABILITY.md +78 -0
- package/assets/skills/security/agemon-security-audit/SKILL.md +192 -0
- package/assets/skills/security/agemon-security-audit/SUPPLY-CHAIN-AND-RELEASE.md +73 -0
- package/assets/skills/security/agemon-security-audit/VALIDATION-AND-REPORTING.md +186 -0
- package/assets/skills/security/agemon-security-audit/WEB-PROTOCOL-AND-AUTH.md +105 -0
- package/assets/skills/security/agemon-security-audit/report-schema.json +461 -0
- package/assets/skills/security/agemon-security-audit/validate-coverage-ledger.cjs +872 -0
- package/assets/skills/security/agemon-security-audit/validate-findings.cjs +773 -0
- package/assets/skills/self-review/agemon-review-intake/LICENSE +21 -0
- package/assets/skills/self-review/agemon-review-intake/NOTICE.md +9 -0
- package/assets/skills/self-review/agemon-review-intake/SKILL.md +205 -0
- package/assets/skills/self-review/agemon-review-request/LICENSE +21 -0
- package/assets/skills/self-review/agemon-review-request/NOTICE.md +9 -0
- package/assets/skills/self-review/agemon-review-request/SKILL.md +104 -0
- package/assets/skills/self-review/agemon-review-request/code-reviewer.md +188 -0
- package/assets/skills/self-review/agemon-root-cause/LICENSE +21 -0
- package/assets/skills/self-review/agemon-root-cause/NOTICE.md +10 -0
- package/assets/skills/self-review/agemon-root-cause/SKILL.md +283 -0
- package/assets/skills/self-review/agemon-root-cause/condition-based-waiting-example.ts +158 -0
- package/assets/skills/self-review/agemon-root-cause/condition-based-waiting.md +115 -0
- package/assets/skills/self-review/agemon-root-cause/defense-in-depth.md +122 -0
- package/assets/skills/self-review/agemon-root-cause/find-polluter.sh +72 -0
- package/assets/skills/self-review/agemon-root-cause/root-cause-tracing.md +169 -0
- package/assets/skills/self-review/agemon-root-cause/test-academic.md +14 -0
- package/assets/skills/self-review/agemon-root-cause/test-pressure-1.md +58 -0
- package/assets/skills/self-review/agemon-root-cause/test-pressure-2.md +68 -0
- package/assets/skills/self-review/agemon-root-cause/test-pressure-3.md +69 -0
- package/assets/skills/self-review/agemon-verify-before-done/LICENSE +21 -0
- package/assets/skills/self-review/agemon-verify-before-done/NOTICE.md +9 -0
- package/assets/skills/self-review/agemon-verify-before-done/SKILL.md +120 -0
- package/assets/skills/team-lead/agemon-plan-rfc/SKILL.md +317 -0
- package/assets/skills/team-lead/prd-generator/SKILL.md +437 -0
- package/assets/skills/team-lead/skill-headofit-audit/SKILL.md +72 -0
- package/assets/skills/team-lead/skill-incident-rca/SKILL.md +66 -0
- package/assets/skills/team-lead/skill-meeting-lifecycle/SKILL.md +63 -0
- package/assets/skills/team-lead/skill-obsidian-vault-sync/SKILL.md +69 -0
- package/assets/skills/team-lead/skill-prd-decomposer/SKILL.md +71 -0
- package/assets/skills/team-lead/skill-sec-check/SKILL.md +70 -0
- package/assets/skills/team-lead/skill-task-extractor/SKILL.md +79 -0
- package/assets/skills/team-lead/skill-tech-spike/SKILL.md +57 -0
- package/assets/skills/team-lead/skill-techlead-reviewer/SKILL.md +81 -0
- package/assets/skills/workflow/agemon-brainstorming/LICENSE +21 -0
- package/assets/skills/workflow/agemon-brainstorming/NOTICE.md +14 -0
- package/assets/skills/workflow/agemon-brainstorming/SKILL.md +287 -0
- package/assets/skills/workflow/agemon-brainstorming/builder-check-prompt.md +23 -0
- package/assets/skills/workflow/agemon-dispatching-parallel-agents/LICENSE +21 -0
- package/assets/skills/workflow/agemon-dispatching-parallel-agents/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-dispatching-parallel-agents/SKILL.md +167 -0
- package/assets/skills/workflow/agemon-executing-plans/LICENSE +21 -0
- package/assets/skills/workflow/agemon-executing-plans/NOTICE.md +15 -0
- package/assets/skills/workflow/agemon-executing-plans/SKILL.md +322 -0
- package/assets/skills/workflow/agemon-executing-plans/scripts/task-done +55 -0
- package/assets/skills/workflow/agemon-executing-plans/scripts/task-start +32 -0
- package/assets/skills/workflow/agemon-finishing-a-development-branch/LICENSE +21 -0
- package/assets/skills/workflow/agemon-finishing-a-development-branch/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-finishing-a-development-branch/SKILL.md +225 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/LICENSE +21 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/NOTICE.md +15 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/SKILL.md +339 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/code-reviewer.md +198 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/implementer-prompt.md +154 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/re-review-prompt.md +116 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/batching.md +11 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/cannot-verify.md +10 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/final-review.md +49 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/fix-loop.md +77 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/handling-reports.md +15 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/preflight.md +26 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/resuming.md +12 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/role-scout.md +18 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/references/role-worker.md +19 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/review-package +64 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-repo +54 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/sdd-workspace +110 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/scripts/task-brief +108 -0
- package/assets/skills/workflow/agemon-subagent-driven-development/task-reviewer-prompt.md +209 -0
- package/assets/skills/workflow/agemon-test-driven-development/LICENSE +21 -0
- package/assets/skills/workflow/agemon-test-driven-development/NOTICE.md +14 -0
- package/assets/skills/workflow/agemon-test-driven-development/SKILL.md +330 -0
- package/assets/skills/workflow/agemon-test-driven-development/writing-good-tests.md +198 -0
- package/assets/skills/workflow/agemon-using-git-worktrees/LICENSE +21 -0
- package/assets/skills/workflow/agemon-using-git-worktrees/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-using-git-worktrees/SKILL.md +167 -0
- package/assets/skills/workflow/agemon-writing-plans/LICENSE +21 -0
- package/assets/skills/workflow/agemon-writing-plans/NOTICE.md +13 -0
- package/assets/skills/workflow/agemon-writing-plans/SKILL.md +204 -0
- package/assets/tools/code-review-graph-constraints.txt +1418 -0
- package/assets/tools/package-lock.json +111 -0
- package/assets/tools/package.json +6 -0
- package/dist/chunk-ZZBF3GOV.js +3451 -0
- package/dist/chunk-ZZBF3GOV.js.map +1 -0
- package/dist/fake-subprocess-IV4ML77S.js +636 -0
- package/dist/fake-subprocess-IV4ML77S.js.map +1 -0
- package/dist/index.js +23836 -1945
- package/dist/index.js.map +1 -1
- package/package.json +37 -17
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Recipe: Auth (Sign in / Sign up)
|
|
2
|
+
|
|
3
|
+
Outcome recipe for authentication surfaces. Small surface, zero tolerance: auth is used by 100% of users at their least patient moment, and it's where AI-generated UIs are most recognizable (full-bleed saturated brand panel, italic quote, "OR" divider). Field rules live in [forms.md](forms.md), component contracts in [components.md](components.md).
|
|
4
|
+
|
|
5
|
+
**Load [craft-intent.md](craft-intent.md)** — apply product-surface patterns (§4), default **DESIGN_VARIANCE 4**, pick one **signature bet** from craft-intent §3 auth list in the Craft Read before Step 1.
|
|
6
|
+
|
|
7
|
+
## Step 0 — Four inputs (defaults if unanswered)
|
|
8
|
+
|
|
9
|
+
| Input | Options | Default |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Brand surface | product has marketing presence worth showing / pure utility app | marketing presence |
|
|
12
|
+
| Auth methods | SSO-first (Google/GitHub/SAML) / email-first / both | both, SSO on top |
|
|
13
|
+
| Theme | preset from [themes.md](themes.md) or existing brand tokens | brand tokens if present, else derive from the brief |
|
|
14
|
+
| Variance | DESIGN_VARIANCE 1-10 | 4 |
|
|
15
|
+
| Signature bet | one from [craft-intent.md](craft-intent.md) §3 auth list | trust footer line or a domain-specific welcome line |
|
|
16
|
+
|
|
17
|
+
## Step 1 — Pick the composition
|
|
18
|
+
|
|
19
|
+
### Split panel (default — brand presence)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
┌──────────────────────────┬────────────────────┐
|
|
23
|
+
│ logo │ │
|
|
24
|
+
│ │ Welcome back │
|
|
25
|
+
│ ONE proof asset: │ sub, one line │
|
|
26
|
+
│ figure or detail from │ [SSO] [SSO] │
|
|
27
|
+
│ OR attributed quote │ ── or with email ─│
|
|
28
|
+
│ (pick one, not a deck) │ Email │
|
|
29
|
+
│ │ Password Forgot? │
|
|
30
|
+
│ │ [Sign in] │
|
|
31
|
+
│ trust footer (compliance)│ New here? link │
|
|
32
|
+
└──────────────────────────┴────────────────────┘
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Panel is a **tinted neutral surface** (gray-1 of the theme), NEVER a full-saturation brand flood — a wall of pure accent is the single loudest AI tell on auth screens, and it blows the entire accent budget on decoration. Panel content: one believable proof asset with real numbers or a real attribution. Trust line at the panel's foot (compliance, data residency) — sign-in is where users think about trust.
|
|
36
|
+
|
|
37
|
+
### Centered card (utility / in-product re-auth)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
┌───────────────────────────────────────────────┐
|
|
41
|
+
│ │
|
|
42
|
+
│ logo (small, centered) │
|
|
43
|
+
│ Welcome back │
|
|
44
|
+
│ [SSO buttons] │
|
|
45
|
+
│ ── or with email ── │
|
|
46
|
+
│ form card, 360-400px │
|
|
47
|
+
│ footer links │
|
|
48
|
+
│ │
|
|
49
|
+
└───────────────────────────────────────────────┘
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
No panel, no story — speed is the design. Card 360-400px, generous vertical rhythm, page background gray-1 with the card on white (or theme surfaces in dark).
|
|
53
|
+
|
|
54
|
+
## Step 2 — Form contract (non-negotiable)
|
|
55
|
+
|
|
56
|
+
- Form column **360-400px**. Wider reads as a document; narrower cramps the SSO row.
|
|
57
|
+
- **SSO buttons above email** when SSO is the dominant path — order by actual usage, not aesthetics. Equal visual weight between SSO providers (neutral outline buttons, real provider marks).
|
|
58
|
+
- Divider is lowercase, quiet: "or with email" — not "OR" shouting in caps.
|
|
59
|
+
- Labels above fields ([forms.md](forms.md)); "Forgot password?" inline with the password label, right-aligned — not buried under the button.
|
|
60
|
+
- **No required asterisks** — every field on an auth form is required; single-purpose familiar forms skip marking entirely ([forms.md](forms.md)).
|
|
61
|
+
- Password: show/hide toggle with `aria-label`. On sign-UP: live strength hint, validate-as-you-type with debounce; never a wall of "must contain" rules before the user types.
|
|
62
|
+
- Submit: full-width primary, verb label ("Sign in", "Create account") — the page's ONE accent-filled element. Stays enabled; validates on press ([forms.md](forms.md)).
|
|
63
|
+
- Error state: message below the offending field + border, focus moved to it. Auth errors stay honest but unspecific where security demands ("Email or password doesn't match") — and actionable where it doesn't (rate-limit: say when to retry).
|
|
64
|
+
- Cross-link the sibling flow ("New here? Start a free trial") — one line, after the submit.
|
|
65
|
+
|
|
66
|
+
## Step 3 — Sign-up deltas
|
|
67
|
+
|
|
68
|
+
- Ask the minimum: email + password (+ name only if the product needs it day one). Every extra field measurably increases drop-off — enrich the profile later, in-product.
|
|
69
|
+
- State what happens next under the CTA ("We'll send a verification link").
|
|
70
|
+
- Legal line (terms/privacy) in tertiary text under the CTA — present, quiet, real links.
|
|
71
|
+
- Multi-step signup (workspace, invites): apply the multi-step contract from [forms.md](forms.md) — cost upfront, easy→hard, progress.
|
|
72
|
+
|
|
73
|
+
## Acceptance bar
|
|
74
|
+
|
|
75
|
+
- [ ] Craft Read declared; variance 4 unless brief says otherwise; signature bet built in first pass
|
|
76
|
+
- [ ] Squint test: eye lands on the submit button; accent appears ONLY on submit + links
|
|
77
|
+
- [ ] No saturated full-bleed brand panel; panel (if any) is tinted neutral with one proof asset
|
|
78
|
+
- [ ] Form column 360-400px, labels above, no asterisks, divider lowercase
|
|
79
|
+
- [ ] "Forgot password?" findable without scanning; sibling flow cross-linked
|
|
80
|
+
- [ ] Submit enabled + validates on press; errors below fields, focus managed
|
|
81
|
+
- [ ] Keyboard: tab order top-to-bottom, Enter submits, focus visible on every control
|
|
82
|
+
- [ ] Trust signals present (compliance line or equivalent) and honest
|
|
83
|
+
- [ ] Works at 320px wide: panel drops, form survives alone
|
|
84
|
+
- [ ] Product patterns from craft-intent §4: tinted panel surface, one accent-filled element, honest error copy
|
|
85
|
+
|
|
86
|
+
## Cross-refs
|
|
87
|
+
|
|
88
|
+
[craft-intent.md](craft-intent.md) Craft Read, variance, auth signature bets · [forms.md](forms.md) field layout, validation, marking · [components.md](components.md) buttons, links · [themes.md](themes.md) surface tokens · [state-design.md](state-design.md) loading/error states for the submit roundtrip
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Recipe: SaaS Dashboard
|
|
2
|
+
|
|
3
|
+
An outcome recipe is a build contract, not a rule list: follow it top to bottom and the result is shippable without a design retouch pass. Rules live in [dashboard.md](dashboard.md), [dataviz.md](dataviz.md), and [tokens.md](tokens.md) — this file decides **composition**: which layout, which defaults, in what order, and what "done" means.
|
|
4
|
+
|
|
5
|
+
**Who this serves:** the zero-questions path produces a strong default for users who don't design. Every default below is overridable — users who do design treat the compositions as skeletons and go from there.
|
|
6
|
+
|
|
7
|
+
**Load [craft-intent.md](craft-intent.md)** — apply product-surface patterns (§4), default **DESIGN_VARIANCE 4**, pick one **signature bet** from craft-intent §3 (product list) in the Craft Read before Step 1.
|
|
8
|
+
|
|
9
|
+
## Step 0 — Three inputs (defaults if unanswered)
|
|
10
|
+
|
|
11
|
+
Ask once, in one compact prompt. If the user declines or says "you decide", apply the defaults — never block.
|
|
12
|
+
|
|
13
|
+
| Input | Options | Default |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Primary user + 60-second decision | exec ("are we winning?") / operator ("what needs action now?") / analyst ("why did X change?") | operator |
|
|
16
|
+
| Theme | one of the four presets in [themes.md](themes.md), or project's existing tokens | existing tokens if present, else derive from the brief |
|
|
17
|
+
| Density | VISUAL_DENSITY knob 1-10 | 7 |
|
|
18
|
+
| Variance | DESIGN_VARIANCE knob 1-10 | 4 |
|
|
19
|
+
| Signature bet | one from [craft-intent.md](craft-intent.md) §3 product list | nav active indicator or a motif drawn from the domain |
|
|
20
|
+
|
|
21
|
+
The first answer selects the composition. The persona is not cosmetic — it decides what the hero metric is and what gets buried ([dashboard.md](dashboard.md) "Ranking decisions").
|
|
22
|
+
|
|
23
|
+
## Step 1 — Pick the composition
|
|
24
|
+
|
|
25
|
+
Three named compositions. Don't invent a fourth unless the user's brief demands it — these cover the decision shapes that recur in production SaaS.
|
|
26
|
+
|
|
27
|
+
### Overview (exec)
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
┌──────┬──────────────────────────────────────┐
|
|
31
|
+
│ │ topbar: title · date range · avatar │
|
|
32
|
+
│ nav ├───────────────┬──────┬──────┬────────┤
|
|
33
|
+
│ │ HERO metric │ sup1 │ sup2 │ sup3 │
|
|
34
|
+
│ ├───────────────┴──────┴──────┴────────┤
|
|
35
|
+
│ │ trend area chart (2/3) │ breakdown │
|
|
36
|
+
│ │ │ h-bars 1/3 │
|
|
37
|
+
│ ├─────────────────────────┴────────────┤
|
|
38
|
+
│ │ table (top movers, 5-8 rows) ▼fold │
|
|
39
|
+
└──────┴──────────────────────────────────────┘
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
One hero answering "are we winning", 3 supports decomposing it, one trend, one breakdown. Table is below the fold on purpose — execs drill rarely. Charts large, tables small.
|
|
43
|
+
|
|
44
|
+
### Command (operator) — default
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
┌──────┬──────────────────────────────────────┐
|
|
48
|
+
│ │ topbar: title · global filter · ⌘K │
|
|
49
|
+
│ nav ├──────┬──────┬──────┬─────────────────┤
|
|
50
|
+
│ │ hero │ sup1 │ sup2 │ status strip │
|
|
51
|
+
│ ├──────┴──────┴──────┴─────────────────┤
|
|
52
|
+
│ │ filter row: ghost buttons · reset │
|
|
53
|
+
│ ├──────────────────────────────────────┤
|
|
54
|
+
│ │ WORK QUEUE table — dominant, 60%+ │
|
|
55
|
+
│ │ of viewport height ▼fold │
|
|
56
|
+
└──────┴──────────────────────────────────────┘
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The table IS the product: the operator acts on rows. Metric strip is compact (single row, small cards). Row actions visible on hover, keyboard navigable (j/k or arrows), status as 6px dots. Charts only as sparklines inside cards — a big trend chart steals space from the queue.
|
|
60
|
+
|
|
61
|
+
### Analytics (analyst)
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
┌──────┬──────────────────────────────────────┐
|
|
65
|
+
│ │ topbar: title · saved views · export │
|
|
66
|
+
│ nav ├──────────────┬───────────────────────┤
|
|
67
|
+
│ │ filter rail │ primary chart canvas │
|
|
68
|
+
│ │ (dimensions, │ (area or h-bars, │
|
|
69
|
+
│ │ segments, │ direct-labeled) │
|
|
70
|
+
│ │ compare) ├───────────────────────┤
|
|
71
|
+
│ │ │ segmented table ▼fold│
|
|
72
|
+
└──────┴──────────────┴───────────────────────┘
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Filters are first-class (left rail, not a toolbar row) because the analyst's job is slicing. Chart canvas re-renders on every filter change — show a 150ms opacity transition, never a spinner for operations under 400ms. Direct-label series, drop the legend ([dataviz.md](dataviz.md)).
|
|
76
|
+
|
|
77
|
+
## Step 2 — Shell spec (exact values)
|
|
78
|
+
|
|
79
|
+
- **Sidebar:** 240px (range 220-260). Subtle bg tint per [dashboard.md](dashboard.md) — never full dark outside Dark Premium. Collapses to 56px icon rail below 1024px, off-canvas below 768px.
|
|
80
|
+
- **Topbar:** 56px (range 48-64), same surface as content (no border-bottom heavier than 1px hairline).
|
|
81
|
+
- **Content:** padding 24px (density ≤4: 32px; ≥8: 16px), max-width none — dashboards use the viewport. 12-col grid, gap 16px (24px at density ≤4).
|
|
82
|
+
- **Card padding:** 16-20px. **Table rows:** 40-48px. Both from [dashboard.md](dashboard.md) Content Density.
|
|
83
|
+
- **Above the fold at 1440×900:** hero + supports + one more content type minimum. Three content types visible — non-negotiable.
|
|
84
|
+
|
|
85
|
+
## Step 3 — Component inventory
|
|
86
|
+
|
|
87
|
+
Build exactly these, to spec — each links to its contract:
|
|
88
|
+
|
|
89
|
+
1. Nav item (active = accent bg at 10% + accent text; `aria-current="page"`) — [dashboard.md](dashboard.md)
|
|
90
|
+
2. Metric card, two variants: primary (accent-tinted, 36px number) / secondary (neutral, 28px). Sparkline 32px. Change text plain tertiary — [dashboard.md](dashboard.md)
|
|
91
|
+
3. Area chart with gradient fill 15%→0, horizontal-only gridlines — [dashboard.md](dashboard.md) Chart Styling
|
|
92
|
+
4. Data table: status dots, right-aligned `tabular-nums` numbers, sentence-case headers, row hover — [dashboard.md](dashboard.md) Data Tables
|
|
93
|
+
5. Filter bar: ghost buttons, conditional "Reset" text link — [dashboard.md](dashboard.md)
|
|
94
|
+
6. Empty / loading / error states for EVERY data region — [state-design.md](state-design.md). Skeletons mirror final layout geometry, never generic gray boxes of arbitrary size.
|
|
95
|
+
|
|
96
|
+
**Libraries** (tools, not design authority — match the project's stack first): charts via Recharts/visx (React) or ECharts/Chart.js (otherwise); sparklines as inline SVG polylines, no library. Tables: headless (TanStack Table) + own markup; never a themed datagrid that fights the token system. Icons per SKILL.md rule 4.
|
|
97
|
+
|
|
98
|
+
## Step 4 — Build order
|
|
99
|
+
|
|
100
|
+
Token spine first, states before polish. Skipping ahead is how slop happens.
|
|
101
|
+
|
|
102
|
+
1. Tokens: apply theme preset or map existing tokens ([themes.md](themes.md), [tokens.md](tokens.md))
|
|
103
|
+
2. Shell: sidebar + topbar + grid, responsive collapse wired
|
|
104
|
+
3. Hero tier + supports (the squint test must already pass here)
|
|
105
|
+
4. Primary chart or work-queue table (per composition)
|
|
106
|
+
5. Remaining tiers
|
|
107
|
+
6. States: loading / empty / error / partial for every data region
|
|
108
|
+
7. Keyboard pass: focus-visible everywhere, table navigable, ⌘K if Command composition
|
|
109
|
+
8. Finish: run [finish-bar.md](finish-bar.md) passes 1-4 + 7 minimum (full bar at CRAFT_LEVEL ≥ 8)
|
|
110
|
+
|
|
111
|
+
## Acceptance bar — "would a designer retouch this?"
|
|
112
|
+
|
|
113
|
+
Ship only when every box checks. One unchecked = not done, no exceptions:
|
|
114
|
+
|
|
115
|
+
- [ ] Squint test: eye lands on exactly ONE thing first (the hero)
|
|
116
|
+
- [ ] One accent color, ≤5 placements in the viewport; everything else neutral
|
|
117
|
+
- [ ] ≥3 content types above the fold; NO equal-weight card grid anywhere
|
|
118
|
+
- [ ] Every number `tabular-nums`; every comparison plain secondary text (no pills, no arrows)
|
|
119
|
+
- [ ] Empty, loading, and error states exist and match layout geometry
|
|
120
|
+
- [ ] Date range or equivalent time control present on time-series surfaces
|
|
121
|
+
- [ ] Keyboard: tab order logical, focus visible, table rows reachable
|
|
122
|
+
- [ ] Sidebar tinted (not black), headers sentence case, no uppercase anywhere except 11-13px tracked labels
|
|
123
|
+
- [ ] Charts: correct type per data story, single-hue opacity ramp, no legend for single series
|
|
124
|
+
- [ ] Signature bet from Craft Read is built and visible (not deferred to polish)
|
|
125
|
+
- [ ] Product patterns from craft-intent §4: tinted sidebar, metric hierarchy, row context or sparkline on hero metric
|
|
126
|
+
- [ ] `prefers-reduced-motion` honored; all transitions ≤400ms
|
|
127
|
+
|
|
128
|
+
## Cross-refs
|
|
129
|
+
|
|
130
|
+
[dashboard.md](dashboard.md) component contracts · [dataviz.md](dataviz.md) chart science · [themes.md](themes.md) token presets · [state-design.md](state-design.md) state lattice · [finish-bar.md](finish-bar.md) finishing passes · [personas.md](personas.md) grounding the persona choice
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Recipe: Landing Page
|
|
2
|
+
|
|
3
|
+
Outcome recipe for marketing landing pages — composition, section grammar, and the bar that makes the result publishable without a design retouch. Component rules live in [components.md](components.md), copy rules in [copy.md](copy.md), pattern evidence in [inspiration.md](inspiration.md). This file decides what to build and in what order.
|
|
4
|
+
|
|
5
|
+
**Who this serves:** zero-questions path → strong default. Designers treat the compositions as skeletons.
|
|
6
|
+
|
|
7
|
+
**Portfolios / case studies:** use this recipe with **DESIGN_VARIANCE 8** (craft-intent default) — variable grid aspects, one hero project above fold, asymmetric about/contact. Marketing patterns (§5) apply; default composition is often message-forward or proof-forward with editorial type.
|
|
8
|
+
|
|
9
|
+
**Load [craft-intent.md](craft-intent.md)** and [inspiration.md](inspiration.md) hero archetypes — apply marketing patterns (§5), default **DESIGN_VARIANCE 7** (6 for waitlist-only), pick **signature bet** from craft-intent §3 marketing list in the Craft Read.
|
|
10
|
+
|
|
11
|
+
## Step 0 — Three inputs (defaults if unanswered)
|
|
12
|
+
|
|
13
|
+
| Input | Options | Default |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| What exists to show | live product (screenshots possible) / pre-launch (no product yet) / sales-led service | live product |
|
|
16
|
+
| Theme | a preset from [themes.md](themes.md) or existing brand tokens | brand tokens if present, else derive from the brief |
|
|
17
|
+
| One conversion action | trial signup / demo request / waitlist / purchase | trial signup |
|
|
18
|
+
| Variance | DESIGN_VARIANCE 1-10 | 7 (6 if pre-launch / waitlist only) |
|
|
19
|
+
| Signature bet | one from [craft-intent.md](craft-intent.md) §3 marketing list | derived from the brief: the product's own artifact, cropped or enlarged, or the one thing only this subject has |
|
|
20
|
+
|
|
21
|
+
The first answer selects the composition. One page, ONE conversion action — every section either advances it or gets cut.
|
|
22
|
+
|
|
23
|
+
## Step 1 — Decide what the fold argues, then pick its geometry
|
|
24
|
+
|
|
25
|
+
Two decisions, in this order, and they are not the same decision. **What the fold argues** is yours to choose from the brief. **How it is laid out** is picked by exclusion, not taste.
|
|
26
|
+
|
|
27
|
+
### 1a — What it argues
|
|
28
|
+
|
|
29
|
+
| Strategy | Lead with | Fold carries |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| **Product-forward** — live product to show | the product doing its job | badge (what's new, or none) · H1 2-3 lines · sub ≤2 sentences · primary + ghost CTA · one micro-trust line · a real product shot, cropped at the fold **and** an edge · at most one floating mini-card over it (live metric, notification) for depth |
|
|
32
|
+
| **Message-forward** — pre-launch, waitlist, no product to show | the claim, in language | H1 as the largest thing on the page · sub one sentence · email input with the join CTA attached to it · proof placed off-centre on purpose (avatars + count one side, badge the other) · an abstract motif rather than a screenshot |
|
|
33
|
+
| **Proof-forward** — sales-led, B2B service | evidence before argument | compact H1 + sub + demo CTA · an outcome strip of exactly 3 specific metrics in large numerals · a case block: quote + attributed face + numbers · capability rows alternating beneath |
|
|
34
|
+
|
|
35
|
+
No strategy is a default. A brief with a live product picks product-forward; a brief without one cannot.
|
|
36
|
+
|
|
37
|
+
### 1b — What it looks like
|
|
38
|
+
|
|
39
|
+
Pick a class the project's brief has not used yet (see `## Fold classes used` in the brief), and put `split` last. Do not pick by taste: asking a model for a composition returns its default every time, which is how eight builds in a row produced the same hero.
|
|
40
|
+
|
|
41
|
+
The six classes are geometric and orthogonal to 1a — `type-only`, `full-bleed-overlay`, `split`, `stacked`, `product-dominant`, `band`. Most strategies can be built as most classes. The exclusions are the ones where the geometry cannot carry the argument:
|
|
42
|
+
|
|
43
|
+
- **product-forward** cannot be `type-only` — no visual means no product
|
|
44
|
+
- **message-forward** cannot be `product-dominant` — nothing to dominate with
|
|
45
|
+
- **proof-forward** cannot be `full-bleed-overlay` — one dominating image cannot hold three metrics and a case block
|
|
46
|
+
|
|
47
|
+
Any other unused class is legitimate. If the class you pick fights the brief for a reason not listed above, say which reason in the Craft Read and pick again — do not silently substitute the shape you had in mind.
|
|
48
|
+
|
|
49
|
+
### 1c — Verify what you actually built
|
|
50
|
+
|
|
51
|
+
If you can run a browser, render the page and compare the fold you see with the class you committed to. If you cannot, say the check was not verified.
|
|
52
|
+
|
|
53
|
+
If they differ, the geometry drifted while you were writing. Fix the build to match the class, or record in the brief that the class changed and why. A declared class the code does not honour is worse than no declaration: it reads as compliance to anyone auditing the transcript.
|
|
54
|
+
|
|
55
|
+
Record the class in the brief's spent list ([brief.md](brief.md)) so the next landing in this project picks something else.
|
|
56
|
+
|
|
57
|
+
### Hero discipline (all compositions)
|
|
58
|
+
|
|
59
|
+
The hero is a single moment, not a feature list. Hard limits:
|
|
60
|
+
|
|
61
|
+
- **Max 4 text elements:** one eyebrow/badge (or none), headline (≤2 lines desktop), subtext (≤20 words, ≤4 lines), CTAs (1 primary + ≤1 secondary). If the value prop needs more than 20 words of subtext, the value prop is unclear — fix the copy, not the limit.
|
|
62
|
+
- **Plan font scale and asset together.** Headline >6 words with a large hero shot → start at 48-60px, not 72-80px. A 4-line hero headline is always a font-size error.
|
|
63
|
+
- **Nothing else rides the hero:** trust micro-strips, pricing teasers, feature bullets, avatar rows, and the logo wall all live in dedicated sections **below** the fold line. One micro-trust line under the CTAs is the ceiling.
|
|
64
|
+
- **The headline starts 18-30% down the fold, not at the top.** This used to read "top padding cap ~96px", and that cap was wrong: on a 900px viewport it puts the headline at 11%, which is where a dense app starts its content, not a landing. Measured on four surfaces whose design is the reason people copy them, the first headline pixel lands at **19%, 20%, 24% and 64%** of the fold. 18-30% is the working band; above 30% is a deliberate, centred composition and needs the rest of the fold to be nearly empty to earn it. On 900px that is **160-270px of clear space** above the eyebrow — an amount that feels wrong while you are writing the CSS and correct the moment you look at the render.
|
|
65
|
+
- **Ink density in the fold: 15-35 text nodes.** The same four measured 16, 34, 34 and 88 — and the 88 is a page whose fold is 68% one product screenshot, so its text is concentrated inside that image. A fold with 50 separate text nodes is a dashboard. Count them: if the fold has more than ~35, something in it belongs to the section below.
|
|
66
|
+
- **The hero asset is 30-70% of the fold, or it is absent.** Measured: 68%, 32%, 31%, and one page with no hero image at all. What does not work is the middle: a 4:1 letterbox band or a small framed card reads as a placeholder for a real asset. Either give the product most of the fold and crop it at the edge, or commit to type alone.
|
|
67
|
+
- **No decorative cues:** no "Scroll to explore", no ↓ arrows, no version badges (BETA, v0.6) unless the brief is literally a launch announcement, no mono-caps decoration strips at the hero foot.
|
|
68
|
+
|
|
69
|
+
Order, each answering ONE question; spacing 80-160px between majors, varied:
|
|
70
|
+
|
|
71
|
+
1. **Proof strip** — "do people like me use this?" Logos at low contrast + one specific stat ("teams cut X from 6h to 20min" beats "trusted by thousands").
|
|
72
|
+
2. **Feature rows × 2-3** — "what does it do for me?" Asymmetric alternating rows with REAL visuals (chart, flow, screenshot detail). NEVER a uniform 3-column icon grid — that's the #1 template tell.
|
|
73
|
+
3. **How it works / depth section** — "is it credible?" 3 steps max, or one technical diagram. Cut it if the product is self-evident.
|
|
74
|
+
4. **Pricing teaser or full pricing** — "can I afford it?" See pricing block below.
|
|
75
|
+
5. **Final CTA** — "ok, how do I start?" Restate the primary action + the micro-trust line. One section, not a wall.
|
|
76
|
+
6. **Footer** — boring on purpose. Sitemap, legal, socials. Footers that try to be clever bury the links people need. No fake version stamps (`v1.4.2`, `Build 0048`) — those are devtool fixtures, not marketing content.
|
|
77
|
+
|
|
78
|
+
**Layout-family budget.** A layout family (3-column cards, split text+image, full-width quote, bento, marquee) appears **at most once per page**; a page with 8 sections needs ≥4 distinct families. Max 2 consecutive image+text splits — the third consecutive zigzag is a fail; break it with a full-width section, a vertical stack, or a bento. "Selected work" must not look like "What we do".
|
|
79
|
+
|
|
80
|
+
**Eyebrow budget.** Max 1 uppercase tracked micro-label per 3 sections (hero counts as one). Mechanical check: count `uppercase` + wide-tracking labels above headings; if count > ceil(sections / 3), delete eyebrows until it passes — the headline alone is enough.
|
|
81
|
+
|
|
82
|
+
**Imagery is not optional.** Marketing pages are visual products; a text-only page is incomplete work, not minimalism. Priority order: (1) real product shots / brand assets, (2) image-generation tool if available in the environment, (3) clearly-labeled placeholder slots plus a list for the user of what's needed — never div-built fake screenshots or hand-drawn decorative SVG scenes. Logo walls use real SVG marks (both themes); invented brands get a simple monogram mark, never styled text wordmarks. Logos only — no industry labels printed under each logo.
|
|
83
|
+
|
|
84
|
+
**Pricing block rules** (when present): highlight the recommended plan (border/badge/size) without making siblings look irrelevant; sticky column headers on long comparison tables; tooltips on hover for feature jargon; discounts shown as % under $100 and absolute amounts above (perceived size); charm pricing where the brand tolerates it; scarcity only if genuinely true — faked urgency reads instantly and burns trust.
|
|
85
|
+
|
|
86
|
+
## Step 3 — Craft constraints (the ones landings break most)
|
|
87
|
+
|
|
88
|
+
- **CTA hierarchy is three levels that must not tie:** nav CTA ≠ hero primary ≠ section CTAs. Hero primary is the most prominent interactive element on the page ([components.md](components.md)).
|
|
89
|
+
- **Headline carries a dual benefit** where honest — immediate + long-term ("Answers today, confidence at month-end"). Front-load the key noun. No jargon: a stranger gets the value in one read.
|
|
90
|
+
- **One signature detail** — drawn underline on the key word, a custom marker, a motif from the brand mark. Exactly one.
|
|
91
|
+
- **Specific beats vague, everywhere:** metrics with units, named customers, real UI. Every "world-class/powerful/seamless" is a slot where evidence should be.
|
|
92
|
+
- **Gradients**: if used, adjacent hues only, plus subtle grain/noise to kill the flat plastic look. Never the purple-cyan template wash.
|
|
93
|
+
- **Copy budget:** no section over 2-3 sentences; CTAs are verb + outcome ("Start free trial", not "Get started" twice in different colors).
|
|
94
|
+
|
|
95
|
+
## Step 4 — Build order
|
|
96
|
+
|
|
97
|
+
1. Tokens (preset or brand) → 2. Nav + hero (squint test must pass with hero alone; then check the two numbers: headline top at 18-30% of the fold, and 4-6 distinct font sizes on the page with a 2.5x+ jump to display — see [typography.md](typography.md)) → 3. Proof strip → 4. Feature rows → 5. Pricing → 6. Final CTA + footer → 7. Responsive pass ([responsive.md](responsive.md) — hero stacks text-first on mobile, shot below, still cropped) → 8. Motion: entrances subtle, one scroll reveal per section max ([motion.md](motion.md)) → 9. Finish: [finish-bar.md](finish-bar.md) passes 1-4 + 8.
|
|
98
|
+
|
|
99
|
+
## Acceptance bar — publishable without retouching?
|
|
100
|
+
|
|
101
|
+
- [ ] Squint test on the hero: H1 → primary CTA, in that order; nothing competes
|
|
102
|
+
- [ ] One conversion action; every section advances it
|
|
103
|
+
- [ ] Product/visual cropped at fold or edge (scroll tease); no visual floating in dead air
|
|
104
|
+
- [ ] CTA hierarchy: 3 distinct levels, no ties
|
|
105
|
+
- [ ] At least one specific, attributed proof point; zero unattributed superlatives
|
|
106
|
+
- [ ] No uniform icon-card grid anywhere
|
|
107
|
+
- [ ] Section spacing 80-160px, varied; every section answers one question
|
|
108
|
+
- [ ] One signature detail, exactly one
|
|
109
|
+
- [ ] Mobile: hero readable without zoom, CTAs thumb-reachable, no horizontal scroll
|
|
110
|
+
- [ ] Craft Read declared; variance and signature bet match the built page
|
|
111
|
+
- [ ] No two adjacent sections share the same layout structure; no layout family repeats; ≤2 consecutive image+text splits
|
|
112
|
+
- [ ] Hero discipline: ≤4 text elements, subtext ≤20 words, headline ≤2 lines, logo wall below the hero
|
|
113
|
+
- [ ] Eyebrow count ≤ ceil(sections / 3); no numbered section eyebrows; no scroll cues
|
|
114
|
+
- [ ] One CTA label per intent across the page (nav, hero, footer reuse the same words); every CTA fits one line at desktop and passes AA contrast on its own background
|
|
115
|
+
- [ ] Real imagery where the composition calls for it; no div-built fake screenshots; logo wall is real SVG marks
|
|
116
|
+
- [ ] `prefers-reduced-motion` honored; entrances ≤400ms; no scroll-jacking
|
|
117
|
+
|
|
118
|
+
## Cross-refs
|
|
119
|
+
|
|
120
|
+
[inspiration.md](inspiration.md) observed patterns · [components.md](components.md) buttons, links, nav · [copy.md](copy.md) voice, CTAs, numbers · [themes.md](themes.md) presets · [recipe-dashboard.md](recipe-dashboard.md) when the hero shot needs a product UI worth showing
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Responsive & Adaptive Design
|
|
2
|
+
|
|
3
|
+
Adaptation is not just scaling — it's rethinking for each context.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Breakpoint Strategy: Content-Driven (Preferred)
|
|
8
|
+
|
|
9
|
+
Add breakpoints where the content breaks, not at conventional device widths. Container queries are the preferred mechanism — components respond to their container, not to the viewport.
|
|
10
|
+
|
|
11
|
+
```css
|
|
12
|
+
.card-container { container-type: inline-size; }
|
|
13
|
+
|
|
14
|
+
@container (min-width: 400px) {
|
|
15
|
+
.card { grid-template-columns: 1fr 2fr; }
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Use fluid sizing to eliminate most breakpoints entirely:
|
|
20
|
+
|
|
21
|
+
```css
|
|
22
|
+
/* Fluid font: 16px at 320px → 20px at 1200px */
|
|
23
|
+
font-size: clamp(1rem, 0.5rem + 1.5vw, 1.25rem);
|
|
24
|
+
|
|
25
|
+
/* Fluid spacing */
|
|
26
|
+
padding: clamp(1rem, 2vw, 3rem);
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For full container query patterns — style queries, named containers, when to prefer container over media queries — see [modern-css.md](modern-css.md).
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Breakpoint Strategy: Device Reference (Fallback)
|
|
34
|
+
|
|
35
|
+
When the project's existing system uses device breakpoints, match it. The conventional ranges:
|
|
36
|
+
|
|
37
|
+
- Mobile: < 768px
|
|
38
|
+
- Tablet: 768–1023px
|
|
39
|
+
- Desktop: 1024px+
|
|
40
|
+
|
|
41
|
+
Use these only when integrating with an existing system. New code should prefer container queries (see above).
|
|
42
|
+
|
|
43
|
+
### Verify Coverage
|
|
44
|
+
|
|
45
|
+
- Mobile, tablet, laptop, ultra-wide
|
|
46
|
+
- Portrait AND landscape
|
|
47
|
+
- Different browsers (Safari, Chrome, Firefox)
|
|
48
|
+
- iOS Low Power Mode, macOS Safari
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Mobile Adaptation (Desktop → Mobile)
|
|
53
|
+
|
|
54
|
+
### Layout
|
|
55
|
+
- Single column (not multi-column)
|
|
56
|
+
- Vertical stacking
|
|
57
|
+
- Full-width components
|
|
58
|
+
- Bottom navigation (not top/side)
|
|
59
|
+
|
|
60
|
+
### Interaction
|
|
61
|
+
- Touch targets **44x44px minimum**
|
|
62
|
+
- Swipe gestures only for reversible, spatially-implied actions — dismiss a sheet, page a carousel, reveal a row action. **Why:** a swipe leaves no visible affordance, so anything discovered only by swiping is undiscoverable to a first-time user, and anything destructive behind it is irreversible-by-accident. Every swipe needs a visible equivalent: a button, a menu item, or a drag handle.
|
|
63
|
+
- Bottom sheets instead of dropdowns
|
|
64
|
+
- **Thumbs-first design** — primary and navigational actions inside the bottom-center thumb zone; destructive or cancel actions deliberately OUTSIDE easy reach. **Why:** the thumb zone optimizes for the action you want repeated; placing "Delete" there optimizes for accidents.
|
|
65
|
+
- More spacing between interactive elements
|
|
66
|
+
|
|
67
|
+
### Content
|
|
68
|
+
- **Progressive disclosure** — don't show everything at once
|
|
69
|
+
- Secondary content in tabs/accordions
|
|
70
|
+
- Shorter, more concise text
|
|
71
|
+
- Minimum **16px font size** (prevents iOS zoom)
|
|
72
|
+
|
|
73
|
+
### Navigation
|
|
74
|
+
- Hamburger or bottom nav
|
|
75
|
+
- Reduce complexity
|
|
76
|
+
- Sticky headers for context
|
|
77
|
+
- Back button in flows
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Tablet Adaptation
|
|
82
|
+
|
|
83
|
+
- Two-column layouts (not single or three)
|
|
84
|
+
- Master-detail views (list + detail)
|
|
85
|
+
- Adaptive per orientation (portrait vs landscape)
|
|
86
|
+
- Support both touch and pointer
|
|
87
|
+
- Touch targets 44px but allow denser layouts than phone
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Desktop Adaptation (Mobile → Desktop)
|
|
92
|
+
|
|
93
|
+
### Layout
|
|
94
|
+
- Multi-column (use horizontal space)
|
|
95
|
+
- Side navigation: always visible on desktop (1024px+). On tablet (768–1023px): collapse to icon rail or persistent narrow sidebar. On mobile: collapse to a drawer or bottom-nav pattern. **Why:** primary navigation must remain discoverable; visible-by-default at desktop trades screen real estate for discoverability, while mobile trades discoverability for content room — both are correct in their context.
|
|
96
|
+
- Multiple information panels
|
|
97
|
+
- Max-width constraints (don't stretch to 4K)
|
|
98
|
+
|
|
99
|
+
### Interaction
|
|
100
|
+
- Hover states for additional info
|
|
101
|
+
- Keyboard shortcuts
|
|
102
|
+
- Right-click context menus
|
|
103
|
+
- Drag and drop, multi-select with Shift/Cmd
|
|
104
|
+
|
|
105
|
+
### Content
|
|
106
|
+
- Show more info upfront (less progressive disclosure)
|
|
107
|
+
- Data tables with many columns
|
|
108
|
+
- Richer visualizations
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Responsive Grid (No Breakpoints)
|
|
113
|
+
|
|
114
|
+
```css
|
|
115
|
+
.grid {
|
|
116
|
+
display: grid;
|
|
117
|
+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
118
|
+
gap: var(--space-lg);
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Responsive Images
|
|
125
|
+
|
|
126
|
+
```html
|
|
127
|
+
<picture>
|
|
128
|
+
<source media="(min-width: 768px)" srcset="large.webp">
|
|
129
|
+
<img src="small.webp" alt="..." width="600" height="400" loading="lazy">
|
|
130
|
+
</picture>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Viewport Units
|
|
136
|
+
|
|
137
|
+
Use `dvh` instead of `100vh` or Tailwind's `h-screen` for any surface meant to fill the viewport. Mobile browsers change the visible viewport height as the URL bar shows and hides — `100vh` measures the *largest* possible viewport and locks to it, so a full-height hero or modal ends up taller than what's actually visible and the bottom gets clipped behind the browser chrome. `dvh` (dynamic viewport height) tracks the real, current viewport instead.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Safe Areas
|
|
142
|
+
|
|
143
|
+
Any fixed or sticky element must respect `env(safe-area-inset-*)` on notched devices — a bottom nav bar or sticky CTA that ignores the inset sits under the home indicator or gets clipped by it.
|
|
144
|
+
|
|
145
|
+
```css
|
|
146
|
+
.fixed-bottom {
|
|
147
|
+
padding-bottom: env(safe-area-inset-bottom);
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Print Adaptation
|
|
154
|
+
|
|
155
|
+
- Remove navigation, footer, interactive elements
|
|
156
|
+
- Page breaks at logical points
|
|
157
|
+
- Expand shortened content (show full URLs)
|
|
158
|
+
- Black and white or limited color
|
|
159
|
+
- Add page numbers, headers, print date
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Never
|
|
164
|
+
|
|
165
|
+
- Don't hide core functionality on mobile — feature parity is the floor; if a feature is too complex for mobile, redesign the feature, don't hide it.
|
|
166
|
+
- Don't assume touch only on mobile — tablets and 2-in-1 laptops blur the line; design pointer-agnostic.
|
|
167
|
+
- Don't forget landscape orientation — mobile in landscape and tablet in portrait often have similar dimensions and need similar treatment.
|
|
168
|
+
- Don't ship horizontal scroll at any breakpoint without an explicit scroll affordance — accidental horizontal scroll is the most common AI-template responsive failure.
|