saglitzdesign-mcp 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +191 -0
  3. package/dist/examples.js +67 -0
  4. package/dist/index.js +374 -0
  5. package/dist/knowledge.js +123 -0
  6. package/knowledge/books/design-of-everyday-things.md +155 -0
  7. package/knowledge/books/dont-make-me-think.md +154 -0
  8. package/knowledge/books/grid-typography-classics.md +152 -0
  9. package/knowledge/books/hooked-retention.md +196 -0
  10. package/knowledge/books/influence-persuasion.md +232 -0
  11. package/knowledge/books/positioning-messaging.md +178 -0
  12. package/knowledge/books/psychology-of-design.md +152 -0
  13. package/knowledge/books/refactoring-ui.md +157 -0
  14. package/knowledge/books/storybrand-copywriting.md +194 -0
  15. package/knowledge/components/buttons.md +90 -0
  16. package/knowledge/components/cards-lists-modals.md +63 -0
  17. package/knowledge/components/forms-inputs.md +61 -0
  18. package/knowledge/components/navigation.md +54 -0
  19. package/knowledge/craft/design-critique-scoring.md +237 -0
  20. package/knowledge/craft/typography-craft.md +177 -0
  21. package/knowledge/craft/ux-writing.md +185 -0
  22. package/knowledge/craft/visual-craft-standards.md +161 -0
  23. package/knowledge/design-languages/android-app-design.md +197 -0
  24. package/knowledge/design-languages/apple-hig-liquid-glass.md +94 -0
  25. package/knowledge/design-languages/design-tokens-theming.md +108 -0
  26. package/knowledge/design-languages/fluent-2.md +82 -0
  27. package/knowledge/design-languages/ios-app-design.md +205 -0
  28. package/knowledge/design-languages/macos-app-design.md +202 -0
  29. package/knowledge/design-languages/material-3.md +113 -0
  30. package/knowledge/design-languages/web-trends-2026.md +87 -0
  31. package/knowledge/examples/ios.json +299 -0
  32. package/knowledge/examples/web.json +321 -0
  33. package/knowledge/geo/geo-fundamentals.md +120 -0
  34. package/knowledge/geo/geo-tactics-checklist.md +148 -0
  35. package/knowledge/marketing/ad-creative.md +155 -0
  36. package/knowledge/marketing/branding-identity.md +153 -0
  37. package/knowledge/marketing/email-marketing.md +155 -0
  38. package/knowledge/patterns/mobile/android-patterns.md +181 -0
  39. package/knowledge/patterns/mobile/auth-patterns.md +69 -0
  40. package/knowledge/patterns/mobile/checkout-payments.md +77 -0
  41. package/knowledge/patterns/mobile/empty-states-buttons.md +80 -0
  42. package/knowledge/patterns/mobile/navigation-home.md +78 -0
  43. package/knowledge/patterns/mobile/onboarding-paywall.md +85 -0
  44. package/knowledge/patterns/mobile/settings-lists.md +71 -0
  45. package/knowledge/patterns/web/dashboards.md +141 -0
  46. package/knowledge/patterns/web/feature-sections.md +122 -0
  47. package/knowledge/patterns/web/hero-sections.md +121 -0
  48. package/knowledge/patterns/web/landing-signup.md +168 -0
  49. package/knowledge/patterns/web/pricing-sections.md +122 -0
  50. package/knowledge/patterns/web/social-proof-footer.md +156 -0
  51. package/knowledge/process/marketing-website-roadmap.md +72 -0
  52. package/knowledge/process/product-design-roadmap.md +117 -0
  53. package/knowledge/seo/on-page-seo.md +124 -0
  54. package/knowledge/seo/seo-for-designers.md +159 -0
  55. package/knowledge/seo/technical-seo.md +194 -0
  56. package/knowledge/ux/accessibility.md +68 -0
  57. package/knowledge/ux/color-systems.md +58 -0
  58. package/knowledge/ux/conversion-ux.md +78 -0
  59. package/knowledge/ux/mobile-ux.md +69 -0
  60. package/knowledge/ux/motion-microinteractions.md +67 -0
  61. package/knowledge/ux/principles-heuristics.md +57 -0
  62. package/knowledge/ux/spacing-layout.md +68 -0
  63. package/knowledge/ux/typography.md +63 -0
  64. package/package.json +63 -0
  65. package/scripts/regenerate-examples.md +61 -0
