@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.
- package/LICENSE +21 -0
- package/README.md +80 -0
- package/README_KO.md +80 -0
- package/index.js +8 -0
- package/lazyweb-add-inspo-source/SKILL.md +167 -0
- package/lazyweb-design-brainstorm/SKILL.md +370 -0
- package/lazyweb-design-improve/SKILL.md +337 -0
- package/lazyweb-design-research/SKILL.md +365 -0
- package/lazyweb-quick-references/SKILL.md +300 -0
- package/lazyweb-remove-inspo-source/SKILL.md +43 -0
- package/package.json +30 -0
- package/scripts/install.sh +41 -0
- package/scripts/uninstall.sh +31 -0
|
@@ -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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
315
|
+
*Stripe — Toggle between monthly/annual, social proof above pricing tiers [Web]*
|
|
316
|
+
|
|
317
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
247
|
+
*{Company} — {What this screen shows, 1 line} [{Lazyweb|Web}]*
|
|
248
|
+
|
|
249
|
+

|
|
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
|