product-page-cro
Skill2 starsChanged 3 months agoMITView on GitHub
Product page anatomy and conversion - gallery, price, CTA, social proof, variants, structured data. Use when building or reviewing any product/landing page.
In this repository18 other files it gives its agents.
- art-director-reviewSkill
- b2b-landingSkill
- brand-voiceSkill
- checkout-trustSkill
- composition-gridsSkill
- copy-chiefSkill
- demo-assetsSkill
- design-tokensSkill
- experimentation-measurementSkill
- layout-compositionSkill
- marketing-strategySkill
- motion-performanceSkill
- navigation-searchSkill
- pixel-qaSkill
- post-purchase-lifecycleSkill
- promotions-eventsSkill
- typography-craftSkill
- visual-identitySkill
The file
Files
Product Page CRO — PDP Anatomy & Structured Data
When to use
- Building or reviewing a product detail page (PDP): above-fold layout, image gallery, price block, buy box.
- Deciding what belongs near the Add-to-Cart button: shipping/returns info, trust content, review count, order-cost estimate.
- Designing variant selectors (size/color/style) or out-of-stock states.
- Building or reviewing a sticky/persistent add-to-cart bar.
- Implementing or auditing
Product,Offer,AggregateRating,Review, orBreadcrumbListstructured data. - Adding urgency, scarcity, or live-activity messaging to a PDP and needing to check it against dark-pattern risk.
- Building or reviewing a pricing page or tier-comparison table.
- Setting title tags, meta descriptions, canonicals on facet/variant URLs, or the og:image/twitter:card for any sales page.
- For headline/CTA wording, testimonial copy, and pricing-psychology tactics (charm pricing, anchoring, decoys), pair this with
copy-chief. For cart/checkout flow and footer trust, pair withcheckout-trust.
Rules
Above-fold PDP anatomy
- [FRAMEWORK] Render the primary product image, product name, price, and a visible Add-to-Cart/Buy CTA within the first viewport with zero scrolling, on both desktop and mobile — corroborated independently by two sources. — Baymard, Kissmetrics
- [FRAMEWORK] Place at least one social-proof or legitimacy signal (rating badge, review count, or trust badge) within that same first screen, per the standard sales-page structure (hero → social proof → CTA). — Shapiro, Baymard
Image gallery
- [FRAMEWORK] Stock a minimum of 5 product images/angles — pages with 5+ images convert roughly 60% higher than single-image pages, a figure corroborated independently by two sources. — Kissmetrics, Command C
- [FRAMEWORK] Put gallery navigation (arrows, dots, swipe affordance) in an immediately visible spot, not below other content — 56% of users' first action on any PDP is browsing the image gallery before reading text. — Command C (citing Baymard)
- [FRAMEWORK] Support pinch-to-zoom and double-tap-to-zoom on every product image on mobile — roughly 40% of ecommerce sites still fail to support this. — Command C
- [FRAMEWORK] Test and fix landscape-orientation image scaling specifically — 52% of retailers fail to scale images proportionally in landscape, and half of users who find an image too small rotate their phone rather than pinch-zoom. — Command C
- [FRAMEWORK] Build the mobile gallery as swipeable/gesture-driven, not a small hero image with a static thumbnail strip underneath — the thumbnail-strip pattern is a documented mobile failure mode. — Command C
Price display
- [FRAMEWORK] Show the full price as plain, correctly-formatted text next to the product name/CTA — never behind a "Contact us" gate on a self-serve/off-the-shelf product (see
copy-chieffor the copy-level treatment of pricing psychology). — practitioner consensus - [FRAMEWORK] Show price-per-unit next to the total price for anything sold by weight, volume, or count — 81% of sites currently omit it. — Baymard 2026
- [TREND-2026] When showing a reference/strikethrough price, render both the original and current price simultaneously, never behind a rollover or tooltip — a visible anchor is associated with roughly a 32% lift in perceived value. The reference price itself must satisfy
promotions-eventsR24-R30 (FTC/Cal. B&P/EU Omnibus price-history rules) — display mechanics here, legality there. — SHNO.co; promotions-events R24-R30
Shipping & returns visibility
- [FRAMEWORK] Display shipping cost and delivery timeframe on the product page itself, near the buy button — not only in cart/checkout. Unexpected shipping cost is the single most-cited cause of cart abandonment across independent surveys (40-48% of abandoners; the range reflects differing denominators across sources, not a contradiction). — Baymard, Kissmetrics
- [FRAMEWORK] Show an estimated order-cost line (shipping + tax, even as a range) near the Buy button — 67% of sites omit this near-CTA cost estimate. — Baymard 2026
- [FRAMEWORK] Show free-shipping eligibility directly on the PDP when applicable — associated with a 7-12% lift in add-to-cart rate. — Kissmetrics
- [FRAMEWORK] Make the return policy visible on the product page itself, not a footer link only — visible return policy is associated with 5-15% higher conversion, and 44% of sites still have deficient return-policy visibility as of the 2026 benchmark. — Kissmetrics, Baymard 2026
- [FRAMEWORK] Place guarantee/returns/security-badge trust content physically adjacent to the CTA, not in the footer — 57% of researched sites already do this as a deliberate risk-reversal placement. — Crazy Egg
Social proof placement
- [FRAMEWORK] Surface review count and average rating near the price/CTA cluster, not only on a separate reviews tab further down the page. — Crazy Egg
- [FRAMEWORK] Treat visible reviews as a major conversion lever: two independent sources report a large lift from displaying reviews (roughly +270% for everyday goods, up to +380% for higher-consideration items). — Crazy Egg, Spiegel Research Center
- [TREND-2026] Label verified purchases where the platform supports it — 67% of researched sites already do, directly addressing fake-review skepticism. — Crazy Egg
- [FRAMEWORK] Don't stack redundant proof types back-to-back in the same scroll position (e.g., rating badge directly above three testimonials directly above a logo bar) — spread proof across the page: rating/count above the fold, fuller reviews/testimonials mid-page. — Shapiro, WiserNotify
- [FRAMEWORK] Don't ship a suspiciously perfect 5.0-star rating with zero visible negative or mixed reviews — a few visible critical reviews reads as more credible than a flawless score. Treat this as a qualitative principle, not a specific numeric target; a commonly-repeated "4.2-4.7 beats 5.0" figure could not be confirmed against a primary source. — practitioner consensus, low-confidence numeric range
Variant swatches & out-of-stock handling
- [FRAMEWORK] Give every interactive PDP control — variant swatches/buttons, gallery nav, the primary CTA, and the sticky Add-to-Cart button — a design floor of 44×44 CSS px (Apple HIG; Material 48dp) with ≥8px clearance to the nearest adjacent target. WCAG 2.2 AA's legal minimum is 24×24 CSS px (SC 2.5.8) — that's the compliance floor, not the ship target; a cramped control defeats its purpose on the exact device where it matters most. — WCAG 2.5.8, Apple HIG, Material Design
- [FRAMEWORK] Use exposed button-style controls for size selection, never a
<select>dropdown — a dropdown hides which sizes are in stock until opened, a documented cause of add-to-cart-then-realize-no-size-selected errors. 71% of benchmarked sites now use buttons, up from 63% in 2017. — Baymard - [FRAMEWORK] Never remove an out-of-stock variant from the selector — keep every size/color visible and mark unavailable ones with a distinct disabled state (grayed out and/or strikethrough). This is the single most consistently flagged variant-selector defect in the research. — Baymard
- [FRAMEWORK] Don't default to "Notify me when back in stock" as the sole response to a temporarily out-of-stock variant — in usability testing it reads as tacit permission to abandon. Where fulfillment allows, let the shopper complete the purchase against an adjusted delivery estimate, surfaced via inline text or a tooltip near the Buy button. — Baymard
- [FRAMEWORK] In mobile listing/grid views, expose all of an item's color swatches in a horizontally scrollable strip (crop the last visible swatch to signal there's more) rather than truncating to a subset plus "+N more" — 57% of sites currently fail this. — Baymard
- [FRAMEWORK] Swap the product thumbnail/hero image to match the variant a shopper has selected or filtered for — 54% of sites still show a static default-color image regardless of the active selection. — Baymard
Sticky add-to-cart
- [FRAMEWORK] Trigger the sticky add-to-cart bar's appearance off the scroll position of the primary in-content Add to Cart button leaving the viewport, not a fixed pixel offset. This is a scroll-driven reveal (allowed: content stays reachable without JS, the trigger tracks natural scroll position) — never scroll-hijack the page to force the bar into view. — aggregated CRO/implementation guidance
- [FRAMEWORK] Default the sticky bar to the bottom of the viewport on mobile, inside the thumb-reach zone; on desktop, bottom is the more common placement so it doesn't compete with a fixed header. — aggregated CRO/implementation guidance
- [FRAMEWORK] On products with more than one variant axis (size + color), embed a compact re-selector inside the sticky bar itself, or make the bar deep-link back to the primary selector — never let the sticky CTA add-to-cart a variant the shopper hasn't actually confirmed. — aggregated CRO/implementation guidance
Schema.org Product markup
- [LAW] Mark up every PDP with
Product.nameplus at least one ofreview,aggregateRating, oroffers— the hard floor for Product rich-result eligibility. — Google Search Central (product-snippet) - [LAW] For full Merchant Listing eligibility (image + price + availability shown directly in results), nest a single
Offer— neverAggregateOffer— inside the Product, withprice> 0 andpriceCurrencypresent. — Google Search Central (merchant-listing) - [LAW] Format
priceas a plain decimal string ("119.99") — never a currency symbol, thousands separator, or range — paired withpriceCurrencyin three-letter ISO 4217 form. Serve a distinct URL per currency if the product sells in more than one. — Google Search Central (product-snippet) - [LAW] Set
offers.priceValidUntil(ISO 8601) on any time-limited price, and setoffers.availabilityto exactly oneItemAvailabilityvalue (InStock,OutOfStock,PreOrder,BackOrder, etc.) — never blank, never combined. — Google Search Central (merchant-listing) - [LAW]
AggregateRatingrequiresratingValueplus at least one ofratingCount/reviewCountand anitemReviewedreference —ratingValuealone is invalid. Never publish rating/review markup the reviewed entity itself controls or compiles (editorial "5-star" badges with no real user reviews behind them); Google explicitly excludes self-serving ratings. — Google Search Central (review-snippet) - [LAW] Model variants per Google's
ProductGrouppattern: oneProductGroupwithvariesBywhen a single URL swaps variants client-side; separate crawlable URLs linked viaisVariantOf/hasVariantplusinProductGroupWithIDwhen each variant has its own page. Either way, loading the URL directly must render the correct price/image/availability standalone, not only after a swatch click. — Google Search Central (product-variants) - [LAW] Build every
BreadcrumbListwith at least 2ListItementries carrying sequentialpositionandname, withitem(URL) on every entry except the current page; write labels to match the path a shopper would click, not a literal dump of URL folder segments. — Google Search Central (breadcrumb) - [LAW] Products in restricted categories — firearms, recreational drugs, tobacco, gambling — are ineligible for Product rich results regardless of markup completeness; don't spend engineering time debugging schema for these categories. — Google Search Central (product-snippet)
Urgency ethics
- [TREND-2026] If using live-activity or recent-purchase notifications ("6 people viewing this," "Sarah in Austin bought this"), show only real events tied to an actual timestamped log — fabricated or looped activity feeds are a legitimacy risk, not a proof asset. — WiserNotify
- [TREND-2026] Tie any low-stock message ("Only 3 left") to the actual live inventory count, not a static or randomized display value — a count that never changes carries rising regulatory exposure (FTC dark-pattern enforcement, EU digital fairness rules). — practitioner consensus, regulatory trend
- [TREND-2026] Tie any countdown timer to a real, non-resetting expiration timestamp stored server-side — a timer that resets on page reload or new session is the most-flagged fake-urgency pattern in CRO literature. — practitioner consensus, regulatory trend
- [FRAMEWORK] Prefer verifiable urgency (real low-stock counts pulled from inventory, a real sale end-date) over generic urgency copy with no underlying mechanism — an unverifiable urgency claim compounds the shopper's legitimacy objection instead of resolving it. — InstantPress (objection sequence)
Pricing pages & tier comparison
- [FRAMEWORK] Default to 3–4 pricing tiers, not 2 or 5+ — 2 tiers gives the buyer nothing to compare against, and 5+ tiers creates comparison fatigue that stalls the decision. Treat any specific conversion-lift multiplier attached to this claim as unverified — multiple sources cite mutually inconsistent figures for the exact lift, none traced to a confirmable primary study. — SaaS pricing-strategy sources (multiple, mutually inconsistent on % lift, consistent on tier count)
- [FRAMEWORK] Give exactly one tier — typically the middle or highest-margin one — a visually distinct treatment: a colored border/fill, a "Most Popular"/"Recommended" badge, and a CTA button with higher contrast than the surrounding columns, so it functions as the default comparison anchor rather than all tiers carrying equal visual weight. For the pricing-psychology mechanics behind why an anchor tier works (reference pricing, decoy-tier construction, replication caveats), see
copy-chiefRules 26-27 — this rule covers the visual/layout treatment only, not the pricing-psychology reasoning. — SaaS pricing-page design consensus - [FRAMEWORK] Place a row-based feature comparison table below the tier cards, grouped by feature category, with the feature-name column pinned during horizontal scroll on narrow viewports — this lets a shopper scan one feature across every tier without losing their place, which a card-only layout (features buried inside each card) doesn't support. — SaaS pricing-page design consensus
Page metadata & social artifacts
- [LAW] Target a 51–60 character title tag as the lowest-rewrite band — Google's own large-sample analysis (80,959 titles/2,370 sites) found this range rewritten only 39–42% of the time, versus 99.9% past 70 characters. Match the on-page H1 to the title tag string as closely as possible: the same study found this measurably reduces content loss on rewrite (e.g., a number present in both title and H1 survives 97.3% of the time, vs. 74.2% when only the title has it). Expect the majority of titles to be rewritten regardless of how well they're written — two independent studies put the baseline at 61.6% (2022/23) climbing to 76.04% (2025) — so treat title discipline as reducing rewrite risk, not eliminating it. — Zyppy; hireawriter.us (McAlpin 2025)
- [FRAMEWORK] Write a unique 120–158 character meta description for every PDP, including every color/size variant — never template an identical description across variant URLs. Google rewrites meta descriptions even more often than titles (62–71% rewrite rate across three independently-run large-sample studies), but still uses the static tag roughly 30% of the time, and a unique per-variant description also gives Google better on-page source material to draw from when it does write its own snippet. The 120–158 character band is industry-consensus guidance, not a controlled-study result — unlike the title-length figure in Rule 45. — Portent; SearchEngineJournal; Ahrefs (via aggregator)
- [FRAMEWORK] Put a self-referencing canonical on any facet/variant URL you deliberately want indexed on its own (e.g., a color page with real standalone search demand) — don't canonicalize it away by default. Canonicalize low-value facet combinations (a sort or minor filter layered onto a category) back to the parent/category URL. Use
noindex, follow— not a canonical — for presentation-only parameters (sort order, items-per-page, view type): these aren't duplicates of the parent, they're just not worth indexing, andnoindex, followkeeps internal link equity flowing while dropping the URL from the index. Reserverobots.txt Disallowfor parameters with zero search value at any scale (session IDs, cart-action params) as a crawl-budget control only, never as a substitute for deindexing an already-indexed URL — a disallowed URL can persist in the index with a stripped, information-free snippet until it's actually noindexed or removed. Google Search Console's URL Parameters tool has been retired; manage facet/variant URL behavior entirely through canonical tags,noindex, robots rules, and clean URL design. — Search Engine Land (faceted navigation guide) - [FRAMEWORK] Ship a purpose-designed
og:image(1200×630px, 1.91:1 ratio) for every sales/product page — never a raw page screenshot. Keep the primary text and subject inside the safe zone (roughly the center 80% of the frame), since different platforms crop the frame differently, and size any text large enough to stay legible at the small thumbnail size most platforms actually render it at (Facebook/LinkedIn/Slack link previews, Twitter/X cards). Settwitter:cardtosummary_large_imageto get the large-image treatment instead of the small square fallback. This rule reflects standard cross-platform social-card practice, not a finding from this skill's underlying research pass — no primary study on og:image dimensions or thumbnail legibility was located there; treat the spec as current platform documentation rather than a lab-verified figure, and recheck it periodically since platforms revise crop/thumbnail behavior. — Open Graph protocol / Twitter Cards developer documentation (not sourced from the seo-variants.md research pass)
Checklist
Above-fold anatomy
- Primary image, name, price, and CTA all visible with zero scroll, desktop and mobile (Rule 1)
- At least one social-proof/legitimacy signal appears in the first screen (Rule 2)
Image gallery
- 5+ product images/angles present (Rule 3)
- Gallery nav (arrows/dots/swipe) is immediately visible, not below other content (Rule 4)
- Pinch-to-zoom and double-tap-to-zoom work on every image, mobile (Rule 5)
- Images scale correctly in landscape orientation (Rule 6)
- Mobile gallery is swipeable/gesture-driven, not a static thumbnail strip (Rule 7)
Price display
- Price is plain, visible text next to name/CTA — no "Contact us" gate on self-serve items (Rule 8)
- Price-per-unit shown for weight/volume/count products (Rule 9)
- Reference/strikethrough price (if used) is simultaneously visible, not behind a rollover (Rule 10)
Shipping & returns
- Shipping cost/timeframe shown on the PDP near the buy button (Rule 11)
- Order-cost estimate (shipping + tax) shown near the CTA (Rule 12)
- Free-shipping eligibility shown on the PDP when applicable (Rule 13)
- Return policy is visible on the PDP itself, not footer-only (Rule 14)
- Guarantee/security trust content sits adjacent to the CTA (Rule 15)
Social proof
- Review count and average rating sit near the price/CTA cluster (Rule 16)
- Reviews section is visible on the PDP itself, not hidden behind an extra click or tab (Rule 17)
- Verified-purchase labels used where the platform supports them (Rule 18)
- No redundant proof types stacked back-to-back in the same scroll position (Rule 19)
- Rating isn't a suspiciously flawless 5.0 with zero critical reviews (Rule 20)
Variants & out-of-stock
- Variant swatches/buttons measure ≥44×44 CSS px with ≥8px clearance (24×24px legal floor) (Rule 21)
- Size selection uses exposed buttons, not a dropdown (Rule 22)
- Out-of-stock variants stay visible and disabled, never hidden (Rule 23)
- "Notify me" is not the sole CTA on an out-of-stock variant where purchase-with-delay is feasible (Rule 24)
- Mobile grid color swatches show as a full horizontally-scrollable strip, not "+N more" (Rule 25)
- Thumbnail/hero image updates to match the selected/filtered variant (Rule 26)
Sticky add-to-cart
- Sticky bar appears when the primary ATC button leaves the viewport, via scroll position not a fixed offset, and never hijacks scroll (Rule 27)
- Sticky bar sits at the bottom of the viewport on mobile, thumb-reach zone (Rule 28)
- Multi-axis variant products have a re-selector in (or reachable from) the sticky bar (Rule 29)
- Sticky ATC button meets the 44×44px / 8px clearance floor (Rule 21)
Structured data
Product.name+ one ofreview/aggregateRating/offerspresent (Rule 30)- A single
Offer(notAggregateOffer) withpriceandpriceCurrencyfor merchant listing eligibility (Rule 31) priceis a plain decimal with ISO 4217priceCurrency; separate URL per currency if applicable (Rule 32)priceValidUntilset on time-limited prices;availabilityset to exactly one valid value (Rule 33)AggregateRatinghasratingValue+ratingCount/reviewCount+itemReviewed; no self-serving ratings (Rule 34)- Variant markup follows
ProductGroup/variesByorisVariantOf/hasVariantcorrectly, each URL self-renders its own state (Rule 35) BreadcrumbListhas ≥2 sequentialListItems with real URLs and user-path labels (Rule 36)- Restricted-category products aren't budgeted engineering time for rich-result schema (Rule 37)
Urgency ethics
- Any live-activity notification maps to a real, timestamped event (Rule 38)
- Any low-stock message reflects the real, live inventory count (Rule 39)
- Any countdown timer has a real, server-stored, non-resetting expiration (Rule 40)
- Urgency messaging is tied to a verifiable mechanism, not generic scarcity copy (Rule 41)
Pricing pages & tier comparison
- Pricing page defaults to 3-4 tiers, not 2 or 5+ (Rule 42)
- Exactly one tier has a visually distinct anchor treatment (border/fill, badge, higher-contrast CTA) (Rule 43)
- Row-based feature comparison table sits below the cards, grouped by category, with feature column pinned on narrow viewports (Rule 44)
Page metadata & social artifacts
- Title tag targets 51-60 characters and matches the on-page H1 (Rule 45)
- Meta description is unique per PDP/variant, 120-158 characters (Rule 46)
- Facet/variant URLs carry the correct canonical,
noindex, follow, orrobots.txttreatment for their value (Rule 47) - Every sales page ships a purpose-designed 1200x630 og:image (not a screenshot), with safe-zone text legible at thumbnail size, and
twitter:cardset tosummary_large_image(Rule 48)
Anti-patterns
- Single hero image, or fewer than 5 angles. Measured at roughly 60% lower conversion than a 5+-image gallery. Instead: ship at minimum 5 images/angles per product (Rule 3).
- Static mobile thumbnail strip under a small hero image. A documented mobile failure pattern that also compounds the ~40% zoom-support gap. Instead: swipeable, gesture-driven gallery with pinch/double-tap zoom (Rules 5, 7).
- Hiding shipping cost until checkout. The single most-cited cause of cart abandonment across independent surveys. Instead: show shipping cost/timeframe and an order-cost estimate on the PDP itself, near the CTA (Rules 11-12).
- Return policy buried in the footer only. Correlates with lower conversion and is flagged as deficient on 44% of sites in the 2026 benchmark. Instead: surface it on the PDP, adjacent to the CTA (Rule 14).
- Dropdown-only size selection. Hides which sizes are in stock until opened and is tied to add-to-cart-then-realize-wrong-size errors. Instead: exposed, always-visible size buttons (Rule 22).
- Hiding out-of-stock variants from the selector entirely. Confuses returning shoppers and understates the product's real range — the single most consistently flagged variant-selector defect. Instead: keep every option visible, gray out and/or strikethrough unavailable ones (Rule 23).
- "Notify me when back in stock" as the only response to an out-of-stock variant. Reads as tacit permission to abandon in usability testing. Instead: where fulfillment allows, let the shopper buy against an adjusted delivery estimate (Rule 24).
- Truncated mobile color swatches ("+N more"). The majority pattern (57% of sites) and a documented source of frustration. Instead: a horizontally scrollable strip exposing every swatch (Rule 25).
AggregateOfferwhere full Merchant Listing eligibility is the goal. Silently disqualifies the page from the richer result type even though it still satisfies baseline Product-snippet requirements. Instead: nest a singleOfferwithpriceandpriceCurrency(Rule 31).- Self-serving or editorially-compiled star ratings. An explicit Google ineligibility rule, not a soft guideline. Instead: source
AggregateRatingonly from real user reviews. - A suspiciously perfect 5.0-star rating with no critical reviews. Reads as less credible than a rating with some visible mixed feedback. Instead: display the real distribution, don't curate out negative reviews (Rule 20).
- Fake urgency and fake scarcity — countdown timers that reset on refresh, "only 3 left" that never changes. Carries rising regulatory exposure (FTC, EU digital fairness rules) and undermines the legitimacy objection instead of resolving it. Instead: tie every urgency element to a real, verifiable, server-stored value, or drop the tactic (Rules 39-41).
- Award-circuit visual patterns (scroll-jacking, heavy hero animation, delayed content reveal) applied to a PDP. Pushes price, image, and CTA below the fold and adds load time, directly contradicting the above-the-fold rules in this file. Instead: use scroll-driven reveals only within the bounds Rule 27 allows — never override scroll position or speed to force content into view.
- A sticky add-to-cart bar that adds an unconfirmed variant to the cart. On multi-axis products, tapping the sticky CTA without a re-selector risks cart errors on size/color the shopper never chose. Instead: embed a compact re-selector in the bar or deep-link back to the primary selector (Rule 29).
- An identical meta description templated across every color/size variant of the same product. Removes Google's ability to differentiate between variant URLs when selecting which one answers a query, and wastes the ~30% of cases where Google does use the static tag as written. Instead: write a unique 120-158 character description per variant (Rule 46).
- Canonicalizing every faceted/filtered URL back to the parent category by default, including combinations with real standalone search demand. Silently forfeits ranking potential for legitimately distinct pages. Instead: a case-by-case index/noindex/canonical decision (Rule 47).
- Using
robots.txt Disallowas a substitute for deindexing an already-indexed low-value URL. Disallow only blocks crawling — a previously-indexed URL can keep appearing in results, often with a degraded, information-free snippet, until it's actually removed vianoindex. Instead: pair Disallow withnoindexfor anything already indexed (Rule 47). - Shipping a raw page screenshot as the
og:image. Illegible at the small thumbnail size link previews actually render, and gives up control over safe-zone cropping across platforms. Instead: a purpose-designed 1200x630 image with legible text inside the safe zone (Rule 48).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

