---
title: Plugin
framework: swift-package-manager
role: symbol
role_heading: Protocol
path: swift-package-manager/documentation/packageplugin/plugin
---

# Plugin

A protocol that defines functionality common to all package manger plugins.

## Declaration

```swift
protocol Plugin
```

## Overview

Overview For example, the way to instantiate and run a plugin.

## Topics

### Creating a plugin

- [init()](swift-package-manager/documentation/packageplugin/plugin/init().md)

### Invoking a plugin

- [main()](swift-package-manager/documentation/packageplugin/plugin/main().md)

## Relationships

### Inherited By

- [BuildToolPlugin](swift-package-manager/documentation/packageplugin/buildtoolplugin.md)
- [CommandPlugin](swift-package-manager/documentation/packageplugin/commandplugin.md)

## See Also

### Implementing Command Plugins

- [CommandPlugin](swift-package-manager/documentation/packageplugin/commandplugin.md)
- [PluginContext](swift-package-manager/documentation/packageplugin/plugincontext.md)
