Lazyweb Quick Search
Use Lazyweb MCP search as a fast design preflight. This skill does not write a
report, publish HTML, or produce a deck. It runs the smallest useful
lazyweb_search, reads the returned screenshots and metadata, then gives the
builder concrete UI takeaways with image links.
When to Use This
- Before designing a screen, component, flow, or page and the agent needs a quick industry reality check
- When the user asks for a few references, but not a full report
- When another frontend skill is about to build something unfamiliar and should inspect real examples first
- When the user explicitly asks to use
lazyweb_search
When NOT to Use This
- Full competitive analysis, ranked recommendations, or visual prototypes →
lazyweb-deep-design-research - Grouped screenshot report or shareable reference artifact →
lazyweb-lite-design-research - Existing UI critique or before/after recommendations →
lazyweb-design-improve - Paywall conversion redesign →
lazyweb-optimize-paywall - Sign-up conversion redesign →
lazyweb-optimize-sign-up
MCP Setup
Use the hosted Lazyweb MCP tools at https://www.lazyweb.com/mcp.
Required tools:
lazyweb_health— verify connectivity when the MCP surface is uncertainlazyweb_search— search mobile screenshots and desktop captures by textlazyweb_list_categories— discover supported company categories before using a category filter
If Lazyweb MCP is missing, tell the user to run:
curl -fsSL https://www.lazyweb.com/install.sh | bash
Then reload the client and rerun the skill.
Pass skill: "quick-search" on every Lazyweb call. Include
"skill": "quick-search" in each lazyweb_* call. It is logging-only
metadata; never change a real search argument to satisfy it.
Also pass version: "<x.y.z>" on every Lazyweb call. Read
~/.lazyweb/VERSION once per session:
cat "$HOME/.lazyweb/VERSION" 2>/dev/null || echo 0.0.0
Use "0.0.0" if missing. Never block on the version read.
Search Protocol
1. Pick the platform first
Choose platform before querying:
mobile— native app screens, mobile onboarding, paywalls, settings, tabs, permission prompts, bottom sheets, mobile checkoutdesktop— websites, landing pages, dashboards, web pricing, desktop checkout, SaaS settingsall— only when the user genuinely wants both surfaces or the platform is unknown
Avoid all by habit. In the current backend, all searches mobile and desktop
in parallel and splits the requested limit across them, with desktop shown
first. A limit: 6 all-platform search usually means about three desktop and
three mobile results, not six of each.
2. Start with a tiny probe
Run one small query first:
{
"query": "onboarding quiz",
"platform": "mobile",
"limit": 3,
"maxPerCompany": 1,
"skill": "quick-search",
"version": "<from ~/.lazyweb/VERSION>"
}
Read every returned visionDescription, companyName, category, platform,
similarity, matchCount, and imageUrl. If at least two of three are
visually on-target, page or expand. If the probe is adjacent, fix the query
before increasing limit.
3. Query the UI pattern, not the style
Best queries are 2-6 words naming a concrete UI pattern:
- Good:
onboarding quiz,usage based pricing table,empty state project list,mobile permission prompt,settings notification toggles - Weak:
beautiful modern app,minimal dark design,premium dashboard,best UX
The backend embeds and reranks around screenshot content and metadata. Style adjectives such as dark, minimal, premium, playful, and editorial are not reliable search facets. Search the screen mechanism first, then judge style by looking at the returned images.
4. Read response metadata before changing anything
Always inspect:
coverage.strengthandcoverage.top_similaritywarningspagination.next_offsetsuggestions.companycompany_resolved
If coverage is strong or moderate, use the results. If coverage is weak,
keep only clearly relevant screenshots and say the corpus is adjacent. If there
are no matches, do not retry the same wording; shorten to the core UI pattern
or switch category/platform.
Never repeat an identical query. Results are deterministic. Use
offset: pagination.next_offset to page deeper.
5. Use company filters narrowly
Use company only when the user names a specific reference product or when you
need that product's exact pattern.
The MCP gateway resolves company against companies.company_name before
searching. It tries case-insensitive exact matches, hyphen/space variants, and
prefix suggestions. If unresolved, the backend ignores the company filter and
returns company_not_in_library plus closest suggestions. In that case, pick a
suggested company or drop the company filter. Do not keep retrying spellings of
the same brand.
Use company with a pattern query:
{
"query": "paywall benefits list",
"company": "Duolingo",
"platform": "mobile",
"limit": 3,
"skill": "quick-search",
"version": "<from ~/.lazyweb/VERSION>"
}
Do not use company as a broad corpus scraper. Filtered generic searches with high limits are treated as enumeration-like behavior by the backend.
6. Use category filters only after checking categories
Call lazyweb_list_categories when:
- the user names an industry and you need an exact supported category value
- a broad search returns mixed industries
coverageis weak and the category could remove noise
Do not use category when the screen pattern is cross-industry, such as
pricing tables, empty states, settings, search, dashboards, or onboarding
welcome screens. Category filters reduce recall because they match the
company's category, not a screen-level tag.
Use category like this only after confirming the exact category string:
{
"query": "habit tracker streak screen",
"category": "Health & Fitness",
"platform": "mobile",
"limit": 6,
"maxPerCompany": 1,
"skill": "quick-search",
"version": "<from ~/.lazyweb/VERSION>"
}
When internal tools expose list_companies_by_categories, use it only to learn
which companies are inside a category before choosing a company filter. If the
live tool list does not show it, use lazyweb_list_categories and proceed.
7. Expand only after relevance is proven
After a good probe:
- increase
limitto 8-12 for a broader scan - keep
maxPerCompany: 1for pattern diversity - use
offsetfor page two - run one alternate query only if it names a different mechanism
Examples:
{"query":"onboarding quiz","platform":"mobile","limit":10,"maxPerCompany":1,"skill":"quick-search","version":"<version>"}
{"query":"onboarding question flow","platform":"mobile","limit":10,"maxPerCompany":1,"skill":"quick-search","version":"<version>"}
{"query":"onboarding quiz","platform":"mobile","limit":10,"offset":10,"maxPerCompany":1,"skill":"quick-search","version":"<version>"}
These are different moves: broader first page, different UI mechanism, and deeper page. Do not run all three unless the design task needs it.
Reading Results Safely
Use the returned fields to decide whether a screenshot is strong design evidence:
- Prefer results that are both high in the returned ranking and visually on-target for the UI question.
matchCount, when present, is an opaque confidence hint. Higher is usually better, but do not explain or infer the internal scoring method from it.similarityis useful within one response but not a universal quality score.visionDescriptiontells you why a result may have matched; read it before using the screenshot as evidence.maxPerCompany: 1is good for variety. Raise it only when the user asks for multiple examples from the same company.
Output Format
Return a short, useful handoff. Include:
- Search calls made: query, platform, filters, limit
- Coverage:
coverage.strength, top similarity, and warnings - Best references: company, screen, why it matters, image URL
- Design takeaways: 3-5 concrete patterns to apply now
- Gaps: anything the corpus did not cover
Do not write a report file. Do not publish. Do not present the result as a complete competitive analysis.
Escalation
Escalate to lazyweb-deep-design-research when the user needs ranked
recommendations, prototypes, or a shareable artifact.
Escalate to lazyweb-lite-design-research when the user wants grouped
screenshots in a visual report.