Moodboard
Skills for your AI agent to audit, rewrite, and build landing pages that convert. Every move grounded in a scored benchmark of real pages, not generic advice.
npx -y skills add GabrielAmz/web-anatomy --skill moodboardAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
The page-level Moodboard in Web Anatomy. Build a section-by-section visual reference board for a whole page (homepage, landing page, money page): for every section, the current state captured large, the problems identified, a grid of benchmark screenshots with the practice each one shows, the discipline-tagged best practices, and the recommendation. Use when the user asks for a moodboard, a section-by-section reference board, a visual brief for a redesign, a design reference deck, a redesign inspiration board, "show me each section against competitors," "build a moodboard for my homepage," "what should each block look like," or a board to hand to design or import into Figma. The skill generates the content itself: it captures the live page section by section and pulls benchmarks from the Web Anatomy MCP. It does not depend on any external doc. How it differs from the neighbors: benchmark-compare scores one target against winners and labels each gap HIGH/MEDIUM/LOW (a verdict on one URL or section); moodboard composes the whole page, every section, as a visual board you build from, not a scored gap report. find-examples is a single-section swipe file; research-best-practices is a narrative report; improve-page is a grounded rework with copy-paste fixes. Writes report.md, report.html, and references/ under `.webanatomy/moodboard/`.
SKILL.md
10.0 KB, as published. Nobody here has run it
Moodboard
Assemble a section-by-section visual moodboard for a page. For every section the report shows the current state large, the problems identified beside it, a grid of benchmark screenshots each captioned with the practice it demonstrates, the best practices grouped by discipline, and the recommendation for the brand.
This is the page altitude, visual-first output of Web Anatomy. It generates its own content: it captures the live page section by section (the same on-page reading audit-page does) and pulls benchmarks per section from the MCP (the same retrieval find-examples does), then composes both into one scrollable board.
How moodboard differs from the neighbors
Keep the routing clean. The closest neighbor is benchmark-compare, and they share the same MCP retrieval underneath, so the distinction matters.
benchmark-comparetakes one target (a URL, screenshot, or pasted section) and returns a verdict: a gap analysis where each gap is labeledHIGH,MEDIUM, orLOW. The screenshots are evidence for the gaps. Use it to answer "how far is this from the winners, and what is the biggest gap."moodboardtakes the whole page and returns a reference board: every section in scroll order, the current state large beside the problems, and a grid of benchmark screenshots as the centerpiece. The screenshots are the point. Use it to answer "what should each block look like, as a brief I can hand to design or import into Figma." It does not score gaps.find-examplesis one section's swipe file.research-best-practicesis a narrative report.improve-pageis a grounded rework with copy-paste fixes.
In short: benchmark-compare scores a gap on one target; moodboard composes the page-wide visual reference you build from.
Output Behavior
Always write:
.webanatomy/moodboard/{page}-{YYYY-MM-DD}/report-data.json.webanatomy/moodboard/{page}-{YYYY-MM-DD}/report.html.webanatomy/moodboard/{page}-{YYYY-MM-DD}/report.md.webanatomy/moodboard/{page}-{YYYY-MM-DD}/references/
The HTML report is the primary visual output. Chat is only a short summary and a pointer to the saved files. Do not dump the whole moodboard into chat.
If the environment cannot write files, explain the blocker and provide a compact inline version.
Deterministic Report Renderer
When file access is available, do not hand-write the final HTML. Write the structured report-data.json first, then run the shared renderer from this skill pack:
node <skill-dir>/scripts/render-report.mjs --input=.webanatomy/moodboard/{page}-{YYYY-MM-DD}/report-data.json
Resolve <skill-dir> relative to this SKILL.md. The renderer validates the data, materializes every image into references/ (downloads each screenshotUrl, copies each local screenshotPath), rewrites the JSON with localImage paths so the report is self-contained, and renders "screenshot unavailable" when an image cannot be fetched. Pass --no-download to skip materialization, --force-download to refetch.
Only fall back to hand-written HTML if the renderer cannot be run.
report-data shape (schema webanatomy.moodboard.v1)
Top level:
title(required),summary(required, used as the TL;DR)sections(required, non-empty array)- optional
eyebrow,subtitle,brand(labels the recommendation box, e.g. "Hiway"),target{ name, url },footer
Each entry in sections:
name(required) and optionalemojimeta:{ "label": "...", "kind": "p0" | "do" | "" }[]rendered as chips (priority, action, effort, impact, goal).kind"p0" tints red, "do" tints accent.current:{ "screenshotPath" | "screenshotUrl": "...", "caption": "...", "localImage"?: "..." }shown large on the leftcurrentState: one factual sentence describing the section as it is todayproblems:string[]the issues identified, shown beside the current screenshotbenchmarks:{ "company": "...", "sourceUrl": "...", "screenshotUrl" | "screenshotPath": "...", "caption": "...", "bestPractice": "..." }[]rendered as a grid, each with the practice it shows below itbestPractices:string[], each prefixed with a discipline tag in brackets, optionally ending in· sources. Example:"[COPY] Lead the H1 with a quantified outcome · Legalstart, Shine". Tags:COPY,DESIGN-UX,VISUEL,PREUVE(see references/moodboard-method.md).recommendations:string[](or{ title, text }[]) the actions for the brand
Use screenshotPath for local current-state captures, screenshotUrl for hosted benchmark images. Both are materialized into references/.
Step 1 - Resolve Page And Sections
Identify the page and the ordered list of sections to cover. Use the canonical section taxonomy from the house style (hero, value_proposition, trust, testimonial, pricing, faq, cta, plus features, how_it_works, problem, use_cases, navbar, footer, about). Order sections by where they appear on the page, or by priority when the user wants a worklist.
Step 2 - Generate The Content (canonical path)
The skill produces the per-section content itself. Do not assume any external document exists. For each section, in order:
- Capture the current state. Browse the live page and capture one screenshot per section. Confirm each section in the DOM after a full scroll before stating anything about it. Save captures locally and reference them with
screenshotPath. - Diagnose current + problems. Write one factual
currentStateline and theproblemsfor the section, framed as opportunities about the page (this is the same on-page readingaudit-pageperforms). Never assert an element is missing from a screenshot alone; confirm in the DOM or write "could not verify". - Pull benchmarks from the MCP. Use the
webanatomyMCPsearch_sectionsfor the section type (industry and locale from.agents/webanatomy-context.md) to get benchmark examples, their screenshots, and their stealable moves. Each becomes abenchmarks[]entry:screenshotUrl+ abestPracticecaption naming the visible practice. Confirm the MCP is available first; if not, say so and use a clearly labeled static fallback. - Synthesize. Roll the stealable moves into the discipline-tagged
bestPractices(see references/moodboard-method.md), then write therecommendationsfor the brand.
Keep internal scores, thresholds, and marker coordinates hidden. Translate them into visible practices.
Optional shortcut: import a prior audit
If a structured per-section audit already exists (an audit-page output, or an external doc such as a Notion module database), import it instead of re-diagnosing, to save work. Map: current state to currentState + current, problem to problems, benchmark images and captions to benchmarks[].screenshotUrl + bestPractice, the discipline list to bestPractices, the recos to recommendations. Carry the content faithfully; do not summarize it away. This is a convenience, not a requirement: the skill runs end to end without it.
Step 3 - Screenshots
Every section needs one current-state image. Every benchmark needs one image. Use screenshotPath for local current captures and screenshotUrl for hosted benchmark images. The renderer materializes all of them into references/ so the folder is portable and shareable as a link.
references/ is renderer-owned. Save current-state captures outside it (a sibling _captures/ dir, or the project's screenshots dir) and point screenshotPath there. Do not save captures into references/: the renderer copies sources into references/ with its own NN-slug names, so a source kept inside would be duplicated. On each run the renderer clears its own NN- files first, so re-rendering after a section count or order change leaves no orphans.
Step 4 - Render And Summarize
Run the renderer. Then respond in chat with: the page covered, the number of sections, the highest-priority section, and the report path. Keep it short.
Guardrails
- Follow the shared house style in
webanatomy-setup/references/house-style.md: no em-dashes, frame as "The X..." not "Your X...", frame problems as opportunities, never expose framework internals (no rubric ids, scores, thresholds, or marker coordinates), and match the Locale from.agents/webanatomy-context.mdwhen present. - Use
P0/P1/P2/P3for ungrounded priority chips. Do not mix with theHIGH/MEDIUM/LOWgap scale. - Never assert an element is missing from a screenshot alone. Confirm in the DOM after a full scroll, or write "could not verify".
- Do not promise conversion lifts. State the move and the reasoning.
- Keep benchmark captions to the visible practice, not internal scoring.