How to Build a Skill for the ProductiveBot Skill Store

You don't need to be a developer to create a skill. If you can write clear instructions, you can build something that helps other ProductiveBot owners and makes you money.

PB
ProductiveBot Team· · 17 min read
Reusable AI-agent capabilities illustrated as connected modular components.
What This Guide Covers

How to package something you already know how to do into a skill other ProductiveBot owners can install with one click. Two paths: behavioral skills (a folder and a text file, no coding) and plugin skills (JavaScript that runs inside the gateway). Most people should start with a behavioral skill.

Think about the last time you got your ProductiveBot to do something really useful. Maybe you automated your invoicing. Or set up a workflow that turns voice memos into organized meeting notes. Or built a system that tracks inventory across three suppliers.

That thing you figured out? Other people need it too. And they'd pay for it.

The ProductiveBot Skill Store lets you package what you know into a skill that other customers can install with one click. You set the price. You get paid when people buy it.

There are two kinds of skills: behavioral skills and plugin skills. Most creators start with behavioral skills. Plugin skills are for more advanced use cases that need to run code inside the gateway. This guide covers both.

Behavioral Skill

A folder with a SKILL.md file of clear instructions. No coding required. Covers most of what people want to build: quotes, invoices, listings, follow-ups, checklists.

Plugin Skill

JavaScript that hooks into the gateway and runs on every message or tool call. Needs install and uninstall scripts, and passes a security review. For model routing, logging, and guardrails.

Behavioral Skills: Instructions That Teach Your Bot

A behavioral skill is a folder with one required file: SKILL.md. Your bot reads this file and follows the instructions inside it. Think of it like writing a really detailed how-to guide for someone who's smart but has never done this specific task before. That someone just happens to be an AI.

Here's what a basic skill folder looks like:

my-skill/
├── SKILL.md        (required — the instructions)
├── scripts/        (optional — any code that needs to run)
├── references/     (optional — extra docs or data)
└── assets/         (optional — templates, images, files)

Most behavioral skills don't need scripts or assets. The instructions in SKILL.md do the heavy lifting.

Writing Your SKILL.md

Every SKILL.md has two parts: a short header and the instructions.

The Header

The header tells ProductiveBot what your skill is and when to use it:

---
name: invoice-automator
version: 1.0.0
description: Automate invoice creation and tracking for small businesses.
  Use when the customer asks about invoices, billing, payment tracking,
  or accounts receivable.
---

Three things matter here:

  • Name: Keep it short and descriptive. Lowercase, hyphens instead of spaces. It should match the name of your skill's folder.
  • Version: Start at 1.0.0 and increase it every time you change the skill. This is how the Skill Store knows an update is available, and how we can tell which version a customer has installed. Skills submitted without a version cannot be tracked or updated.
  • Description: This is how your bot decides whether to use the skill. Be specific about what it does and what kinds of requests should trigger it.
Do Not Skip The Version

A skill with no version cannot be tracked or updated. The Skill Store compares the installed version against the latest to show an update badge, so a versionless skill looks permanently up to date and can never ship a fix to the people who already installed it. Start at 1.0.0 and raise it on every change.

The Instructions

After the header, write the actual instructions in plain Markdown. Tell the bot what to do when the skill is triggered, what steps to follow, what to watch out for, and what to say to the customer at each step.

Here's a simple example:

# Invoice Automator

Create and track invoices for the customer's business.

## When to Use
Activate when the customer mentions invoices, billing,
creating quotes, or tracking payments.

## Creating a New Invoice
1. Ask the customer for: client name, items/services,
   amounts, and due date
2. Create the invoice as a clean PDF
3. Save it to ~/Documents/Invoices/
4. Tell the customer where you saved it

Notice how specific that is. You're not writing vague goals. You're writing step-by-step instructions that leave no room for guessing.

Tips for Writing Great Behavioral Skills

Be specific, not vague. "Handle invoices" is too vague. "Create a PDF invoice using the template in assets/, fill in the client name, line items, and total, and save it to ~/Documents/Invoices/" is what actually works.

Write it like you're training a new employee. Imagine someone on their first day. They're competent and eager, but they don't know your systems yet. What would you tell them? Write that.

Include what to say to the customer. Your skill can include suggested messages. This keeps the experience consistent and professional.

Add troubleshooting. Think about what might go wrong and tell the bot how to handle it. This makes your skill more reliable.

Keep the file lean. Your SKILL.md shares space with everything else your bot is thinking about. If you need to include detailed reference material, put it in a references/ folder and tell the bot to read it when needed.

Plugin Skills: Code That Runs Inside the Gateway

Some skills need to do more than give instructions. They need to intercept what's happening inside your ProductiveBot as it processes each message or tool call. That's what plugin skills are for.

