Agent skill

Logo Reveal

by nodetool-ai in 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.

AGPL-3.0Auto-check passedMedia & Creative

Install Logo Reveal

skills CLI
$ npx skills add nodetool-ai/nodetool --skill logo-reveal -a claude-code

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

GitHub CLI
$ gh skill install nodetool-ai/nodetool logo-reveal --agent claude-code

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

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
logo-reveal
GitHub stars
560
Token cost
~2.5k tokens
SKILL.md length
1,322 words
Files
1
Skills in repo
127
Repo updated
First seen
Licence
AGPL-3.0

At a glance

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.

  • Tasks that involve Logo and visual identity
  • SKILL.md covers The same three patterns, in code, Pick one technique, Stroke draw-on and Mask wipe, plus 8 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

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.

When your agent uses it

  • Tasks that involve Logo and visual identity

Example prompts

  • “/logo-reveal”

What it can do on your machine

Read from SKILL.md and the folder at commit 339f069. 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

    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.

  • Network

    No URLs in SKILL.md.

    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

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.

Always · name and description, kept in context so the agent knows when to use it
~71
When it runs · the whole SKILL.md, loaded when a task matches
~2.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 nodetool-ai/nodetool at commit 339f069, republished under its AGPL-3.0 licence (© nodetool-ai). 1,322 words, ~2,523 tokens.

Download SKILL.mdSave it as .claude/skills/logo-reveal/SKILL.md (or your agent's skills folder).
name
logo-reveal
description
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.
featured
true

Logo Reveal → the sting

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.

The same three patterns, in code

Draw-on — a path element and el.draw(), which is enter({from: {trimEnd: 0}}):

js
// 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:

js
// 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):

js
// 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.

Pick one technique

TechniqueBest forHow, on the timeline
Stroke draw-onLine marks, monograms, signaturesA path shape clip, trimStart/trimEnd animated
Mask wipeFilled shapes, gradient markswipe preset, or a set_mask rect animated
Build-onMulti-part marks, gridsOne clip per part, in a group, delayMs staggered
WordmarkLogotypesA text clip with a per-character or per-word stagger
Idle loopLoaders, ambient splashbreathe or rotate as a loop
Scale settleAnything, when in doubtpop with a small overshoot

Stroke draw-on

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:

json
{"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}
json
{"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.

Mask wipe

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.

Build-on

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.

json
{"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.

Wordmark

A text clip with a stagger. Per character for a short mark, per word for a lockup with a tagline:

json
{"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.

Show full SKILL.md (531 more words)Show less

What not to do to a mark

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.

Idle loop

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.

Hold the end frame

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.

Start from a rig when it fits

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.

Check it

  • 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.
  • Then 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

Files

Just SKILL.md in packages/system-skills/logo-reveal of nodetool-ai/nodetool.

Open the folder on GitHubat commit 339f069

Compare with similar skills

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.

Logo Reveal compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Logo Reveal this skillnodetool-ai/nodetool560—~2.5kAutomated safety check: PassAGPL-3.0
Brand and Design Toolkitnextlevelbuilder/ui-ux-pro-max-skill135k1 repos~3.5kAutomated safety check: PassMIT
Anthropic Brand Stylinganthropics/skills180k30 repos~559Automated safety check: PassApache-2.0
Logo Designkaankiziltug/logo-design-skill2.5k—~4.4kAutomated safety check: PassMIT
Logo Generatorop7418/logo-generator-skill2.2k—~1.8kAutomated safety check: NotesNone
Web Asset Generatoralonw0/web-asset-generator5141 repos~6.6kAutomated safety check: PassMIT

Similar skills

  • 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.

    135k GitHub starsUsed in 1 repo~3.5k tokens
    Media & CreativeAuto-check passed
  • Anthropic Brand Styling

    anthropics/skills

    Official

    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.

    180k GitHub starsUsed in 30 repos~559 tokens
    Media & CreativeAuto-check passed
  • Logo Design

    kaankiziltug/logo-design-skill

    Professional logo and brand-mark design, from brief to production files.

    2.5k GitHub stars~4.4k tokensUpdated 10 days ago
    Media & CreativeAuto-check passed
  • Logo Generator

    op7418/logo-generator-skill

    Generate professional SVG logos and high-end showcase images.

    2.2k GitHub stars~1.8k tokensUpdated 5 mo ago
    Media & CreativeAuto-check: notes
  • Web Asset Generator

    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.

    514 GitHub starsUsed in 1 repo~6.6k tokens
    Media & CreativeAuto-check passed
  • Image Generation

    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.

    32k GitHub starsUsed in 1 repo~1.7k tokens
    Media & CreativeAuto-check passed

More from nodetool-ai/nodetool

All 127 skills in this repo
  • Beat Sync Editing

    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.

    560 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Caption Titles

    nodetool-ai/nodetool

    Add and animate a consistent text layer on an existing NodeTool timeline.

    560 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Color Motion

    nodetool-ai/nodetool

    Choose and animate colour on a NodeTool timeline, including shape and text gradients, colour grades, 3D LUTs, and dither.

    560 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Commercial Beat Sheet

    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.

    560 GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Elevenlabs Audio Prompting

    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…

    560 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Frame Composition

    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.

    560 GitHub stars~3.5k tokensUpdated today
    Auto-check passed

Questions about Logo Reveal

What does Logo Reveal do?

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.

When should I use Logo Reveal?

Logo Reveal fits situations like: tasks that involve Logo and visual identity.

How do I install Logo Reveal in Claude Code?

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.

How do I install Logo Reveal in Codex?

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.

Can I use Logo Reveal 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 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.

What does Logo Reveal need to run?

SKILL.md names no scripts, command-line tools or credentials: Logo Reveal is instructions for the agent only.

Does Logo Reveal access the network?

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.

Is Logo Reveal 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 Logo Reveal use?

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.

How many tokens does Logo Reveal use?

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.

What are the alternatives to Logo Reveal?

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.

Who maintains Logo Reveal?

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.