Pricing Page
Meng ToCommunityCreated by Meng To
- Skill
- Content generator
- Business and productivity
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured approach to building SaaS pricing pages that drive conversions by focusing on clarity, value communication, and objection handling. It covers the entire lifecycle of a pricing page, from initial offer definition and audience analysis to layout selection, copywriting formulas, and SEO/AEO optimization. The guide emphasizes reducing cognitive load through simplified plan structures, outcome-focused feature descriptions, and strategic use of social proof and risk-reduction elements.
What it does
- Defines the core structure and essential sections for a high-converting pricing page.
- Provides layout patterns for different business models, including classic tiers, usage-based sliders, and enterprise paths.
- Offers copywriting templates for headlines, plan descriptions, and call-to-action buttons.
- Includes a checklist for UI elements, mobile responsiveness, and SEO/AEO best practices.
- Identifies common pitfalls like analysis paralysis and confusing value metrics.
- Outlines the necessary information to gather before starting the design process.
When to use it
- When designing a new pricing page for a SaaS product.
- When auditing or rewriting an existing pricing page that suffers from low conversion rates.
- When determining how to present complex pricing tiers or usage-based models to users.
- When preparing content for search engines and AI answer engines regarding product pricing.
Advantages
- Reduces user uncertainty by focusing on outcomes rather than just technical features.
- Provides actionable templates for copy and layout to speed up the design process.
- Ensures critical business information like security, compliance, and risk-reduction is addressed.
- Helps balance self-serve and sales-led motions effectively.
- Optimizes for both human readability and search engine discoverability.
Usage examples
- “Help me design a pricing page for my new project management tool. We have three tiers and want to focus on teams.”
- The agent will request details on your audience, value metrics, and objections, then provide a page outline, pricing table specification, FAQ list, and layout recommendation.
- “My current pricing page has high traffic but low signups. Can you audit it?”
- The agent will compare your current page against the provided checklists and common pitfalls to identify areas for improvement in structure, copy, or layout.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/mengto/pricing-page/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip pricing-page.zip -d .agents/skills
Documentation by Meng To
Pricing Page (High‑Conversion) — Web Design Skill
Design a pricing page that helps visitors choose and feel good about it. Your job is not to “show prices.” Your job is to reduce uncertainty.
Before you design/write
Gather (ask if missing):
1) Offer + audience
What are you selling? (category)
Who is it for? (ICP + primary use case)
What’s the main value metric? (seat, usage, project, revenue, etc.)
2) Plans
Plan names + prices (monthly/annual)
Limits per plan (the 3–6 limits that matter)
What’s the upgrade trigger? (what causes people to move up?)
3) Objections + risk
Top 3 reasons people don’t buy today
Security/compliance needs? (SOC2, GDPR, etc.)
Can you offer: free trial, free plan, money-back, demo?
4) Proof
Testimonials, logos, results, case studies, metrics
5) Traffic context
Are visitors coming from: homepage, feature pages, ads, comparison pages?
What do they already know?
Core structure (what a pricing page should have)
Above the fold (must)
Clear value headline (what outcome, for who)
Monthly/Annual toggle with annual savings callout
3‑plan pricing table (most common) or 2‑plan (simple product)
Primary CTA per plan (consistent verbs)
Below the fold (high leverage)
Plan comparison (feature matrix or “what you get” bullets)
FAQ (objection handling)
Social proof near decision points
Security / compliance / procurement section (if B2B)
Final CTA + contact sales
Layout types (pick one)
A) Classic 3‑card
Best when:
you have 3 natural tiers (Starter / Pro / Business)
pricing is simple
Rules:
1 plan labeled Recommended
show “most popular” without yelling
B) Value metric slider
Best when:
pricing scales with usage (seats, events, credits)
Rules:
keep math obvious
keep a safe default (median customer)
C) “Pick your path” (two columns)
Best when:
different audiences (Individuals vs Teams)
Rules:
separate by persona first, then price
D) Enterprise last mile
Best when:
you have a self-serve path + sales-led path
Rules:
Enterprise should read like procurement reassurance
High‑conversion strategies (practical)
1) Make the decision easy
3 plans max (unless you have a strong reason)
One recommended plan
Bullets describe outcomes, not internal features
2) Anchor value (without being shady)
Annual toggle with “Save X%”
Show “Starting at” only if your pricing is truly variable
Avoid surprise fees
3) Reduce risk
Choose at least one:
Free trial
Free plan
Money‑back guarantee
“Talk to sales” with a clear promise (response time, demo)
4) Handle objections before they bounce
Most effective FAQ topics:
“Can I cancel anytime?”
“What happens if I hit limits?”
“Do you offer discounts?”
“Is this for freelancers/teams?”
“Security / data / compliance”
5) Provide a comparison that’s readable
Avoid huge spreadsheets
Group by: Core, Collaboration, Admin/Security, Support
Highlight what changes at each tier
Copywriting (templates)
Headlines (choose a formula)
“{Outcome} for {audience}—without {pain}”
“Plans that scale from {small} to {big}”
“Start small. Upgrade when {trigger}.”
Plan description (2 lines)
Who it’s for
What it unlocks
Example:
Pro — For designers shipping weekly. Better components, faster iteration.
CTA buttons
Rules:
Use verbs that match the motion:
“Start free trial”
“Buy Pro”
“Contact sales”
Keep CTAs consistent across plans (don’t mix “Get started” / “Try now” / “Sign up”).
Feature bullets (write like outcomes)
❌ “Unlimited projects”
✅ “Ship unlimited client sites without extra fees”
Pricing table checklist (UI)
Visible monthly/annual toggle
“Save X%” callout on annual
Recommended plan styling (subtle)
Key limits visible (3–6 max)
Included items visible (3–6 max)
Clear next step under each plan (trial/buy/contact)
Link: “Compare plans” (scrolls to matrix)
Mobile: table becomes stacked cards (not a horizontal scroll nightmare)
SEO + AEO (AI answers) checklist
SEO basics
Title: “Pricing — {Product}” + outcome keyword
Meta description: 1 sentence on value + 1 sentence on pricing starting point
Clean URL:
/pricingInternal links from:
homepage CTA
feature pages
comparison pages
AEO (answer engines)
Add an FAQ section that answers:
refund policy
trial length
cancellation
what counts as a seat/usage
enterprise procurement
Write FAQs in plain Q/A format.
Optional: FAQ schema (if your stack supports it).
Common pitfalls
Too many plans (analysis paralysis)
Features listed with no context (why it matters)
Pricing hidden behind “Contact sales” for everything
Switching value metric mid-page (confusing)
Over-designed table that harms readability
Output format (when generating a pricing page)
Return:
Page outline (sections + order)
Pricing table spec (plans, bullets, limits, CTA)
FAQ list (6–12 Q/A)
SEO/AEO (title + meta + FAQ schema suggestion)
Layout recommendation (A/B/C/D + why)
Quick questions (if user gives you only “make a pricing page”)
Free plan or trial?
Monthly/annual pricing numbers?
Value metric?
Recommended plan (which one and why)?
Top 3 objections?
Files
- ATTRIBUTION.mdAdded by AutoGineer846 B
- LICENSELicence file added by AutoGineer1.0 KiB
- REFERENCES.md278 B
- SKILL.md5.7 KiB
- demo/PROMPT.md1.8 KiB
- demo/index.html16.5 KiB
- demo/preview.jpg53.2 KiB
demo/index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="data:,">
<title>Pricing Page · Skill Demo</title>
<style>:root{--bg:#ece9e2;--panel:rgba(255,255,255,.68);--panelStrong:#f8f6f1;--ink:#171917;--muted:#686b66;--line:rgba(23,25,23,.16);--accent:hsl(246 92% 68%);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{min-width:320px;margin:0;background:radial-gradient(circle at var(--mx,76%) var(--my,16%),color-mix(in srgb,var(--accent) 16%,transparent),transparent 34%),var(--bg);color:var(--ink)}button,a{font:inherit;color:inherit}button{border:1px solid var(--line);border-radius:999px;padding:11px 15px;background:var(--panel);cursor:pointer}button:hover,button:focus-visible{border-color:var(--accent);outline:2px solid color-mix(in srgb,var(--accent) 42%,transparent);outline-offset:3px}.shell{width:min(1280px,calc(100% - 40px));min-height:100svh;margin:auto;padding:22px 0 40px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 0 30px;border-bottom:1px solid var(--line);font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase}.brand{display:flex;gap:9px;align-items:center}.brand i{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 24px var(--accent)}.topbar a{text-decoration:none}.intro{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:44px;align-items:end;padding:clamp(54px,9vw,116px) 0 42px}.intro small{display:block;margin-bottom:22px;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.intro h1{max-width:11ch;margin:0;font-size:clamp(48px,8vw,112px);font-weight:580;letter-spacing:-.075em;line-height:.86}.intro p{max-width:48ch;margin:0;color:var(--muted);font-size:clamp(14px,1.2vw,18px);line-height:1.6}.showcase{position:relative;min-height:470px;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:var(--panel);isolation:isolate}.showcaseHeader{position:absolute;z-index:5;top:18px;right:18px;left:18px;display:flex;justify-content:space-between;color:var(--muted);font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;pointer-events:none}.layoutStudy{display:grid;grid-template-columns:1.15fr .85fr;min-height:470px}.layoutHero{display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(28px,5vw,70px);border-right:1px solid var(--line)}.layoutHero>span,.kicker{color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.layoutHero h2,.landing h2{max-width:9ch;margin:18px 0;font-size:clamp(42px,6vw,84px);line-height:.9;letter-spacing:-.065em}.layoutHero p,.landing p{max-width:38ch;color:var(--muted);line-height:1.55}.layoutCards{display:grid;grid-template-rows:repeat(3,1fr)}.layoutCards article{display:flex;align-items:end;justify-content:space-between;padding:26px;border-bottom:1px solid var(--line)}.layoutCards article:last-child{border:0}.layoutCards b{color:var(--accent);font-size:34px}.layoutCards span{text-transform:uppercase;font-size:10px;letter-spacing:.15em}.pricing{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;min-height:470px;background:var(--line)}.pricing article{display:flex;flex-direction:column;padding:80px 28px 28px;background:var(--panelStrong)}.pricing article.featured{background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 20%,var(--panelStrong)),var(--panelStrong))}.pricing p{font-size:11px;letter-spacing:.13em;text-transform:uppercase}.pricing strong{margin:24px 0 8px;font-size:56px;letter-spacing:-.06em}.pricing span{color:var(--muted)}.pricing button{margin-top:auto}.landing{display:flex;min-height:470px;flex-direction:column;justify-content:center;padding:clamp(40px,8vw,100px);background:radial-gradient(circle at 75% 36%,color-mix(in srgb,var(--accent) 45%,transparent),transparent 24%)}.landing .actions{display:flex;gap:10px;margin-top:24px}.landing .actions button:first-child{color:var(--bg);background:var(--ink)}.landing .proof{display:flex;gap:28px;margin-top:54px;color:var(--muted);font-size:11px}.marquee{display:flex;min-height:470px;align-items:center;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent);mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent)}.marqueeTrack{display:flex;width:max-content;animation:marquee 18s linear infinite}.marqueeTrack span{min-width:220px;padding:34px;border:1px solid var(--line);font-size:22px;font-weight:700;letter-spacing:-.04em;text-align:center}.iconGrid,.contactSheet{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;min-height:470px;background:var(--line)}.iconGrid article,.contactSheet article{position:relative;padding:70px 28px 28px;background:var(--panelStrong)}.number{position:absolute;top:22px;right:22px;color:var(--accent);font-size:11px}.glyph{display:grid;width:110px;height:110px;place-items:center;margin:30px auto;border:1px solid var(--line);border-radius:34px;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 20%,transparent),transparent);font-size:48px}.iconGrid h3{text-align:center}.contactSheet .asset{height:280px;margin-bottom:22px;border-radius:2px;background-size:cover}.assetOne{background:radial-gradient(circle at 70% 30%,#d9f7ff,transparent 20%),linear-gradient(145deg,#203962,#8db3d6 48%,#d7d5c8)}.assetTwo{background:radial-gradient(circle at 50% 28%,#f1c6a2 0 10%,transparent 11%),linear-gradient(120deg,#1b2738,#754c5a 52%,#e1a77f)}.assetThree{background:repeating-radial-gradient(circle at 30% 65%,#c8b8ff 0 9px,#4c4274 10px 18px,#151629 19px 29px)}.contactSheet b,.contactSheet span{display:block}.contactSheet span{margin-top:8px;color:var(--muted);font-size:11px}.surfaceStudy{display:grid;grid-template-columns:1.4fr .6fr;grid-template-rows:1fr auto;gap:18px;min-height:470px;padding:70px 24px 24px}.surfaceStudy article{border:1px solid var(--line);border-radius:20px;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 12%,var(--panelStrong)),var(--panelStrong))}.surfaceHero{display:flex;grid-row:1/3;flex-direction:column;justify-content:flex-end;padding:42px}.surfaceHero strong{max-width:8ch;margin-top:20px;font-size:clamp(40px,5vw,72px);line-height:.92;letter-spacing:-.06em}.surfaceHero span,.surfaceCard span{color:var(--muted);font-size:10px;letter-spacing:.14em;text-transform:uppercase}.surfaceCard{display:flex;flex-direction:column;padding:26px}.surfaceCard b{margin:auto 0 4px;font-size:56px}.surfaceCard small{color:var(--muted)}.surfaceControl{align-self:end}.motionStage{display:flex;min-height:470px;flex-direction:column;justify-content:center;padding:70px clamp(28px,7vw,90px)}.maskLine{overflow:hidden;margin:0;font-size:clamp(44px,7vw,98px);font-weight:600;letter-spacing:-.075em;line-height:.84}.maskLine span{display:block;transform:translateY(110%);animation:wordIn .8s cubic-bezier(.16,1,.3,1) forwards}.maskLine:nth-child(2) span{animation-delay:.12s}.maskLine:nth-child(3) span{animation-delay:.24s}.accentLine{color:var(--accent)}.timeline{display:flex;gap:8px;margin:42px 0 20px}.timeline i{width:58px;height:3px;background:var(--line);transform-origin:left;animation:grow .8s .42s both}.timeline i:nth-child(2){animation-delay:.54s}.timeline i:nth-child(3){animation-delay:.66s}.timeline i:nth-child(4){animation-delay:.78s}.replay{width:max-content}.visualization{position:relative;min-height:470px}.visualization canvas{position:absolute;inset:0;width:100%;height:100%}.vizMeta{position:absolute;right:28px;bottom:24px;left:28px;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;color:var(--muted);font-size:10px;letter-spacing:.14em;text-transform:uppercase}.vizMeta strong{color:var(--ink);font-size:48px;letter-spacing:-.06em}.vizMeta span:last-child{text-align:right}.simulation{position:relative;min-height:470px}.goo{position:absolute;inset:0;width:100%;height:100%}.goo circle{fill:var(--accent)}.orbA{animation:orbA 4.4s ease-in-out infinite alternate}.orbB{animation:orbB 5.1s ease-in-out infinite alternate}.reset{position:absolute;right:24px;bottom:24px}.demoNote{display:flex;justify-content:space-between;gap:24px;padding:20px 2px;color:var(--muted);font-size:11px;line-height:1.5}.demoNote a{color:var(--ink)}
.pricingWrap{min-height:470px;padding-top:52px}.billingBar{display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:8px 20px;border-top:1px solid var(--line);color:var(--muted);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.billingBar .billingToggle{padding:8px 12px;background:var(--panelStrong);font-size:10px}.pricingWrap .pricing{min-height:360px}.pricingWrap .pricing article{padding:42px 28px 28px}.vizMeta button{justify-self:end;padding:8px 11px;font-size:9px;letter-spacing:.1em;text-transform:uppercase}
@keyframes marquee{to{transform:translateX(-50%)}}@keyframes wordIn{to{transform:translateY(0)}}@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes orbA{to{transform:translate(-120px,70px)}}@keyframes orbB{to{transform:translate(80px,120px)}}@media(max-width:760px){.intro{grid-template-columns:1fr;padding-top:60px}.intro h1{font-size:54px}.layoutStudy,.pricing,.iconGrid,.contactSheet,.surfaceStudy{grid-template-columns:1fr}.layoutHero{border-right:0;border-bottom:1px solid var(--line)}.pricing article{min-height:320px}.surfaceHero{grid-row:auto}.showcase{min-height:540px}.topbar span:last-child{display:none}.demoNote{flex-direction:column}.landing .proof{flex-direction:column;gap:8px}.vizMeta{grid-template-columns:1fr auto}.vizMeta span:last-child{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.marqueeTrack,.maskLine span,.timeline i,.orbA,.orbB{animation:none;transform:none}}</style>
</head>
<body data-kind="pricing" data-skill="pricing-page">
<main class="shell">
<nav class="topbar" aria-label="Demo navigation"><a class="brand" href="#"><i></i>Pricing Page</a><span>Standalone skill reference · 01</span></nav>
<header class="intro">
<div><small>web design / reference demo</small><h1>Pricing Page</h1></div>
<p>Use when designing or rewriting a high-converting SaaS pricing page (structure, plan design, copywriting, SEO/AEO, FAQs, layout patterns, experiments). Includes checklists, templates, and common pitfalls.</p>
</header>
<section class="showcase" aria-label="Pricing Page demonstration">
<div class="showcaseHeader"><span>Live example</span><span>pricing</span></div>
<div class="pricingWrap">
<div class="billingBar"><span>Simple plans · cancel anytime</span><button class="billingToggle" type="button" aria-pressed="false">Show annual pricing</button></div>
<div class="pricing">
<article><p>Starter</p><strong data-monthly="$18" data-annual="$15">$18</strong><span>For focused prototypes</span><button type="button">Choose starter</button></article>
<article class="featured"><p>Studio · Recommended</p><strong data-monthly="$42" data-annual="$35">$42</strong><span>For teams shipping weekly</span><button type="button">Start with Studio</button></article>
<article><p>Scale</p><strong data-monthly="$96" data-annual="$80">$96</strong><span>For multi-product systems</span><button type="button">Talk to us</button></article>
</div>
</div>
</section>
<footer class="demoNote"><span>Open <strong>PROMPT.md</strong> for the exact recreation and remix prompts.</span><a href="PROMPT.md">Read prompt →</a></footer>
</main>
<script>const reduced=matchMedia("(prefers-reduced-motion: reduce)").matches;addEventListener("pointermove",event=>{document.body.style.setProperty("--mx",event.clientX+"px");document.body.style.setProperty("--my",event.clientY+"px")},{passive:true});const billing=document.querySelector(".billingToggle");if(billing)billing.addEventListener("click",()=>{const annual=billing.getAttribute("aria-pressed")!=="true";billing.setAttribute("aria-pressed",String(annual));billing.textContent=annual?"Show monthly pricing":"Show annual pricing";document.querySelectorAll(".pricing strong").forEach(price=>price.textContent=annual?price.dataset.annual:price.dataset.monthly)});const replay=document.querySelector(".replay");if(replay)replay.addEventListener("click",()=>{document.querySelectorAll(".maskLine span,.timeline i").forEach(node=>{node.style.animation="none";node.offsetHeight;node.style.animation=""})});const reset=document.querySelector(".reset");if(reset)reset.addEventListener("click",()=>document.querySelectorAll(".orbA,.orbB").forEach(node=>{node.style.animation="none";node.offsetHeight;node.style.animation=""}));const canvas=document.querySelector("canvas");if(canvas&&!reduced){const context=canvas.getContext("2d");let width=0,height=0,frame=0,time=0;const mode="field";const bodies=Array.from({length:14},(_,i)=>({x:80+(i%7)*92,y:40+Math.floor(i/7)*70,vx:(i%3-1)*.7,vy:0,r:12+(i%4)*5}));const resetBodies=()=>bodies.forEach((body,i)=>{body.x=40+(i%7)*Math.max(32,(width-80)/6);body.y=35+Math.floor(i/7)*58;body.vx=(i%3-1)*.7;body.vy=0});const resetBodiesButton=document.querySelector(".resetBodies");if(resetBodiesButton)resetBodiesButton.addEventListener("click",resetBodies);const resize=()=>{const rect=canvas.getBoundingClientRect();const ratio=Math.min(devicePixelRatio||1,2);width=rect.width;height=rect.height;canvas.width=Math.round(width*ratio);canvas.height=Math.round(height*ratio);context.setTransform(ratio,0,0,ratio,0,0)};const draw=()=>{frame=requestAnimationFrame(draw);time+=.008;context.clearRect(0,0,width,height);const accent=getComputedStyle(document.documentElement).getPropertyValue("--accent").trim();if(mode==="globe"){const radius=Math.min(width,height)*.29;const cx=width*.5,cy=height*.47;context.fillStyle=accent;for(let i=0;i<360;i++){const phi=Math.acos(1-2*(i+.5)/360);const theta=Math.PI*(1+Math.sqrt(5))*i+time;const x=Math.sin(phi)*Math.cos(theta);const y=Math.cos(phi);const z=Math.sin(phi)*Math.sin(theta);const scale=(z+1.7)/2.7;context.globalAlpha=.16+.74*scale;context.beginPath();context.arc(cx+x*radius,cy+y*radius,Math.max(.7,2.2*scale),0,Math.PI*2);context.fill()}context.globalAlpha=.16;context.strokeStyle=accent;context.beginPath();context.ellipse(cx,cy+radius*.18,radius*1.34,radius*.34,time*.4,0,Math.PI*2);context.stroke()}else if(mode==="object"){const size=Math.min(width,height)*.24,cx=width*.5,cy=height*.48;const vertices=[[-1,-1,-1],[1,-1,-1],[1,1,-1],[-1,1,-1],[-1,-1,1],[1,-1,1],[1,1,1],[-1,1,1]];const edges=[[0,1],[1,2],[2,3],[3,0],[4,5],[5,6],[6,7],[7,4],[0,4],[1,5],[2,6],[3,7]];const points=vertices.map(([x,y,z])=>{const a=time*1.1,b=time*.73;const x1=x*Math.cos(a)-z*Math.sin(a),z1=x*Math.sin(a)+z*Math.cos(a),y1=y*Math.cos(b)-z1*Math.sin(b),z2=y*Math.sin(b)+z1*Math.cos(b),p=3.8/(z2+5);return{x:cx+x1*size*p,y:cy+y1*size*p,z:z2,p}});context.strokeStyle=accent;context.lineWidth=1.4;context.shadowColor=accent;context.shadowBlur=12;for(const [a,b] of edges){context.globalAlpha=.25+.45*((points[a].z+points[b].z+4)/8);context.beginPath();context.moveTo(points[a].x,points[a].y);context.lineTo(points[b].x,points[b].y);context.stroke()}context.fillStyle=accent;for(const point of points){context.globalAlpha=.55+.35*(point.z+2)/4;context.beginPath();context.arc(point.x,point.y,3.2*point.p,0,Math.PI*2);context.fill()}context.shadowBlur=0}else if(mode==="matter"){context.fillStyle=accent;for(const body of bodies){body.vy+=.16;body.x+=body.vx;body.y+=body.vy;if(body.x<body.r||body.x>width-body.r){body.vx*=-.94;body.x=Math.max(body.r,Math.min(width-body.r,body.x))}if(body.y>height-body.r-30){body.y=height-body.r-30;body.vy*=-.78}context.globalAlpha=.28+.45*(body.r/32);context.beginPath();context.arc(body.x,body.y,body.r,0,Math.PI*2);context.fill()}context.globalAlpha=.22;context.fillRect(0,height-31,width,1)}else{context.strokeStyle=accent;context.lineWidth=1;for(let i=0;i<18;i++){const y=(i/17)*height;context.globalAlpha=.08+.12*Math.sin(time+i*.4);context.beginPath();for(let x=0;x<=width;x+=12){const wave=Math.sin(x*.012+i*.54+time*3)*18*Math.sin(i/17*Math.PI);context.lineTo(x,y+wave)}context.stroke()}context.globalAlpha=.65;const x=width*(.52+.16*Math.sin(time*.6));const gradient=context.createLinearGradient(x,0,x+2,0);gradient.addColorStop(0,"transparent");gradient.addColorStop(.5,"white");gradient.addColorStop(1,"transparent");context.fillStyle=gradient;context.fillRect(x,0,3,height)}};resize();new ResizeObserver(resize).observe(canvas);const visibility=()=>{if(document.hidden){cancelAnimationFrame(frame);frame=0}else if(!frame)draw()};document.addEventListener("visibilitychange",visibility);draw();}</script>
</body>
</html>
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Meng To
- Publisher
- Meng To (Community)
- Source
- MengTo/Skills · agent-skills/web-design/pricing-page · commit 5ea1661
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Meng To.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download pricing-page.zip