Agent skill

Creating Oneshot Landing Pages

by nroadley in nroadley/Creating-Oneshot-Hero-Landing-Pages

Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation.

MITAuto-check passedFrontend & Design

Install Creating Oneshot Landing Pages

skills CLI
$ npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nroadley/Creating-Oneshot-Hero-Landing-Pages creating-oneshot-landing-pages --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
creating-oneshot-landing-pages
GitHub stars
134
Token cost
~3.5k tokens
SKILL.md length
698 words
Files
3
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation.

  • Works in 4 steps: 4-Step Execution Pipeline → Design Guidelines → Omni Video Python Generator → …
  • Tasks that involve Landing pages
  • SKILL.md covers 1. 4-Step Execution Pipeline, 2. Design Guidelines, 3. Omni Video Python Generator and 4. Hero Video Scrub Scaffold…
  • Calls pip and python3; reaches fonts.googleapis.com and generativelanguage.googleapis.com

What it does

Creating Oneshot Landing Pages is an agent skill from nroadley/Creating-Oneshot-Hero-Landing-Pages. Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation. Powered by Gemini Omni and Nano Banana.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `README.md`).

It sits in Frontend & Design, covering Landing pages and Image generation. It works with Google Gemini and Python. The repository describes itself as: An Antigravity skill to design and build Omni video-driven parallax hero landing pages with a single prompt. The licence is MIT.

When your agent uses it

  • Tasks that involve Landing pages
  • Tasks that involve Image generation

Example prompts

  • “Use the creating-oneshot-landing-pages skill to design and builds video-driven parallax hero landing pages with smooth video scrubbing…”
  • “/creating-oneshot-landing-pages”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. 4-Step Execution Pipeline
  2. Design Guidelines
  3. Omni Video Python Generator
  4. Hero Video Scrub Scaffold (HTML + CSS + JS)

What it can do on your machine

Read from SKILL.md and the folder at commit 83a1abe. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip
    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • fonts.googleapis.com
    • generativelanguage.googleapis.com
    • cdn.tailwindcss.com
    • fonts.gstatic.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Creating Oneshot Landing Pages loads about 3.5k tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 698 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~52
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from nroadley/Creating-Oneshot-Hero-Landing-Pages at commit 83a1abe, republished under its MIT licence (© nroadley). 698 words, ~3,508 tokens.

Download SKILL.mdSave it as .claude/skills/creating-oneshot-landing-pages/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
creating-oneshot-landing-pages
description
Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation. Powered by Gemini Omni and Nano Banana.

Creating Oneshot Hero Landing Pages

An Antigravity skill to design and build video-driven parallax hero landing pages and looping motion showcases.


1. 4-Step Execution Pipeline

Execute every landing page request in this order:

  1. Step 1: Reference Images: Generate reference images via generate_image (the built-in Antigravity tool powered by Nano Banana / gemini-3.1-flash-image) and save them into ./assets/ (e.g. ./assets/hero_ref.jpg, ./assets/showcase_ref.jpg).
  2. Step 2: Video Generation: Execute Python REST calls against gemini-omni-flash-preview (Section 3) using the reference images to generate 10s 16:9 .mp4 video files into ./assets/.
  3. Step 3: Frontend Implementation: Implement the Hero Video Scrub Scaffold (Section 4) in index.html with smooth scroll video scrubbing, progress-locked hero text, and clean navigation.
  4. Step 4: Verification & Local Hosting: Launch a local preview server (python3 -m http.server 3000 --directory <dir>), verify all video assets return 200 OK, and inspect the visual layout.

