@giljae/ag-lazyweb-skill 0.0.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.
@@ -0,0 +1,365 @@
1
+ ---
2
+ name: lazyweb-design-research
3
+ description: |
4
+ Deep design research combining Lazyweb's screenshot database with web research.
5
+ Produces a structured research report with downloaded reference screenshots.
6
+ Use when the user needs competitive analysis, best practices research, or wants
7
+ to understand how the best apps handle a specific design problem.
8
+ Trigger on: "best practices for", "how should I design", "what do top apps do",
9
+ "competitive analysis for", "design research on", "what works well for",
10
+ "research how others do".
11
+ allowed-tools:
12
+ - Bash
13
+ - Read
14
+ - Write
15
+ - Glob
16
+ - Grep
17
+ - WebSearch
18
+ - AskUserQuestion
19
+ - Agent
20
+ - browser_subagent
21
+ ---
22
+
23
+ # Lazyweb Design Research
24
+
25
+ Structured design research that identifies competitors, gathers real app screenshots,
26
+ and produces a report with downloaded visual references.
27
+
28
+ ## CRITICAL: Output Behavior
29
+
30
+ **This skill produces FILES, not a plan.** Regardless of whether you are in plan mode
31
+ or not, ALWAYS:
32
+
33
+ 1. Write the report to `.lazyweb/design-research/{topic}-{date}/report.md`
34
+ 2. Write the HTML to `.lazyweb/design-research/{topic}-{date}/report.html`
35
+ 3. Download references to `.lazyweb/design-research/{topic}-{date}/references/`
36
+ 4. Do NOT write research content into a plan file
37
+ 5. After saving, show the user a summary of findings and tell them where the files are
38
+ 6. Ask the user if the research looks good
39
+ 7. If in plan mode, exit plan mode after the user confirms — the research is done
40
+ 8. Suggest next steps: "You can now use this research to inform your implementation,
41
+ run `/lazyweb-design-improve` on your current design, or start building."
42
+
43
+ ## Antigravity Artifacts (PREVIEW)
44
+
45
+ After saving the `report.md`, ALWAYS create an Antigravity Artifact to show the user
46
+ the research in a beautiful, interactive layout. Use the `write_to_file` tool
47
+ with `IsArtifact: true` to display the content of `report.md` as a walkthrough
48
+ or research report.
49
+
50
+ ## When to Use This
51
+
52
+ - User wants to understand a design space before building
53
+ - User needs competitive analysis for a feature
54
+ - User asks "what are best practices for X"
55
+ - User wants to see how the best apps solve a specific problem
56
+
57
+ ## When NOT to Use This
58
+
59
+ - User just wants to see a few screenshots quickly → use `/lazyweb-quick-references`
60
+ - User has an existing design and wants improvement ideas → use `/lazyweb-design-improve`
61
+ - User wants creative/unconventional ideas → use `/lazyweb-design-brainstorm`
62
+
63
+ ## Lazyweb MCP Setup
64
+
65
+ Use the hosted Lazyweb MCP tools for all Lazyweb database access.
66
+
67
+ Required MCP tools:
68
+ - `lazyweb_search` — text search over mobile and desktop screenshots
69
+ - `lazyweb_find_similar` — more results like a known Lazyweb screenshot ID
70
+ - `lazyweb_compare_image` — visual search from `image_base64` + `mime_type` or `image_url`
71
+ - `lazyweb_health` — connectivity check
72
+
73
+ Before searching, verify MCP is available by listing tools and running
74
+ `lazyweb_health`.
75
+
76
+ **If Lazyweb MCP is not installed or auth fails:**
77
+ Tell the user: "Lazyweb MCP is not installed. Enable the global Lazyweb plugin or
78
+ get the free one-line install prompt at https://lazyweb.com/#pricing, paste it
79
+ into this agent, then rerun this skill."
80
+ Then proceed with web research only — the skill still works, just without Lazyweb's database.
81
+
82
+ ## Browse Setup (Use browser_subagent)
83
+
84
+ For capturing live web examples, Antigravity uses the `browser_subagent`.
85
+
86
+ 1. Launch `browser_subagent` with the task to navigate to the URL.
87
+ 2. Ask the subagent to take a full-page screenshot.
88
+ 3. Save the screenshot to `$REPORT_DIR/references/`.
89
+
90
+ Example task for subagent:
91
+ "Navigate to https://stripe.com/pricing, wait for animations to finish, and take a high-quality screenshot. Save it to /absolute/path/to/references/stripe-pricing.png"
92
+
93
+ ## Workflow
94
+
95
+ ### 1. Understand the Research Question
96
+
97
+ Before searching, clarify:
98
+ - What specific screen, flow, or feature are they researching?
99
+ - What's their product? (app type, platform, audience)
100
+ - Mobile or desktop/web patterns needed?
101
+
102
+ ### 2. Capture Current State (if applicable)
103
+
104
+ If the user is researching a specific page or app they're building (not a general topic),
105
+ capture the current state:
106
+
107
+ - **Running dev server or URL available:** Use preview/browse tools to screenshot it
108
+ - **Mobile app:** Ask user to provide a screenshot
109
+ - **No specific page:** Skip this step
110
+
111
+ Save as `$REPORT_DIR/references/current-state.png` and include it in the report
112
+ after the TL;DR as:
113
+
114
+ ```markdown
115
+ ## Current State
116
+ ![Current State](references/current-state.png)
117
+ *{Brief description of what we're looking at}*
118
+ ```
119
+
120
+ This grounds the entire report — the reader sees where we are before seeing where we could go.
121
+
122
+ ### 3. Identify Competitors and Adjacent Companies
123
+
124
+ Think about two groups:
125
+ - **Direct competitors** — apps that solve the same problem
126
+ - **Adjacent companies with great design** — apps in related spaces known for excellent UX (e.g., researching a fintech app? Look at Stripe, Linear, Notion for general design quality)
127
+
128
+ ### 4. Search Lazyweb
129
+
130
+ Call `lazyweb_search` multiple times with different angles:
131
+
132
+ ```json
133
+ {"query":"<specific screen/component>","limit":30}
134
+ {"query":"<screen type>","company":"<competitor>","limit":30}
135
+ {"query":"<screen type>","category":"<category>","limit":30}
136
+ {"query":"<screen type>","platform":"desktop","limit":30}
137
+ {"query":"<screen type>","platform":"mobile","limit":30}
138
+ {"query":"<different description of same thing>","limit":30}
139
+ {"query":"<even more specific variant>","limit":30}
140
+ ```
141
+
142
+ **Platform routing:** Lazyweb has both mobile app screenshots and desktop/web site screenshots.
143
+ - `--platform mobile` — mobile app screenshots only
144
+ - `--platform desktop` — desktop/web site screenshots only
145
+ - `--platform all` (default) — search both, results grouped desktop-first then mobile
146
+ - A mac app, SaaS dashboard, or web product → use `--platform desktop`
147
+ - An iPhone/Android app → use `--platform mobile`
148
+ - General research or cross-platform → omit (searches both)
149
+
150
+ Each result includes a `platform` field ("mobile" or "desktop") so you know the source.
151
+ Desktop results also include a `pageUrl` field with the original site URL.
152
+
153
+ **Assess quality:** `matchCount` 2/3 or 3/3 = strong. 1/3 = weak. `similarity` > 0.4 = good.
154
+
155
+ **Explore generously.** Run 3-5 searches minimum with different query angles. Cast a wide
156
+ net — you can filter later. Don't stop at the first search.
157
+
158
+ **HIGH BAR FOR REFERENCES:** Each Lazyweb result includes a `visionDescription` field —
159
+ a text description of what's actually in the screenshot. Read it.
160
+
161
+ **Rules for attaching references to the report:**
162
+ 1. Read `visionDescription` before using ANY screenshot
163
+ 2. The screenshot MUST directly illustrate the point you're making
164
+ 3. If `visionDescription` doesn't match your suggestion — DO NOT USE IT
165
+ 4. A report with 3 perfectly-matched references beats 10 loosely-related ones
166
+ 5. Better to have NO image than a mismatched one — describe the idea in text instead
167
+ 6. Never guess what's in a screenshot. If there's no visionDescription, skip it.
168
+ 7. Use `visionDescription` to write accurate captions — don't invent descriptions
169
+
170
+ Mismatched references destroy user trust faster than anything else.
171
+
172
+ ### 5. Search Connected Inspiration Libraries
173
+
174
+ Check if `~/.lazyweb/libraries.json` exists and has connected libraries:
175
+
176
+ ```bash
177
+ cat ~/.lazyweb/libraries.json 2>/dev/null
178
+ ```
179
+
180
+ If libraries are configured, search each one using the browse tool. For each library:
181
+
182
+ 1. Navigate to the library's search URL: `$LB goto "{searchUrl}"`
183
+ 2. Take a snapshot to understand the page: `$LB snapshot -i`
184
+ 3. Find the search input and type the research query: `$LB fill @eN "{query}"`
185
+ 4. Submit and wait for results: `$LB press Enter` then `$LB snapshot -i`
186
+ 5. Browse through results — click into the most relevant ones
187
+ 6. Screenshot the best results: `$LB screenshot "$REPORT_DIR/references/{library}-{company}-{screen}.png"`
188
+ 7. Note what's in each screenshot for accurate captions
189
+
190
+ **Quality bar**: Same as Lazyweb — only use screenshots that directly illustrate a point
191
+ in the report. A mismatched reference from Mobbin is just as bad as a mismatched one
192
+ from Lazyweb.
193
+
194
+ **If the library session has expired** (login wall, redirect to sign-in):
195
+ - Tell the user: "Your {library} session has expired. Run `/lazyweb-add-inspo-source` to reconnect."
196
+ - Skip this library and continue with the rest — don't block the research.
197
+
198
+ Label all library-sourced references in the report with the library name: `[Mobbin]`, `[Savee]`, etc.
199
+
200
+ ### 6. Web Research + Live Screenshot Capture (REQUIRED)
201
+
202
+ Lazyweb covers both mobile and desktop, but most research also needs recent trends,
203
+ expert analysis, and live examples from competitors. **Always do web research alongside
204
+ Lazyweb**, even when Lazyweb results are good.
205
+
206
+ **Step A — Find interesting URLs via WebSearch:**
207
+ - Search for "[topic] UX best practices [current year]"
208
+ - Search for "[topic] design patterns analysis"
209
+ - Search for "[competitor name] [screen type]"
210
+ - Search for "best [screen type] examples"
211
+
212
+ Collect 3-8 interesting URLs from the search results.
213
+
214
+ **Step B — Capture live screenshots from those URLs:**
215
+ For each interesting URL found in step A, visit the page and screenshot it.
216
+ Save directly to the report's references folder.
217
+
218
+ ```bash
219
+ if [ -x "$LB" ]; then
220
+ $LB goto "https://example.com/pricing"
221
+ $LB screenshot "$REPORT_DIR/references/example-pricing-page.png"
222
+ fi
223
+ ```
224
+
225
+ If the browse tool is not available, use `curl` to download any publicly accessible
226
+ screenshot URLs you find, or describe the page in the report without an image.
227
+
228
+ **This is not optional.** The report should have a MIX of Lazyweb database screenshots
229
+ AND live web captures. Lazyweb gives you curated, clean screenshots. Web captures give
230
+ you the latest, most current state of competitor sites.
231
+
232
+ **Platform balance rule:** Use `--platform desktop` or `--platform mobile` to match the
233
+ user's target platform. Aim for at least 50% same-platform references.
234
+
235
+ ### 7. Download References
236
+
237
+ Determine the absolute path for this report's directory:
238
+ ```bash
239
+ REPORT_DIR="$(pwd)/.lazyweb/design-research/{topic-slug}-{YYYY-MM-DD}"
240
+ mkdir -p "$REPORT_DIR/references"
241
+ ```
242
+
243
+ For each strong Lazyweb result, download the image:
244
+ ```bash
245
+ curl -sL "{imageUrl}" -o "$REPORT_DIR/references/{company}-{screen-slug}.png"
246
+ ```
247
+
248
+ For web-captured examples (from step 5B):
249
+ ```bash
250
+ if [ -x "$LB" ]; then
251
+ $LB goto "https://example.com"
252
+ $LB screenshot "$REPORT_DIR/references/{company}-{screen-slug}.png"
253
+ fi
254
+ ```
255
+
256
+ Cap at 30 images total. Name files descriptively: `stripe-pricing-page.png`, `linear-onboarding-step1.png`.
257
+
258
+ Label each reference with its source in the report: `[Lazyweb]` or `[Web]` so the
259
+ user knows the provenance.
260
+
261
+ ### 8. Write the Report
262
+
263
+ Write to `.lazyweb/design-research/{topic-slug}-{YYYY-MM-DD}/report.md`
264
+
265
+ **Reverse pyramid structure:** Lead with action, back into analysis. The reader should
266
+ get the answer in the first 30 seconds, then optionally dive deeper.
267
+
268
+ **Skip sections that don't apply.** A narrow question doesn't need all sections. Only include sections where you have real findings.
269
+
270
+ ```markdown
271
+ # Design Research: {Topic}
272
+
273
+ ## TL;DR
274
+ {2-3 sentences. The single most important finding and what to do about it.}
275
+
276
+ ## Current State
277
+ {Include ONLY if a current state screenshot was captured in step 2. Otherwise omit this section.}
278
+ ![Current State](references/current-state.png)
279
+ *{Brief description of what we're looking at}*
280
+
281
+ ## Recommendations / Next Steps
282
+ {What to implement, in priority order. Each recommendation tied to evidence below.
283
+ This is the ACTION section — specific, implementable guidance.}
284
+
285
+ 1. **{Recommendation}** — {Why, with reference to evidence}
286
+ 2. **{Recommendation}** — {Why}
287
+ 3. **{Recommendation}** — {Why}
288
+
289
+ **ASCII mockups:** For each recommendation, include a rough ASCII wireframe sketch
290
+ showing the proposed change. Keep them simple — box-drawing characters, just enough
291
+ to communicate the layout idea. Example:
292
+
293
+ ```
294
+ ┌─────────────────────────────┐
295
+ │ Logo [Sign In] │
296
+ ├─────────────────────────────┤
297
+ │ │
298
+ │ ┌─────┐ ┌─────┐ ┌─────┐ │
299
+ │ │ img │ │ img │ │ img │ │
300
+ │ └──┬──┘ └──┬──┘ └──┬──┘ │
301
+ │ Plan A Plan B Plan C │
302
+ │ │
303
+ │ [Get Started →] │
304
+ └─────────────────────────────┘
305
+ ```
306
+
307
+ These sketches help the user visualize the recommendation without needing to
308
+ open a design tool. They don't need to be pixel-perfect — just communicative.
309
+
310
+ ## Key Examples
311
+ {The visual centerpiece. Screenshot gallery with company, source, and 1-line insight.
312
+ Mix of Lazyweb and web-captured screenshots. Label each source.}
313
+
314
+ ![Stripe Pricing](references/stripe-pricing-page.png)
315
+ *Stripe — Toggle between monthly/annual, social proof above pricing tiers [Web]*
316
+
317
+ ![Linear Onboarding](references/linear-onboarding.png)
318
+ *Linear — Single question per screen, progress bar, minimal UI [Lazyweb]*
319
+
320
+ ## Patterns
321
+ {Common denominators — things the best examples share.
322
+ These are the "table stakes" for this design problem.}
323
+
324
+ ## Anti-Patterns
325
+ {What to avoid. Things that feel dated, confusing, or broken.
326
+ Specific examples from the research, not generic advice.}
327
+
328
+ ## Unique Angles
329
+ {The standout approaches. NOT the common pattern — the thing that
330
+ ONE company does that made you stop and look twice. The X100 detail.
331
+ Could be a micro-interaction, an unusual layout, a clever copy choice.}
332
+
333
+ ## Findings
334
+ {Deeper analysis of the research. How we arrived at the recommendations above.
335
+ What the research reveals about this problem space.}
336
+
337
+ ## Sources
338
+ {Compact list. Lazyweb screenshots are cited inline above.
339
+ Web sources listed here with URLs.}
340
+ ```
341
+
342
+ ### 9. Generate HTML Report
343
+
344
+ After writing report.md, generate a `report.html` alongside it for visual preview.
345
+ The HTML report should:
346
+ - Be a self-contained single HTML file with inline CSS (no external dependencies)
347
+ - Use clean, readable styling: system fonts, max-width 900px, comfortable line-height
348
+ - Reference images using RELATIVE paths (`references/filename.png`) — HTML files loaded
349
+ in a browser resolve relative paths correctly from their own directory
350
+ - Style images with rounded corners, subtle shadow, max-width that fits the layout
351
+ - Use a light blue callout box for the TL;DR section
352
+ - Include proper semantic HTML (h1, h2, h3, p, ul, ol, table)
353
+ - Make tables clean with light borders and header background
354
+ - Open the HTML file in the user's browser: `open "$REPORT_DIR/report.html"`
355
+
356
+ Tell the user where the report was saved. Mention they may want to add `.lazyweb/` to `.gitignore`.
357
+
358
+ ## Quality Calibration
359
+
360
+ - Lazyweb screenshots are evidence — you can see what a real app looks like
361
+ - Web articles are opinions — filter for quality
362
+ - Your synthesis is interpretation — label it as such
363
+ - Don't over-index on weak Lazyweb results (matchCount 1/3, similarity < 0.3)
364
+ - When the corpus is weak for a topic, say so. Don't pad with irrelevant results.
365
+ - A report with 5 strong references beats 20 weak ones
@@ -0,0 +1,300 @@
1
+ ---
2
+ name: lazyweb-quick-references
3
+ description: |
4
+ Find app screenshots and UI references quickly. Downloads results locally and
5
+ groups them by pattern. Use when the user wants to see examples of a specific
6
+ screen, UI element, or flow without a full research report.
7
+ Trigger on: "show me examples of", "how do other apps do", "design inspiration for",
8
+ "UI reference for", "what does X's app look like", "find screenshots of",
9
+ "show me how", "references for".
10
+ allowed-tools:
11
+ - Bash
12
+ - Read
13
+ - Write
14
+ - Glob
15
+ - Grep
16
+ - WebSearch
17
+ - AskUserQuestion
18
+ - Agent
19
+ - browser_subagent
20
+ ---
21
+
22
+ # Lazyweb Quick References
23
+
24
+ Find real app screenshots fast, download them locally, and group by pattern.
25
+ Lighter than design-research — no competitive analysis, no anti-patterns. Just find → group → show.
26
+
27
+ ## CRITICAL: Output Behavior
28
+
29
+ **This skill produces FILES, not a plan.** Regardless of whether you are in plan mode
30
+ or not, ALWAYS:
31
+
32
+ 1. Write the report to `.lazyweb/quick-references/{topic}-{date}/report.md`
33
+ 2. Write the HTML to `.lazyweb/quick-references/{topic}-{date}/report.html`
34
+ 3. Download references to `.lazyweb/quick-references/{topic}-{date}/references/`
35
+ 4. Do NOT write research content into a plan file
36
+ 5. After saving, show the user a summary and tell them where the files are
37
+ 6. Ask the user if the references look good
38
+ 7. If in plan mode, exit plan mode after the user confirms
39
+ 8. Suggest next steps: "You can now use these references to inform your design,
40
+ run `/lazyweb-design-research` for deeper analysis, or start building."
41
+
42
+ ## Antigravity Artifacts (PREVIEW)
43
+
44
+ After saving the `report.md`, ALWAYS create an Antigravity Artifact to show the user
45
+ the references in a beautiful, interactive layout. Use the `write_to_file` tool
46
+ with `IsArtifact: true` to display the content of `report.md` as a walkthrough
47
+ or reference collection.
48
+
49
+ ## When to Use This
50
+
51
+ - User wants to see a specific type of screen ("show me pricing pages")
52
+ - User wants visual references for what they're building
53
+ - User asks "what does X look like" or "how do other apps do Y"
54
+
55
+ ## When NOT to Use This
56
+
57
+ - User wants deep analysis, competitive research, or best practices → use `/lazyweb-design-research`
58
+ - User has an existing design and wants feedback → use `/lazyweb-design-improve`
59
+ - User wants creative/unconventional ideas → use `/lazyweb-design-brainstorm`
60
+
61
+ ## Lazyweb MCP Setup
62
+
63
+ Use the hosted Lazyweb MCP tools for all Lazyweb database access.
64
+
65
+ Required MCP tools:
66
+ - `lazyweb_search` — text search over mobile and desktop screenshots
67
+ - `lazyweb_find_similar` — more results like a known Lazyweb screenshot ID
68
+ - `lazyweb_compare_image` — visual search from `image_base64` + `mime_type` or `image_url`
69
+ - `lazyweb_health` — connectivity check
70
+
71
+ Before searching, verify MCP is available by listing tools and running
72
+ `lazyweb_health`.
73
+
74
+ **If Lazyweb MCP is not installed or auth fails:**
75
+ Tell the user: "Lazyweb MCP is not installed. Enable the global Lazyweb plugin or
76
+ get the free one-line install prompt at https://lazyweb.com/#pricing, paste it
77
+ into this agent, then rerun this skill."
78
+ Then proceed with web research only.
79
+
80
+ ## Browse Setup (Use browser_subagent)
81
+
82
+ For capturing live web examples, Antigravity uses the `browser_subagent`.
83
+
84
+ 1. Launch `browser_subagent` with the task to navigate to the URL.
85
+ 2. Ask the subagent to take a full-page screenshot.
86
+ 3. Save the screenshot to `$REPORT_DIR/references/`.
87
+
88
+ ## Workflow
89
+
90
+ ### 1. Capture Current State (if applicable)
91
+
92
+ If the user is looking for references for a specific page or app they're building
93
+ (not a general topic), capture the current state:
94
+
95
+ - **Running dev server or URL available:** Use preview/browse tools to screenshot it
96
+ - **Mobile app:** Ask user to provide a screenshot
97
+ - **No specific page:** Skip this step
98
+
99
+ Save as `$REPORT_DIR/references/current-state.png` and include it in the report
100
+ after the TL;DR as:
101
+
102
+ ```markdown
103
+ ## Current State
104
+ ![Current State](references/current-state.png)
105
+ *{Brief description of what we're looking at}*
106
+ ```
107
+
108
+ This grounds the collection — the reader sees what they have before seeing the references.
109
+
110
+ ### 2. Search Lazyweb
111
+
112
+ Call `lazyweb_search` 2-4 times with different angles:
113
+
114
+ ```json
115
+ {"query":"<query>","limit":30}
116
+ {"query":"<alternative framing>","limit":30}
117
+ {"query":"<more specific variant>","platform":"desktop","limit":30}
118
+ ```
119
+
120
+ **Query tips:**
121
+ - Think in concrete UI elements: "pricing page with toggle", "dark mode settings", "onboarding with progress bar"
122
+ - Use `--category` for domain filtering: "Health & Fitness", "Finance", "Productivity"
123
+ - Use `--company` to find specific apps: `--company "stripe"`
124
+ - Use `--fields high_design_bar` to filter for quality
125
+
126
+ **Platform routing:** Lazyweb has both mobile app screenshots and desktop/web site screenshots.
127
+ - `--platform mobile` — mobile app screenshots only
128
+ - `--platform desktop` — desktop/web site screenshots only
129
+ - `--platform all` (default) — search both, results grouped desktop-first then mobile
130
+ - A mac app, SaaS dashboard, or web product → use `--platform desktop`
131
+ - An iPhone/Android app → use `--platform mobile`
132
+ - General research or cross-platform → omit (searches both)
133
+
134
+ Each result includes a `platform` field ("mobile" or "desktop") so you know the source.
135
+ Desktop results also include a `pageUrl` field with the original site URL.
136
+
137
+ **Assess quality:** `matchCount` 2/3+ = strong. 1/3 = weak. `similarity` > 0.4 = good.
138
+
139
+ **Explore generously.** Don't stop at one search. Try 2-4 different phrasings to
140
+ cast a wide net. More raw material = better grouping.
141
+
142
+ **HIGH BAR FOR REFERENCES:** Each Lazyweb result includes a `visionDescription` field —
143
+ a text description of what's actually in the screenshot. Read it.
144
+
145
+ **Rules for attaching references:**
146
+ 1. Read `visionDescription` before using ANY screenshot
147
+ 2. The screenshot MUST directly illustrate the pattern you're grouping it under
148
+ 3. If `visionDescription` doesn't match — DO NOT USE IT
149
+ 4. Better to have fewer, perfectly-matched references than many loose ones
150
+ 5. Never guess what's in a screenshot — use `visionDescription` for captions
151
+ 6. If there's no visionDescription, skip the screenshot
152
+
153
+ Mismatched references destroy user trust faster than anything else.
154
+
155
+ ### 3. Search Connected Inspiration Libraries
156
+
157
+ Check if `~/.lazyweb/libraries.json` exists and has connected libraries:
158
+
159
+ ```bash
160
+ cat ~/.lazyweb/libraries.json 2>/dev/null
161
+ ```
162
+
163
+ If libraries are configured, search each one using the browse tool. For each library:
164
+
165
+ 1. Navigate to the library's search URL: `$LB goto "{searchUrl}"`
166
+ 2. Take a snapshot to understand the page: `$LB snapshot -i`
167
+ 3. Search for the topic: `$LB fill @eN "{query}"`
168
+ 4. Submit and wait for results: `$LB press Enter` then `$LB snapshot -i`
169
+ 5. Browse through results — screenshot the most relevant ones
170
+ 6. Save to: `$LB screenshot "$REPORT_DIR/references/{library}-{company}-{screen}.png"`
171
+
172
+ **Keep it fast**: This is the quick-references skill. Don't deep-dive into every result.
173
+ Grab the best 3-5 screenshots per library and move on.
174
+
175
+ **If the library session has expired** (login wall, redirect to sign-in):
176
+ - Tell the user: "Your {library} session has expired. Run `/lazyweb-add-inspo-source` to reconnect."
177
+ - Skip this library and continue with other sources.
178
+
179
+ Label all library-sourced references: `[Mobbin]`, `[Savee]`, etc.
180
+
181
+ ### 4. Web Research + Live Screenshot Capture
182
+
183
+ **Always supplement** Lazyweb with live web captures for the most current examples.
184
+
185
+ **Step A — Find URLs via WebSearch:**
186
+ - Search for "[screen type] design examples [current year]"
187
+ - Search for "[competitor] [screen type]"
188
+ Collect 2-5 interesting URLs.
189
+
190
+ **Step B — Capture live screenshots:**
191
+ ```bash
192
+ if [ -x "$LB" ]; then
193
+ $LB goto "https://example.com/page"
194
+ $LB screenshot "$REPORT_DIR/references/example-page.png"
195
+ fi
196
+ ```
197
+
198
+ If the browse tool is not available, describe web examples in the report without images.
199
+
200
+ **Platform balance:** Aim for at least 50% same-platform references.
201
+
202
+ ### 5. Download References
203
+
204
+ ```bash
205
+ REPORT_DIR="$(pwd)/.lazyweb/quick-references/{topic-slug}-{YYYY-MM-DD}"
206
+ mkdir -p "$REPORT_DIR/references"
207
+ ```
208
+
209
+ Download Lazyweb results, cap at 30 images:
210
+ ```bash
211
+ curl -sL "{imageUrl}" -o "$REPORT_DIR/references/{company}-{screen}.png"
212
+ ```
213
+
214
+ For web-captured examples:
215
+ ```bash
216
+ if [ -x "$LB" ]; then
217
+ $LB goto "https://example.com"
218
+ $LB screenshot "$REPORT_DIR/references/{company}-{screen}.png"
219
+ fi
220
+ ```
221
+
222
+ ### 6. Write Reference Document
223
+
224
+ Write to `.lazyweb/quick-references/{topic-slug}-{YYYY-MM-DD}/report.md`
225
+
226
+ **Reverse pyramid:** Lead with the patterns (the answer), then show the evidence.
227
+
228
+ ```markdown
229
+ # Quick References: {Topic}
230
+
231
+ ## TL;DR
232
+ {1 sentence — what the collection shows and the dominant pattern}
233
+
234
+ ## Current State
235
+ {Include ONLY if a current state screenshot was captured in step 1. Otherwise omit this section.}
236
+ ![Current State](references/current-state.png)
237
+ *{Brief description of what we're looking at}*
238
+
239
+ ## Patterns
240
+ {What the best examples have in common — the key takeaway.
241
+ Put this FIRST so the user gets the answer immediately.}
242
+
243
+ ## References
244
+
245
+ ### Pattern A: {Name}
246
+ ![Company Screen](references/company-screen.png)
247
+ *{Company} — {What this screen shows, 1 line} [{Lazyweb|Web}]*
248
+
249
+ ![Company2 Screen](references/company2-screen.png)
250
+ *{Company2} — {What this screen shows} [{Lazyweb|Web}]*
251
+
252
+ {What these have in common — 1-2 sentences}
253
+
254
+ ### Pattern B: {Name}
255
+ ...
256
+ ```
257
+
258
+ Group screenshots by visual or functional pattern. Don't just list them — show what connects them.
259
+ Label each reference `[Lazyweb]` or `[Web]` for provenance.
260
+
261
+ **ASCII mockups:** When describing patterns or suggesting how references apply to the user's
262
+ project, include rough ASCII wireframe sketches. Keep them simple — box-drawing characters,
263
+ just enough to communicate the layout idea. Example:
264
+
265
+ ```
266
+ ┌─────────────────────────────┐
267
+ │ Logo [Sign In] │
268
+ ├─────────────────────────────┤
269
+ │ │
270
+ │ ┌─────┐ ┌─────┐ ┌─────┐ │
271
+ │ │ img │ │ img │ │ img │ │
272
+ │ └──┬──┘ └──┬──┘ └──┬──┘ │
273
+ │ Plan A Plan B Plan C │
274
+ │ │
275
+ │ [Get Started →] │
276
+ └─────────────────────────────┘
277
+ ```
278
+
279
+ These sketches help the user visualize how a pattern could apply to their work
280
+ without needing to open a design tool. They don't need to be pixel-perfect — just communicative.
281
+
282
+ ### 7. Generate HTML Report
283
+
284
+ After writing report.md, generate a `report.html` alongside it for visual preview.
285
+ The HTML report should:
286
+ - Be a self-contained single HTML file with inline CSS (no external dependencies)
287
+ - Use clean, readable styling: system fonts, max-width 900px, comfortable line-height
288
+ - Reference images using RELATIVE paths (`references/filename.png`)
289
+ - Style images with rounded corners, subtle shadow, max-width that fits the layout
290
+ - Use a light blue callout box for the TL;DR section
291
+ - Open the HTML file in the user's browser: `open "$REPORT_DIR/report.html"`
292
+
293
+ Tell the user where the report was saved.
294
+
295
+ ### 8. Follow-up Strategies
296
+
297
+ - **"More like this"** → call `lazyweb_find_similar` with `{"screenshot_id":12345,"limit":10}`
298
+ - **"Same company"** → call `lazyweb_search` with `{"query":"<query>","company":"<name>","limit":30}`
299
+ - **"Different style"** → Rephrase query emphasizing the desired difference
300
+ - **"What about competitors?"** → Search for the same screen across different companies