A plugin skill bundles one or more code plugins with a SKILL.md wrapper. The plugins hook into the ProductiveBot gateway and run automatically, without the customer having to ask.

Common uses for plugin skills:

  • Routing messages to different AI models based on complexity (saves cost automatically)
  • Blocking or logging dangerous commands before they run
  • Adding custom behavior before or after every tool call
  • Tracking usage or cost data in the background

The Plugin Manifest

Every plugin needs an openclaw.plugin.json manifest file alongside its code:

{
  "id": "my-plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "description": "What this plugin does",
  "entry": "index.js"
}

The entry file is your plugin's main code. It uses OpenClaw's plugin SDK to register hooks.

Available Hooks

Hooks let your plugin react to events inside the gateway:

Hook When it fires What you can do
before_model_resolve Before every AI call Override which model gets used
before_tool_call Before every tool runs Block the tool, log it, or let it pass

More hooks may be available. Check the OpenClaw documentation for the current list.

Writing a Plugin

Here's a minimal plugin that logs every exec command:

import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import * as fs from "fs";

export default definePluginEntry({
  id: "command-logger",
  name: "Command Logger",
  description: "Logs every exec command for audit purposes",

  register(api) {
    api.on("before_tool_call", async (event, ctx) => {
      try {
        const toolName = event?.toolName ?? "";
        if (toolName !== "exec") return {};

        const command = event?.params?.command;
        if (!command) return {};

        fs.appendFileSync(
          "~/.openclaw/command-log.json",
          JSON.stringify({ ts: new Date().toISOString(), command }) + "\n"
        );

        return {}; // let the command run
      } catch (err) {
        return {}; // always fail open
      }
    });
  }
});
The Most Important Rule: Fail Open

If your plugin throws an error, return {} and let ProductiveBot continue normally. A plugin that crashes and blocks the gateway is worse than no plugin at all. Wrap your hook body in try/catch and return {} from the catch.

To block a tool call, return { block: true, blockReason: "reason" }. Use this carefully.

The Plugin Skill Directory Structure

A plugin skill has more files than a behavioral skill:

my-plugin-skill/
├── SKILL.md                    (required — teaches the agent about this plugin)
├── plugins/
│   └── my-plugin/
│       ├── index.js            (plugin code)
│       ├── package.json        (npm metadata)
│       └── openclaw.plugin.json (manifest)
├── scripts/
│   ├── install.sh              (required — sets up the plugin)
│   └── uninstall.sh            (required — clean removal)
└── README.md                   (Skill Store listing)

Install and Uninstall Scripts

Plugin skills require install and uninstall scripts. Customers run install.sh after downloading the skill, and uninstall.sh if they decide they don't want it anymore.

Your install script must:

  1. Copy the plugin code to ~/.openclaw/extensions/your-plugin-id/
  2. Add your plugin ID to plugins.allow in the gateway config:
    # Read the current plugins.allow array, add your ID, write it back
    openclaw config set plugins.allow '[...existing, "your-plugin-id"]'
  3. Restart the gateway: openclaw gateway restart
  4. Verify the plugin loaded: openclaw plugins list
  5. Print a confirmation message

Your uninstall script must:

  1. Remove your plugin ID from plugins.allow
  2. Delete the plugin from ~/.openclaw/extensions/
  3. Restart the gateway
  4. Confirm clean removal
Both Scripts Must Be Idempotent

Running install twice should not add duplicate entries. Running uninstall when the plugin is not installed should not error. And roll back on failure: if your install fails partway through, clean up what you added. A half-installed plugin the gateway cannot load will throw errors until someone fixes it by hand.

What the SKILL.md Teaches the Agent

For a plugin skill, the SKILL.md doesn't just describe the skill. It teaches the agent what the plugin is doing and how to communicate that to the customer.

If your plugin blocks a command, the SKILL.md should tell the agent: explain what happened and offer alternatives. If your plugin logs routing decisions, the SKILL.md should tell the agent: how to read those logs and summarize them for the customer when asked.

The plugin runs silently in the background. The agent is the customer's window into what it's doing.

Security Considerations for Plugin Skills

Plugin skills have more power than behavioral skills, so the review bar is higher.

  • Only intercept tools you need to intercept. If you're building a command logger, check that the tool is exec before reading the command. Don't inspect every tool call if you only care about one.
  • Never read or write sensitive files unless the skill explicitly needs to and the customer understands this.
  • Never hardcode credentials or user identifiers. Don't put a Slack user ID or API key in your plugin code. Read these from a config file that the customer controls.
  • Document everything your plugin reads and writes. Customers and our review team need to know exactly what your plugin touches.
Every Plugin Skill Gets A Security Review

We check which hooks you use, what files you read or write, and whether your install and uninstall scripts are clean. Skills that request more access than they need get sent back. This protects customers and keeps the Skill Store worth trusting.