@@ -0,0 +1,67 @@
1
+ ---
2
+ id: motion-microinteractions
3
+ title: "Motion & Micro-interactions"
4
+ category: ux
5
+ platform: both
6
+ tags: [motion, animation, easing, micro-interactions, transitions]
7
+ sources: ["https://m3.material.io/styles/motion/overview", "https://developer.apple.com/design/human-interface-guidelines/motion"]
8
+ updated: 2026-07-08
9
+ ---
10
+
11
+ # Motion & Micro-interactions
12
+
13
+ Motion exists to explain (where did this come from?), confirm (did that work?), and delight (sparingly). If an animation does none of these, delete it.
14
+
15
+ ## Duration & easing (memorize)
16
+
17
+ | Interaction | Duration | Easing |
18
+ |---|---|---|
19
+ | Micro feedback (press, toggle, hover) | 100–150ms | ease-out |
20
+ | Small component (dropdown, tooltip, chip) | 150–200ms | ease-out |
21
+ | Medium (modal, sheet, drawer enter) | 250–300ms | ease-out / emphasized decelerate |
22
+ | Exit animations | ~2/3 of enter (dismiss fast) | ease-in |
23
+ | Screen transitions | 300–350ms | standard curve |
24
+ | Large/expressive (hero, celebration) | 400–600ms | spring |
25
+
26
+ - **Enter: ease-out** (fast start, gentle landing). **Exit: ease-in.** **Move: ease-in-out.** Never `linear` for UI (only for spinners/progress).
27
+ - Springs (natural, interruptible) are the modern default on mobile — iOS springs, Material 3 Expressive physics. Gesture-driven motion must track the finger 1:1 and be interruptible mid-flight.
28
+ - Nothing UI-blocking longer than ~400ms; users forgive slow apps less than plain ones.
29
+
30
+ ## What to animate
31
+
32
+ - **Only `transform` and `opacity`** (GPU-composited). Animating width/height/top/margin causes jank; if layout must move, use FLIP or `scale` illusions.
33
+ - Enter pattern: fade + 8–16px rise + optional 0.97→1 scale. Exit: fade + slight fall/scale.
34
+ - Stagger list entrances 20–40ms/item, cap total ≤400ms, first screenful only.
35
+ - Skeletons: shimmer 1–1.5s cycle; crossfade skeleton→content (~200ms).
36
+
37
+ ## Micro-interactions worth building
38
+
39
+ 1. Button press (scale 0.97 / ripple) — every tappable.
40
+ 2. Toggle thumb slide + track color (~150ms).
41
+ 3. Success moments: checkmark draw-in, brief confetti for milestone completions only.
42
+ 4. Pull-to-refresh with progressive indicator.
43
+ 5. Like/save: bounce + color pop (the Twitter-heart pattern).
44
+ 6. Input focus: border color + subtle ring transition (~150ms).
45
+ 7. Number changes: count-up/odometer for stats.
46
+ 8. Toast: slide+fade in, auto-dismiss 4–6s with pause on hover.
47
+
48
+ Celebration budget: one big moment per flow (onboarding done, first success). Confetti everywhere = confetti nowhere.
49
+
50
+ ## Page & scroll motion (web)
51
+
52
+ - Scroll-driven reveals: subtle (fade + ≤24px translate), once per element, never hide content from users who don't scroll perfectly.
53
+ - Parallax: ≤10–15% speed differential, hero only; disable for `prefers-reduced-motion`.
54
+ - Sticky/scroll-linked storytelling for marketing only; never scroll-jack (override native scroll speed/direction).
55
+ - View Transitions API for page-to-page continuity on web; shared-element transitions on mobile for list→detail (hero image morph).
56
+
57
+ ## Reduced motion (mandatory)
58
+
59
+ `prefers-reduced-motion: reduce` → kill translation/scale/parallax/auto-play; keep opacity crossfades ≤200ms; keep progress indicators. iOS/Android expose the same setting — respect it natively.
60
+
61
+ ## Anti-patterns
62
+
63
+ - Animation on every scroll tick; elements flying in from all four directions.
64
+ - >400ms blocking transitions between routine screens; easing `ease` everywhere by default.
65
+ - Looping attention-seeking animation near reading content (wiggling badges).
66
+ - Layout-shifting animation (bouncing accordions pushing content); spinners for <300ms operations (flash).
67
+ - Same celebration for trivial and major actions.
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: principles-heuristics
3
+ title: "UX Principles & Heuristics"
4
+ category: ux
5
+ platform: both
6
+ tags: [heuristics, usability, cognition, fitts-law, hicks-law]
7
+ sources: ["https://www.nngroup.com/articles/ten-usability-heuristics/", "https://lawsofux.com/"]
8
+ updated: 2026-07-08
9
+ ---
10
+
11
+ # UX Principles & Heuristics
12
+
13
+ The evaluation backbone. Every design review should walk these.
14
+
15
+ ## Nielsen's 10 heuristics (operationalized)
16
+
17
+ 1. **Visibility of system status** — every action gets feedback within 100ms; loading >1s shows progress; background work shows state (saving…/saved).
18
+ 2. **Match to the real world** — user vocabulary, not system vocabulary; natural ordering; familiar metaphors.
19
+ 3. **User control & freedom** — undo > confirm; back always works; easy exit from every flow; cancel long operations.
20
+ 4. **Consistency & standards** — internal consistency (one pattern per job) and platform conventions (don't reinvent share/back/tabs).
21
+ 5. **Error prevention** — constraints over corrections: good defaults, disabled-invalid combinations explained, confirm irreversible, autosave.
22
+ 6. **Recognition over recall** — show options, don't make users remember codes/paths; recently-used surfaces; visible state.
23
+ 7. **Flexibility & efficiency** — shortcuts for experts (keyboard, gestures, command palette) that stay invisible to novices; smart defaults for everyone.
24
+ 8. **Aesthetic & minimalist design** — every element competes for attention; cut what doesn't serve the current task.
25
+ 9. **Help users recognize & recover from errors** — plain-language errors: what happened, why, what to do; preserve user input.
26
+ 10. **Help & documentation** — contextual help at point of need (tooltips, inline hints) beats manuals.
27
+
28
+ ## Behavioral laws to apply
29
+
30
+ - **Fitts's Law**: important targets = big and close. Thumb zone on mobile (bottom half); screen edges/corners on desktop are "infinite" targets.
31
+ - **Hick's Law**: decision time grows with options. Progressive disclosure; recommended defaults; 3-tier pricing not 7.
32
+ - **Jakob's Law**: users spend most time on other sites — meet conventions, spend novelty budget only on your core differentiator.
33
+ - **Miller's Law / chunking**: group into 5–7 chunks (phone numbers, card numbers, nav sections).
34
+ - **Peak–end rule**: invest in the flow's peak moment and its ending (success states, confirmations, celebrations).
35
+ - **Von Restorff**: the one visually-different element gets remembered — that's why one primary CTA works.
36
+ - **Doherty threshold**: keep system response <400ms to keep users in flow; use optimistic UI where safe.
37
+ - **Goal-gradient**: show progress; users accelerate near completion (progress bars start pre-filled ~10%).
38
+ - **Tesler's Law**: complexity is conserved — absorb it in the system (autodetect, defaults) rather than pushing to users.
39
+
40
+ ## Cognitive load rules
41
+
42
+ - One primary job per screen. Screens that do everything do nothing.
43
+ - Progressive disclosure: advanced options behind "Show more"; wizard steps over mega-forms.
44
+ - Defaults do the work: 90% of users never change them — make defaults the recommended path.
45
+ - Blank-slate anxiety: never open on an empty canvas without a starting template/example.
46
+
47
+ ## Feedback timing budget
48
+
49
+ | Delay | Requirement |
50
+ |---|---|
51
+ | <100ms | Feels instant; no indicator needed |
52
+ | 100ms–1s | Subtle feedback (button state), no spinner |
53
+ | 1–3s | Spinner/skeleton |
54
+ | >3s | Progress + explanation; allow cancel |
55
+ | >10s | Progress + time estimate; allow backgrounding + notify |
56
+
57
+ Skeletons beat spinners for content layout; optimistic UI (assume success, reconcile on failure) beats both for social actions.
@@ -0,0 +1,68 @@
1
+ ---
2
+ id: spacing-layout
3
+ title: "Spacing, Grids & Layout"
4
+ category: ux
5
+ platform: both
6
+ tags: [spacing, grid, layout, whitespace, responsive]
7
+ sources: ["https://m3.material.io/foundations/layout/understanding-layout/overview", "https://developer.apple.com/design/human-interface-guidelines/layout"]
8
+ updated: 2026-07-08
9
+ ---
10
+
11
+ # Spacing, Grids & Layout
12
+
13
+ ## The 8-point system
14
+
15
+ All spacing, sizes, and positions on an 8px grid; 4px for fine adjustments (icon padding, tight label gaps).
16
+
17
+ Canonical scale: **4, 8, 12, 16, 24, 32, 48, 64, 96, 128**.
18
+
19
+ | Token | Use |
20
+ |---|---|
21
+ | 4 | icon↔label gap, chip padding |
22
+ | 8 | related elements (label↔input) |
23
+ | 12–16 | component internal padding; between fields |
24
+ | 24 | between component groups; card padding (roomy) |
25
+ | 32–48 | between subsections |
26
+ | 64–96(–128) | between page sections (marketing) |
27
+
28
+ **Proximity is grouping**: spacing must encode hierarchy — gap within a group < gap between groups, always. Most "cluttered" designs violate this, not the amount of content.
29
+
30
+ ## Screen margins & containers
31
+
32
+ - Mobile app: 16px side margins (20–24px roomier feel); iOS safe areas + Android gesture insets always respected.
33
+ - Web content container: 1140–1280px max-width for marketing; prose max 65–72ch; dashboards can go fluid with 24px gutters.
34
+ - Section vertical padding (marketing): 80–120px desktop, 48–64px mobile.
35
+
36
+ ## Grids
37
+
38
+ - Web: 12-column, 24px (desktop) / 16px (mobile) gutters. Columns for alignment discipline — content blocks span 6/8/12, not arbitrary widths.
39
+ - Mobile app: single column with consistent margins; 2-column card grids for galleries/dashboards (8–12px gap).
40
+ - Breakpoints (practical): 640 / 768 / 1024 / 1280. Design mobile-first; at each breakpoint reflow (stack→2-col→3-col), don't just shrink.
41
+ - Vertical rhythm: consistent section spacing multiplied from the same scale; align baselines across columns.
42
+
43
+ ## Layout patterns that work
44
+
45
+ - **F-pattern** for text-heavy pages (front-load first two paragraphs & left edge); **Z-pattern** for sparse hero layouts (logo → nav → visual → CTA).
46
+ - Alternating image/text rows ("zig-zag") for feature sections — cap at 3–4 before it gets monotonous; break with a full-width band or bento grid.
47
+ - Bento grids: mixed-size tiles in one gap system; every tile same radius/gap; 1–2 hero tiles max.
48
+ - Split-screen hero: 50/50 or 60/40 copy/visual; copy side carries the CTA above the fold.
49
+ - Sticky sidebar/summary (checkout, docs TOC) after content exceeds viewport.
50
+
51
+ ## Alignment rules
52
+
53
+ - Pick one left edge per screen region and never violate it by 1–2px — "almost aligned" reads as sloppy faster than unaligned.
54
+ - Optical alignment beats mathematical: icons/triangles need 1–2px nudges; text baseline alignment over bounding-box centering.
55
+ - Don't center-align multi-line body text or forms; center is for short display content.
56
+
57
+ ## Density modes
58
+
59
+ - Consumer/marketing: generous (1.5–2× the spacing you first try).
60
+ - Productivity/data tools: compact rows (32–40px), 8–12px paddings — but keep grouping ratios intact.
61
+ - If offering both, make density a token multiplier, not a redesign.
62
+
63
+ ## Anti-patterns
64
+
65
+ - Random values (13px, 18px, 27px) — every off-scale value is future inconsistency.
66
+ - Equal spacing everywhere (no hierarchy — the "gray soup" layout).
67
+ - Full-width text lines on desktop (>90ch), content hugging viewport edges on mobile.
68
+ - Horizontal page scroll at any breakpoint; fixed heights that clip translated/longer text.
@@ -0,0 +1,63 @@
1
+ ---
2
+ id: typography
3
+ title: "Typography — Scale, Pairing, Rhythm"
4
+ category: ux
5
+ platform: both
6
+ tags: [typography, fonts, type-scale, readability, variable-fonts]
7
+ sources: ["https://m3.material.io/styles/typography", "https://developer.apple.com/design/human-interface-guidelines/typography"]
8
+ updated: 2026-07-08
9
+ ---
10
+
11
+ # Typography — Scale, Pairing, Rhythm
12
+
13
+ Typography is 90% of interface design. Most "this looks off" problems are type problems.
14
+
15
+ ## Type scale (modern product default)
16
+
17
+ Build from 16px base with a ~1.2–1.25 ratio; round to sensible values:
18
+
19
+ | Token | Size / line-height | Use |
20
+ |---|---|---|
21
+ | display | 48–72px / 1.1, -2% tracking | Hero headlines (marketing) |
22
+ | h1 | 32–40px / 1.15–1.2 | Page title |
23
+ | h2 | 24–28px / 1.25 | Section |
24
+ | h3 | 20px / 1.3 | Subsection/card title |
25
+ | body-lg | 18px / 1.6 | Marketing body, intros |
26
+ | body | 16px / 1.5–1.6 | Default UI + reading text |
27
+ | body-sm | 14px / 1.45 | Secondary UI, table cells |
28
+ | caption | 12–13px / 1.4 | Meta, timestamps — never for primary content |
29
+
30
+ - Mobile: clamp display/h1 down ~30–40% (72→44, 40→28). Use CSS `clamp()` for fluid scaling.
31
+ - Never below 12px anywhere; never below 16px for mobile inputs (iOS zoom).
32
+ - Weights: 400 body, 500–600 UI emphasis/buttons, 600–700 headings. Avoid <400 under 18px.
33
+ - Hierarchy through **size + weight + color (3 levels: primary ~90% opacity, secondary ~60–65%, disabled ~38%)** — not through more fonts.
34
+
35
+ ## Readability rules
36
+
37
+ - Line length: 45–75 characters (~60ch ideal); set `max-width: 65ch` on prose.
38
+ - Line height: inverse to size — body 1.5–1.6, headings 1.1–1.25.
39
+ - Letter-spacing: slightly negative on large headings (-1–2%), neutral body, +2–8% only for small ALL-CAPS labels.
40
+ - Left-align body text; center only short headings/blurbs (≤3 lines).
41
+ - Paragraphs: space between (8–12px) or indent — not both.
42
+ - Numbers in tables/timers: `font-variant-numeric: tabular-nums`.
43
+
44
+ ## Font selection & pairing
45
+
46
+ - **One family is enough** for most products (headings via weight/size). Two max: distinctive heading + workhorse body.
47
+ - Safe modern UI families: Inter, Geist, SF Pro (iOS system), Roboto/Google Sans (Android), plus grotesques (Söhne-like) for brand.
48
+ - Pair by contrast, not similarity: geometric sans display + humanist sans body; serif display (editorial feel: Fraunces, Tiempos) + sans body.
49
+ - System font stacks are legitimate for apps: zero load cost, native feel.
50
+ - Platform: iOS uses SF Pro + Dynamic Type text styles (Large Title 34, Title1 28, Body 17, Caption 12); Material uses the 15-style role scale (Display/Headline/Title/Body/Label × L/M/S). Respect user font-size settings — support Dynamic Type / sp units.
51
+
52
+ ## Web font performance (SEO-relevant)
53
+
54
+ - WOFF2 only; subset to used scripts; ≤2 families, ≤4 total weight files — or one variable font.
55
+ - `font-display: swap` (or `optional` for strict CLS); preload the primary text font; self-host (no third-party CSS blocking).
56
+ - Match fallback metrics (`size-adjust`, `ascent-override`) to kill layout shift.
57
+
58
+ ## Anti-patterns
59
+
60
+ - 3+ typefaces; hierarchy expressed by ALL CAPS everywhere; justified text on web.
61
+ - Gray-on-gray body text below 4.5:1 "because aesthetic".
62
+ - Fixed px font sizes ignoring user preferences (use rem / Dynamic Type / sp).
63
+ - Thin (100–300) weights for UI text; decorative fonts for anything users must read fast.
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "saglitzdesign-mcp",
3
+ "version": "0.3.1",
4
+ "description": "SaglitzDesign — expert MCP server for mobile app & website design: UI, UX, buttons, design languages, SEO and GEO guidance backed by a curated knowledge base and real-world pattern research.",
5
+ "type": "module",
6
+ "bin": {
7
+ "saglitzdesign-mcp": "dist/index.js"
8
+ },
9
+ "main": "dist/index.js",
10
+ "files": [
11
+ "dist",
12
+ "knowledge",
13
+ "!knowledge/examples/images",
14
+ "scripts/regenerate-examples.md",
15
+ "LICENSE",
16
+ "README.md"
17
+ ],
18
+ "engines": {
19
+ "node": ">=18"
20
+ },
21
+ "scripts": {
22
+ "build": "tsc && chmod +x dist/index.js",
23
+ "dev": "tsx src/index.ts",
24
+ "start": "node dist/index.js",
25
+ "inspect": "npx @modelcontextprotocol/inspector node dist/index.js",
26
+ "prepublishOnly": "npm run build"
27
+ },
28
+ "keywords": [
29
+ "mcp",
30
+ "model-context-protocol",
31
+ "design",
32
+ "ui",
33
+ "ux",
34
+ "seo",
35
+ "geo",
36
+ "design-system",
37
+ "mobile-design",
38
+ "web-design",
39
+ "claude"
40
+ ],
41
+ "license": "MIT",
42
+ "homepage": "https://github.com/HalidSaglam/saglitzdesign-mcp#readme",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/HalidSaglam/saglitzdesign-mcp.git"
46
+ },
47
+ "bugs": {
48
+ "url": "https://github.com/HalidSaglam/saglitzdesign-mcp/issues"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "dependencies": {
54
+ "@modelcontextprotocol/sdk": "^1.12.0",
55
+ "zod": "^3.24.0"
56
+ },
57
+ "devDependencies": {
58
+ "@types/node": "^22.0.0",
59
+ "tsx": "^4.19.0",
60
+ "typescript": "^5.7.0"
61
+ },
62
+ "author": "Saglitz Design"
63
+ }
@@ -0,0 +1,61 @@
1
+ # Regenerating the visual example library
2
+
3
+ The `get_design_examples` tool serves real screenshots of design patterns.
4
+ Those image files are **not** shipped with this repo or the npm package — only
5
+ the metadata in `knowledge/examples/ios.json` and `knowledge/examples/web.json`
6
+ is. Without the images, the tool still works, degrading to description + source
7
+ link ("link mode").
8
+
9
+ If you have access to the [Mobbin](https://mobbin.com) MCP tools, you can
10
+ rebuild the local image library so `get_design_examples` returns real images.
11
+
12
+ ## Option A — let an agent do it (recommended)
13
+
14
+ In an MCP client that has both this filesystem and the Mobbin MCP connected,
15
+ give the agent this instruction:
16
+
17
+ > Load the Mobbin tools:
18
+ > `ToolSearch "select:mcp__mobbin__search_screens,mcp__mobbin__search_flows,mcp__mobbin__search_sections"`.
19
+ >
20
+ > For every entry in `knowledge/examples/ios.json` and
21
+ > `knowledge/examples/web.json`, find the matching screen on Mobbin (search by
22
+ > the entry's `app` + `pattern` + `title`), download its screenshot to the path
23
+ > in the entry's `image` field (relative to `knowledge/examples/`), and verify
24
+ > each file is a valid image over 15 KB. Do not change the JSON. Report how many
25
+ > images were restored and which entries could not be matched.
26
+
27
+ ## Option B — add your own examples
28
+
29
+ You don't need Mobbin at all. Append objects to either JSON file and drop the
30
+ image alongside:
31
+
32
+ ```json
33
+ {
34
+ "id": "web-hero-acme",
35
+ "title": "Acme — split hero with product demo",
36
+ "platform": "web",
37
+ "app": "Acme",
38
+ "pattern": "hero",
39
+ "description": "What this screen does well, concretely.",
40
+ "tags": ["hero", "landing", "cta", "demo"],
41
+ "mobbin_url": "https://…(or any source URL)",
42
+ "image": "images/web-hero-acme.jpg"
43
+ }
44
+ ```
45
+
46
+ Put the file at `knowledge/examples/images/web-hero-acme.jpg`. Rules the loader
47
+ enforces:
48
+
49
+ - `id`, `title`, `pattern`, `tags`, `image` are required; `mobbin_url` is the
50
+ shown source link.
51
+ - `platform` must be `ios` or `web`.
52
+ - If the image file is missing, the entry still loads and serves in link mode.
53
+ - JPEG and WebP are supported (`.jpg` / `.webp`).
54
+
55
+ Restart the server after adding files — the example index is built at startup.
56
+
57
+ ## Licensing note
58
+
59
+ Screenshots you collect are third‑party content. Keep them local; do not
60
+ commit them to a public repository or include them in a published package. The
61
+ `knowledge/examples/images/` directory is git‑ignored for exactly this reason.