Skip to main content
Once you’ve built a plugin, you can share it with the community by publishing to npm. This guide covers packaging, versioning, and publishing OpenClaw plugins.

Package Structure

A publishable plugin should have this structure:

package.json

Configure your package.json for publishing:

Key Fields

string
required
Package name. Use the @openclaw/ scope for official plugins:
  • @openclaw/my-plugin (official)
  • openclaw-plugin-my-plugin (community)
  • @yourscope/openclaw-my-plugin (scoped)
string
required
Version number following semver:
  • 1.0.0 - Initial release
  • 1.1.0 - New features (backward compatible)
  • 2.0.0 - Breaking changes
string
required
Module type. Set to "module" for ESM.
string
required
Entry point. Use index.ts or dist/index.js (if compiled).
array
Keywords for npm search. Include "openclaw" and "plugin".
object
Runtime dependencies. Include only what your plugin needs at runtime.
object
Development dependencies. Include openclaw for type imports.
object
Specify compatible OpenClaw versions:
object
required
OpenClaw metadata:

Naming Conventions

Official Plugins

Official plugins use the @openclaw/ scope:
  • @openclaw/matrix
  • @openclaw/msteams
  • @openclaw/voice-call

Community Plugins

Community plugins should use descriptive names:
  • openclaw-plugin-slack-advanced
  • openclaw-jira-integration
  • @yourname/openclaw-custom-tool

Channel Plugins

Channel plugins should clearly indicate the platform:
  • @openclaw/rocketchat
  • openclaw-plugin-zulip

Tool Plugins

Tool plugins should describe their capability:
  • openclaw-plugin-github
  • openclaw-tool-database
  • @yourname/openclaw-crm

README

Include a comprehensive README:

Configuration

Usage

Examples of how to use your plugin.

License

MIT

Development files

*.test.ts *.spec.ts tsconfig.json vitest.config.ts .eslintrc .prettierrc

Build artifacts

*.log .DS_Store node_modules/

CI/CD

.github/ .gitlab-ci.yml

Documentation

docs/ examples/

3. Build your plugin (if needed)

If you compile TypeScript:

4. Test the package

Verify what will be published:

5. Publish

For scoped packages:
For unscoped packages:

Publishing Updates

To publish updates:
  1. Update version:
  2. Publish:
  3. Tag the release:

Distribution Tags

Use distribution tags for pre-releases:
Common tags:
  • latest - Stable releases (default)
  • beta - Beta releases
  • next - Development releases
  • canary - Nightly builds

Plugin Registry

Official plugins are listed in OpenClaw’s plugin registry. To submit your plugin:
  1. Publish to npm
  2. Open an issue at openclaw/openclaw
  3. Include:
    • Plugin name and npm package
    • Description
    • Documentation link
    • Example configuration

Best Practices

1. Documentation

Provide clear documentation:
  • Installation instructions
  • Configuration examples
  • Usage examples
  • API reference
  • Troubleshooting

2. Testing

Include tests:

3. TypeScript Types

Include type definitions:

4. Changelog

Maintain a CHANGELOG.md:

5. License

Include a LICENSE file. Popular choices:
  • MIT (permissive)
  • Apache 2.0 (permissive with patent grant)
  • GPL (copyleft)

6. CI/CD

Automate testing and publishing:

Example: Publishing a Tool Plugin

Next Steps