Brand and Design Toolkit
nextlevelbuilder/ui-ux-pro-max-skill
Bundles design tasks behind one skill: brand identity, tokens, UI styling, logos, corporate identity mockups, slides, banners, icons and social images.
Animate a brand mark on a NodeTool timeline — stroke draw-on, mask wipe, staggered build, wordmark type, an idle loop, and landing the settle on a sound logo.
$ npx skills add nodetool-ai/nodetool --skill logo-reveal -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nodetool-ai/nodetool logo-reveal --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/nodetool-ai/nodetool.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/system-skills/logo-reveal .claude/skills/logo-reveal && 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 "logo-reveal" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/logo-reveal into .claude/skills/logo-reveal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logo-reveal", 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/nodetool-ai/nodetool/tree/main/packages/system-skills/logo-revealType 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 nodetool-ai/nodetool --skill logo-reveal -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nodetool-ai/nodetool logo-reveal --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/system-skills/logo-reveal .agents/skills/logo-reveal && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "logo-reveal" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/logo-reveal into .agents/skills/logo-reveal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logo-reveal", 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 nodetool-ai/nodetool --skill logo-reveal -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nodetool-ai/nodetool logo-reveal --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/system-skills/logo-reveal .cursor/skills/logo-reveal && 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 "logo-reveal" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/logo-reveal into .cursor/skills/logo-reveal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logo-reveal", 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/nodetool-ai/nodetool.git --path packages/system-skills/logo-reveal--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 nodetool-ai/nodetool --skill logo-reveal -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nodetool-ai/nodetool logo-reveal --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/system-skills/logo-reveal .gemini/skills/logo-reveal && 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 "logo-reveal" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/logo-reveal into .gemini/skills/logo-reveal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logo-reveal", 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 nodetool-ai/nodetool logo-revealInstalls 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 nodetool-ai/nodetool --skill logo-reveal -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/system-skills/logo-reveal .github/skills/logo-reveal && 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 "logo-reveal" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/logo-reveal into .github/skills/logo-reveal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logo-reveal", 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 nodetool-ai/nodetool --skill logo-reveal -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nodetool-ai/nodetool logo-reveal --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/system-skills/logo-reveal .opencode/skills/logo-reveal && 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 "logo-reveal" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/logo-reveal into .opencode/skills/logo-reveal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logo-reveal", 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.
logo-revealAnimate a brand mark on a NodeTool timeline — stroke draw-on, mask wipe, staggered build, wordmark type, an idle loop, and landing the settle on a sound logo.
Logo Reveal is an agent skill from nodetool-ai/nodetool. Animate a brand mark on a NodeTool timeline — stroke draw-on, mask wipe, staggered build, wordmark type, an idle loop, and landing the settle on a sound logo. Use for an intro sting, a sign-off, an end card, a splash, or a loader loop. Not for designing the mark itself.
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Logo and visual identity. The repository describes itself as: Agent-first Creative Workspace. The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit 339f069. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json and javascript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Logo Reveal loads about 2.5k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 1,322 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 nodetool-ai/nodetool at commit 339f069, republished under its AGPL-3.0 licence (© nodetool-ai). 1,322 words, ~2,523 tokens.
.claude/skills/logo-reveal/SKILL.md (or your agent's skills folder).One idea per logo. Draw it, build it, or wipe it — never all three. The whole reveal runs 800–2500ms and ends on the clean mark, held.
motion-graphics is the build loop; timeline-edit-ops carries the op
contract. motion-direction decides which personality the sting belongs to;
a logo is usually the one place a piece is allowed its overshoot.
Draw-on — a path element and el.draw(), which is enter({from: {trimEnd: 0}}):
// fragment
const mark = s.path([["M", -40, 30], ["L", 0, -30], ["L", 40, 30]], { stroke: "#111111" });
mark.draw({ dur: 1.1, ease: "cubic-bezier(0.65,0,0.35,1)" });Wordmark stagger — by and staggerMs on el.enter(), per character for
a short mark:
// fragment
const wordmark = s.text("Northwind", { size: 64, weight: 700 });
wordmark.enter({ from: { scale: 0.9, opacity: 0 }, dur: 0.38, by: "character", staggerMs: 45 });Lockup row — mark beside wordmark, one flex container (frame-composition
covers the container vocabulary in full):
// fragment
s.row([mark, wordmark], { gap: 16, align: "center" });Reveal the container first if the mark and wordmark should feel like one
build, or stagger the row's own children through s.stagger() for a build-on
that still keeps its lockup spacing.
| Technique | Best for | How, on the timeline |
|---|---|---|
| Stroke draw-on | Line marks, monograms, signatures | A path shape clip, trimStart/trimEnd animated |
| Mask wipe | Filled shapes, gradient marks | wipe preset, or a set_mask rect animated |
| Build-on | Multi-part marks, grids | One clip per part, in a group, delayMs staggered |
| Wordmark | Logotypes | A text clip with a per-character or per-word stagger |
| Idle loop | Loaders, ambient splash | breathe or rotate as a loop |
| Scale settle | Anything, when in doubt | pop with a small overshoot |
trimStart and trimEnd stroke only a sub-range of a path, 0..1. Drawing is
trimEnd running 0 to 1 with the stroke visible and the fill arriving after:
{"op": "add_shape_clip", "shape": {"kind": "path", "d": "M0.1 0.7 L0.3 0.2 L0.5 0.7",
"stroke": "#111111", "strokeWidthPx": 6, "lineCap": "round",
"trimStart": 0, "trimEnd": 0}, "durationMs": 2000}{"op": "animate_clip", "target": "Path", "animations": [
{"role": "in", "preset": "custom", "durationMs": 1100,
"easing": "cubic-bezier(0.65,0,0.35,1)",
"curves": [{"property": "trimEnd", "keyframes": [
{"t": 0, "value": 0}, {"t": 1, "value": 1}]}]}]}Both trim channels fold as replace: one animation drives one of them, and two
overlapping in time means the later wins and the earlier is discarded, reported
as replace_curves_overlap. Draw with trimEnd alone; use trimStart chasing
it only for a stroke that draws and erases, and put the two in separate windows.
Stagger several strokes by giving each path clip's animation a delayMs
100–200ms apart, in the order a hand would draw them.
A d the renderer cannot parse is refused at the call rather than stored, and an
unknown kind reports unknown_shape_kind and draws nothing — a mark that
vanished is usually one of those two.
For a filled mark, reveal rather than draw. {"role": "in", "preset": "wipe", "durationMs": 700, "params": {"direction": "left", "softness": 0.05}} sweeps a
feathered edge across the layer. softness 0 is a hard edge, which reads as
graphic; 0.1 reads as light passing over.
A custom curve driving wipeProgress needs a mask on the same animation —
{direction, softness} — because a wipe with no edge to run against cannot be
inferred. wipeProgress folds as min, so two wipes on one layer keep the
tighter one.
One clip per part, each on its own overlay track, all parented to one group with
add_group. Reveal the container first, then accents, then the wordmark last so
the eye lands on the name.
{"op": "animate_clip", "target": "Mark part 2", "animations": [
{"role": "in", "preset": "pop", "durationMs": 500, "delayMs": 160,
"params": {"overshoot": 1.12}}]}Steps of 80–120ms. Then animate the group for anything that moves the whole
assembly — one fade out on the group beats three chances for the parts to
drift apart. The group's opacity multiplies into each child.
When the parts already have animations, {"op": "stagger_animations", "clip_ids": ["mark-id", "wordmark-id", "tagline-id"], "offset_ms": 100}
adds delay in that order without moving their media. Use clip IDs, with at
least two, and give every selected clip an animation first. The first keeps
its delay. For a repeating field of identical marks, the document's
repeater sets copy count, position step, and time step on one clip. Use a
repeater for a pattern, and separate clips for parts that need distinct art.
Keep a follower aligned by storing animationLinks on its clip when it should
read the mark's position, scale, rotation, or opacity. A link follows the
source's authored animation and does not chain through other links. Put the mark and the wordmark in a flex row (layout: {display: "flex", flexDirection: "row", gap, alignItems: "center"} on a group clip, both as
its real children via parentId) so the wordmark's position follows the
mark's changing box; a backing plate is a third child with flexItem: {position: "absolute", inset: 0} behind the wordmark. These are document
fields, so read and write the full document with get_timeline and
set_timeline_document.
set_clip_params refuses repeater, animationLinks, and layout.
A text clip with a stagger. Per character for a short mark, per word for a lockup with a tagline:
{"role": "in", "preset": "pop", "durationMs": 380,
"stagger": {"unit": "character", "offsetMs": 45, "from": "start"}}Work the span out — durationMs + offsetMs × (units − 1) — and compare it
against the clip. A span that does not fit is compressed silently, and a
compressed wordmark is the reason a reveal "does not look staggered".
stagger_compressed is the warning.
Set the family to a bundled one — Inter, Space Grotesk, Bebas Neue,
Playfair Display, Lora, JetBrains Mono — or the render and the editor
resolve it differently and the lockup's width changes under you.
Scale, opacity, rotation about the mark's own anchor, and position are safe.
scaleX and scaleY on their own are not: squash distorts the geometry, and a
distorted logo is a brand problem rather than a taste one. Keep motion out of the
clearspace — a support element sliding through the mark's margin cheapens it.
Decide the audio first. A sound logo that does not exist yet is a 1–3 s
effects brief — source, action, space — on ElevenLabs sound effects
(elevenlabs-audio-prompting) or a TrackType: SFX prompt on Stable Audio
(stable-audio-prompting); a 30-second request for a hit is a hit followed by
room tone. Then detect_audio_events on the sting reports onsets.times in
seconds; multiply by 1000. Time the reveal so the mark reaches full opacity
and scale on that millisecond:
delayMs on the in animation = onset ms − the clip's startMs −
durationMs. Then add the accent on the hit itself, as a separate emphasis:
{"role": "emphasis", "preset": "pulse", "durationMs": 220, "delayMs": <onset − startMs>, "params": {"intensity": 0.04}}.
A settle that floats free of the sound reads as cheap even when both are good.
snap_to_beats is the blunt version when the whole end card has to sit on the
grid.
For a mark that should stay on beat if the sequence tempo changes, put a
beat: {index, scope: "sequence", offsetMs?} anchor on its animation in the
full document. The index is one-based and delayMs adds to it. The
animate_clip tool input does not accept beat. Keep the stored animation's
id, role, preset, and durationMs when adding it. If the sound logo's measured
onset is the source of truth, keep the absolute delay or use
bake_audio_animation for audio-driven motion instead.
For a loader or a splash that waits, a loop at low amplitude: breathe with
intensity 0.02–0.04, or rotate on a mark that is radially symmetric. Set
durationMs to the cycle, 2000–4000ms, and remember a cycle longer than the clip
shows a fragment of the motion.
Never loop a wordmark somebody is reading.
The last thing on screen is the static mark. Leave at least 800ms after the reveal completes with nothing animating — an end card that cuts the instant it settles reads as a mistake. On a 2500ms clip with a 1100ms draw and a 220ms accent, that is satisfied; check it rather than assuming.
list_compositions and get_composition show the shipped logo-sting rig and
its parameters. insert_composition places it as a group with fresh clip IDs.
Inspect those IDs before changing its timing or staggering its parts. Use the
title-slam or word-cards examples for a typographic reveal; they are
starting documents rather than tool presets.
validate_timeline: replace_curves_overlap on the trims, stagger_compressed
on the wordmark, animation_exceeds_clip on a reveal longer than its clip,
unknown_shape_kind on a mark that draws nothing.preview_timeline_frame at the midpoint of the draw, a held moment, and the
last frame. The midpoint is where a half-drawn path or a stroke that never
closes shows up; the last frame is where you confirm the mark is clean and
complete.render_timeline, because a sting is judged at speed.© nodetool-ai, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in packages/system-skills/logo-reveal of nodetool-ai/nodetool.
Open the folder on GitHubat commit 339f069
Logo Reveal 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 |
|---|---|---|---|---|---|---|
| Logo Reveal this skillnodetool-ai/nodetool | 560 | — | ~2.5k | Automated safety check: Pass | AGPL-3.0 | |
| Brand and Design Toolkitnextlevelbuilder/ui-ux-pro-max-skill | 135k | 1 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Anthropic Brand Stylinganthropics/skills | 180k | 30 repos | ~559 | Automated safety check: Pass | Apache-2.0 | |
| Logo Designkaankiziltug/logo-design-skill | 2.5k | — | ~4.4k | Automated safety check: Pass | MIT | |
| Logo Generatorop7418/logo-generator-skill | 2.2k | — | ~1.8k | Automated safety check: Notes | None | |
| Web Asset Generatoralonw0/web-asset-generator | 514 | 1 repos | ~6.6k | Automated safety check: Pass | MIT |
nextlevelbuilder/ui-ux-pro-max-skill
Bundles design tasks behind one skill: brand identity, tokens, UI styling, logos, corporate identity mockups, slides, banners, icons and social images.
anthropics/skills
Applies Anthropic's brand colors and fonts to artifacts such as PowerPoint slides, using fixed hex values for text and accents, Poppins headings and Lora body text.
kaankiziltug/logo-design-skill
Professional logo and brand-mark design, from brief to production files.
op7418/logo-generator-skill
Generate professional SVG logos and high-end showcase images.
alonw0/web-asset-generator
Generate web assets including favicons, app icons (PWA), and social media meta images (Open Graph) for Facebook, Twitter, WhatsApp, and LinkedIn.
onyx-dot-app/onyx
Generate or edit raster images (photos, illustrations, textures, sprites, mockups, logos, infographics) using the workspace's configured image-generation provider via onyx-cli image.
nodetool-ai/nodetool
Cut a NodeTool timeline to music and shape its pacing — detect the beat grid, place cuts on phrases, pick a cut type, build speed ramps with time remap, and give the piece an arc.
nodetool-ai/nodetool
Add and animate a consistent text layer on an existing NodeTool timeline.
nodetool-ai/nodetool
Choose and animate colour on a NodeTool timeline, including shape and text gradients, colour grades, 3D LUTs, and dither.
nodetool-ai/nodetool
Write a shootable, precisely timed commercial beat sheet and store it as a NodeTool storyboard, with a consistent entity roster behind every shot.
nodetool-ai/nodetool
Direct ElevenLabs speech, dialogue, sound effects and music — the bracketed audio tags v3 acts on and why the voice decides whether a tag lands, stability as the delivery dial, punctuation instead…
nodetool-ai/nodetool
Stage the frame on a NodeTool timeline — grids, focal placement, safe areas per aspect ratio, depth layers and parallax, camera moves, and where elements enter and leave.
Categories
Animate a brand mark on a NodeTool timeline — stroke draw-on, mask wipe, staggered build, wordmark type, an idle loop, and landing the settle on a sound logo. Logo Reveal is an agent skill from nodetool-ai/nodetool. Animate a brand mark on a NodeTool timeline — stroke draw-on, mask wipe, staggered build, wordmark type, an idle loop, and landing the settle on a sound logo.
Logo Reveal fits situations like: tasks that involve Logo and visual identity.
Run `npx skills add nodetool-ai/nodetool --skill logo-reveal -a claude-code`. Or copy the skill folder (packages/system-skills/logo-reveal in nodetool-ai/nodetool) into .claude/skills/logo-reveal in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nodetool-ai/nodetool --skill logo-reveal -a codex`. Or copy the skill folder (packages/system-skills/logo-reveal in nodetool-ai/nodetool) into .agents/skills/logo-reveal 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 nodetool-ai/nodetool --skill logo-reveal -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/logo-reveal, .gemini/skills/logo-reveal, .github/skills/logo-reveal and .opencode/skills/logo-reveal in your project.
SKILL.md names no scripts, command-line tools or credentials: Logo Reveal is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Logo Reveal is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 10k 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 Logo Reveal: Brand and Design Toolkit (nextlevelbuilder/ui-ux-pro-max-skill, 135k stars), Anthropic Brand Styling (anthropics/skills, 180k stars), Logo Design (kaankiziltug/logo-design-skill, 2.5k stars) and Logo Generator (op7418/logo-generator-skill, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nodetool-ai (a GitHub organization) maintains it in nodetool-ai/nodetool, which has 560 GitHub stars. The repository holds 127 skills in this directory. The repository was last updated on October 10, 2026.
Source: nodetool-ai/nodetool on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.