Skill Ideas Based on Real Industries

Think about your own expertise. Here are some ideas based on what ProductiveBot customers actually do:

If you are a You could build
Tradesperson Quote generators for plumbing, HVAC, or electrical jobs. Job scheduling with follow-up reminders. A materials calculator that estimates cost from a job description.
E-commerce seller Listing creators that format for multiple platforms. Inventory trackers that alert on low stock. Return and refund workflows that handle the customer email.
Healthcare professional Patient intake form processors. Appointment reminder systems. Compliance checklists for documentation.
Freelancer or consultant Proposal generators. Time tracking tied to an invoice workflow. Client onboarding checklists that gather everything upfront.
Real estate agent Listing description writers. Open house follow-up sequences. Comparable market analysis formatters.
Technical user Routing plugins that send hard requests to powerful models and easy ones to cheaper models. Logging plugins that record what your bot runs. Monitoring plugins that alert on anything unusual.

You don't need to build something that serves millions. A skill that saves 10 plumbers two hours a week is worth real money.

How to Submit Your Skill

Once your skill is working on your own ProductiveBot, here's how to get it into the store:

  1. Test it thoroughly on your own bot. Install it, use it for real tasks, and make sure it works every time. For plugin skills, test both install and uninstall on a clean setup.
  2. Write a short description of what your skill does, who it is for, and what problem it solves. This is what customers read on the Skill Store page.
  3. Email it to support@productivebot.ai with your skill folder attached. Include your name, the price you want to charge, and your description.
  4. We review it. Every skill in the store is vetted by the ProductiveBot team. We check that it works, that it is safe, and that the instructions are clear. Plugin skills also get a security review of the code and install scripts.
  5. It goes live. Once approved, your skill appears in the Skill Store and customers install it with one click. You get paid for every sale.

Start With What You Know

You don't need a computer science degree to build a behavioral skill. You need expertise in something (which you already have) and the ability to write clear instructions.

If you want to build a plugin skill, some JavaScript knowledge helps. But the concepts are straightforward, and the examples in this guide give you a starting point.

Your ProductiveBot can help you write the skill, too. Just tell it: "Help me create a skill that does [what you want]." It knows the format and can draft the SKILL.md for you. For plugin skills, you can ask it to help you write the plugin code, install script, and manifest.

Ready to build your first skill? Open up your ProductiveBot and say: "Let's create a skill."

Browse The Skill Store

See what other ProductiveBot owners have built, install a skill in one click, or publish your own and start earning.

Visit the Skill Store

Common Questions

Do I need to know how to code to build a ProductiveBot skill?

No. A behavioral skill is a folder with a SKILL.md file containing clear instructions in plain Markdown. If you can write a detailed how-to guide for a new employee, you can build one. Only plugin skills require JavaScript.

What is the difference between a behavioral skill and a plugin skill?

A behavioral skill gives your bot instructions to follow and needs no code. A plugin skill runs JavaScript inside the ProductiveBot gateway, hooks into events like every model call or tool call, and requires install and uninstall scripts plus a security review. Start with a behavioral skill unless you specifically need to intercept gateway behavior.

Does my skill need a version number?

Yes. Without a version field in SKILL.md, the Skill Store cannot tell which release a customer has installed and can never show an update is available. Start at 1.0.0 and raise it on every change: patch for wording fixes, minor for new capability, major for anything that breaks an existing setup.

Can I update my skill after it is published?

Yes. Raise the version number and submit the update. The Skill Store compares the installed version against the latest and shows customers an update badge, so they can install your fix with one click.

How do I test a skill before submitting it?

Install it on your own ProductiveBot and use it for real work, not just one demo run. Confirm your bot follows the instructions correctly every time rather than only on the first attempt. For plugin skills, test install and uninstall on a clean setup and confirm the gateway still starts.

Does ProductiveBot review skills before they go live?

Yes. Every skill in the store is vetted by our team for whether it works, whether it is safe, and whether the instructions are clear. Plugin skills get an additional security review covering which hooks they use, what files they touch, and whether the install and uninstall scripts are clean.

How do I set the price for my skill?

You set your own price and include it when you email your skill to support@productivebot.ai. You get paid for every sale.

Need Help?

Your own ProductiveBot can draft the skill with you: tell it "help me create a skill that does X" and it knows the format. If you get stuck, chat with Scout at support.productivebot.ai or email support@productivebot.ai.

Reading next

What Is AGENTS.md? The File That Tells Your AI How to Work
ProductiveBot vs. the NVIDIA Jetson Orin Nano Super: Do You Really Need to Build Your Own AI Assistant?

Leave a comment

This site is protected by hCaptcha and the hCaptcha Privacy Policy and Terms of Service apply.