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,319 @@
|
|
|
1
|
+
# Heuristics — Severity-Ranked Review Methodology
|
|
2
|
+
|
|
3
|
+
Any skill can list anti-patterns. A heuristic review is a defensible artifact a PM can action: every finding names a heuristic or law, the element it applies to, the viewport it was seen at, and an impact tag. This file is the source of truth for the heuristic mode of `/agemon-design review` — the checklist, the laws, the output shape. It produces findings, not numbers: a figure computed from model judgment reads as a measurement it is not.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## How to Use
|
|
8
|
+
|
|
9
|
+
Run the full pass: Nielsen's 10 as a checklist → the 6 Design Laws as checks → rank findings by impact tag. Output is a findings table PMs can paste into any issue tracker.
|
|
10
|
+
|
|
11
|
+
Usability is not a knob. `CRAFT_LEVEL` does not relax these findings — a blocking problem is blocking at every craft level.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Finding Format
|
|
16
|
+
|
|
17
|
+
Every finding is one row: `| Heuristic or law | Element | Viewport | Finding | Impact |`.
|
|
18
|
+
|
|
19
|
+
- **Element** names the specific thing: "Save button in the settings form", not "the form".
|
|
20
|
+
- **Viewport** is where you saw it (desktop 1280, tablet 768, mobile 375, or "code only" if you did not render it).
|
|
21
|
+
- **Finding** is concrete: quote the text, count the elements, name the broken flow. Vague findings are rejected.
|
|
22
|
+
- A heuristic with nothing to report gets no row. Do not pad the table with praise.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Nielsen's 10 Usability Heuristics
|
|
27
|
+
|
|
28
|
+
Source: Nielsen, J. (1994). "10 Usability Heuristics for User Interface Design." Nielsen Norman Group.
|
|
29
|
+
|
|
30
|
+
### 1. Visibility of System Status
|
|
31
|
+
|
|
32
|
+
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time.
|
|
33
|
+
|
|
34
|
+
**What to look for:**
|
|
35
|
+
- [ ] Every async action has a loading state (spinner, progress, skeleton)
|
|
36
|
+
- [ ] Submit buttons disable + show progress while in flight
|
|
37
|
+
- [ ] Optimistic UI reconciles on server response (no silent failure)
|
|
38
|
+
- [ ] Navigation state is visible (active tab, breadcrumb, selected row)
|
|
39
|
+
- [ ] Long operations (>5s) escalate to progress percentage or estimate
|
|
40
|
+
|
|
41
|
+
**Common failures in AI-generated UIs:**
|
|
42
|
+
- Form submit has no loading state — user clicks 3-4x thinking nothing happened
|
|
43
|
+
- Toast appears then disappears before the user can read it
|
|
44
|
+
- No indication that a save succeeded ("did it work?")
|
|
45
|
+
|
|
46
|
+
### 2. Match Between System and the Real World
|
|
47
|
+
|
|
48
|
+
Speak the user's language — words, phrases, concepts they know. Follow real-world conventions.
|
|
49
|
+
|
|
50
|
+
**What to look for:**
|
|
51
|
+
- [ ] No system jargon in user-facing copy ("exception thrown", "null ref")
|
|
52
|
+
- [ ] Icons match cultural convention (trash = delete, not a cog)
|
|
53
|
+
- [ ] Dates are formatted for the user's locale, not ISO
|
|
54
|
+
- [ ] Error messages speak human, not stack trace
|
|
55
|
+
- [ ] Metaphors are consistent (folder, file, workspace)
|
|
56
|
+
|
|
57
|
+
**Common failures in AI-generated UIs:**
|
|
58
|
+
- "Submit payload" instead of "Save changes"
|
|
59
|
+
- "Entity not found" instead of "We couldn't find that project"
|
|
60
|
+
- Time displayed as `1713369600` (Unix) instead of `2 hours ago`
|
|
61
|
+
|
|
62
|
+
### 3. User Control and Freedom
|
|
63
|
+
|
|
64
|
+
Users often perform actions by mistake. They need a clearly marked emergency exit.
|
|
65
|
+
|
|
66
|
+
**What to look for:**
|
|
67
|
+
- [ ] Every destructive action has Undo (preferred) or a confirm dialog
|
|
68
|
+
- [ ] Modals close on Esc and on backdrop click
|
|
69
|
+
- [ ] Multi-step flows have Back without losing state
|
|
70
|
+
- [ ] Autosave preserves in-progress work on nav away
|
|
71
|
+
- [ ] URL reflects state so the back button works
|
|
72
|
+
|
|
73
|
+
**Common failures in AI-generated UIs:**
|
|
74
|
+
- Delete is instant and irreversible — no undo toast
|
|
75
|
+
- Modal traps the user; no way out without completing the form
|
|
76
|
+
- Browser back loses all form input
|
|
77
|
+
|
|
78
|
+
### 4. Consistency and Standards
|
|
79
|
+
|
|
80
|
+
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions.
|
|
81
|
+
|
|
82
|
+
**What to look for:**
|
|
83
|
+
- [ ] Primary action placement consistent across views (right side, solid fill)
|
|
84
|
+
- [ ] Same verb for same operation throughout ("Delete" always, not "Delete"/"Remove"/"Trash")
|
|
85
|
+
- [ ] Icon meanings stable across screens
|
|
86
|
+
- [ ] Form patterns match platform (e.g., Cmd+Enter submits on macOS)
|
|
87
|
+
|
|
88
|
+
**Common failures in AI-generated UIs:**
|
|
89
|
+
- Buttons swap position between modals (Cancel left here, right there)
|
|
90
|
+
- Three different words for "delete" in the same product
|
|
91
|
+
- Non-standard scroll hijacking on a standard content page
|
|
92
|
+
|
|
93
|
+
### 5. Error Prevention
|
|
94
|
+
|
|
95
|
+
Better than good error messages is a design that prevents the problem from occurring in the first place.
|
|
96
|
+
|
|
97
|
+
**What to look for:**
|
|
98
|
+
- [ ] Destructive actions require confirmation typed with the resource name
|
|
99
|
+
- [ ] Disabled states prevent invalid submissions (with explanation on hover)
|
|
100
|
+
- [ ] Input constraints enforced client-side (date pickers, typed inputs)
|
|
101
|
+
- [ ] Autosave + version history on content-creation surfaces
|
|
102
|
+
- [ ] Warn before leaving unsaved changes
|
|
103
|
+
|
|
104
|
+
**Common failures in AI-generated UIs:**
|
|
105
|
+
- Freeform "Are you sure?" confirms that users mindlessly click
|
|
106
|
+
- No validation until submit; user fills 12 fields then sees 4 errors
|
|
107
|
+
- Paste blocked on fields (password confirm, order IDs)
|
|
108
|
+
|
|
109
|
+
### 6. Recognition Rather Than Recall
|
|
110
|
+
|
|
111
|
+
Minimize the user's memory load by making objects, actions, and options visible.
|
|
112
|
+
|
|
113
|
+
**What to look for:**
|
|
114
|
+
- [ ] Recently used / favorited items surfaced
|
|
115
|
+
- [ ] Autocomplete on any field with a known set of answers
|
|
116
|
+
- [ ] Keyboard shortcuts listed in tooltips (not hidden in a help menu)
|
|
117
|
+
- [ ] Current selection persists visibly
|
|
118
|
+
- [ ] Empty states suggest next actions
|
|
119
|
+
|
|
120
|
+
**Common failures in AI-generated UIs:**
|
|
121
|
+
- Power-user shortcuts (Cmd+K) exist but are undiscoverable
|
|
122
|
+
- User must remember which tab they were on after a refresh
|
|
123
|
+
- Dropdown with 200 options and no search
|
|
124
|
+
|
|
125
|
+
### 7. Flexibility and Efficiency of Use
|
|
126
|
+
|
|
127
|
+
Accelerators — unseen by novice — may speed up the interaction for the expert.
|
|
128
|
+
|
|
129
|
+
**What to look for:**
|
|
130
|
+
- [ ] Keyboard shortcuts for frequent actions (Cmd+K, j/k nav)
|
|
131
|
+
- [ ] Bulk actions on lists (multi-select + batch operate)
|
|
132
|
+
- [ ] Saved views / filters / segments
|
|
133
|
+
- [ ] Customization for heavy users (column config, hotkeys)
|
|
134
|
+
- [ ] Paste-to-action patterns (URL paste auto-parses)
|
|
135
|
+
|
|
136
|
+
**Common failures in AI-generated UIs:**
|
|
137
|
+
- Forces the same flow for novice and expert
|
|
138
|
+
- No way to multi-select in lists of 100+
|
|
139
|
+
- Command palette missing on tools users will spend hours in
|
|
140
|
+
|
|
141
|
+
### 8. Aesthetic and Minimalist Design
|
|
142
|
+
|
|
143
|
+
Dialogues should not contain information that is irrelevant or rarely needed.
|
|
144
|
+
|
|
145
|
+
**What to look for:**
|
|
146
|
+
- [ ] Every section answers one question; no filler
|
|
147
|
+
- [ ] Visual weight proportional to importance
|
|
148
|
+
- [ ] One accent, 3-5 placements per viewport (see core-rules.md, Anti-Slop Test)
|
|
149
|
+
- [ ] White space is used, not avoided
|
|
150
|
+
- [ ] No decorative graphics competing with content
|
|
151
|
+
|
|
152
|
+
**Common failures in AI-generated UIs:**
|
|
153
|
+
- Hero has 4 CTAs of equal weight
|
|
154
|
+
- Every card has a colored top border
|
|
155
|
+
- Gradient backgrounds on every section
|
|
156
|
+
|
|
157
|
+
### 9. Help Users Recognize, Diagnose, and Recover From Errors
|
|
158
|
+
|
|
159
|
+
Error messages in plain language, precisely indicate the problem, and constructively suggest a solution.
|
|
160
|
+
|
|
161
|
+
**What to look for:**
|
|
162
|
+
- [ ] Errors appear inline, at the field, not as a global banner
|
|
163
|
+
- [ ] Messages specify what went wrong AND how to fix it
|
|
164
|
+
- [ ] Server errors include a copy-to-clipboard ID for support
|
|
165
|
+
- [ ] Recovery is one click (retry, undo, contact support)
|
|
166
|
+
- [ ] Network errors differ from validation errors
|
|
167
|
+
|
|
168
|
+
**Common failures in AI-generated UIs:**
|
|
169
|
+
- "Something went wrong" with no detail, no retry, no support path
|
|
170
|
+
- Red toast that disappears before the user reads it
|
|
171
|
+
- Error blames the user ("Invalid input") instead of explaining
|
|
172
|
+
|
|
173
|
+
### 10. Help and Documentation
|
|
174
|
+
|
|
175
|
+
Even though it is better if the system can be used without documentation, help may be necessary.
|
|
176
|
+
|
|
177
|
+
**What to look for:**
|
|
178
|
+
- [ ] Help is contextual, not a separate site the user must leave to
|
|
179
|
+
- [ ] Empty states double as onboarding ("Create your first project")
|
|
180
|
+
- [ ] Tooltips on non-obvious icons
|
|
181
|
+
- [ ] Inline help links in complex forms
|
|
182
|
+
- [ ] Searchable docs for deep features
|
|
183
|
+
|
|
184
|
+
**Common failures in AI-generated UIs:**
|
|
185
|
+
- No tooltips on icon-only buttons
|
|
186
|
+
- Help buried behind a "?" in the corner with a 404 behind it
|
|
187
|
+
- Onboarding is a 10-slide lightbox the user skips
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## The 6 Design Laws
|
|
192
|
+
|
|
193
|
+
Each is checked against a specific element. These are physics + psychology, not preferences — breaking them has measurable UX impact.
|
|
194
|
+
|
|
195
|
+
### Fitts's Law
|
|
196
|
+
|
|
197
|
+
Source: Fitts, P. M. (1954). "The information capacity of the human motor system in controlling the amplitude of movement."
|
|
198
|
+
|
|
199
|
+
**Statement:** Time to acquire a target is a function of its size and distance.
|
|
200
|
+
|
|
201
|
+
**When load-bearing:** Every tappable / clickable surface. Critical on mobile.
|
|
202
|
+
|
|
203
|
+
**What to look for:**
|
|
204
|
+
- **Holds when** touch targets ≥ 44px on mobile, ≥ 24px on desktop; primary CTA in the natural eye/thumb path; related actions grouped
|
|
205
|
+
- **Breaks when** touch targets under 44px mobile; destructive actions adjacent to primary actions; CTA placed far from where the user just looked
|
|
206
|
+
|
|
207
|
+
### Hick's Law
|
|
208
|
+
|
|
209
|
+
Source: Hick, W. E. (1952). "On the rate of gain of information."
|
|
210
|
+
|
|
211
|
+
**Statement:** Decision time grows logarithmically with the number of choices.
|
|
212
|
+
|
|
213
|
+
**When load-bearing:** Menus, navigation, plan selectors, form fields, dashboards.
|
|
214
|
+
|
|
215
|
+
**What to look for:**
|
|
216
|
+
- **Holds when** nav ≤ 7 items at any level; no field offers 20+ unfiltered options without search
|
|
217
|
+
- **Breaks when** 12+ top-nav items; a single select with 200 entries and no type-ahead; dashboard with 18 metrics at equal weight
|
|
218
|
+
|
|
219
|
+
### Doherty Threshold
|
|
220
|
+
|
|
221
|
+
Source: Doherty, W. J. & Thadani, A. J. (1982). "The Economic Value of Rapid Response Time." IBM.
|
|
222
|
+
|
|
223
|
+
**Statement:** Productivity soars when response time is under 400ms.
|
|
224
|
+
|
|
225
|
+
**When load-bearing:** Every user-initiated action. Critical on data-heavy views and transitions.
|
|
226
|
+
|
|
227
|
+
**What to look for:**
|
|
228
|
+
- **Holds when** perceived response < 400ms; optimistic UI for saves, likes, toggles; skeletons within 200ms
|
|
229
|
+
- **Breaks when** form submit shows a spinner for 2s with no optimistic state; nav click waits on full server round-trip before painting anything
|
|
230
|
+
|
|
231
|
+
### Cleveland-McGill Hierarchy
|
|
232
|
+
|
|
233
|
+
Source: Cleveland, W. S. & McGill, R. (1984). "Graphical Perception: Theory, Experimentation, and Application to the Development of Graphical Methods." JASA.
|
|
234
|
+
|
|
235
|
+
**Statement:** Humans decode visual encodings with different accuracy — position > length > angle > area > color-hue.
|
|
236
|
+
|
|
237
|
+
**When load-bearing:** Every chart, metric card, comparative dataviz.
|
|
238
|
+
|
|
239
|
+
**What to look for:**
|
|
240
|
+
- **Holds when** quantitative comparisons use position or length (bar, line, dot); color reserved for category; no pie or 3D
|
|
241
|
+
- **Breaks when** pie chart used for comparison; donut with ≥ 5 slices; color-gradient used to encode magnitude where length would work
|
|
242
|
+
|
|
243
|
+
### Miller's Law
|
|
244
|
+
|
|
245
|
+
Source: Miller, G. A. (1956). "The Magical Number Seven, Plus or Minus Two."
|
|
246
|
+
|
|
247
|
+
**Statement:** Humans hold ~7 (±2) items in working memory. Chunking extends this.
|
|
248
|
+
|
|
249
|
+
**When load-bearing:** Nav depth, form section counts, onboarding flows, step counts.
|
|
250
|
+
|
|
251
|
+
**What to look for:**
|
|
252
|
+
- **Holds when** navigation ≤ 7 items per level; forms chunked into ≤ 5 sections; multi-step flows ≤ 5 steps or with clear progress. (Wizard ceiling is 5, not 7: each step holds multiple fields, and each field consumes working-memory slots of its own.)
|
|
253
|
+
- **Breaks when** 14-item top nav; a single-page form with 23 ungrouped fields; a checkout with 9 steps and no progress indicator
|
|
254
|
+
|
|
255
|
+
### Tesler's Law
|
|
256
|
+
|
|
257
|
+
Also called the Law of Conservation of Complexity. Attributed to Larry Tesler.
|
|
258
|
+
|
|
259
|
+
**Statement:** Every application has an irreducible amount of complexity. The only question is who deals with it — the user, the UI, or the backend.
|
|
260
|
+
|
|
261
|
+
**When load-bearing:** Feature-rich tools. Configuration-heavy flows. Anywhere you're tempted to "expose a toggle."
|
|
262
|
+
|
|
263
|
+
**What to look for:**
|
|
264
|
+
- **Holds when** complexity absorbed by sensible defaults, automation, or backend inference; advanced controls behind progressive disclosure
|
|
265
|
+
- **Breaks when** UI exposes every backend knob; user must configure 8 things before they can accomplish the primary task; no default state, only empty forms
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Impact Tags
|
|
270
|
+
|
|
271
|
+
Every finding carries exactly one impact tag. This is how a PM prioritizes:
|
|
272
|
+
|
|
273
|
+
| Tag | Meaning | Example |
|
|
274
|
+
|-----|---------|---------|
|
|
275
|
+
| `blocks-conversion` | User cannot complete the core journey | Signup form submit silently fails on network error |
|
|
276
|
+
| `adds-friction` | User completes but abandonment rate rises | Submit button has no loading state; users click 3-4x |
|
|
277
|
+
| `reduces-trust` | Quality signal — affects retention | Typos in error messages; inconsistent button styles |
|
|
278
|
+
| `minor-polish` | Craft layer only; no measurable user impact | Missing `tabular-nums` on a metric |
|
|
279
|
+
|
|
280
|
+
Rank findings in the final output by impact tag, not by heuristic order: `blocks-conversion > adds-friction > reduces-trust > minor-polish`.
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Output Format
|
|
285
|
+
|
|
286
|
+
The heuristic review outputs **exactly** this structure. Do not invent new sections. Do not merge tables. Do not drop the ranking at the end. Do not add a score, grade or pass/fail verdict.
|
|
287
|
+
|
|
288
|
+
```markdown
|
|
289
|
+
## Heuristic Findings
|
|
290
|
+
|
|
291
|
+
| Heuristic | Element | Viewport | Finding | Impact |
|
|
292
|
+
|-----------|---------|----------|---------|--------|
|
|
293
|
+
| Visibility of system status | Submit button, signup form | mobile 375 | No loading state; users click 3-4x thinking nothing happened | adds-friction |
|
|
294
|
+
| User control and freedom | Delete confirm dialog, project list | desktop 1280 | Confirm exists but there is no undo after it lands | reduces-trust |
|
|
295
|
+
| Consistency and standards | Cancel button, billing modal | desktop 1280 | Cancel on the right here, on the left in every other modal | minor-polish |
|
|
296
|
+
| Flexibility and efficiency | Invoice list, 200+ rows | desktop 1280 | No bulk select | adds-friction |
|
|
297
|
+
| Error recovery | Error banner, checkout | mobile 375 | "Something went wrong" with no ID, no retry | blocks-conversion |
|
|
298
|
+
|
|
299
|
+
## Design Law Findings
|
|
300
|
+
|
|
301
|
+
| Law | Element | Viewport | Detail | Impact |
|
|
302
|
+
|-----|---------|----------|--------|--------|
|
|
303
|
+
| Fitts's Law | Primary CTA, pricing card | mobile 375 | 32px tall; expected ≥ 44px | adds-friction |
|
|
304
|
+
| Doherty Threshold | Save button, settings | desktop 1280 | Spinner for ~1.8s with no optimistic state | adds-friction |
|
|
305
|
+
| Tesler's Law | First-run form | desktop 1280 | 8 required config fields before the first action | reduces-trust |
|
|
306
|
+
|
|
307
|
+
## Top findings (ranked by impact)
|
|
308
|
+
|
|
309
|
+
1. Error recovery (blocks-conversion) — "Something went wrong" banner strands users in checkout on mobile; no ID, no retry, no support path
|
|
310
|
+
2. Fitts's Law (adds-friction) — primary CTA on the pricing card is 32px on mobile; raise to ≥ 44px
|
|
311
|
+
3. Doherty Threshold (adds-friction) — save feels broken on desktop; add optimistic UI
|
|
312
|
+
4. Flexibility and efficiency (adds-friction) — bulk select missing on the 200+ row invoice list
|
|
313
|
+
5. Visibility of system status (adds-friction) — signup submit has no loading state on mobile
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**Notes on output:**
|
|
317
|
+
- Use the short name for each heuristic (not the verbose Nielsen title). The heuristic is unambiguous from context.
|
|
318
|
+
- The `Top findings` list is a rank, not a re-listing. Include only findings at `reduces-trust` or worse. Cap at 5.
|
|
319
|
+
- Laws and heuristics that hold up get no row. If you want to say what is working, say it in one line after the ranking, not in the tables.
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# Patterns Observed in Mature SaaS Interfaces
|
|
2
|
+
|
|
3
|
+
Observational pattern analysis from production-grade SaaS landing pages, abstracted from source. All values extracted from real CSS. Section 6 ("What Mature Interfaces Never Do") is the highest-signal section — read it first.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Cross-Surface Patterns
|
|
8
|
+
|
|
9
|
+
Universal rules observed across the full sample. Treat as proven conventions.
|
|
10
|
+
|
|
11
|
+
| Pattern | Detail |
|
|
12
|
+
|---------|--------|
|
|
13
|
+
| **Product screenshots with real data** | Never mockups, illustrations, or abstract graphics. Show the actual product with realistic numbers and content. |
|
|
14
|
+
| **Specific metrics in social proof** | "Build times went from 7m to 40s" beats "Trusted by thousands." Quantify the transformation. |
|
|
15
|
+
| **Tabs or interactive sections for features** | Feature areas use tabs, toggles, or interactive demos — never identical 3-column card grids. |
|
|
16
|
+
| **Dual CTAs in the hero** | Primary action (solid) + secondary action (outline/ghost). "Start for free" + "Get a demo" pattern. |
|
|
17
|
+
| **One positioning statement** | Hero headline is a single sentence that defines what the product is. No paragraphs. |
|
|
18
|
+
| **Logo strips of real companies** | "Trusted by" followed by 5-8 recognizable, specific company logos. |
|
|
19
|
+
| **Minimal decoration** | Content IS the design. No ornamental gradients, blobs, or abstract shapes competing with the product. |
|
|
20
|
+
| **Changelog/velocity proof** | At least one section proves the product ships fast — changelogs, release notes, version timelines. |
|
|
21
|
+
| **Every section has a distinct layout** | No two adjacent sections share the same visual structure. Variety signals intentional design. |
|
|
22
|
+
| **Centered hero alignment** | Center-aligned heroes dominate mature SaaS. Left-aligned is less common. |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Hero Section Archetypes
|
|
27
|
+
|
|
28
|
+
Six recurring hero patterns. Each is named by structure, not by source.
|
|
29
|
+
|
|
30
|
+
### Archetype A — Minimal text-only
|
|
31
|
+
One large headline + subhead + 1-2 CTAs. No product visual in the viewport. Relies entirely on copy to communicate value. Works when the product name alone carries recognition or when the headline is provocative enough to pull the scroll.
|
|
32
|
+
|
|
33
|
+
- Headlines: 5-10 words, sentence case
|
|
34
|
+
- Subhead: 1-2 lines max, 18-20px, neutral-500
|
|
35
|
+
- CTAs: dual (solid primary + ghost secondary) or single strong action
|
|
36
|
+
- Below hero: immediate product proof (no filler sections)
|
|
37
|
+
|
|
38
|
+
**When it breaks:** products without brand recognition or a strong category-defining statement — the missing visual leaves new users with nothing to anchor on.
|
|
39
|
+
|
|
40
|
+
### Archetype B — Asymmetric headline + product screenshot
|
|
41
|
+
Left-aligned headline block, right-aligned product UI or screenshot. Gives a document/editorial feel. Communicates "the product is the proof" without centering the hero on pure copy.
|
|
42
|
+
|
|
43
|
+
- Layout: ~50/50 split or 40/60 text/visual
|
|
44
|
+
- Visual: high-fidelity product screenshot, not illustration
|
|
45
|
+
- Alignment: text left, visual right (rarely reversed)
|
|
46
|
+
|
|
47
|
+
**When it breaks:** products with complex UIs that don't read quickly at a glance — the visual confuses instead of proving.
|
|
48
|
+
|
|
49
|
+
### Archetype C — Product-first (full-width UI)
|
|
50
|
+
Minimal headline above or beside a massive full-width product screenshot or embedded interactive demo. The product IS the hero. Copy is secondary.
|
|
51
|
+
|
|
52
|
+
- Headline: minimal, often a single phrase or word
|
|
53
|
+
- Visual: takes 60-80% of above-the-fold height
|
|
54
|
+
- Can include real interactive elements, not just static images
|
|
55
|
+
|
|
56
|
+
### Archetype D — Bento grid hero
|
|
57
|
+
Positioning statement centered above a bento grid of product surfaces. Each card shows a different feature or UI. Communicates product breadth.
|
|
58
|
+
|
|
59
|
+
- Grid: mixed card sizes — one large card + 2-3 smaller
|
|
60
|
+
- Each card shows a distinct product surface
|
|
61
|
+
- Typography: headline centered above the grid
|
|
62
|
+
|
|
63
|
+
### Archetype E — Editorial figure
|
|
64
|
+
Value propositions presented as numbered editorial figures, labelled in the subject's own vocabulary (its real parts, stages or sections), not a generic figure label. Gives a technical publication feel. Strong for developer-focused products where "serious" positioning outweighs "approachable."
|
|
65
|
+
|
|
66
|
+
- Section labels: uppercase monospace or small-caps
|
|
67
|
+
- Layout: each figure gets a distinct visual treatment
|
|
68
|
+
- No uniform card grid
|
|
69
|
+
|
|
70
|
+
### Archetype F — Scrolling social proof strip
|
|
71
|
+
Hero text centered, immediately followed by a horizontally scrolling logo strip (continuous loop, not static). Makes "trusted by" feel dynamic and high-volume.
|
|
72
|
+
|
|
73
|
+
- Logos: monochrome or muted, not full-color
|
|
74
|
+
- Motion: CSS scroll animation, pauses on hover
|
|
75
|
+
- Placement: immediately below hero CTA block
|
|
76
|
+
|
|
77
|
+
**When it breaks:** early-stage products without recognizable logos — an empty or weak strip signals the opposite of trust.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 3. Feature Presentation Patterns
|
|
82
|
+
|
|
83
|
+
No mature SaaS product uses identical card grids for features.
|
|
84
|
+
|
|
85
|
+
### Tab-based feature sections
|
|
86
|
+
- Horizontal tabs or pills at the top of a section
|
|
87
|
+
- Each tab reveals completely different content (screenshot, demo, description)
|
|
88
|
+
- Prevents the monotonous 3-column icon+heading+text grid
|
|
89
|
+
|
|
90
|
+
**When it breaks:** more than 5-6 tabs — cognitive load exceeds the benefit of the interactive reveal.
|
|
91
|
+
|
|
92
|
+
### Bento grid (varied card sizes)
|
|
93
|
+
- Mixed card dimensions: one large card + 2-3 smaller cards
|
|
94
|
+
- Each card shows a different product surface
|
|
95
|
+
- Unequal sizing creates visual hierarchy within the grid
|
|
96
|
+
|
|
97
|
+
### Editorial figures
|
|
98
|
+
- Value propositions presented as numbered figures
|
|
99
|
+
- Each figure gets a distinct layout treatment
|
|
100
|
+
- Feels like a technical publication, not a marketing template
|
|
101
|
+
|
|
102
|
+
### Product-first (screenshots as features)
|
|
103
|
+
- Instead of describing features, embed the actual product
|
|
104
|
+
- Interactive demos, live UI, or high-fidelity screenshots
|
|
105
|
+
- The product IS the feature presentation
|
|
106
|
+
|
|
107
|
+
### Alternating text + visual rows
|
|
108
|
+
- Text on one side, visual (screenshot/demo) on the other
|
|
109
|
+
- Sides alternate per row to create rhythm
|
|
110
|
+
- Each visual is unique — chart, screenshot, code block
|
|
111
|
+
|
|
112
|
+
### Key principle
|
|
113
|
+
Every feature section should feel designed individually for that feature. If two feature blocks can be swapped without anyone noticing, the design is too uniform.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 4. Social Proof Patterns
|
|
118
|
+
|
|
119
|
+
| Pattern | Implementation |
|
|
120
|
+
|---------|----------------|
|
|
121
|
+
| **Logo strip** | Horizontal row of 5-8 company logos, monochrome or muted. "Trusted by" or "Used by teams at." |
|
|
122
|
+
| **Specific metrics** | Metric + customer name: "7m to 40s build times" next to company logo. |
|
|
123
|
+
| **Testimonial with identity** | Photo + name + title + company logo. Quote is specific, references the product feature. |
|
|
124
|
+
| **Customer count** | "Join 50,000+ teams" or similar, placed near CTA. |
|
|
125
|
+
| **Changelog as proof** | Release dates and features listed to show shipping velocity. |
|
|
126
|
+
|
|
127
|
+
### What makes social proof work
|
|
128
|
+
- **Specificity over volume** — one concrete metric beats "trusted by thousands"
|
|
129
|
+
- **Recognizable logos** — users infer quality from the companies they recognize
|
|
130
|
+
- **Real quotes with attribution** — name, role, company, photo. Generic praise without identity is worthless
|
|
131
|
+
- **Proximity to CTAs** — social proof placed directly before or after the call to action
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 5. Signature Details by Pattern Type
|
|
136
|
+
|
|
137
|
+
Concrete patterns observed in production. Each stands as a reusable technique.
|
|
138
|
+
|
|
139
|
+
### Card and surface treatment
|
|
140
|
+
- **Grid-line border aesthetic**: horizontal and vertical borders (`border-x`, `border-y` in Tailwind) with a custom grid-border color — creates a technical grid feel without background fills
|
|
141
|
+
- **Inset shadow for sunken surfaces**: `box-shadow: 0 2px 6px 0 rgba(0,0,0,0.2) inset` — signals an embedded or input-like container
|
|
142
|
+
- **Hairline card borders**: 1px `neutral-200` with a bottom-only `rgba(0,0,0,0.04)` shadow — separation without visual weight, common in card-heavy dashboard layouts
|
|
143
|
+
- **Bento card sizing ratio**: ~2:1 dominant card to minor cards; never all cards equal size
|
|
144
|
+
|
|
145
|
+
### Typography signatures
|
|
146
|
+
- **Display italics**: a common generated look (see [tells-2026-11.md](tells-2026-11.md)); use only when the content calls for emphasis, never as a habit
|
|
147
|
+
- **Negative letter-spacing on all headings** (see Section 7 for exact values)
|
|
148
|
+
- **Font weight distribution skewed to medium**: `font-weight: 500` as the dominant weight across UI, `600` for emphasis only, `700` reserved for hero scale
|
|
149
|
+
- **Section labels**: small, tracked-out uppercase labels are a common generated look ([tells-2026-11.md](tells-2026-11.md)); use one only when it names a real section the way the subject would, otherwise sentence case
|
|
150
|
+
|
|
151
|
+
### Color signatures
|
|
152
|
+
- **One accent, used sparingly**: accent color appears in CTAs and key interactive elements only — not in decorative elements
|
|
153
|
+
- **Nearly colorless base UI**: neutral-first palette; color reserved for status and brand accent
|
|
154
|
+
- **Dark mode via alpha overlays**: `color: rgba(255,255,255,0.9)`, `background: rgba(255,255,255,0.1)` on hover — avoids hardcoded dark-mode color values
|
|
155
|
+
- **Tinted neutral grays**: never pure `#000` or `#fff` as text; always cool-toned (see Section 7)
|
|
156
|
+
|
|
157
|
+
### Microinteraction signatures
|
|
158
|
+
- **Ring-halo hover**: `box-shadow: 0 0 0 4px var(--neutral-200)` instead of background color change — reads as "glowing" selection
|
|
159
|
+
- **Slide-up-fade entrance**: translate Y offset + opacity fade, 50ms staggered per item, 500ms duration
|
|
160
|
+
- **Hover lift**: `translateY(-2px)` + shadow growth at `150-200ms ease-out`
|
|
161
|
+
- **No `transition: all`**: always target specific properties — `transition: box-shadow, transform, opacity`
|
|
162
|
+
|
|
163
|
+
### Spacing signatures
|
|
164
|
+
- **Section rhythm**: 80-120px between sections
|
|
165
|
+
- **Card internal padding**: 24-40px
|
|
166
|
+
- **Card gaps**: 24-32px
|
|
167
|
+
- **Nav height**: 64px
|
|
168
|
+
- **Max content width**: 1080-1200px
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 6. What Mature Interfaces Never Do
|
|
173
|
+
|
|
174
|
+
Confirmed absent across the full observed sample:
|
|
175
|
+
|
|
176
|
+
| Anti-Pattern | Why It Fails |
|
|
177
|
+
|-------------|-------------|
|
|
178
|
+
| **Emoji icons in feature lists** | Looks unfinished. Production UIs use custom SVG icons or product screenshots. |
|
|
179
|
+
| **Colored gradient text** | None use rainbow or multi-color gradient text. Even dark-themed interfaces avoid it. |
|
|
180
|
+
| **Star ratings in testimonials** | Zero instances. All use quote + name + role + company. |
|
|
181
|
+
| **Identical 3-column feature cards** | No section repeats the same card layout for features. Each section is bespoke. |
|
|
182
|
+
| **Placeholder or generic text** | Every piece of text is specific to the product. No "lorem ipsum" energy. |
|
|
183
|
+
| **Bouncy/elastic animations** | Motion is subtle and functional. No bounce, no wiggle, no playful easing. |
|
|
184
|
+
| **Colored pill badges for metrics** | Metrics are displayed as plain text with clear hierarchy, not decorated badges. |
|
|
185
|
+
| **ALL CAPS headings** | Sentence case or title case throughout. No uppercase headings. |
|
|
186
|
+
| **Glassmorphism** | Not a single frosted-glass panel. Even dark-themed interfaces avoid it. |
|
|
187
|
+
| **Abstract blob/orb decorations** | Intentional branded gradients exist. Generic decorative blobs do not. |
|
|
188
|
+
| **Multiple competing accent colors** | One accent color, used consistently and sparingly. |
|
|
189
|
+
| **"Powered by" or tool attribution** | No marketing page advertises its own stack in the footer. |
|
|
190
|
+
| **Generic CTAs** | No "Learn more" or "Click here." Every CTA is specific: "Start for free", "Download", "Start Deploying". |
|
|
191
|
+
| **Walls of text** | No section has more than 2-3 sentences. Copy is ruthlessly concise. |
|
|
192
|
+
| **Pure black text** | None use `#000000`. Darkest text is cool gray — `#414552` or `#18181b` (zinc-900). |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 7. Reference Token Values
|
|
197
|
+
|
|
198
|
+
Values extracted from production CSS. Use as calibration for "what premium feels like in code." Where two observed systems differ significantly, both are shown with labels.
|
|
199
|
+
|
|
200
|
+
### Type scale ranges observed
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
Hero (76-94px): weight 700, line-height 1.05, letter-spacing -0.04em
|
|
204
|
+
Section (48-56px): weight 700, line-height 1.1, letter-spacing -0.03em
|
|
205
|
+
Card (24-32px): weight 600, line-height 1.2, letter-spacing -0.02em
|
|
206
|
+
Body (16-17px): weight 400, line-height 1.5, letter-spacing normal
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Pattern A (medium-dominant)**: `font-weight: 500` as primary UI weight (120+ instances), `600` for emphasis only, `700` avoided entirely.
|
|
210
|
+
**Pattern B (bold-dominant)**: `700` reserved for hero and section headings only; `400` for all body copy.
|
|
211
|
+
|
|
212
|
+
### Spacing scales observed
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
Section gaps: 80-120px
|
|
216
|
+
Card gaps: 24-32px
|
|
217
|
+
Card padding: 24-40px
|
|
218
|
+
Nav height: 64px
|
|
219
|
+
Max content width: 1080-1200px
|
|
220
|
+
Base unit: 4px
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Shadow stack examples
|
|
224
|
+
|
|
225
|
+
**Blue-gray tinted shadows** (never pure black):
|
|
226
|
+
```css
|
|
227
|
+
/* Resting */ box-shadow: rgb(64 68 82 / 8%) 0px 2px 5px 0px;
|
|
228
|
+
/* Hover */ box-shadow: rgb(64 68 82 / 8%) 0px 2px 5px 0px, rgb(64 68 82 / 8%) 0px 3px 9px 0px;
|
|
229
|
+
/* Focus */ box-shadow: 0 0 0 4px rgb(1 150 237 / 36%);
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Ring-halo hover** (neutral, no blue tint):
|
|
233
|
+
```css
|
|
234
|
+
box-shadow: 0 0 0 4px var(--neutral-200, #e5e5e5);
|
|
235
|
+
/* Tailwind: hover:ring-4 hover:ring-neutral-200 */
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**Inset sunken surface**:
|
|
239
|
+
```css
|
|
240
|
+
box-shadow: 0 2px 6px 0 rgba(0,0,0,0.2) inset;
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Border-radius observed
|
|
244
|
+
|
|
245
|
+
**Pattern A** (restrained):
|
|
246
|
+
```
|
|
247
|
+
Inputs: 4px | Buttons: 8px | Cards: 8-10px | Pills/badges: 999em
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Pattern B** (more generous):
|
|
251
|
+
```
|
|
252
|
+
Buttons: 8px (rounded-lg) | Cards: 12-16px (rounded-xl / rounded-2xl) | Badges: 9999px (rounded-full)
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
The difference teaches: card radius scales up proportionally with card size. Small cards (dashboard widgets) at 8px, large cards (feature showcase) at 12-16px.
|
|
256
|
+
|
|
257
|
+
### Color tinted-neutral examples
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
Text primary: #414552 (cool gray-700, NOT #000)
|
|
261
|
+
Text secondary: #687385 (cool gray-500)
|
|
262
|
+
Borders: #d5dbe1 (cool gray-150)
|
|
263
|
+
Surface: #f6f8fa (cool gray-50)
|
|
264
|
+
Brand accent: #625afa (purple-500 — one example; substitute project accent)
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Dark mode via alpha** (avoids hardcoded dark-mode palette):
|
|
268
|
+
```css
|
|
269
|
+
color: rgba(255,255,255,0.9); /* Tailwind: text-white/90 */
|
|
270
|
+
background: rgba(255,255,255,0.1); /* Tailwind: hover:bg-white/10 */
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Motion timing observed
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
Hover transitions: 150-200ms ease-out
|
|
277
|
+
Entrance animations: 500ms duration, 50ms staggered delay per item
|
|
278
|
+
Transform: translateY(-2px) on hover lift
|
|
279
|
+
Property targeting: box-shadow, transform, opacity — never transition: all
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Font pairing pattern** (display + system + mono):
|
|
283
|
+
```
|
|
284
|
+
Display headings: a face chosen for the brief's subject
|
|
285
|
+
Body: a readable sans or serif chosen for the same brief
|
|
286
|
+
Code/technical: a monospace, only if the content has code
|
|
287
|
+
```
|