AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Audit Page

skill-gabrielamz-web-anatomy-audit-page · by GabrielAmz

|

No reviews yet
0 installs
22 views
0.0% view→install

Install

$ agentstack add skill-gabrielamz-web-anatomy-audit-page

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-gabrielamz-web-anatomy-audit-page)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Audit Page? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Audit Page

Diagnose the current state of a page, section by section, and tell the user which sections to revamp first and why. Apply a proven CRO framework as the lens, but organize the audit by SECTION so the output routes straight into the fix.

This is the Audit altitude of Web Anatomy: a whole-page diagnosis that runs standalone, with no benchmark data required. It feeds the grounded rework in write-page.

You do NOT write copy, headlines, or rewrites here, and you do NOT need benchmark data. Output is problem framing and prioritization: where conversion leaks and what to fix first. This is the on-ramp. The grounded next step is where the real edge is, so always end by handing off to it. There are two grounded paths and they answer different questions, so Step 6 asks the user which one they want.

Output Behavior

When file access is available, always write the orchestration handoff:

  • .webanatomy/audit-page/{page-or-section}-{YYYY-MM-DD}/scorecard.json (your per-item judgments)
  • .webanatomy/audit-page/{page-or-section}-{YYYY-MM-DD}/score.json (written by the scorer)
  • .webanatomy/audit-page/{page-or-section}-{YYYY-MM-DD}/audit.json
  • .webanatomy/audit-page/{page-or-section}-{YYYY-MM-DD}/report.md

audit.json is the machine handoff that write-page reads so it does not re-diagnose. The score block is copied verbatim from score.json (Step 3); do not hand-edit those numbers. Use this exact shape:

{
  "schema": "webanatomy.audit-page.v2",
  "target": "",
  "industry": "",
  "locale": "en|fr",
  "score": {
    "overall": 0,
    "band": [0, 0],
    "coverage": 1,
    "evidenceBacked": 1,
    "evaluated": 49,
    "naCount": 0,
    "categoryScores": [
      { "category": "Hero", "score": 0, "passCount": 0, "failCount": 0, "naCount": 0, "failedItemIds": [] }
    ]
  },
  "currentSnapshot": [{ "label": "Headline", "text": "..." }],
  "strengths": [
    { "section": "trust", "what": "Recognizable customer logos sit above the fold", "why": "fast credibility for a cold visitor; keep it" }
  ],
  "recommendations": [
    {
      "section": "hero",
      "severity": "HIGH",
      "kind": "copy",
      "opportunity": "Lead the H1 with the outcome, not the product name",
      "why": "what it unlocks, tied to the real page",
      "failedItemIds": ["hero.outcome_focus"]
    }
  ],
  "pageLevel": [
    { "section": "page", "opportunity": "Fix the narrative order (pain then outcome then product)", "why": "..." }
  ],
  "sectorSpecific": [
    { "section": "contact", "opportunity": "Surface the capital-loss risk notice near the form", "why": "regulated finance; judgment, not the rubric" }
  ],
  "startHere": "hero",
  "notes": "industry inferred; capture method + confidence"
}

Note the split: the score block comes from the rubric and the scorer (Step 3, facts). recommendations come from the free CRO audit (Step 4, judgment) and are NOT derived from which rubric items failed. The optional failedItemIds on a recommendation is a cross-reference only (so write-page can target exact gaps), not the source of the recommendation. Attach the rubric items a recommendation relates to when there is a clean match; leave it off for judgment or sector moves that the rubric does not cover.

report.md is the short human-readable version (the prioritized list below). Chat is a one-line summary plus the start-here section.

Two independent tracks (do not let one drive the other)

This skill produces two things by two different methods, and they must stay dissociated:

  1. The score (facts / overview). Run the rubric in references/scoring.md to

get the overall score + category scorecard. This is the factual best-practices read whose job is to prove the page needs a revamp. Mechanical.

  1. The recommendations (substance). Do a free, expert CRO audit using

references/cro-audit.md (the page-cro-equivalent lens) and your judgment. These are NOT derived from which rubric items failed — deriving recos from the checklist gives detailed-but-mediocre output. A free expert read gives sharper, higher-ROI recommendations.

Score one way, recommend another way. They meet only at output (Step 5): score on top as the proof, recommendations below as the substance.

Step 1 — Context (optional, do not block)

Check .agents/webanatomy-context.md for product, ICP, conversion goal, industry, and locale. If missing, proceed from the URL, screenshot, or codebase with conservative assumptions. Context makes the problem framing specific instead of generic; use it when present, never require it.

Step 2 — Get the page accurately (capture, then verify in the DOM)

Prefer a canonical server capture when available: if a capture_page MCP tool exists, use it — it returns reliable desktop + mobile screenshots plus DOM-extracted structure (headings, CTAs, form fields, sections). That is the trustworthy path and it sidesteps the failure mode below.

