Skip to main content

Publishing Community Plugins

Share your plugins with the AutoDeployBase community.

Getting Started

Create Your Plugin

npx autodeploybase plugin create my-awesome-plugin

Develop and Test

# Test with a local project
npx autodeploybase init test-project --plugins ./plugins/my-awesome-plugin

# Verify generation
cd test-project
npm run typecheck
npm run test

Plugin Requirements

manifest.json

Required fields:

{
"name": "my-awesome-plugin",
"version": "1.0.0",
"description": "A clear description of what this plugin does",
"author": "Your Name <email@example.com>",
"license": "MIT",
"repository": "https://github.com/username/my-awesome-plugin",
"category": "feature",
"tier": "public",
"frameworks": ["next", "nuxt", "sveltekit"],
"keywords": ["feature", "utility"],
"engines": {
"autodeploybase": ">=1.0.0"
}
}

README.md

Include:

  • Description
  • Installation instructions
  • Configuration options
  • Usage examples
  • API reference
  • Changelog

License

Include a LICENSE file. MIT is recommended for open-source plugins.

Publishing Options

npm

Publish to npm for easy installation:

cd plugins/my-awesome-plugin

# Login to npm
npm login

# Publish
npm publish --access public

Users install with:

npx autodeploybase add @username/my-awesome-plugin

AutoDeployBase Registry

Submit to the official registry:

npx autodeploybase plugin publish

This requires:

  1. Account on autodeploybase.dev
  2. Plugin validation passes
  3. Review approval

GitHub

Users can install directly from GitHub:

npx autodeploybase add github:username/my-awesome-plugin

Validation

Run validation before publishing:

npx autodeploybase plugin validate ./plugins/my-awesome-plugin

Checks:

  • Valid manifest.json
  • Required files exist
  • No security issues
  • Proper exports
  • Template syntax

Best Practices

1. Clear Naming

# Good
my-plugin-name # Lowercase, kebab-case
autodeploybase-charts # Clear purpose

# Avoid
MyPlugin # PascalCase
my_plugin # Underscores
plugin123 # Non-descriptive

2. Semantic Versioning

1.0.0  # Initial release
1.0.1 # Bug fix
1.1.0 # New feature (backward compatible)
2.0.0 # Breaking change

3. Framework Support

Support multiple frameworks when possible:

export default async function generate(context) {
const { framework } = context;

// Framework-specific templates
await sdk.copyTemplates({
source: `./templates/${framework}`,
destination: context.projectPath
});

// Shared logic
await sdk.copyTemplates({
source: './templates/shared',
destination: context.projectPath
});
}

4. Configuration

Make settings configurable:

{
"settings": {
"schema": {
"feature": {
"type": "boolean",
"label": "Enable Feature",
"default": true
}
}
}
}

5. Documentation

Document everything:

## Configuration

| Option | Type | Default | Description |
| --------- | ------- | ------- | ----------------- |
| `enabled` | boolean | true | Enable the plugin |
| `apiKey` | string | - | Your API key |

6. Error Handling

Provide helpful error messages:

if (!settings.apiKey) {
throw new Error(
'API key is required. Set it in autodeploy.config.json:\n' +
'{\n' +
' "plugins": {\n' +
' "my-plugin": {\n' +
' "settings": { "apiKey": "your-key" }\n' +
' }\n' +
' }\n' +
'}'
);
}

Marketing Your Plugin

Write a Good Description

# My Awesome Plugin

Add [specific feature] to your AutoDeployBase project.

## Features

- Feature 1
- Feature 2
- Feature 3

## Quick Start

\`\`\`bash
npx autodeploybase add my-awesome-plugin
\`\`\`

Add Screenshots

Include screenshots in your README showing:

  • Admin UI
  • Generated pages
  • Configuration

Announce

  • Post on GitHub Discussions
  • Tweet with #AutoDeployBase
  • Write a blog post

Maintenance

Respond to Issues

Monitor GitHub issues and respond promptly.

Keep Updated

Update for new AutoDeployBase versions:

# Check compatibility
npx autodeploybase plugin validate --version 2.0.0

Changelog

Maintain a CHANGELOG.md:

# Changelog

## [1.1.0] - 2024-01-15

### Added

- New feature X

### Fixed

- Bug in Y

## [1.0.0] - 2024-01-01

- Initial release