Guizang Social Cards
op7418/guizang-social-card-skill
Produces social card sets for Xiaohongshu and WeChat: carousels, Live Photo motion cards and puzzle layouts, and WeChat cover pairs, rendered from single-file HTML.
Build or repair a NodeTool mini app: operations, widgets, bindings, variables, resources.
$ npx skills add nodetool-ai/nodetool --skill nodetool-app-builder -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nodetool-ai/nodetool nodetool-app-builder --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/nodetool-app-builder .claude/skills/nodetool-app-builder && 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 "nodetool-app-builder" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/nodetool-app-builder into .claude/skills/nodetool-app-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nodetool-app-builder", 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/nodetool-app-builderType 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 nodetool-app-builder -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nodetool-ai/nodetool nodetool-app-builder --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/nodetool-app-builder .agents/skills/nodetool-app-builder && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "nodetool-app-builder" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/nodetool-app-builder into .agents/skills/nodetool-app-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nodetool-app-builder", 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 nodetool-app-builder -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nodetool-ai/nodetool nodetool-app-builder --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/nodetool-app-builder .cursor/skills/nodetool-app-builder && 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 "nodetool-app-builder" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/nodetool-app-builder into .cursor/skills/nodetool-app-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nodetool-app-builder", 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/nodetool-app-builder--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 nodetool-app-builder -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nodetool-ai/nodetool nodetool-app-builder --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/nodetool-app-builder .gemini/skills/nodetool-app-builder && 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 "nodetool-app-builder" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/nodetool-app-builder into .gemini/skills/nodetool-app-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nodetool-app-builder", 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 nodetool-app-builderInstalls 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 nodetool-app-builder -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/nodetool-app-builder .github/skills/nodetool-app-builder && 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 "nodetool-app-builder" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/nodetool-app-builder into .github/skills/nodetool-app-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nodetool-app-builder", 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 nodetool-app-builder -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 nodetool-app-builder --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/nodetool-app-builder .opencode/skills/nodetool-app-builder && 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 "nodetool-app-builder" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/nodetool-app-builder into .opencode/skills/nodetool-app-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nodetool-app-builder", 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.
nodetool-app-builderBuild or repair a NodeTool mini app: operations, widgets, bindings, variables, resources.
Nodetool App Builder is an agent skill from nodetool-ai/nodetool. Build or repair a NodeTool mini app: operations, widgets, bindings, variables, resources. Use when the deliverable is a screen a person runs, not a graph.
Its SKILL.md is about 3.4k 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. The repository describes itself as: Agent-first Creative Workspace. The licence is AGPL-3.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 58765d3. 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 typescript).
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.
Nodetool App Builder loads about 3.4k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 1,872 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 58765d3, republished under its AGPL-3.0 licence (© nodetool-ai). 1,872 words, ~3,413 tokens.
.claude/skills/nodetool-app-builder/SKILL.md (or your agent's skills folder).A mini app is a screen over one or more workflows: widgets bound to Input and
Output nodes, a run trigger, and the variables that hold what the app remembers.
The graph stays the graph. The app is a second document (ApplicationDocument)
that names it.
Use this skill when the user wants something to click. Use
nodetool-workflow-builder when the deliverable is the graph itself, and fix
the graph there first: an app over a broken workflow only reports that the app
is broken.
Before placing a widget, confirm the bound workflow satisfies all four. Each one is a wiring failure the app surface cannot work around.
op:<id>/prop:<nodeId>#<prop> binding.nodetool debug, or run_workflow).list_apps, then get_app. New app:
create_app {name, description, project_id?, from_workflow_id?}.
from_workflow_id binds the first operation, so there is something to run
the moment a widget lands.edit_app {application_id, steps: []} with no steps
returns the tool catalog and the app's current state. Do this before the
first edit in a session rather than guessing a schema.ui_app_add_operation). An app with several modes has several operations,
each with its own state.ui_app_get_binding_targets lists the inputs,
outputs, node settings and variables that exist. Bindings point at node
ids, so a rename in the graph editor never breaks the app. Never invent a
binding string.ui_app_add_component /
ui_app_update_component, plus ui_app_declare_variable for anything the
app remembers and ui_app_add_resource for a document it reads or edits.
Read Mini app contract below for the widget catalog, binding forms,
actions, conditions and format filters.debug_app {application_id, run: false}. Free,
instant, and the only thing that catches a binding pointing at nothing. Run
it after every edit pass.debug_app {application_id, interact: [...]} executes the real
workflows and spends real money. Run it to confirm the app works, not to
explore. A long run takes minutes: pass poll: true for a session id and
read GET /api/debug/sessions/<id> until it settles.run: false check alone.edit_app applies its steps in order against the saved document and writes once
at the end. Pass base_updated_at to refuse the save if the app changed
underneath. With the app open in a browser, the same tools are callable directly
as ui_app_* against the live document.
debug_app reports these, and each one is an app-layer mistake with a fixed
remedy.
| Verdict | What it means | Fix |
|---|---|---|
| Binding references a missing input/output/variable | The widget points at a node the workflow no longer has | Re-read ui_app_get_binding_targets and rebind |
| No run trigger | Nothing in the app can start an operation | Add a Button with a run action, or a change event |
| Display widget never receives a value | The bound output produced nothing on a completed run | Check the Output node is connected in the graph |
| Output mapped to an undeclared variable | An operation writes a variable that does not exist | ui_app_declare_variable first |
Structural checks pass and the app still fails the person using it. Fix these before handing an app over.
disabledWhen on op:<id>/exec#running. No policy
refuses the second click, so the user drives a race: the run is cancelled and
restarted, stacked, or started alongside, depending on the operation's
concurrency rule.exec#error. The run fails and the app
looks idle. Bind a Text or Markdown widget to the error field.notEmpty condition. A
Workflow Form is exempt: it renders every input of its operation, so there is
no single binding to guard.Layout, styling, focus and scroll. Stored resource collections: a run never
reads the database, so seed one with {"seedResource": {"id": "<binding>", "items": [...]}} as an interaction step or a resource:<binding> key in
params. openResource has no editor to open. The report lists all of this
under notSimulated — read it before reporting a green verdict.
nodetool apps export-bundle <id> -o my.app.json packages the app plus the
full graph of every workflow it binds. apps import-bundle recreates both and
rewrites the bundle-local workflow keys to real ids.applications.publish, released,
budget, usage on tRPC).GET /api/applications/examples, installed with
POST /api/applications/examples/:slug/install.nodetool app build "<prompt>" -p <provider> -m <model> runs the whole
spec → plan → author → check → run → judge loop and emits a verified bundle.
It is a batch build for the CLI and the eval suite. There is no build_app
agent tool: an agent builds an app the way a person does, with create_app,
edit_app and debug_app.Mini app contract below carries the widgets, bindings, actions, conditions, format filters and document shape.
In a NodeTool checkout, these repository sources go further:
docs/mini-apps-guide.md — eleven worked recipes, from a one-shot form to a
chat app.docs/mini-apps-reference.md — every widget and setting in full.docs/harnesses.md § nodetool app debug — the harness, its bundle layout,
and the build loop.The parts an app is assembled from. A checkout's
docs/mini-apps-reference.md carries every widget and setting in full.
Every tool takes application_id. A workflow id is never accepted: the
workflows an app runs are named by target_workflow_id on its operations.
| Area | Tools |
|---|---|
| Layout | ui_app_get_snapshot, ui_app_list_component_types, ui_app_add_component, ui_app_update_component, ui_app_remove_component, ui_app_select_component, ui_app_set_title |
| Operations | ui_app_list_operations, ui_app_add_operation, ui_app_update_operation, ui_app_remove_operation |
| Variables | ui_app_list_variables, ui_app_declare_variable, ui_app_update_variable, ui_app_remove_variable |
| Resources | ui_app_list_resources, ui_app_add_resource, ui_app_remove_resource |
| Bindings | ui_app_get_binding_targets |
Headless, each is a step in edit_app {application_id, steps: [{tool, input}]}.
The ui_app_ prefix is optional in a step. With the app open in a browser they
are callable directly.
| Binding | Points at |
|---|---|
op:<opId>/in:<nodeId> | An input of one of the app's workflows |
op:<opId>/out:<nodeId> | An output of one of the app's workflows |
op:<opId>/prop:<nodeId>#<prop> | A node setting, driven by a widget |
op:<opId>/exec#<field> | Run status: running, progress, error, activity, transcript (agent text and tool calls, for an Agent Activity widget) |
var:<variableId> | A value the app remembers |
view:<componentId>#<prop> | State belonging to one widget, never saved |
Two legacy forms still resolve: node:<nodeId>#<prop> against the default
operation, and a bare name looked up in the live graph. A name matching nothing
is an error, not a silent no-op. Prefer the id forms for anything new.
A widget event runs one action. There is nowhere to write code.
| Action | Settings |
|---|---|
run | operationId |
cancel | operationId, optional invocationId |
setVariable | variableId, and a value or the widget's own value |
toggleVariable | variableId |
resourceCommand | resourceBindingId, command: read, create, update, delete, upload |
openResource | resourceBindingId |
Events fire on click (buttons) or change (everything the user edits). A
change event has a pace: live, release (only on controls that commit), or
debounce.
visibleWhen and disabledWhen each hold a binding, an operator and a
comparison value typed as text and converted to match. Operators: notEmpty,
empty, eq, neq, gt, gte, lt, lte, contains. A condition whose
binding points at nothing is treated as no condition, so broken wiring never
silently hides a widget.
format replaces {binding} tokens, optionally through one filter:
{op:main/out:n1|truncate:80}. Filters: number, date, upper, lower,
join, truncate. An unknown filter or a dead binding renders as nothing.
Show something: Heading, Text, Markdown (the right choice for streamed prose), Image, Audio, Video, Sketch, Timeline, Storyboard, Storyboard Preview, JSON, Table, Output, Progress, Agent Activity (an agent's text and tool calls, live), Gallery, Image Compare.
Sketch, Timeline, and the two storyboard widgets take a document reference,
such as {type: "sketch", id}, which is what the nodes producing them emit.
Storyboard shows the shot cards. Storyboard Preview plays the board as one cut,
with clips in shot order and stills for shots without a clip. Binding a
reference to Image or Video shows nothing: a reference is not a media URL.
Take input: Workflow Form, Workflow Input, Text Input, Number Input, Slider, Switch, Select, Image Input, Sketch Pad, Audio Input, Audio Recorder, Video Input, Camera Capture, Document Input, Color Input, Resource Picker, Resource Gallery, Storyboard Scenes.
A Workflow Form renders every input of one operation in graph order, so an Input
node added later shows up with no app edit. Place inputs one by one when the
layout matters. Audio Recorder and Camera Capture write the same
{type, uri, asset_id} ref an upload writes. The Sketch Pad flattens each
stroke to a PNG travelling inline as a data URI, so keep it near its 512×384
default rather than the 2048px ceiling.
Chat: Chat Thread (binding is the conversation, streamBinding the reply
arriving from the current run), Chat Composer, Model Select. The thread folds a
settled reply into the conversation variable, which only happens when binding
is a variable and streamBinding is an output.
Buttons and layout: Button, Panel, Columns (left and right slots),
Divider.
Panel, Columns and Accordion take visibleWhen, so one condition shows or
hides a whole group, such as one step of a Guided Steps flow. Panel's
variant is panel, card (a small raised card for one item) or plain (no
frame), and columns lays its children in a grid. Columns' layout: "main-aside" gives the left slot the free width and sizes the right slot to
its content. A Button with fullWidth: false fits its label, and align: "end" puts it at the right. Heading takes a subtitle, Text a tone
(muted or hint), Text Input a hint, and Image an aspectRatio, a
width and a caption.
interface ApplicationDocument {
schemaVersion: number; // 3
ui: PuckData; // { root, content, zones }
operations: OperationBinding[];
resources: ResourceBinding[];
variables: VariableDeclaration[];
theme?: { id: string };
}A resource is a handle to a real document the app may read or edit:
{id, name, kind: "asset" | "timeline" | "storyboard" | "sketch", scope, operations}.
A bundle is the app plus the full graph of every workflow it runs, with each
operation's workflowId holding a bundle-local key that import swaps for a real
id.
| Group | Keyed by | Holds |
|---|---|---|
inputs | opId:nodeId, or opId:nodeId#prop | {value, dirty, revision} |
outputs | opId:nodeId | {value, invocationId, status, revision} |
variables | variable id | The current value |
view | componentId:prop | One widget's own state |
invocations | job id | {id, operationId, status, progress, error, startedAt} |
Output status is empty, pending, streaming or done. Streamed values
accumulate: text joins, structured items collect into a list. An output slot is
cleared at the start of every run.
© 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/nodetool-app-builder of nodetool-ai/nodetool.
Open the folder on GitHubat commit 58765d3
Nodetool App Builder 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 |
|---|---|---|---|---|---|---|
| Nodetool App Builder this skillnodetool-ai/nodetool | 560 | — | ~3.4k | Automated safety check: Pass | AGPL-3.0 | |
| Guizang Social Cardsop7418/guizang-social-card-skill | 7.4k | 1 repos | ~7.8k | Automated safety check: Pass | AGPL-3.0 | |
| Weekly Changelog Videoheygen-com/hyperframes | 59k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Anthropic Brand Stylinganthropics/skills | 180k | 30 repos | ~559 | Automated safety check: Pass | Apache-2.0 | |
| MoneyPrinterTurbo Video Generatorharry0703/MoneyPrinterTurbo | 129k | — | ~2.1k | Automated safety check: Warn | MIT | |
| Brag Slim Launch Video Makerlatent-spaces/brag | 14k | 1 repos | ~1.9k | Automated safety check: Pass | MIT |
op7418/guizang-social-card-skill
Produces social card sets for Xiaohongshu and WeChat: carousels, Live Photo motion cards and puzzle layouts, and WeChat cover pairs, rendered from single-file HTML.
heygen-com/hyperframes
Turns a weekly changelog markdown file into a branded HyperFrames video with voiceover, animated mock-UI scenes and captions, using fonts, background and scripts bundled in the skill.
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.
harry0703/MoneyPrinterTurbo
Installs and runs MoneyPrinterTurbo to turn a topic or script into a finished short video with voice-over, subtitles, stock footage and music.
latent-spaces/brag
Builds a short, shareable launch video with music and motion from a project directory or a website URL, using only tools already on the machine.
heygen-com/hyperframes
Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.
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
Build or repair a NodeTool mini app: operations, widgets, bindings, variables, resources. Nodetool App Builder is an agent skill from nodetool-ai/nodetool. Build or repair a NodeTool mini app: operations, widgets, bindings, variables, resources.
Nodetool App Builder fits situations like: the deliverable is a screen a person runs.
Run `npx skills add nodetool-ai/nodetool --skill nodetool-app-builder -a claude-code`. Or copy the skill folder (packages/system-skills/nodetool-app-builder in nodetool-ai/nodetool) into .claude/skills/nodetool-app-builder in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nodetool-ai/nodetool --skill nodetool-app-builder -a codex`. Or copy the skill folder (packages/system-skills/nodetool-app-builder in nodetool-ai/nodetool) into .agents/skills/nodetool-app-builder 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 nodetool-app-builder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nodetool-app-builder, .gemini/skills/nodetool-app-builder, .github/skills/nodetool-app-builder and .opencode/skills/nodetool-app-builder in your project.
SKILL.md names no scripts, command-line tools or credentials: Nodetool App Builder 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.
Nodetool App Builder 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 3.4k 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 Nodetool App Builder: Guizang Social Cards (op7418/guizang-social-card-skill, 7.4k stars), Weekly Changelog Video (heygen-com/hyperframes, 59k stars), Anthropic Brand Styling (anthropics/skills, 180k stars) and MoneyPrinterTurbo Video Generator (harry0703/MoneyPrinterTurbo, 129k 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 9, 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.