Skip to content
Back to skills

Hero

ASecurity

Generate a professional Hero section — the first content block visitors see. Works standalone or as part of a full page. **Visual System**: `shared/visual-style.md` — default design tokens for Light/Dark themes. Business, Colorful, and Editorial use their own style files — see *Style precedence* in the master `SKILL.md`. **Section Knowledge**: `pages/landing-page/references/hero.md` — patterns, variants, and anti-patterns from 30+ real product research. ---

  • 2 stars
  • 0 votes
  • 2 copies
  • 4 views
  • Added October 19, 2026
designgoapidatabasedevops

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Scanned October 19, 2026

npx -y skills add senlindesign/proof --skill hero --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hero?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hero
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/senlindesign-hero/badge)](https://www.skillsdirectory.com/skills/senlindesign-hero)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Hero Section Skill

Generate a professional Hero section — the first content block visitors see. Works standalone or as part of a full page.

**Visual System**: `shared/visual-style.md` — default design tokens for Light/Dark themes. Business, Colorful, and Editorial use their own style files — see *Style precedence* in the master `SKILL.md`.
**Section Knowledge**: `pages/landing-page/references/hero.md` — patterns, variants, and anti-patterns from 30+ real product research.

---

## When to Use

- "Add a hero section to my page"
- "Create a hero banner for [product]"
- "Build the above-the-fold section"
- When a Page Skill needs a Hero — it references this knowledge internally

Do NOT use for:
- Blog post headers (different content structure)
- App-internal welcome screens

---

## Workflow

### Step 1: Understand Inputs

**Required**:
- Product name and one-line description
- Core value proposition (what + for whom + why)

**Defaults if not provided**:
- Theme → Light
- Hero pattern → Centered Stack (most common)
- Brand color → none (`--accent` = `--text`)
- Display font → the active style's display font (Minimal: DM Sans)

### Step 2: Select Pattern

Read `pages/landing-page/references/hero.md` and select:

| Pattern | Best When |
|---------|-----------|
| Centered Stack | Product has one strong UI screenshot; standard value pitch |
| Split (text + visual) | Need to show product context alongside explanation |
| Dark Background | Developer/technical audience; DevOps, API, CLI, or code tooling |
| Text-Only | Brand/narrative page; no product visual available |

**Dark Background** is a full pattern, not a theme toggle: background #0A0A0A–#1A1A1A (never pure #000), light text, and the main visual is a syntax-highlighted code block or terminal. Do NOT use it when the product serves non-technical users or when the only screenshot is a light UI — a light screenshot on a dark background reads as pasted-on.

**Button visibility on Dark Background hero**: `--accent` defaults to `var(--text)` = `#141414` on a light-theme page. A `.btn-dark { background: var(--accent) }` is nearly invisible on a `#141414` dark hero. Two options — choose one:
- **Dark-theme page** (recommended): set the page to dark theme (`--bg: #0A0A0A; --text: #EDEDED`). Then `--accent = #EDEDED` and the button is automatically visible.
- **Section-level override**: add `class="section-dark"` to the `<section>` element. This sets `background: var(--text) = #141414` and enables all `.section-dark .btn-dark` overrides (button becomes `background: var(--text-inverse)`). The background will be `#141414`, not `#0A0A0A` — slightly lighter, but buttons are visible.

### Step 3: Build

Read the active style file first (`shared/visual-style.md` for Minimal, the default). The tokens below are Minimal defaults — with another style active, take visual values from that style file per *Style precedence* in the master `SKILL.md`, and keep the layout and structure below:

```
Hero top padding:     128px, measured from the bottom of the nav. If the nav is
                      position: fixed it is out of flow — set
                      body { padding-top: var(--nav-h) } (68px) so this 128px
                      starts below the nav instead of at the viewport top.
Hero bottom padding:  180px (matches section rhythm — the visual gap between Hero
                      content bottom and the next section's content top will be
                      180 + 180 = 360px, which is the system's intended spacing)
Headline:             clamp(48px, 7vw, 80px) / weight 500 / tracking -0.02em / line-height 1.05
                      max-width 900px — without a measure the line breaks land arbitrarily
Subheadline:          18px / weight 400 / opacity 0.5 / max-width 540px
Headline → Sub gap:   24px
Sub → CTA gap:        48px
CTA → Visual gap:     58px
CTA button:           .btn-lg — 16px / 12px 24px padding / 2px radius / var(--accent) bg
                      Hero uses the large variant; nav CTA stays 14px so the two
                      do not read as the same button
CTA group gap:        12px (between primary and secondary buttons; flex gap)
                      Both buttons in Hero use .btn-lg for visual balance
Product visual:       70-90% width / surface-1 bg / 16px radius frame
                      See "Synthetic Product Visual" below — offline you will never
                      have a real screenshot, so you must construct one
```

**Structure** (top to bottom):
1. [Optional] Label — mono 12px, uppercase, opacity 0.4
2. Headline — one `<h1>`, the single biggest text on the page
3. [Optional] Subheadline — 1-2 sentences, opacity 0.5
4. CTA group — primary `.btn-dark` + optional secondary `.btn-outline`
5. Product visual — screenshot in `surface-1` frame, or text-only if no visual

**Rules**:
- Headline must be ≥3x body text size
- No illustrations, gradients, or abstract graphics — product content only
- No box-shadow — use background color steps for depth
- Center-aligned by default; left-aligned only for Split pattern

#### Synthetic Product Visual

"Use a product screenshot" is not actionable offline — there is no screenshot. The
visual occupies roughly half the Hero's area, so leaving it to improvisation is what
makes a page read as AI-generated. Build it out of real UI, in HTML/CSS.

**See `shared/visual-style.md` §8 → "Synthetic Product Visual"** for the complete token set, layout table (5 mock layout types by product category), and fill rules.

Key principle: fill the mock with content from the product's own domain. A scheduling tool shows real timezone names; a database tool shows real column names. Generic placeholders ("Item 1", "Lorem ipsum", empty grey rectangles) defeat the entire purpose.

#### Motion & Interaction

Reference: `shared/interaction-patterns.md`

- Do NOT apply scroll reveal — Hero is the first section visitors see; delaying its content is an anti-pattern (§13 Page-Type Map, §15 Anti-Patterns)
- Optional: **Text reveal** on `<h1>` — words appear one by one with 60ms stagger, 0.6s duration, translateY(12px), cubic-bezier(0.16, 1, 0.3, 1). Skip if heading exceeds 7 words (§7)
- Optional: **Counter animation** on KPI numbers — 2000ms duration, ease-out cubic: `1 - (1-t)^3`, triggered on `DOMContentLoaded` (not scroll — Hero is above the fold so IntersectionObserver never fires). Use `data-count-to` attributes; initial text must equal the final display value, not "0" (§5 and Hero load-trigger snippet in `shared/interaction-patterns.md`)
- All animations wrapped in `@media (prefers-reduced-motion: no-preference)`

### Step 4: Verify

Visual values in this checklist assume Minimal. With another style active, check against the active style file instead.

- [ ] Top padding ≥ 128px?
- [ ] Bottom padding = 180px (section rhythm)?
- [ ] Headline uses `clamp()` and tracks negative?
- [ ] Subheadline same color as headline, different only in opacity?
- [ ] CTA uses `var(--accent)` / `var(--accent-text)`?
- [ ] Product visual uses `var(--surface-1)` background, not shadow?
- [ ] Product visual contains real UI — labelled rows/columns/values from the product's
      own domain, not grey placeholder bars or "Item 1"?
- [ ] Works at 767px width?
- [ ] Zero box-shadow?

### Step 5: Deliver

Provide the section code (HTML + CSS). Note which pattern was chosen and why.

---

## Constraints

- No Mobbin or external API dependency
- V1: visual presentation only — CTA buttons are visual, no real navigation
- All design knowledge is pre-distilled in the referenced files
- Follow `shared/visual-style.md` tokens exactly — do not invent values

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.