If you must render it yourself (no capture service), follow this recipe exactly — a single quick screenshot is NOT enough and will lie:

  1. Navigate, then wait for network idle so JS/iframe embeds (forms, widgets,

proof) finish loading. Landing-page forms are often third-party embeds (HubSpot, Calendly) that paint after first render.

  1. Dismiss cookie/consent overlays (Axeptio, OneTrust, etc.) — they cover the

hero and block both the screenshot and the form.

  1. Scroll the full page to trigger lazy-loaded sections, then screenshot

(above-the-fold and full-page).

  1. Verify presence/absence in the DOM, never from the screenshot alone. Query

the DOM for form fields (input/select/textarea), CTAs (buttons/links), and section anchors. A screenshot taken too early shows a form as "missing" when it is actually in the DOM — do not make that mistake.

Hard rule: never assert an element is missing from a screenshot. "No form", "no CTA", "no FAQ" must be confirmed against the DOM (and after networkidle + scroll). If you cannot verify in the DOM, say "could not verify" rather than "missing".

The render gates the visual items. The mode: visual rubric items (hierarchy, contrast, product visual, imagery, palette, above-the-fold layout, CTA dominance) need a real render. The mode: text items (messaging, copy, structure) can be judged from the page text/DOM. If you genuinely cannot render, score the text items and mark the visual items n/a in Step 3 — do not guess them. The score's coverage and band will then reflect that the visual half was not seen.

Capture headline, subheadline, CTA, proof, product visual, hierarchy, form fields, and visible friction into currentSnapshot. Do not diagnose an imagined page.

Step 3 — Score (the facts, the overview)

You judge the items; a script does the arithmetic. This keeps the score reproducible. Read references/scoring.md and follow its Method:

  1. Judge each of the 49 items pass / fail / n/a, and for every pass/fail

record an evidence_source (dom / render / text / inferred) and a short evidence_note. Score the mode: visual items only from a render; if you could not render, mark them n/a, note it, and score the mode: text items from the text/DOM.

  1. Write scorecard.json (all 49 items) next to the audit.
  2. Run the deterministic scorer and copy its output into the score block of

audit.json:

``bash node /scripts/score.mjs --input=.webanatomy/audit-page/{page-or-section}-{YYYY-MM-DD}/scorecard.json ``

Resolve ` relative to this SKILL.md. The script owns the weights and the math (category weights, coverage, evidence-backed share, confidence band). Do not hand-compute when node is available; only fall back to the formula in scoring.md` if node cannot run.

This is the ONLY thing the rubric produces: the overall score, the 6-category scorecard, and the confidence figures, as the factual overview and the proof the page needs a revamp. It does NOT generate the recommendations (Step 4 does, separately). The score is framework-relative and directional, and its band and coverage say how solid it is; the calibrated, benchmark-anchored view is the write-page + MCP upgrade. Never expose item IDs, weights, or thresholds; the overall score, the scorecard, the band, and a one-line coverage note are fine.

Step 4 — Recommend (free CRO audit, the substance)

Now set the rubric aside and read the page as a CRO expert. Read references/cro-audit.md and follow it: audit freely across value prop, headline, CTA, hierarchy, trust, objections, friction — plus anything high-leverage the page reveals (structure, message-match, sector compliance). Write the recommendations from judgment, NOT from which rubric items failed. Deriving recos from the checklist gives detailed-but-mediocre output; a free expert read gives sharper, higher-ROI moves. The bar is a strong teardown (see the cro-audit lens), not a checklist readout.

  • One recommendation per distinct issue; do not bundle; be comprehensive.
  • Prioritize by conversion impact — HIGH (blocks comprehension/trust/conversion),

MEDIUM (meaningful lift), LOW (polish) — not by the score. At most two or three HIGHs; name the single highest-leverage fix as startHere.

  • Type every recommendation by the kind of fix it needs: copy (wording, message,

angle; the fix is rewrite alternatives, no benchmark data needed) or design (structure, layout, hierarchy, visual proof; the fix is grounded in benchmark sections via write-page). This typing drives what the next skill delivers.

  • Each is a concrete move tied to the real page, section-tagged, plain language

(no item IDs). Frame as opportunities, not complaints.

  • Write to be skimmed; write-page renders these under hard budgets downstream.

Keep each opportunity to one imperative line and each why to 2 lines max (under ~220 chars). One idea per sentence. Banned openers: "The page reads as", "It's worth noting", "This is a great opportunity to", restating the move inside the why.

Record the recommendations in audit.json under recommendations (each: section, severity, kind, the opportunity move, why, and optional failedItemIds when the move maps cleanly to rubric items), plus pageLevel and sectorSpecific. These are the brief write-page consumes.