2. Design Guidelines

  • Navigation Guidelines:
    • Pick ONE Focused Composition:
      • [Logo] + [2–4 Editorial Links Max] (strictly <= 4 links)
      • [Logo] + [Menu / Index Trigger]
      • [Logo] + [Brand Tagline or Location] + [Menu]
      • [Logo] + [Single Quiet CTA]
      • [Split Nav] with [2 Links] Left, [Logo] Center, [2 Links or 1 CTA] Right
    • Keep It Simple: If you have 2–4 inline links, do not stack a heavy CTA button and hamburger menu next to them. If using a drawer, keep the bar quiet.
    • No Mechanical Numbering or Fake Tickers: Do not prefix mechanical numbers (01, 02, 03) onto nav links. Do not add fake GPS coordinates, sensor readings, or status dots (● LIVE).
  • No Decorative SVG Icons on Cards or UI:
    • Do not place decorative SVG icons, Lucide icons (<i data-lucide=...>), or icon badge containers inside feature cards, headings, bullet points, or buttons.
    • Cards, pillars, and sections should rely on typography, whitespace, and photography/video. (SVGs are fine for a logo mark or modal close button).
  • No Toy Widgets, Interactive Simulators, or Mini-Games:
    • Landing pages are editorial showcases.
    • Do not generate character stat calculators, RPG inventory boxes, physics toy widgets, interactive sandbox cards, or canvas-confetti particle scripts.
    • For playful brands or games, express personality through color palettes, typography, and video motion rather than playable JavaScript mini-games or calculators.
  • No Unrequested Audio Buttons or Sound Synthesizers:
    • Do not generate audio toggle buttons (🔊), background sound generators, or Web Audio API synthesizers (AudioContext, oscillators).
  • Clean Typography Over Badges:
    • Default to unbordered typography, subtle font weights, fine line accents (—), or roman numerals (I, II) instead of encasing words inside rounded pill badges ([ BADGE ]).
    • When a tag or table cell is necessary:
      • 1–2 Words Maximum: Do not put long descriptions or sentences into compact badges (e.g. use LEO, not LEO Station Rendezvous).
      • Include whitespace-nowrap: Keep badge text on a single line so it never breaks into awkward stacks.
      • Single-Row Filter Bars: Filter buttons should stay on a single unbroken row (flex items-center gap-2 overflow-x-auto whitespace-nowrap).
      • Responsive Tables: Data tables should use responsive scroll wrappers (overflow-x-auto min-w-[650px]).
  • Media & Hero Video Rules:
    • The hero must use a <video id="hero-video"> element. Do not substitute video with <canvas> image slideshows or static <img> tags.
    • Supplemental showcases generated by Omni should be looping <video autoplay muted loop playsinline> elements.
    • No Visible Scrubber HUDs: Do not render timeline scrub bars, progress percentage meters ("00%"), or cockpit dials over media.
  • Progress-Locked Hero Text:
    • Calculate hero text opacity and translation directly from scroll progress in JavaScript (see Section 4). Scrolling reveals text, pausing keeps it readable, reversing hides it.
    • Do not use time-based CSS transitions (transition: opacity 0.7s) on hero scroll text that cause text to lag or scroll past unread. (CSS animations are fine in standard body sections).
  • Layout & Stacking Rules:
    • Root containers (html, body, #root, wrappers) must have overflow: visible (or overflow-x: clip). Do not use overflow-hidden or overflow-x-hidden on parent wrappers, which breaks CSS position: sticky.
    • Hero videos should stretch edge-to-edge (w-full h-full object-cover), not styled as small rounded UI cards.
  • Typography & Color:
    • Use modern Google Fonts (e.g. Italiana, Cormorant Garamond, Plus Jakarta Sans, Space Grotesk).
    • Use curated color palettes (e.g. terracotta, basalt, obsidian, titanium, alabaster) rather than default generic rainbow colors.
Show full SKILL.md (35 more words)Show less

3. Omni Video Python Generator

Install dependencies:

bash
pip install google-genai pillow

Save generated .mp4 files directly to ./assets/ using this script:

python
import base64
import io
import json
import os
import ssl
import sys
import urllib.error
import urllib.request
from PIL import Image

def generate_omni_video(
    api_key: str,
    img_path: str,
    prompt: str,
    output_mp4_path: str
) -> bool:
    ctx = ssl.create_default_context()
    url = "https://generativelanguage.googleapis.com/v1beta/interactions"
    
    try:
        img = Image.open(img_path).convert("RGB")
        buf = io.BytesIO()
        img.save(buf, format="PNG")
        b64_img = base64.b64encode(buf.getvalue()).decode("utf-8")
    except Exception as e:
        print(f"Error opening image '{img_path}': {e}", file=sys.stderr)
        return False

    payload = {
        "model": "models/gemini-omni-flash-preview",
        "generation_config": {"thinking_level": "high"},
        "response_format": {"type": "video", "aspect_ratio": "16:9", "duration": "10s"},
        "input": [
            {"type": "text", "text": prompt + " No text, no titles, no subtitles, no overlays."},
            {"type": "image", "mime_type": "image/png", "data": b64_img}
        ]
    }
    
    req = urllib.request.Request(
        url,
        data=json.dumps(payload).encode("utf-8"),
        headers={
            "Content-Type": "application/json",
            "x-goog-api-key": api_key
        }
    )
    
    try:
        with urllib.request.urlopen(req, context=ctx) as response:
            res = json.loads(response.read().decode("utf-8"))
            for step in res.get("steps", []):
                for item in step.get("content", []):
                    if item.get("type") == "video" or "video" in str(item.get("mime_type")):
                        os.makedirs(os.path.dirname(output_mp4_path) or ".", exist_ok=True)
                        with open(output_mp4_path, "wb") as f:
                            f.write(base64.b64decode(item["data"]))
                        return True
            print("No video data found in response payload.", file=sys.stderr)
            return False
    except urllib.error.HTTPError as e:
        error_body = e.read().decode("utf-8", errors="replace")
        print(f"API HTTP Error {e.code} ({e.reason}): {error_body}", file=sys.stderr)
        return False
    except urllib.error.URLError as e:
        print(f"Network / URL Error: {e.reason}", file=sys.stderr)
        return False
    except Exception as e:
        print(f"Unexpected error during video generation: {e}", file=sys.stderr)
        return False

4. Hero Video Scrub Scaffold (HTML + CSS + JS)

Use this architecture for the sticky 400vh video scrubbing engine:

html
<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Brand — Hero Showcase</title>
  <script src="https://cdn.tailwindcss.com"></script>
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,400&family=Plus+Jakarta+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
  <style>
    html, body {
      margin: 0; padding: 0;
      overflow-x: clip; /* Clean clipping without breaking position:sticky */
      background: #08090d; color: #f7f5f0;
      font-family: 'Plus Jakarta Sans', system-ui, sans-serif;
    }
    .phase-text { will-change: opacity, transform; }
    header.nav-scrolled {
      background: rgba(8, 9, 13, 0.85);
      backdrop-filter: blur(16px);
      border-bottom: 1px solid rgba(255, 255, 255, 0.08);
      padding-top: 1rem; padding-bottom: 1rem;
    }
  </style>
</head>
<body class="relative antialiased">
  <!-- Navigation goes here -->
  
  <!-- 400vh Sticky Scroll Hero Video Engine -->
  <div id="hero-section" class="relative h-[400vh] w-full">
    <div class="sticky top-0 w-full h-screen overflow-hidden flex items-center justify-center">
      <video id="hero-video" class="absolute inset-0 w-full h-full object-cover pointer-events-none" playsinline muted preload="auto"></video>
      <div class="absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-black/30 pointer-events-none"></div>
      
      <!-- Phase 0 Typography (0% - 25% Scroll) -->
      <div id="phase-0" class="phase-text absolute bottom-20 left-8 md:left-20 max-w-xl pointer-events-none">
        <h1 class="font-serif text-5xl md:text-7xl font-light text-white leading-tight">First Headline Statement.</h1>
      </div>
      <!-- Phase 1 Typography (30% - 60% Scroll) -->
      <div id="phase-1" class="phase-text absolute top-1/3 right-8 md:right-24 max-w-lg pointer-events-none opacity-0">
        <h2 class="font-serif text-4xl md:text-5xl font-light text-white leading-snug">Second Narrative Phase.</h2>
      </div>
      <!-- Phase 2 Typography (65% - 95% Scroll) -->
      <div id="phase-2" class="phase-text absolute bottom-24 left-8 md:left-20 max-w-lg pointer-events-none opacity-0">
        <h2 class="font-serif text-4xl md:text-5xl font-light text-white leading-snug">Third Concluding Statement.</h2>
      </div>
    </div>
  </div>

  <!-- Supplemental Content & Looping Showcases -->
  <section class="py-32 px-8 md:px-20 max-w-7xl mx-auto">
    <!-- Body Content Here -->
  </section>

  <!-- Video Scrubbing Engine & Progress-Locked Text -->
  <script>
    document.addEventListener('DOMContentLoaded', () => {
      const heroVideo = document.getElementById('hero-video');
      const heroSection = document.getElementById('hero-section');
      const nav = document.querySelector('header');
      const phase0 = document.getElementById('phase-0');
      const phase1 = document.getElementById('phase-1');
      const phase2 = document.getElementById('phase-2');

      // 1. In-Memory Blob Preloader with explicit video.load()
      fetch('./assets/hero.mp4')
        .then(res => {
          if (!res.ok) throw new Error('Video network response was not ok');
          return res.blob();
        })
        .then(blob => {
          heroVideo.src = URL.createObjectURL(blob);
          heroVideo.load();
        })
        .catch(() => {
          heroVideo.src = './assets/hero.mp4';
          heroVideo.load();
        });

      // 2. Normalized Scroll Progress
      let targetProgress = 0, currentProgress = 0;
      function updateScroll() {
        const rect = heroSection.getBoundingClientRect();
        const max = rect.height - window.innerHeight;
        if (max > 0) targetProgress = Math.max(0, Math.min(1, -rect.top / max));
        if (nav) {
          if (window.scrollY > 80) nav.classList.add('nav-scrolled');
          else nav.classList.remove('nav-scrolled');
        }
      }
      window.addEventListener('scroll', updateScroll, { passive: true });
      window.addEventListener('resize', updateScroll);

      // 3. Progress-Locked Text Opacity Calculator
      function calcOpacity(progress, enterStart, enterEnd, exitStart, exitEnd) {
        if (progress < enterStart || progress > exitEnd) return 0;
        if (progress < enterEnd) return (progress - enterStart) / (enterEnd - enterStart);
        if (progress > exitStart) return Math.max(0, 1 - (progress - exitStart) / (exitEnd - exitStart));
        return 1.0;
      }

      // 4. Animation Loop
      function scrubLoop() {
        currentProgress += (targetProgress - currentProgress) * 0.15;
        
        // Seek Video
        if (heroVideo.duration && !heroVideo.seeking) {
          const targetTime = currentProgress * heroVideo.duration;
          if (Math.abs(heroVideo.currentTime - targetTime) > 0.015) {
            heroVideo.currentTime = targetTime;
          }
        }

        // Lock Typography directly to scroll progress
        const op0 = calcOpacity(targetProgress, 0.0, 0.05, 0.20, 0.28);
        const op1 = calcOpacity(targetProgress, 0.28, 0.38, 0.55, 0.65);
        const op2 = calcOpacity(targetProgress, 0.65, 0.75, 0.90, 0.98);

        if (phase0) { phase0.style.opacity = op0.toFixed(3); phase0.style.transform = `translateY(${-targetProgress * 40}px)`; }
        if (phase1) { phase1.style.opacity = op1.toFixed(3); phase1.style.transform = `translateY(${(0.45 - targetProgress) * 30}px)`; }
        if (phase2) { phase2.style.opacity = op2.toFixed(3); phase2.style.transform = `translateY(${(0.80 - targetProgress) * 30}px)`; }

        requestAnimationFrame(scrubLoop);
      }
      requestAnimationFrame(scrubLoop);
    });
  </script>
</body>
</html>

© nroadley, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in the repository root of nroadley/Creating-Oneshot-Hero-Landing-Pages.

  • SKILL.md
  • LICENSE
  • README.md

Open the folder on GitHubat commit 83a1abe

Compare with similar skills

Creating Oneshot Landing Pages next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Creating Oneshot Landing Pages compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Creating Oneshot Landing Pages this skillnroadley/Creating-Oneshot-Hero-Landing-Pages134—~3.5kAutomated safety check: PassMIT
Imagegen Frontend Webcaorushizi/oss-client11314 repos~9.2kAutomated safety check: PassNone
2D Sprite Generator0x0funky/agent-sprite-forge4.4k—~3.6kAutomated safety check: PassMIT
Ky Design To HTMLKyrieCheungYep/ky-design-to-html-skill163—~2.8kAutomated safety check: PassNone
SEO Landingaleksandr-alhoff/seo-landing165—~3.4kAutomated safety check: PassMIT
Auto Improvecrimeacs/auto-improve135—~651Automated safety check: PassMIT

Similar skills

  • Imagegen Frontend Web

    caorushizi/oss-client

    Elite frontend image-direction skill for generating premium, conversion-aware website design references.

    113 GitHub starsUsed in 14 repos~9.2k tokens
    Frontend & DesignAuto-check passed
  • 2D Sprite Generator

    0x0funky/agent-sprite-forge

    Produces game-ready 2D characters, creatures, props, icons and effects as master stills, sheets or clips, and exports frames for common game engines.

    4.4k GitHub stars~3.6k tokensUpdated 4 days ago
    Game DevelopmentAuto-check passed
  • Ky Design To HTML

    KyrieCheungYep/ky-design-to-html-skill

    Convert visible UI references such as screenshots, exported mockups, Figma frame images, SaaS empty states, dashboards, and landing page screenshots into high-quality HTML/CSS by decomposing layout…

    163 GitHub stars~2.8k tokensUpdated 4 mo ago
    Frontend & DesignAuto-check passed
  • SEO Landing

    aleksandr-alhoff/seo-landing

    Generates fast, SEO-optimized static HTML landing pages targeting 100/100 PageSpeed (LCP < 2.5s, INP < 100ms, CLS < 0.1), full schema.org JSON-LD, AVIF images, critical CSS, zero external…

    165 GitHub stars~3.4k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Auto Improve

    crimeacs/auto-improve

    GAN-style iterative improvement loop for any text artifact. An agent skill from crimeacs/auto-improve.

    135 GitHub stars~651 tokensUpdated 2 mo ago
    EducationAuto-check passed
  • Open Design Landing

    sanqiufong/slides-from-anything

    Produce a world-class single-page editorial landing site in the Atelier Zero visual language (Monocle / Apartamento / Études editorial collage) — the same aesthetic Open Design uses for its own…

    132 GitHub starsUsed in 1 repo~3.3k tokens
    Frontend & DesignAuto-check passed

Questions about Creating Oneshot Landing Pages

What does Creating Oneshot Landing Pages do?

Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation. Creating Oneshot Landing Pages is an agent skill from nroadley/Creating-Oneshot-Hero-Landing-Pages. Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation.

When should I use Creating Oneshot Landing Pages?

Creating Oneshot Landing Pages fits situations like: tasks that involve Landing pages; tasks that involve Image generation.

How do I install Creating Oneshot Landing Pages in Claude Code?

Run `npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a claude-code`. Or copy the skill folder (the nroadley/Creating-Oneshot-Hero-Landing-Pages repository) into .claude/skills/creating-oneshot-landing-pages in your project. Claude Code loads it when a task matches its description.

How do I install Creating Oneshot Landing Pages in Codex?

Run `npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a codex`. Or copy the skill folder (the nroadley/Creating-Oneshot-Hero-Landing-Pages repository) into .agents/skills/creating-oneshot-landing-pages in your project. Codex loads it when a task matches its description.

Can I use Creating Oneshot Landing Pages in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/creating-oneshot-landing-pages, .gemini/skills/creating-oneshot-landing-pages, .github/skills/creating-oneshot-landing-pages and .opencode/skills/creating-oneshot-landing-pages in your project.

What does Creating Oneshot Landing Pages need to run?

Going by SKILL.md and its folder, Creating Oneshot Landing Pages needs the command-line tools its instructions call (pip and python3). Our summary lists: Python 3.

Does Creating Oneshot Landing Pages access the network?

SKILL.md names 4 domains. In commands or code: fonts.googleapis.com, generativelanguage.googleapis.com, cdn.tailwindcss.com and fonts.gstatic.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Creating Oneshot Landing Pages safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Creating Oneshot Landing Pages use?

Creating Oneshot Landing Pages is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Creating Oneshot Landing Pages use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Creating Oneshot Landing Pages?

Skills that share tags, products or a category with Creating Oneshot Landing Pages: Imagegen Frontend Web (caorushizi/oss-client, 113 stars), 2D Sprite Generator (0x0funky/agent-sprite-forge, 4.4k stars), Ky Design To HTML (KyrieCheungYep/ky-design-to-html-skill, 163 stars) and SEO Landing (aleksandr-alhoff/seo-landing, 165 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Creating Oneshot Landing Pages?

nroadley (a GitHub user) maintains it in nroadley/Creating-Oneshot-Hero-Landing-Pages, which has 134 GitHub stars. The repository was last updated on August 14, 2026.

Source: nroadley/Creating-Oneshot-Hero-Landing-Pages on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.