Plugin Publishing Guide
A complete guide to creating, developing, and publishing ElizaOS plugins
This guide walks you through the entire process of creating, developing, and publishing an ElizaOS plugin. By the end, you’ll have a published plugin available in the ElizaOS registry.
Prerequisites
Before you begin, ensure you have:
- Bun installed (installation guide)
- Git installed and configured
- npm account (create one here)
- GitHub account with a Personal Access Token (PAT)
Setting up GitHub Personal Access Token
- Go to GitHub → Settings → Developer settings → Personal access tokens
- Click “Generate new token (classic)”
- Name it “ElizaOS Publishing”
- Select scopes:
repo
,read:org
, andworkflow
- Save the token securely
Step 1: Create Your Plugin
Start by creating a new plugin using the ElizaOS CLI:
The CLI automatically prefixes your plugin name with plugin-
to follow ElizaOS conventions.
Step 2: Understand Plugin Structure
Your new plugin has this structure:
Key Files to Edit
src/index.ts
- Your plugin’s main codepackage.json
- Plugin metadata and configurationREADME.md
- Documentation for usersimages/
- Visual assets for the registry
Step 3: Develop Your Plugin
Basic Plugin Structure
Adding an Action
Development Commands
Step 4: Configure package.json
Update your package.json
with accurate information:
The agentConfig
section is required for your plugin to be properly loaded by ElizaOS agents.
Step 5: Add Required Images
Your plugin needs two images for the registry:
Logo (images/logo.jpg)
- Size: 400x400 pixels
- Format: JPEG
- Max file size: 500KB
- Purpose: Displayed in plugin listings
Banner (images/banner.jpg)
- Size: 1280x640 pixels
- Format: JPEG
- Max file size: 1MB
- Purpose: Featured on your plugin’s detail page
Use high-quality images that represent your plugin’s functionality. The logo should be clear at small sizes.
Step 6: Write Documentation
Create a comprehensive README.md:
Step 7: Test Your Plugin
Before publishing, thoroughly test your plugin:
Testing Checklist
- All tests pass
- Plugin loads without errors
- Actions trigger correctly
- No TypeScript errors
- Documentation is complete
- Images are correct size/format
Step 8: Pre-publish Validation
Run a test publish to catch any issues:
Common Validation Issues
- Missing images: Ensure both logo.jpg and banner.jpg exist
- Invalid package name: Must start with
plugin-
- Missing agentConfig: Required in package.json
- Image size: Check dimensions and file size
Step 9: Publish Your Plugin
Authenticate First
Publish
This command will:
- Validate your plugin structure
- Build your TypeScript code
- Publish to npm
- Create a GitHub repository
- Open a PR to the ElizaOS registry
What Happens Next
- npm Package: Available immediately at
npmjs.com/package/your-plugin
- GitHub Repo: Created at
github.com/yourusername/plugin-my-awesome-plugin
- Registry PR: Opened at
github.com/elizaos-plugins/registry/pulls
Registry PRs are reviewed by maintainers. Approval typically takes 1-3 business days.
Step 10: Post-Publishing
Updating Your Plugin
For updates after initial publication:
Marketing Your Plugin
- Announce on Discord: Share in the #plugins channel
- Write a Blog Post: Explain what your plugin does
- Create Examples: Show real-world usage
- Record a Demo: Video tutorials help adoption
Troubleshooting
Build Failures
Publishing Errors
Registry PR Issues
If your PR is not approved:
- Check comments from reviewers
- Fix any requested changes
- Update your PR branch
Best Practices
Code Quality
- Write clean, documented code
- Include comprehensive tests
- Use TypeScript types properly
- Follow ElizaOS conventions
Documentation
- Clear README with examples
- API documentation for all exports
- Configuration examples
- Troubleshooting section
Versioning
- Use semantic versioning
- Document breaking changes
- Maintain a CHANGELOG.md
- Tag releases in Git
Community
- Respond to issues on GitHub
- Help users in Discord
- Accept contributions
- Keep plugin updated
Resources
Getting Help
If you run into issues:
- Check this guide’s troubleshooting section
- Search existing GitHub issues
- Ask in Discord #plugin-dev channel
- Open an issue on your plugin’s repo
Remember: Publishing a plugin is just the beginning. The best plugins evolve based on user feedback and community contributions!