Impeccable
bestofjs/bestofjs
A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…
Premium scroll-driven landing pages; scroll = timeline. An agent skill from NousResearch/hermes-agent.
$ npx skills add NousResearch/hermes-agent --skill scrollcraft -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install NousResearch/hermes-agent scrollcraft --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/optional-skills/web-development/scrollcraft .claude/skills/scrollcraft && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "scrollcraft" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/web-development/scrollcraft into .claude/skills/scrollcraft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scrollcraft", 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.
$skill-installer install https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/web-development/scrollcraftType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add NousResearch/hermes-agent --skill scrollcraft -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install NousResearch/hermes-agent scrollcraft --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/optional-skills/web-development/scrollcraft .agents/skills/scrollcraft && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "scrollcraft" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/web-development/scrollcraft into .agents/skills/scrollcraft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scrollcraft", 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 NousResearch/hermes-agent --skill scrollcraft -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install NousResearch/hermes-agent scrollcraft --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/optional-skills/web-development/scrollcraft .cursor/skills/scrollcraft && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "scrollcraft" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/web-development/scrollcraft into .cursor/skills/scrollcraft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scrollcraft", 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.
$ gemini skills install https://github.com/NousResearch/hermes-agent.git --path optional-skills/web-development/scrollcraft--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add NousResearch/hermes-agent --skill scrollcraft -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install NousResearch/hermes-agent scrollcraft --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/optional-skills/web-development/scrollcraft .gemini/skills/scrollcraft && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "scrollcraft" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/web-development/scrollcraft into .gemini/skills/scrollcraft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scrollcraft", 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 NousResearch/hermes-agent scrollcraftInstalls 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 NousResearch/hermes-agent --skill scrollcraft -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/optional-skills/web-development/scrollcraft .github/skills/scrollcraft && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "scrollcraft" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/web-development/scrollcraft into .github/skills/scrollcraft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scrollcraft", 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 NousResearch/hermes-agent --skill scrollcraft -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install NousResearch/hermes-agent scrollcraft --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/optional-skills/web-development/scrollcraft .opencode/skills/scrollcraft && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "scrollcraft" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/web-development/scrollcraft into .opencode/skills/scrollcraft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scrollcraft", 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.
scrollcraftPremium scroll-driven landing pages; scroll = timeline. An agent skill from NousResearch/hermes-agent.
Scrollcraft is an agent skill from NousResearch/hermes-agent. Premium scroll-driven landing pages; scroll = timeline.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 25 other files, including scripts and reference files (for example `engine/scrollcraft.js`, `references/assets.md` and `references/devices.md`).
It sits in Frontend & Design, covering Landing pages. The repository describes itself as: The agent that grows with you. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0e37a43. 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.
Ships 4 files in scripts/ (JavaScript and Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
nodebashnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
KIE_AI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Scrollcraft loads about 3k tokens when it runs, and up to ~41k if it reads all its reference files. Until then it costs about 17 tokens; SKILL.md has 1,475 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); the scripts in this folder are not scanned.
The full file from NousResearch/hermes-agent at commit 0e37a43, republished under its MIT licence (© NousResearch). 1,475 words, ~2,990 tokens.
.claude/skills/scrollcraft/SKILL.md (or your agent's skills folder). This skill also uses 22 other files; get the full folder from GitHub.Scroll is the only input every visitor already knows. This skill treats it as a timeline: the wheel is a scrubber, the page is a film with real text on top, and each section behaves differently enough that the visitor keeps going.
What you produce: an interview brief, a page grammar, a customer-journey map, a feeling curve with one engineered peak, a scroll score, one signature move, assets, one real HTML page on a token-driven design floor, and a strip of screenshots proving it holds up at every scroll position.
Use for: "scrollytelling", "scroll animation site", "a site where scrolling plays a video", "Apple-style landing page", "3D scroll world", "make my brand a scroll experience", "this looks like a template", or any request for a site that should feel like an experience rather than a document.
It is not "generate a flythrough and drop text on it." That produces one device applied to a whole page, recognisable at a glance. Four spine rules:
Always ask the user in chat before building anything. Real questions, asked and answered in the conversation, written down — not a brief inferred from the brand name. Eight questions in one pass:
Write the answers verbatim into <workspace>/builds/<name>/BRIEF.md (use
write_file) before any act planning. BRIEF.md must contain the eight answers,
the feeling curve (one line per act: emotion, then cause), the peak (as the
sentence a visitor would say to a friend), the completed "It's the site where
___" sentence, and any authored silence. If the user is genuinely unreachable
in a fully autonomous run, self-author BRIEF.md, mark it
Self-authored, not interviewed, and say so in the report.
Run the preflight rather than checking by hand (it catches a stripped ffmpeg that reports missing filters as syntax errors):
node <skill>/scripts/doctor.mjs
node <skill>/scripts/workspace.mjs --ensure # prints workspace, seeds registryWorkspace resolution order: SCROLLCRAFT_HOME env var; nearest
.scrollcraft.json ({ "workspace": "..." }) walking up from cwd;
<project root>/scrollcraft. Builds live at <workspace>/builds/<name>/, the
fingerprint registry at <workspace>/FINGERPRINTS.md (seeded from
templates/FINGERPRINTS.md, starts empty — the gate
stops you repeating yourself).
Copy engine/scrollcraft.js and engine/scrollcraft.css into the build
folder. Never edit the engine per-project. Theme with tokens; write your
own markup. Bespoke behaviour is bespoke JS in the page, driven off --sc-p
and your own data-sc-* attributes.
Ask the subject open, in plain prose. Then ask only what Step 0 did not cover: what is this and who is it for; the one sentence the page installs; the one next action (one label, used everywhere); what they already have; art direction from references/worlds.md. Then write the journey: four to seven beats, each a shift in what the visitor knows or feels. Beats are the spine; a section serving no beat is cut. Confirm the journey with the user before generating assets — assets are the expensive part.
Full detail in references/uniqueness.md.
<workspace>/FINGERPRINTS.md on at least 4 of 6 dimensions: grammar, nav
treatment, hero device, act-sequence shape, close pattern, signature move.
If it fails, change the plan, not the log.Checks before building: grammar bans hold; 4+ device families; no device
twice in a row; at most two scrub acts; no two adjacent acts with the same
feeling; one peak with the largest span; total page length 8–14
viewport-heights.
Full pipeline, prompt scaffolds and model notes: references/assets.md.
Hermes-native paths first:
image_generate tool for stills: one style preamble reused verbatim
in every prompt is what makes six images look like one shoot. Inspect every
asset (vision_analyze) before use; rerolling beats shipping a bad frame.Optional upstream path — kie.ai (vendored verbatim as
scripts/kie.mjs): photoreal stills and camera-move clips.
Requires the KIE_AI_API_KEY environment variable (export it in your shell;
there is no bundled env file in this port). Check balance with
node <skill>/scripts/kie.mjs probe; a still costs cents, a 5s clip more.
node <skill>/scripts/kie.mjs still "<style preamble>\n\n<scene>" out/01-hero.png --ar 16:9
node <skill>/scripts/kie.mjs shot "<camera move>" out/01-hero.png out/01.mp4 --dur 5
bash <skill>/scripts/encode.sh out/01.mp4 assets/01.mp4
bash <skill>/scripts/encode.sh out/01.mp4 assets/01-m.mp4 mobileEncode for scrubbing, not playback. encode.sh sets a dense GOP because
seeking walks from the previous keyframe; a normal web encode scrubs like mud.
It also strips audio.
Write real HTML — real <h1>, real <p>, real reading order. The engine reads
data-sc-* attributes off your markup and drives it; it never generates DOM.
Start from references/template.html. Device
patterns: references/devices.md. Spacing, type, depth,
colour: references/taste.md — read it before writing
markup. Theme by overriding tokens, six values and two fonts:
:root {
--sc-canvas: #0A0806; --sc-surface: #16110E;
--sc-ink: #F5EBDD; --sc-ink-soft: #A2968A;
--sc-accent: #FF5A3D; --sc-accent-ink: #15110F;
--sc-font-display: "Archivo", system-ui, sans-serif;
--sc-font-text: "Geist", system-ui, sans-serif;
}Not optional. Every scroll position is a different frame; failures live between the two you looked at. Full procedure: references/verify.md.
cd <build project> && npm i playwright-core # once
node <skill>/scripts/serve.mjs --root . --port 4500 &
node <skill>/scripts/shoot.mjs --url http://localhost:4500 --out lab/shots
node <skill>/scripts/shoot.mjs --url http://localhost:4500 --out lab/mobile --width 390 --height 844
node <skill>/scripts/shoot.mjs --url http://localhost:4500 --out lab/reduced --reduced-motionThe harness walks each act at six positions, waits for scrub video to settle,
reports dead scroll, cues that never reach full opacity, and composited
contrast; it writes a contact sheet. Then read sheet.png yourself
(vision_analyze) — the harness proves a clip advances, not that the page means
anything. Run the feel check (references/feel.md §6):
scroll cold, one word per act, diff against BRIEF.md. Where they disagree the
page is wrong, not the brief.
A green run does not cover a real phone (video decoder, autoplay policy, Low Power Mode). On any reported mobile defect, deploy references/device-diag.html beside the site on the first round and let the device answer.
No clay diorama default; no "scroll to explore" cues or animated mouse icons;
no 01 / 06 section counters; at most one eyebrow per three sections; no
visible em dashes; vary the copy anchor; no device twice in a row; never build
before the interview; one engineered peak, not zero or three; the close
resolves instead of fading to a footer; curve before devices; one bespoke
signature move; 4-of-6 fingerprint clearance against every row; never edit the
engine; no full-frame dark overlay for contrast (scrim only where text sits);
no text baked into images; no invented statistics; no transition: all or
animating width/height/top/left (transform/opacity; clip-path for
wipes); no gradient text or neon glow; no audio on scrub clips; never ship
without Step 5.
The build folder including BRIEF.md, then a short report: grammar and why the
other seven lost, signature move, fingerprint gate result per row, journey,
feeling curve and peak, feel-check diff, score table, what you generated, what
you verified with screenshots, and what you could not verify. Append the
build's row to <workspace>/FINGERPRINTS.md.
scripts/shoot.mjs needs Playwright (npm install playwright or
playwright-core plus a Chrome install). Hermes' browser_exec tool is the
lighter alternative for scroll-screenshot verification: serve the build,
scroll in steps, capture screenshots, and inspect them yourself.scripts/kie.mjs needs KIE_AI_API_KEY and paid credit; prefer
image_generate or user assets when the budget is unclear.encode.sh and doctor.mjs expect a full ffmpeg build; distro-stripped
ffmpeg reports missing filters as command syntax errors — run
scripts/doctor.mjs first.node --check syntax validation — trust
--help/source if drifted.© NousResearch, 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 22 other files (scripts, references) in optional-skills/web-development/scrollcraft of NousResearch/hermes-agent.
Open the folder on GitHubat commit 0e37a43
Scrollcraft 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 |
|---|---|---|---|---|---|---|
| Scrollcraft this skillNousResearch/hermes-agent | 252k | — | ~3k | Automated safety check: Pass | MIT | |
| Impeccablebestofjs/bestofjs | 3.1k | 27 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Scroll World Landing Pageoso95/scroll-world | 9.7k | 1 repos | ~12k | Automated safety check: Notes | MIT | |
| Expert Panelericosiu/ai-marketing-skills | 3.6k | 2 repos | ~2.1k | Automated safety check: Pass | MIT | |
| UI UX Pro Maxsaoudi-h/solar-icons | 182 | 18 repos | ~11k | Automated safety check: Notes | Custom licence | |
| Frontend Designanthropics/skills | 180k | 38 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 |
bestofjs/bestofjs
A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…
oso95/scroll-world
Builds a scroll-driven landing page where a pre-rendered camera flies through connected AI-generated scenes, using Higgsfield for stills and video clips.
ericosiu/ai-marketing-skills
Score, evaluate, and iteratively improve any content or strategy using an auto-assembled panel of domain experts.
saoudi-h/solar-icons
UI/UX design intelligence for web and mobile. An agent skill from saoudi-h/solar-icons.
anthropics/skills
Pushes the agent toward distinctive visual design for new or reworked UI: a clear aesthetic direction, deliberate typography and choices rooted in the subject.
nateherkai/scroll-craft
Build premium scroll-driven landing pages for service, product, food, and drink brands.
NousResearch/hermes-agent
Produces a presenter-led video from a topic or script plus one authorized presenter image, with captions, lip-sync checks and acceptance reports.
NousResearch/hermes-agent
Creates, reads, edits and templates Word .docx files with python-docx scripts, including tracked changes, comments, tables of contents and health checks.
NousResearch/hermes-agent
Attaches a numbered, URL-backed citation to every outside fact in an answer or document, rejecting quotes that aren't real.
NousResearch/hermes-agent
PDF files: create, read, merge, fill, OCR, edit text. An agent skill from NousResearch/hermes-agent.
NousResearch/hermes-agent
Create, read, edit Excel .xlsx workbooks and CSVs. An agent skill from NousResearch/hermes-agent.
NousResearch/hermes-agent
Create, read, edit .pptx decks with python-pptx. An agent skill from NousResearch/hermes-agent.
Categories
Premium scroll-driven landing pages; scroll = timeline. An agent skill from NousResearch/hermes-agent. Scrollcraft is an agent skill from NousResearch/hermes-agent. Premium scroll-driven landing pages; scroll = timeline.
Scrollcraft fits situations like: tasks that involve Landing pages.
Run `npx skills add NousResearch/hermes-agent --skill scrollcraft -a claude-code`. Or copy the skill folder (optional-skills/web-development/scrollcraft in NousResearch/hermes-agent) into .claude/skills/scrollcraft in your project. Claude Code loads it when a task matches its description.
Run `npx skills add NousResearch/hermes-agent --skill scrollcraft -a codex`. Or copy the skill folder (optional-skills/web-development/scrollcraft in NousResearch/hermes-agent) into .agents/skills/scrollcraft 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 NousResearch/hermes-agent --skill scrollcraft -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scrollcraft, .gemini/skills/scrollcraft, .github/skills/scrollcraft and .opencode/skills/scrollcraft in your project.
Going by SKILL.md and its folder, Scrollcraft needs JavaScript and a shell for the scripts in its folder, the command-line tools its instructions call (node, bash and npm) and credentials named KIE_AI_API_KEY. Our summary lists: Node.js; A Bash shell; A credential in KIE_AI_API_KEY.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Scrollcraft is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 38k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Scrollcraft: Impeccable (bestofjs/bestofjs, 3.1k stars), Scroll World Landing Page (oso95/scroll-world, 9.7k stars), Expert Panel (ericosiu/ai-marketing-skills, 3.6k stars) and UI UX Pro Max (saoudi-h/solar-icons, 182 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
NousResearch (a GitHub organization) maintains it in NousResearch/hermes-agent, which has 251,739 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 7, 2026.
Source: NousResearch/hermes-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.