Browse, search, and install skills built by the community. One command to add new capabilities to your agent.
Skills are self-contained TypeScript modules. Build one in four steps.
Run zubo skills new to generate a skill directory with a handler.ts template.
Export a skill config object with your tool's name, description, and parameters.
Write your logic as the default export function. Access inputs and return a JSON string.
Run zubo publish to submit to the skill registry. Others can install with one command.
Copy this prompt and send it to your Zubo agent to build a new skill on the fly.
I want to build a Zubo skill. A skill is a single TypeScript file (handler.ts)
that lives in its own directory under ~/.zubo/skills/.
The file must:
1. Export a `skill` config object with name, description, and params
2. Export a default async function that takes input and returns a string
Format:
export const skill = {
name: "tool_name", // lowercase + underscores only, [a-z0-9_]+
description: "What it does", // shown to the AI to decide when to use it
params: {
param_name: { type: "string", description: "...", required: true },
optional_param: { type: "number", description: "..." }
}
};
export default async function (input: Record<string, unknown>): Promise<string> {
const param_name = input.param_name as string;
// your logic here
return JSON.stringify({ result: "..." });
}
Example — a complete working skill:
export const skill = {
name: "word_count",
description: "Count words, characters, and sentences in text",
params: {
text: { type: "string", description: "The text to analyze", required: true }
}
};
export default async function (input: Record<string, unknown>): Promise<string> {
const text = input.text as string;
const words = text.split(/\s+/).filter(Boolean).length;
const chars = text.length;
const sentences = text.split(/[.!?]+/).filter(Boolean).length;
return JSON.stringify({ words, characters: chars, sentences });
}
Rules:
- name must match [a-z0-9_]+ (no hyphens, no uppercase)
- The function must return a JSON string
- You can use fetch(), Bun APIs, and any built-in Node/Bun modules
- For API keys, read from process.env (e.g., process.env.MY_API_KEY)
- Keep it focused — one tool, one purpose
Please build me a skill that: [DESCRIBE WHAT YOU WANT]
Install skills with one command. Build your own in minutes.