npx claudepluginhub aboul3ata/lazyweb-skill --plugin lazywebThis skill is limited to using the following tools:
Structured design research that identifies competitors, gathers real app screenshots,
Finds app screenshots and UI references via Lazyweb, downloads locally, and groups by pattern. Use for quick examples of screens, UI elements, or flows without deep analysis.
Researches competitors and visual trends in a niche, captures screenshots, generates moodboards, and delivers strategic UI/UX dossiers for redesigns or new features.
Researches latest UI/UX trends from Dribbble by screenshotting popular web and mobile designs, analyzing colors, typography, layouts, and generating structured reports. Use when starting design projects.
Share bugs, ideas, or general feedback.
Structured design research that identifies competitors, gathers real app screenshots, and produces a report with downloaded visual references.
This skill produces FILES, not a plan. Regardless of whether you are in plan mode or not, ALWAYS:
.lazyweb/design-research/{topic}-{date}/report.md.lazyweb/design-research/{topic}-{date}/report.html.lazyweb/design-research/{topic}-{date}/references//lazyweb-design-improve on your current design, or start building."/lazyweb-quick-references/lazyweb-design-improve/lazyweb-design-brainstormUse the hosted Lazyweb MCP tools at https://www.lazyweb.com/mcp for all Lazyweb database access.
Required MCP tools:
lazyweb_search — text search over mobile and desktop screenshotslazyweb_find_similar — more results like a known Lazyweb screenshot IDlazyweb_compare_image — visual search from image_base64 + mime_type or image_urllazyweb_health — connectivity checkThese are stable public compatibility aliases. The server may also expose canonical
tools such as search_screenshots, list_filters, vision_screenshots, and
metadata_screenshots; prefer the lazyweb_* names in this skill.
Before searching, verify MCP is available by listing tools and running
lazyweb_health.
If Lazyweb MCP is not installed or auth fails: Tell the user: "Lazyweb MCP is not installed. Enable the global Lazyweb plugin or get the free setup instructions at https://www.lazyweb.com/mcp-install, paste them into this agent, then rerun this skill. Lazyweb is free; the bearer token is only for no-billing UI reference tools and is okay in ignored local config." Then proceed with web research only — the skill still works, just without Lazyweb's database.
LB=""
# Check lazyweb-skill browse first
for _P in "$(pwd)/.claude/skills/lazyweb-skill/browse/dist/browse" ~/.claude/skills/lazyweb-skill/browse/dist/browse; do
[ -x "$_P" ] && LB="$_P" && break
done
# Fall back to gstack browse
if [ -z "$LB" ]; then
_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/gstack/browse/dist/browse" ] && LB="$_ROOT/.claude/skills/gstack/browse/dist/browse"
[ -z "$LB" ] && [ -x ~/.claude/skills/gstack/browse/dist/browse ] && LB=~/.claude/skills/gstack/browse/dist/browse
fi
[ -x "$LB" ] && echo "BROWSE_READY: $LB" || echo "NO_BROWSE"
If NO_BROWSE: Web screenshot capture is unavailable. Lazyweb results still work —
just describe web examples in text without screenshots. To enable web captures,
run: cd ~/.claude/skills/lazyweb-skill/browse && ./setup
Before searching, clarify:
If the user is researching a specific page or app they're building (not a general topic), capture the current state:
Save as $REPORT_DIR/references/current-state.png and include it in the report
after the TL;DR as:
## Current State

