NEAR dApp Builder
internet-court/internet-court-skill
Scaffolds new NEAR dApps with create-near-app or adds NEAR wallet sign-in, contract calls and transaction signing to an existing React or plain JavaScript app.
Build a new AI tool end-to-end — Rust implementation, toolset wiring, infra, schema generation, and frontend UI.
$ npx skills add macro-inc/macro --skill create-ai-tool -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install macro-inc/macro create-ai-tool --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/macro-inc/macro.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-ai-tool .claude/skills/create-ai-tool && 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 "create-ai-tool" agent skill from https://github.com/macro-inc/macro/tree/main/.agents/skills/create-ai-tool into .claude/skills/create-ai-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-ai-tool", 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/macro-inc/macro/tree/main/.agents/skills/create-ai-toolType 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 macro-inc/macro --skill create-ai-tool -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install macro-inc/macro create-ai-tool --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/macro-inc/macro.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/create-ai-tool .agents/skills/create-ai-tool && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-ai-tool" agent skill from https://github.com/macro-inc/macro/tree/main/.agents/skills/create-ai-tool into .agents/skills/create-ai-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-ai-tool", 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 macro-inc/macro --skill create-ai-tool -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install macro-inc/macro create-ai-tool --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/macro-inc/macro.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/create-ai-tool .cursor/skills/create-ai-tool && 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 "create-ai-tool" agent skill from https://github.com/macro-inc/macro/tree/main/.agents/skills/create-ai-tool into .cursor/skills/create-ai-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-ai-tool", 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/macro-inc/macro.git --path .agents/skills/create-ai-tool--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 macro-inc/macro --skill create-ai-tool -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install macro-inc/macro create-ai-tool --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/macro-inc/macro.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/create-ai-tool .gemini/skills/create-ai-tool && 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 "create-ai-tool" agent skill from https://github.com/macro-inc/macro/tree/main/.agents/skills/create-ai-tool into .gemini/skills/create-ai-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-ai-tool", 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 macro-inc/macro create-ai-toolInstalls 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 macro-inc/macro --skill create-ai-tool -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/macro-inc/macro.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/create-ai-tool .github/skills/create-ai-tool && 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 "create-ai-tool" agent skill from https://github.com/macro-inc/macro/tree/main/.agents/skills/create-ai-tool into .github/skills/create-ai-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-ai-tool", 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 macro-inc/macro --skill create-ai-tool -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install macro-inc/macro create-ai-tool --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/macro-inc/macro.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/create-ai-tool .opencode/skills/create-ai-tool && 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 "create-ai-tool" agent skill from https://github.com/macro-inc/macro/tree/main/.agents/skills/create-ai-tool into .opencode/skills/create-ai-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-ai-tool", 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.
create-ai-toolBuild a new AI tool end-to-end — Rust implementation, toolset wiring, infra, schema generation, and frontend UI.
Create AI Tool is an agent skill from macro-inc/macro. Build a new AI tool end-to-end — Rust implementation, toolset wiring, infra, schema generation, and frontend UI.
Its SKILL.md is about 1.6k 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 Frontend & Design, covering Frontend development. It works with Rust. The repository describes itself as: Macro is a unified workspace for teams: email, chat, docs, tasks, agents, calls, and CRM — @-linked together with shared AI memory. The licence is AGPL-3.0.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 49418e7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
buncargotscFrom 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.
Create AI Tool loads about 1.6k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 704 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 macro-inc/macro at commit 49418e7, republished under its AGPL-3.0 licence (© macro-inc). 704 words, ~1,553 tokens.
.claude/skills/create-ai-tool/SKILL.md (or your agent's skills folder).This skill walks through building a new AI tool from scratch. Before writing any code, read the design guide at crates/ai_toolset/TOOL_DESIGN.md and the framework docs/examples in crates/ai_toolset/src/lib.rs.
IMPORTANT: Never modify the crates/ai_toolset/ crate. It is the framework — you build tools that use it.
Decide which domain crate the tool belongs in. Tools live at crates/<crate>/src/inbound/toolset/.
Study an existing tool for patterns:
crates/documents/src/inbound/toolset/ — tools: read_content.rs, read_metadata.rs, create_document.rscrates/email/src/inbound/toolset/ — tools: send_email.rs, get_thread.rs, update_thread_labels.rscrates/soup/src/inbound/toolset/ — tool: list_entities.rscrates/call/src/inbound/toolset/ — call-related toolsEach tool is a struct that derives JsonSchema and Deserialize, with #[schemars(title = "...", description = "...")] on the struct and #[schemars(description = "...")] on each field. The struct implements AsyncTool<Context> from the ai_toolset crate.
Create a new file for your tool (e.g. my_tool.rs), add it as a mod in the toolset's mod.rs, and wire it into the toolset's AsyncToolSet::new().add_tool::<...>() chain.
If your tool needs dependencies (DB connections, service clients) that aren't already in an existing context, define a new context struct in the toolset's mod.rs. See crates/documents/src/inbound/toolset/mod.rs for the DocumentToolContext pattern.
The context must be Clone and derivable from the parent ToolServiceContext via FromRef.
If the tool's dependencies are already available in an existing context (e.g. it only needs Arc<ToolScribe>), you can use that context directly — no new struct needed.
all_tools in the ai_tools crateEdit crates/ai_tools/src/lib.rs:
.add_tool::<YourTool, YourContext>() or .add_subtoolset::<YourToolContext>(your_toolset()) to the all_tools() functionEdit crates/ai_tools/src/tool_context.rs:
Tool* naming pattern)ToolServiceContext structFromRef<ToolServiceContext> for your context if needed (or derive it — the struct uses #[derive(FromRef)])Edit crates/ai_tools/src/build_context.rs:
env_var! or maybe_env_var! blocksbuild_tool_service_context_from_envToolServiceContextEdit infra/packages/shared/src/ai_tools.ts:
envVars array in getAiToolsInfra()Run from the repository root:
cargo fmt
cargo clippy -p ai_tools
cargo test -p <your_domain_crate>Fix any warnings or errors before proceeding.
Run from apps/web/:
bun gen-toolsThis builds crates/ai_tools/src/bin/gen_tool_schemas.rs, generates crates/ai_tools/schemas/tools.json, and transpiles the schemas into TypeScript at apps/web/src/lib/service-clients/service-cognition/generated/tools/.
Run from apps/web/:
bun checkThis runs tsc --noEmit and will report type errors — specifically, the toolHandlers map in apps/web/src/lib/core/component/AI/component/tool/handler.tsx will be missing your new tool name. The errors tell you exactly what to implement.
The tool UI components live at apps/web/src/lib/core/component/AI/component/tool/. Study existing renderers:
Search.tsx — search results renderingReadContent.tsx / ReadMetadata.tsx — document tool UISendEmail.tsx — email tool UI ListEntities.tsx — list displayProperties.tsx — property get/set toolsListCallRecords.tsx / ReadCallRecord.tsx — call toolsBaseTool.tsx — shared base componentEach tool needs a handler object implementing ToolHandler (from ToolRenderer.tsx) with at minimum a render component. Use createToolRenderer to create it.
apps/web/src/lib/core/component/AI/component/tool/YourTool.tsxcreateToolRendererapps/web/src/lib/core/component/AI/component/tool/handler.tsx:toolHandlers map with the key matching your tool's schema titleEvery tool renderer must show results. Use the expandable dropdown pattern from Search.tsx / ListEntities.tsx:
BaseTool (from BaseTool.tsx) as the wrapper. It accepts a response prop for expandable content.const [isExpanded, setIsExpanded] = createSignal(false) to track open/closed state.ctx.response?.data (typed from the generated schema).CaretRight toggle button (@icon/regular/caret-right.svg?component-solid) that rotates 90deg when expanded.BaseTool's response prop, gated on isExpanded().For tools that return text/string results (not entity lists), render the response string in a <pre> or similar block inside the response prop. The key point: the response data must always be surfaced in the UI via the dropdown — never silently swallowed.
Run from apps/web/:
bun format
bun checkFix any remaining type or formatting errors.
© macro-inc, 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 .agents/skills/create-ai-tool of macro-inc/macro.
Open the folder on GitHubat commit 49418e7
Create AI Tool 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 |
|---|---|---|---|---|---|---|
| Create AI Tool this skillmacro-inc/macro | 4.6k | — | ~1.6k | Automated safety check: Pass | AGPL-3.0 | |
| NEAR dApp Builderinternet-court/internet-court-skill | 6.4k | 1 repos | ~684 | Automated safety check: Pass | Custom licence | |
| Electronmajiayu000/claude-skill-registry | 666 | 1 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Webapp Buildersidequery/sidemantic | 129 | — | ~5.5k | Automated safety check: Pass | AGPL-3.0 | |
| Warp TUI UI Guidelineswarpdotdev/warp | 65k | 1 repos | ~1.8k | Automated safety check: Pass | AGPL-3.0 | |
| Trust Hmi ContractsjohannesPettersson80/trust-platform | 221 | — | ~611 | Automated safety check: Pass | Apache-2.0 |
internet-court/internet-court-skill
Scaffolds new NEAR dApps with create-near-app or adds NEAR wallet sign-in, contract calls and transaction signing to an existing React or plain JavaScript app.
majiayu000/claude-skill-registry
A skill your agent uses when building, hardening, or shipping a cross-platform Electron desktop app — main/renderer/preload process model, typed contextBridge IPC, locking down…
sidequery/sidemantic
Build interactive analytics webapps, demos, dashboards, or embedded app surfaces from Sidemantic semantic models using copyable component primitives and deterministic query inspection.
warpdotdev/warp
Rules for writing UI code in Warp's headless TUI front-end with the cell-grid TuiElement library, kept separate from the pixel-based GUI app.
johannesPettersson80/trust-platform
Implement and review trust-platform HMI schema/value/write contracts with safety guardrails.
remix-run/react-router
Guides work on React Router apps by first identifying whether the app uses Framework, Data or Declarative mode, then loading the matching reference and the installed package docs.
macro-inc/macro
Interact with the Mintlify REST API to manage deployments, trigger builds, and query documentation site metadata programmatically.
macro-inc/macro
Add or change an in-app feature tour (a view's guided flyover) in the web app.
macro-inc/macro
Define a frontend feature flag with defineFlag and wire its readers.
macro-inc/macro
Run the Macro app on Cursor Cloud and pick up edits. An agent skill from macro-inc/macro.
macro-inc/macro
Wrap a new backend endpoint in the TypeScript SDK (packages/sdk), or record it as skipped.
macro-inc/macro
Enforce hexagonal architecture in the Rust backend. An agent skill from macro-inc/macro.
Works with
Categories
Build a new AI tool end-to-end — Rust implementation, toolset wiring, infra, schema generation, and frontend UI. Create AI Tool is an agent skill from macro-inc/macro. Build a new AI tool end-to-end — Rust implementation, toolset wiring, infra, schema generation, and frontend UI.
Create AI Tool fits situations like: tasks that involve Frontend development.
Run `npx skills add macro-inc/macro --skill create-ai-tool -a claude-code`. Or copy the skill folder (.agents/skills/create-ai-tool in macro-inc/macro) into .claude/skills/create-ai-tool in your project. Claude Code loads it when a task matches its description.
Run `npx skills add macro-inc/macro --skill create-ai-tool -a codex`. Or copy the skill folder (.agents/skills/create-ai-tool in macro-inc/macro) into .agents/skills/create-ai-tool 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 macro-inc/macro --skill create-ai-tool -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-ai-tool, .gemini/skills/create-ai-tool, .github/skills/create-ai-tool and .opencode/skills/create-ai-tool in your project.
Going by SKILL.md and its folder, Create AI Tool needs the command-line tools its instructions call (bun, cargo and tsc).
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.
Create AI Tool 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 1.6k tokens (SKILL.md is roughly 6.2k 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 Create AI Tool: NEAR dApp Builder (internet-court/internet-court-skill, 6.4k stars), Electron (majiayu000/claude-skill-registry, 666 stars), Webapp Builder (sidequery/sidemantic, 129 stars) and Warp TUI UI Guidelines (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
macro-inc (a GitHub organization) maintains it in macro-inc/macro, which has 4,590 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 8, 2026.
Source: macro-inc/macro on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.