Imagegen Frontend Web
caorushizi/oss-client
Elite frontend image-direction skill for generating premium, conversion-aware website design references.
Agent skill
Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation.
$ npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nroadley/Creating-Oneshot-Hero-Landing-Pages creating-oneshot-landing-pages --agent claude-codeProject 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/
Install the "creating-oneshot-landing-pages" agent skill from https://github.com/nroadley/Creating-Oneshot-Hero-Landing-Pages/tree/main into .claude/skills/creating-oneshot-landing-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-oneshot-landing-pages", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nroadley/Creating-Oneshot-Hero-Landing-Pages creating-oneshot-landing-pages --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "creating-oneshot-landing-pages" agent skill from https://github.com/nroadley/Creating-Oneshot-Hero-Landing-Pages/tree/main into .agents/skills/creating-oneshot-landing-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-oneshot-landing-pages", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nroadley/Creating-Oneshot-Hero-Landing-Pages creating-oneshot-landing-pages --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "creating-oneshot-landing-pages" agent skill from https://github.com/nroadley/Creating-Oneshot-Hero-Landing-Pages/tree/main into .cursor/skills/creating-oneshot-landing-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-oneshot-landing-pages", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nroadley/Creating-Oneshot-Hero-Landing-Pages creating-oneshot-landing-pages --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "creating-oneshot-landing-pages" agent skill from https://github.com/nroadley/Creating-Oneshot-Hero-Landing-Pages/tree/main into .gemini/skills/creating-oneshot-landing-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-oneshot-landing-pages", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nroadley/Creating-Oneshot-Hero-Landing-Pages creating-oneshot-landing-pagesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "creating-oneshot-landing-pages" agent skill from https://github.com/nroadley/Creating-Oneshot-Hero-Landing-Pages/tree/main into .github/skills/creating-oneshot-landing-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-oneshot-landing-pages", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nroadley/Creating-Oneshot-Hero-Landing-Pages --skill creating-oneshot-landing-pages -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nroadley/Creating-Oneshot-Hero-Landing-Pages creating-oneshot-landing-pages --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "creating-oneshot-landing-pages" agent skill from https://github.com/nroadley/Creating-Oneshot-Hero-Landing-Pages/tree/main into .opencode/skills/creating-oneshot-landing-pages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-oneshot-landing-pages", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
creating-oneshot-landing-pagesDesigns 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. 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.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 83a1abe. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pippython3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
fonts.googleapis.comgenerativelanguage.googleapis.comcdn.tailwindcss.comfonts.gstatic.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from nroadley/Creating-Oneshot-Hero-Landing-Pages at commit 83a1abe, republished under its MIT licence (© nroadley). 698 words, ~3,508 tokens.
.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.An Antigravity skill to design and build video-driven parallax hero landing pages and looping motion showcases.
Execute every landing page request in this order:
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).gemini-omni-flash-preview (Section 3) using the reference images to generate 10s 16:9 .mp4 video files into ./assets/.index.html with smooth scroll video scrubbing, progress-locked hero text, and clean navigation.python3 -m http.server 3000 --directory <dir>), verify all video assets return 200 OK, and inspect the visual layout.[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] Right01, 02, 03) onto nav links. Do not add fake GPS coordinates, sensor readings, or status dots (● LIVE).<i data-lucide=...>), or icon badge containers inside feature cards, headings, bullet points, or buttons.canvas-confetti particle scripts.🔊), background sound generators, or Web Audio API synthesizers (AudioContext, oscillators).—), or roman numerals (I, II) instead of encasing words inside rounded pill badges ([ BADGE ]).LEO, not LEO Station Rendezvous).whitespace-nowrap: Keep badge text on a single line so it never breaks into awkward stacks.flex items-center gap-2 overflow-x-auto whitespace-nowrap).overflow-x-auto min-w-[650px]).<video id="hero-video"> element. Do not substitute video with <canvas> image slideshows or static <img> tags.<video autoplay muted loop playsinline> elements."00%"), or cockpit dials over media.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).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.w-full h-full object-cover), not styled as small rounded UI cards.Install dependencies:
pip install google-genai pillowSave generated .mp4 files directly to ./assets/ using this script:
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 FalseUse this architecture for the sticky 400vh video scrubbing engine:
<!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
SKILL.md and 2 other files in the repository root of nroadley/Creating-Oneshot-Hero-Landing-Pages.
Open the folder on GitHubat commit 83a1abe
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Creating Oneshot Landing Pages this skillnroadley/Creating-Oneshot-Hero-Landing-Pages | 134 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Imagegen Frontend Webcaorushizi/oss-client | 113 | 14 repos | ~9.2k | Automated safety check: Pass | None | |
| 2D Sprite Generator0x0funky/agent-sprite-forge | 4.4k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Ky Design To HTMLKyrieCheungYep/ky-design-to-html-skill | 163 | — | ~2.8k | Automated safety check: Pass | None | |
| SEO Landingaleksandr-alhoff/seo-landing | 165 | — | ~3.4k | Automated safety check: Pass | MIT | |
| Auto Improvecrimeacs/auto-improve | 135 | — | ~651 | Automated safety check: Pass | MIT |
caorushizi/oss-client
Elite frontend image-direction skill for generating premium, conversion-aware website design references.
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.
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…
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…
crimeacs/auto-improve
GAN-style iterative improvement loop for any text artifact. An agent skill from crimeacs/auto-improve.
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…
Works with
Categories
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.
Creating Oneshot Landing Pages fits situations like: tasks that involve Landing pages; tasks that involve Image generation.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.