*{Brief description of what we're looking at}*
This grounds the entire report — the reader sees where we are before seeing where we could go.
Think about two groups:
Call lazyweb_search multiple times with different angles:
{"query":"<specific screen/component>","limit":30}
{"query":"<screen type>","company":"<competitor>","limit":30}
{"query":"<screen type>","category":"<category>","limit":30}
{"query":"<screen type>","platform":"desktop","limit":30}
{"query":"<screen type>","platform":"mobile","limit":30}
{"query":"<different description of same thing>","limit":30}
{"query":"<even more specific variant>","limit":30}
Platform routing: Lazyweb has both mobile app screenshots and desktop/web site screenshots.
--platform mobile — mobile app screenshots only--platform desktop — desktop/web site screenshots only--platform all (default) — search both, results grouped desktop-first then mobile--platform desktop--platform mobileEach result includes a platform field ("mobile" or "desktop") so you know the source.
Desktop results also include a pageUrl field with the original site URL.
Assess quality: matchCount 2/3 or 3/3 = strong. 1/3 = weak. similarity > 0.4 = good.
Explore generously. Run 3-5 searches minimum with different query angles. Cast a wide net — you can filter later. Don't stop at the first search.
HIGH BAR FOR REFERENCES: Each Lazyweb result includes a visionDescription field —
a text description of what's actually in the screenshot. Read it.
Rules for attaching references to the report:
visionDescription before using ANY screenshotvisionDescription doesn't match your suggestion — DO NOT USE ITvisionDescription to write accurate captions — don't invent descriptionsMismatched references destroy user trust faster than anything else.
Check if ~/.lazyweb/libraries.json exists and has connected libraries:
cat ~/.lazyweb/libraries.json 2>/dev/null
If libraries are configured, search each one using the browse tool. For each library:
$LB goto "{searchUrl}"$LB snapshot -i$LB fill @eN "{query}"$LB press Enter then $LB snapshot -i$LB screenshot "$REPORT_DIR/references/{library}-{company}-{screen}.png"Quality bar: Same as Lazyweb — only use screenshots that directly illustrate a point in the report. A mismatched reference from Mobbin is just as bad as a mismatched one from Lazyweb.
If the library session has expired (login wall, redirect to sign-in):
/lazyweb-add-inspo-source to reconnect."Label all library-sourced references in the report with the library name: [Mobbin], [Savee], etc.
Lazyweb covers both mobile and desktop, but most research also needs recent trends, expert analysis, and live examples from competitors. Always do web research alongside Lazyweb, even when Lazyweb results are good.
Step A — Find interesting URLs via WebSearch:
Collect 3-8 interesting URLs from the search results.
Step B — Capture live screenshots from those URLs: For each interesting URL found in step A, visit the page and screenshot it. Save directly to the report's references folder.
if [ -x "$LB" ]; then
$LB goto "https://example.com/pricing"
$LB screenshot "$REPORT_DIR/references/example-pricing-page.png"
fi
If the browse tool is not available, use curl to download any publicly accessible
screenshot URLs you find, or describe the page in the report without an image.
This is not optional. The report should have a MIX of Lazyweb database screenshots AND live web captures. Lazyweb gives you curated, clean screenshots. Web captures give you the latest, most current state of competitor sites.
Platform balance rule: Use --platform desktop or --platform mobile to match the
user's target platform. Aim for at least 50% same-platform references.
Determine the absolute path for this report's directory:
REPORT_DIR="$(pwd)/.lazyweb/design-research/{topic-slug}-{YYYY-MM-DD}"
mkdir -p "$REPORT_DIR/references"
For each strong Lazyweb result, download the image:
curl -sL "{imageUrl}" -o "$REPORT_DIR/references/{company}-{screen-slug}.png"
For web-captured examples (from step 5B):
if [ -x "$LB" ]; then
$LB goto "https://example.com"
$LB screenshot "$REPORT_DIR/references/{company}-{screen-slug}.png"
fi
Cap at 30 images total. Name files descriptively: stripe-pricing-page.png, linear-onboarding-step1.png.
Label each reference with its source in the report: [Lazyweb] or [Web] so the
user knows the provenance.
Write to .lazyweb/design-research/{topic-slug}-{YYYY-MM-DD}/report.md
Reverse pyramid structure: Lead with action, back into analysis. The reader should get the answer in the first 30 seconds, then optionally dive deeper.
Skip sections that don't apply. A narrow question doesn't need all sections. Only include sections where you have real findings.
# Design Research: {Topic}
## TL;DR
{2-3 sentences. The single most important finding and what to do about it.}
## Current State
{Include ONLY if a current state screenshot was captured in step 2. Otherwise omit this section.}

*{Brief description of what we're looking at}*
## Recommendations / Next Steps
{What to implement, in priority order. Each recommendation tied to evidence below.
This is the ACTION section — specific, implementable guidance.}
1. **{Recommendation}** — {Why, with reference to evidence}
2. **{Recommendation}** — {Why}
3. **{Recommendation}** — {Why}
**ASCII mockups:** For each recommendation, include a rough ASCII wireframe sketch
showing the proposed change. Keep them simple — box-drawing characters, just enough
to communicate the layout idea. Example:
┌─────────────────────────────┐ │ Logo [Sign In] │ ├─────────────────────────────┤ │ │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │ img │ │ img │ │ img │ │ │ └──┬──┘ └──┬──┘ └──┬──┘ │ │ Plan A Plan B Plan C │ │ │ │ [Get Started →] │ └─────────────────────────────┘
These sketches help the user visualize the recommendation without needing to
open a design tool. They don't need to be pixel-perfect — just communicative.
## Key Examples
{The visual centerpiece. Screenshot gallery with company, source, and 1-line insight.
Mix of Lazyweb and web-captured screenshots. Label each source.}

*Stripe — Toggle between monthly/annual, social proof above pricing tiers [Web]*

*Linear — Single question per screen, progress bar, minimal UI [Lazyweb]*
## Patterns
{Common denominators — things the best examples share.
These are the "table stakes" for this design problem.}
## Anti-Patterns
{What to avoid. Things that feel dated, confusing, or broken.
Specific examples from the research, not generic advice.}
## Unique Angles
{The standout approaches. NOT the common pattern — the thing that
ONE company does that made you stop and look twice. The X100 detail.
Could be a micro-interaction, an unusual layout, a clever copy choice.}
## Findings
{Deeper analysis of the research. How we arrived at the recommendations above.
What the research reveals about this problem space.}
## Sources
{Compact list. Lazyweb screenshots are cited inline above.
Web sources listed here with URLs.}
After writing report.md, generate a report.html alongside it for visual preview.
The HTML report should:
references/filename.png) — HTML files loaded
in a browser resolve relative paths correctly from their own directoryopen "$REPORT_DIR/report.html"Tell the user where the report was saved. Mention they may want to add .lazyweb/ to .gitignore.