melgarafael/growthos/sales-page-builder

Claude Code and agent skill by melgarafael/growthos

Trust tier 3
  • community
  • ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Source check pending

Checking that the SKILL.md file is still in the repository.

Phase 7 builder for the Sales Page Production System. Converts approved visual design tokens (Phase 4) and narrative copy (Phase 5/6) into production-ready single-file HTML with embedded CSS and minimal JS. Implements scroll-driven animations, canvas frame sequences, Every Layout primitives, fluid typography, and mathematical positioning. Targets <300KB with animations, <100KB without. Use when building the final HTML output of a sales page pipeline.

Install

npx vskill@latest install melgarafael/growthos/sales-page-builder

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

Sales Page Builder Skill

You are the Build Engine of the Sales Page Production System (Phase 7). You receive approved design tokens and narrative copy from earlier phases and produce a single, self-contained HTML file that is performant, accessible, SEO-ready, and visually elite.

You do NOT invent copy or design. Everything you build traces to Phase 4 (visual design) and Phase 5/6 (narrative/fusion). Your job is engineering excellence.

Core Principle: Directed Build

INPUT: state.json (Phase 4 design_tokens + Phase 5 sections + Phase 6 fusion)
OUTPUT: Single-file index.html — production-ready, self-contained

Every CSS value traces to a design token. Every text node traces to approved copy. Every animation traces to a technique selected in Phase 4.


A. Build Architecture

Output Constraints
RuleDetail
Single fileOne .html file — no separate CSS, JS, or image files
Embedded CSSAll styles via <style> tag in <head>
Minimal JSVia <script> at end of <body> — ONLY for animations/interactions that CSS cannot handle
No external depsNo CDNs, no tracking scripts, no external requests at runtime
FontsSystem font stack as primary. Optional: single Google Fonts @import inline if design requires it
Icons/illustrationsInline SVG only — no icon fonts, no external images
File sizeTarget <300KB with animations, <100KB without
Document Structure
html
<!DOCTYPE html>
<html lang="{{lang}}">
<head>
<!-- SEO Meta (Section G) -->
<style>
/* 1. CSS Reset */
/* 2. Custom Properties (Section B) */
/* 3. Layout Primitives (Section C) */
/* 4. Component Styles */
/* 5. Section Styles */
/* 6. Animation Definitions (Section D) */
/* 7. Responsive Adjustments */
/* 8. Reduced Motion */
/* 9. Print Styles (optional) */
</style>
</head>
<body>
<a href="#main" class="skip-link">Skip to content</a>
<main id="main">
<!-- Sections from Phase 5/6 narrative -->
</main>
<footer><!-- Minimal footer --></footer>
<script>
/* Only if canvas frame sequence or complex interactions needed */
</script>
</body>
</html>
CSS Cascade Order

The <style> block follows this exact order to ensure predictable specificity:

  1. Reset — minimal box-sizing + margin reset
  2. Custom properties — :root tokens from Phase 4
  3. Layout primitives — composable layout classes (Section C)
  4. Base typography — body, headings, links, lists
  5. Components — buttons, badges, cards, accordions
  6. Sections — hero, features, pricing, etc. (Section E)
  7. Animations — @keyframes + scroll-driven rules (Section D)
  8. Media queries — responsive overrides, reduced-motion, print

B. CSS Custom Properties System

Token Mapping

Design tokens from Phase 4's design_tokens object map directly to CSS custom properties. The builder reads state.json and populates these values.

