Skip to main content
Skills are pluggable tool bundles that extend agent capabilities. A skill packages one or more tools with their implementation, letting agents do things that built-in tools don’t cover.

Overview

A skill consists of:
  1. Manifest (skill.toml or SKILL.md) - Declares metadata, runtime, tools, and requirements
  2. Entry Point - Python script, WASM module, Node.js module, or prompt-only Markdown
OpenFang ships with 60 bundled skills compiled into the binary and available immediately.

Supported Runtimes

Python

Easiest to write
  • Uses stdin/stdout JSON protocol
  • Not sandboxed (subprocess with env_clear())
  • Supports Python 3.8+

WASM

Most secure
  • Fully sandboxed (Wasmtime dual metering)
  • Resource limits enforced
  • Compile from Rust, C, Go, etc.

Node.js

OpenClaw compatible
  • JavaScript/TypeScript support
  • Not sandboxed (subprocess)
  • Auto-converts OpenClaw skills

Prompt Only

Expert knowledge
  • Markdown-based
  • Injected into system prompt
  • No code execution
  • 60 bundled skills included

Bundled Skills

OpenFang includes 60 expert knowledge skills compiled into the binary:

Skill Manifest Format

Directory Structure

skill.toml

skill.toml

Creating a Python Skill

Python skills communicate via JSON over stdin/stdout.

Protocol

1

OpenFang sends JSON to stdin

2

Script processes and writes result to stdout

Or on error:

Example: Web Summarizer

src/main.py

Using the OpenFang Python SDK

For cleaner code, use the Python SDK:

Creating a WASM Skill

WASM skills run in a sandboxed Wasmtime environment with enforced resource limits.

Building a WASM Skill

1

Write your skill in Rust

src/lib.rs
2

Compile to WASM

3

Reference in manifest

skill.toml

Sandbox Limits

The WASM sandbox enforces:
  • Fuel limit - Maximum computation steps (prevents infinite loops)
  • Memory limit - Maximum memory allocation
  • Capabilities - Only capabilities granted to the agent apply
Limits are derived from the agent’s [resources] section in its manifest.

SKILL.md Format

The SKILL.md format uses YAML frontmatter and Markdown body:
SKILL.md
All SKILL.md files pass through an automated prompt injection scanner that detects override attempts, data exfiltration patterns, and shell references before inclusion.

Installing Skills

From Local Directory

Reads the skill.toml, validates the manifest, and copies to ~/.openfang/skills/my-skill/.

From FangHub

Downloads from the FangHub marketplace registry.

From Git Repository

List Installed Skills

Output:

Remove Skills

Using Skills in Agents

Reference skills in the agent manifest’s skills field:
agent.toml
The kernel loads skill tools and prompts at agent spawn time.

Publishing to FangHub

FangHub is the community skill marketplace for OpenFang.

Preparing Your Skill

1

Complete metadata

Ensure skill.toml has: name, version, description, author, license, tags
2

Add documentation

Include a README.md with usage instructions
3

Test locally

Searching FangHub

Output:

Publishing

Publishing to FangHub (coming soon):
Validates manifest, packages the skill, and uploads to the registry.

OpenClaw Compatibility

OpenFang can install and run OpenClaw-format skills.

Automatic Conversion

If the directory contains an OpenClaw-style skill (Node.js package), OpenFang:
  1. Detects the OpenClaw format
  2. Generates a skill.toml from package.json
  3. Maps tool names to OpenFang conventions
  4. Copies the skill to the OpenFang skills directory

Manual Conversion

If automatic conversion doesn’t work, create a skill.toml manually:
skill.toml
Skills imported via openfang migrate --from openclaw are scanned and reported in the migration report with reinstallation instructions.

Best Practices

Keep it Focused

One skill should do one thing well

Minimal Requirements

Only request the tools and capabilities you actually need

Descriptive Names

The LLM reads tool names and descriptions to decide when to use them

Clear Schemas

Include descriptions for every parameter so the LLM knows what to pass

Handle Errors

Always return JSON error objects rather than crashing

Version Carefully

Use semantic versioning; breaking changes require major version bumps

Test Thoroughly

Verify your skill works with different agent templates and providers

Document Well

Include setup steps, dependencies, and example usage

CLI Commands

Creating a Skill Scaffold

Interactive prompts for:
  • Skill name
  • Description
  • Runtime type (python/node/wasm)
Generates:

Next Steps

Creating Agents

Build custom agents that use your skills

API Reference

Skill API endpoint documentation