Also record 2-4 strengths (each { section, what, why }): the strongest things the page already does right and should keep through the rework (a clear value prop, real proof, a clean fold, a dominant primary CTA). Frame each as a genuine asset to preserve, not faint praise, and never the mere inverse of a recommendation. A section that is a top failure cannot also be a strength (Step 5.5). These lead the output (Step 5) so the read is not pure criticism, and write-page reuses them as its "what's working" block.

Step 5 — Output

The recommendations are the deliverable. The one-line score is the hook; then a short WHAT'S WORKING block (2-4 keeps) leads, so the read is not pure criticism for an owner attached to the page; then the opportunities, the substance; and the detailed scorecard is supporting evidence BELOW them. Keep the strengths tight and do not otherwise narrate the current state of the page: the reader knows their page, they want the keeps and the moves.

PAGE AUDIT — 
Score: /100 (band -)   ·   

WHAT'S WORKING (keep these)
- **() .** 
- **() .** 

OPPORTUNITIES (priority order)

HIGH
- **[Copy] () .** 
- **[Design] () .** 

MEDIUM
- **[Design] () .** 

LOW
- **[Copy] () .** 

PAGE-LEVEL
- **(page) .** 

SECTOR-SPECIFIC
- **() .**  (judgment, not the rubric)

START HERE → 

SCORECARD
Hero  · Value Proposition  · Copywriting  · Trust & Credibility 
Conversion  · Design & UX 

The [Copy] / [Design] tag tells the user (and write-page) what the fix will look like: copy moves get 3-4 rewrite alternatives with different angles and need no benchmark data; design moves get grounded in real benchmark sections, and when several design findings cluster on one section, write-page presents about 3 relevant benchmark variations of that section with why each works.

Rules for the opportunity list:

  • One opportunity per distinct issue. Do NOT bundle. A failing item is its own

problem: "no outcome promise", "audience not named", "no risk reducer at the CTA", and "generic differentiation" are four separate opportunities, not one. A section with five weak items produces ~five opportunities. Be comprehensive — the audit's job is to surface every real gap, not a tidy summary.

  • Never show internal item IDs or category internals (no dotted ids like

hero.outcome_focus, no raw weights, scores, thresholds) in this output. The reader sees plain-language opportunities.

  • Write each as an OPPORTUNITY (the move + what it unlocks), not a complaint. Tag

the section, the severity label, and the [Copy]/[Design] kind, order by conversion impact (Step 4). At most two or three HIGHs.

  • Include sector-specific opportunities even when NOT in the rubric (e.g. a

capital-loss risk notice on a regulated finance page), flagged as judgment.

State plainly that the score is directional and framework-based; the calibrated, benchmark-anchored view (how the page compares to real industry winners) comes from the grounded next step (find-examples or write-page) + the benchmark MCP.

No copy. No rewrites. The deliverable is "which section, why, in what order".

Step 5.5 — Coherence check (before you output)

The score and the recommendations are produced by two independent tracks (Step 3 and Step 4 on purpose), so they can disagree. Before you output, re-read them together and confirm they tell the same story. This is a quick self-review, not a new analysis. Fix any mismatch silently; never show the reconciliation.

Check, and reconcile if any fails:

  • Score band vs priority mix. A low overall score (under ~55) with no HIGH is

incoherent: either the score is too harsh or you under-prioritized. A high overall score (~75+) while you list a true HIGH (a comprehension, trust, or conversion blocker) is also incoherent: a real blocker should pull the score down. Re-judge whichever track is wrong.

  • Weak categories vs where the HIGHs cluster. The lowest-scoring categories

should be where the highest-severity opportunities land. If your top HIGH is in the hero but the Hero category scored well, one of the two reads is off. Resolve it.

  • startHere consistency. startHere must be the single highest-leverage fix,

and it must appear as a HIGH. It cannot point at a section you scored as fine.

  • No internal contradictions. A section cannot be both a listed strength and the

top failure. A "missing X" finding cannot stand for an element you could not verify in the DOM (Step 2): downgrade it to "could not verify". A page-level move cannot contradict a section finding.

If the two tracks cannot be reconciled, trust the recommendations (the substance) and adjust the score read, not the other way around.

Step 6 — Handoff to the grounded next step (ask which)

The audit is the ungrounded on-ramp. The edge is grounding it in real benchmark data, and there are two grounded paths. They answer different questions, so do not choose for the user. Present both and ask which they want:

  1. See what the best in the market are doing (page and market level). This is

find-examples. It pulls the top-ranked pages in the industry, shows how they handle the flagged areas (structure, positioning, proof), and, because it has this audit, layers a light gap read of the user's page on top. Best when the user wants the market and structure picture before changing anything.

  1. Get the sections plus copy to follow (section level). This is

write-page. It picks up this audit.json, skips re-diagnosis, pulls the top-converting real `` sections in the industry, and wri

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.