css
:root {
/* ── Colors (from Phase 4 design_tokens.colors) ── */
--sp-bg: #09090B;
--sp-fg: #FAFAFA;
--sp-accent: #3B82F6;
--sp-accent-2: #8B5CF6;
--sp-surface: #18181B;
--sp-muted: #71717A;
--sp-border: #27272A;
/* ── Typography — fluid using clamp() ── */
--sp-text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
--sp-text-sm: clamp(0.875rem, 0.8rem + 0.375vw, 1rem);
--sp-text-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
--sp-text-lg: clamp(1.125rem, 1rem + 0.625vw, 1.375rem);
--sp-text-xl: clamp(1.25rem, 1rem + 1.25vw, 1.75rem);
--sp-text-2xl: clamp(1.5rem, 1rem + 2.5vw, 2.5rem);
--sp-text-3xl: clamp(2rem, 1rem + 5vw, 4rem);
--sp-text-hero: clamp(2.5rem, 1rem + 7.5vw, 6rem);
/* ── Spacing — Utopia-inspired fluid scale ── */
--sp-space-xs: clamp(0.25rem, 0.2rem + 0.25vw, 0.5rem);
--sp-space-sm: clamp(0.5rem, 0.4rem + 0.5vw, 1rem);
--sp-space-md: clamp(1rem, 0.75rem + 1.25vw, 2rem);
--sp-space-lg: clamp(2rem, 1.5rem + 2.5vw, 4rem);
--sp-space-xl: clamp(4rem, 3rem + 5vw, 8rem);
--sp-space-2xl: clamp(6rem, 4rem + 10vw, 12rem);
/* ── Motion ── */
--sp-ease: cubic-bezier(0.16, 1, 0.3, 1);
--sp-ease-out: cubic-bezier(0, 0, 0.3, 1);
--sp-ease-in: cubic-bezier(0.7, 0, 1, 1);
--sp-duration-micro: 150ms;
--sp-duration-fast: 300ms;
--sp-duration-normal: 500ms;
--sp-duration-slow: 1000ms;
/* ── Layout ── */
--sp-max-width: 1200px;
--sp-content-width: 720px;
--sp-gutter: clamp(1rem, 0.5rem + 2.5vw, 2rem);
/* ── Borders & Effects ── */
--sp-radius-sm: 4px;
--sp-radius-md: 8px;
--sp-radius-lg: 16px;
--sp-radius-full: 9999px;
--sp-shadow-sm: 0 1px 2px rgba(0,0,0,0.3);
--sp-shadow-md: 0 4px 12px rgba(0,0,0,0.4);
--sp-shadow-lg: 0 12px 40px rgba(0,0,0,0.5);
}
Reduced Motion Override
css
@media (prefers-reduced-motion: reduce) {
:root {
--sp-duration-micro: 0ms;
--sp-duration-fast: 0ms;
--sp-duration-normal: 0ms;
--sp-duration-slow: 0ms;
}
}
How to Override Tokens

When Phase 4 provides specific values, replace the defaults above. Example:

Phase 4 state: design_tokens.colors.accent_primary = "#B0FF3C"
→ CSS: --sp-accent: #B0FF3C;

The builder MUST map every Phase 4 token to its corresponding --sp-* variable. Never hardcode colors or sizes outside of custom properties.


C. Layout System (Every Layout-Inspired)

Eight composable layout primitives. Each is a single CSS class with minimal declarations. Combine them to build any section layout without writing custom CSS.

1. Stack — Vertical Flow

Consistent vertical spacing between child elements.

css
.stack {
display: flex;
flex-direction: column;
}
.stack > * + * {
margin-block-start: var(--stack-space, var(--sp-space-md));
}

Usage: <div class="stack" style="--stack-space: var(--sp-space-lg)"> to override spacing.

2. Center — Content Centering

Horizontally centers content with a max-width and gutters.

css
.center {
box-sizing: content-box;
max-inline-size: var(--center-max, var(--sp-content-width));
margin-inline: auto;
padding-inline: var(--sp-gutter);
}
3. Cluster — Horizontal Wrap

Flexible horizontal grouping with wrapping. For tags, badges, logo bars, social proof.

css
.cluster {
display: flex;
flex-wrap: wrap;
gap: var(--cluster-gap, var(--sp-space-sm));
align-items: center;
}
4. Sidebar — Main + Aside

Two-column layout where one side has a fixed width and the other fills remaining space.

css
.with-sidebar {
display: flex;
flex-wrap: wrap;
gap: var(--sp-space-lg);
}
.with-sidebar > :first-child {
flex-grow: 999;
min-inline-size: 65%;
}
.with-sidebar > :last-child {
flex-basis: var(--sidebar-width, 300px);
flex-grow: 1;
}
5. Switcher — Responsive Column Switch

N columns on wide screens, stacks on narrow. Threshold-based, no media queries.

css
.switcher {
display: flex;
flex-wrap: wrap;
gap: var(--sp-space-md);
}
.switcher > * {
flex-grow: 1;
flex-basis: calc((var(--switcher-threshold, 640px) - 100%) * 999);
}
6. Grid — Auto-Fit Responsive

Responsive grid that auto-fills columns based on a minimum width.

css
.auto-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(var(--grid-min, 250px), 100%), 1fr));
gap: var(--sp-space-md);
}
7. Cover — Full-Viewport Hero

Vertically centers content within a minimum-height container (typically 100vh).

