<!-- # hard line break macro for HTML -->

<a id="contributing-plugins"></a>

# Contributing Plugins

This page describes how to share your FiftyOne plugins with the community.

#### NOTE
For complete plugin development documentation, see
[Developing Plugins](developing_plugins.md#developing-plugins).

<a id="plugins-why-share"></a>

## Why share your plugin?

By sharing your plugin, you:

- Help others solve similar problems
- Get feedback and contributions from the community
- Showcase your work in the official plugin ecosystem
- Build your reputation as a FiftyOne contributor

<a id="plugins-share-github"></a>

## Sharing via GitHub

The simplest way to share a plugin is to publish it on GitHub:

1. Create a public GitHub repository for your plugin
2. Include a clear `README.md` with:
   - What the plugin does
   - Installation instructions
   - Usage examples with code snippets
   - Screenshots or GIFs showing the plugin in action

Users can then install your plugin directly:

```shell
fiftyone plugins download https://github.com/your-username/your-plugin
```

<a id="plugins-ecosystem-submission"></a>

## Submitting to the Plugin Ecosystem

Get your plugin featured in the official [Plugins Ecosystem](index.md#plugins-ecosystem).

<video autoplay loop muted playsinline style="width: 100%; border-radius: 8px; margin: 1rem 0;">
    <source src="https://cdn.voxel51.com/plugins/plugin_universe.webm" type="video/webm">
</video>

### How the Plugin Ecosystem works

The [Plugins Ecosystem](index.md#plugins-ecosystem) page renders the README
directly from your plugin’s GitHub repository. This means that whatever you
write in your plugin’s README will be displayed in the documentation.

Make sure your README is well-crafted with clear descriptions, usage examples,
and screenshots—this is exactly what users will see when browsing the
plugin ecosystem.

### Submission process

Follow these steps to submit your plugin:

1. **Fork the repository**: Fork
   [voxel51/fiftyone-plugins](https://github.com/voxel51/fiftyone-plugins)
   on GitHub
2. **Add your plugin to the community table**: Edit the README and add a new
   row that matches the content/formatting of the existing rows
3. **Submit a pull request**: Create a PR with:
   - A clear title (e.g., “Add my-awesome-plugin to community plugins”)
   - Brief description of what your plugin does
   - Category/tags for discoverability
4. **Review process**: The FiftyOne team will review your PR. If everything
   looks good, your PR will be merged and your plugin will appear in the
   [Plugins Ecosystem](index.md#plugins-ecosystem)

<a id="plugins-quality-checklist"></a>

## Quality checklist

Before sharing your plugin, verify that it meets these requirements:

| ✓   | Has a clear, descriptive name                               |
|-----|-------------------------------------------------------------|
| ✓   | Includes a comprehensive README with installation and usage |
| ✓   | Handles errors gracefully with helpful messages             |
| ✓   | Works with the latest FiftyOne version                      |
| ✓   | Does not hardcode secrets or sensitive data                 |
| ✓   | Has been tested on sample datasets                          |

<a id="plugins-ready-to-share"></a>

## Ready to share your plugin?

Once your plugin meets the quality checklist, submit it to the Plugin Ecosystem
and join the growing community of FiftyOne plugin developers!

<div style="margin:0; display:inline-block;">
    <a href="https://github.com/voxel51/fiftyone-plugins" class="sd-btn sd-btn-primary book-a-demo" rel="noopener noreferrer" data-cta-dynamic="true">
        <div class="arrow">
            <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="size-3">
            <path stroke="currentColor" stroke-width="1.5"
                    d="M1.458 11.995h20.125M11.52 22.063 21.584 12 11.521 1.937"
                    vector-effect="non-scaling-stroke"></path>
            </svg>  
        </div>
        <div class="text">Submit your plugin</div>
    </a>
</div>

<a id="plugins-getting-help"></a>

## Getting help

Need assistance with your plugin contribution?

- **Discord**: Ask questions on
  [community.voxel51.com](https://community.voxel51.com/)
- **Plugin examples**: Browse the [Plugins Ecosystem](index.md#plugins-ecosystem)
  for inspiration
- **Development guide**: See [Developing Plugins](developing_plugins.md#developing-plugins)
  for complete documentation