css
.cover {
display: flex;
flex-direction: column;
min-block-size: var(--cover-min-height, 100vh);
padding: var(--sp-space-lg);
}
.cover > * {
margin-block: auto;
}
.cover > :first-child:not(.cover-center) {
margin-block-start: 0;
}
.cover > :last-child:not(.cover-center) {
margin-block-end: 0;
}
.cover > .cover-center {
margin-block: auto;
}
8. Frame — Aspect-Ratio Container

Maintains aspect ratio for images, videos, and embedded content.

css
.frame {
aspect-ratio: var(--frame-ratio, 16/9);
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
}
.frame > img,
.frame > video {
inline-size: 100%;
block-size: 100%;
object-fit: cover;
}
Combining Primitives

Primitives compose — nest them to build complex layouts:

html
<!-- Hero: full-viewport cover with centered content -->
<section class="cover">
<div class="center cover-center">
<div class="stack" style="--stack-space: var(--sp-space-lg)">
<h1>Headline</h1>
<p>Subheadline</p>
<a href="#" class="btn-primary">CTA</a>
</div>
</div>
</section>
<!-- Features: centered grid -->
<section>
<div class="center" style="--center-max: var(--sp-max-width)">
<div class="auto-grid" style="--grid-min: 280px">
<!-- Feature cards -->
</div>
</div>
</section>
<!-- Pricing: sidebar layout -->
<section>
<div class="center with-sidebar">
<div class="stack"><!-- Plan details --></div>
<aside><!-- Price card --></aside>
</div>
</section>

D. Animation Techniques

Four tiers of animation, selected by Phase 4's animation_strategy field. Each tier includes the previous.

Animation Strategy Mapping
Phase 4 animation_strategyTiers Included
minimalTier 1 only
moderateTier 1 + Tier 2 + Tier 3
cinematicAll 4 tiers
Tier 1: Micro-Interactions (Always Included)

Subtle feedback on interactive elements. Pure CSS, no JS, GPU-friendly.

css
/* Button hover + active */
.btn-primary {
transition: transform var(--sp-duration-micro) var(--sp-ease),
box-shadow var(--sp-duration-micro) var(--sp-ease);
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(0,0,0,0.3);
}
.btn-primary:active {
transform: translateY(0);
box-shadow: var(--sp-shadow-sm);
}
/* Focus outlines */
:focus-visible {
outline: 2px solid var(--sp-accent);
outline-offset: 3px;
}
/* Link underline transition */
a:not(.btn-primary) {
text-decoration-color: transparent;
text-underline-offset: 3px;
transition: text-decoration-color var(--sp-duration-micro) var(--sp-ease);
}
a:not(.btn-primary):hover {
text-decoration-color: currentColor;
}
/* Card hover lift */
.card {
transition: transform var(--sp-duration-fast) var(--sp-ease),
box-shadow var(--sp-duration-fast) var(--sp-ease);
}
.card:hover {
transform: translateY(-4px);
box-shadow: var(--sp-shadow-lg);
}
Tier 2: Reveal-on-Scroll (CSS Scroll-Driven Animations)

Elements fade/slide into view as they enter the viewport. Uses the modern CSS animation-timeline: view() API with a fallback.

css
/* Progressive enhancement — only applies if browser supports scroll-driven */
@supports (animation-timeline: view()) {
.reveal {
animation: reveal-up linear both;
animation-timeline: view();
animation-range: entry 0% entry 35%;
}
.reveal-left {
animation: reveal-left linear both;
animation-timeline: view();
animation-range: entry 0% entry 35%;
}
.reveal-scale {
animation: reveal-scale linear both;
animation-timeline: view();
animation-range: entry 0% entry 40%;
}
/* Stagger children — apply to parent, children get delayed reveals */
.reveal-stagger > * {
animation: reveal-up linear both;
animation-timeline: view();
animation-range: entry 0% entry 40%;
}
.reveal-stagger > :nth-child(2) { animation-delay: 80ms; }
.reveal-stagger > :nth-child(3) { animation-delay: 160ms; }
.reveal-stagger > :nth-child(4) { animation-delay: 240ms; }
.reveal-stagger > :nth-child(5) { animation-delay: 320ms; }
.reveal-stagger > :nth-child(6) { animation-delay: 400ms; }
}
@keyframes reveal-up {
from { opacity: 0; transform: translateY(30px); }
to { opacity: 1; transform: translateY(0); }
}

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Extension points

  • hookPre/post lifecycle hooks

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/melgarafael/growthos/sales-page-builder/badge)](https://verified-skill.com/skills/melgarafael/growthos/sales-page-builder)

Something wrong with this skill or its page? Tell us.