---
title: PackagePlugin
framework: swift-package-manager
role: collection
role_heading: Framework
path: swift-package-manager/documentation/packageplugin
---

# PackagePlugin

Create plugins that extend the Swift Package Manager.

## Overview

Overview Build tool plugins generate source files as part of a build, or perform other actions at the start of every build. The package manager invokes build tool plugins before a package is built in order to construct command invocations to run as part of the build. Command plugins provide actions that users can perform at any time and aren’t associated with a build. Read Writing a build tool plugin to learn how to create build tool plugins, or Writing a command plugin to learn how to create command plugins.

## Topics

### Implementing Command Plugins

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

### Extracting Arguments

- [ArgumentExtractor](swift-package-manager/documentation/packageplugin/argumentextractor.md)

### Implementing Build Plugins

- [BuildToolPlugin](swift-package-manager/documentation/packageplugin/buildtoolplugin.md)
- [PluginContext](swift-package-manager/documentation/packageplugin/plugincontext.md)
- [Target](swift-package-manager/documentation/packageplugin/target.md)
- [Command](swift-package-manager/documentation/packageplugin/command.md)

### Interacting with Package Manager

- [PackageManager](swift-package-manager/documentation/packageplugin/packagemanager.md)
- [PackageManagerProxyError](swift-package-manager/documentation/packageplugin/packagemanagerproxyerror.md)

### Inspecting the Package Representation

- [Package](swift-package-manager/documentation/packageplugin/package.md)
- [ToolsVersion](swift-package-manager/documentation/packageplugin/toolsversion.md)
- [PackageOrigin](swift-package-manager/documentation/packageplugin/packageorigin.md)
- [PackageDependency](swift-package-manager/documentation/packageplugin/packagedependency.md)
- [Product](swift-package-manager/documentation/packageplugin/product.md)
- [ExecutableProduct](swift-package-manager/documentation/packageplugin/executableproduct.md)
- [LibraryProduct](swift-package-manager/documentation/packageplugin/libraryproduct.md)

### Inspecting Package Targets

- [Target](swift-package-manager/documentation/packageplugin/target.md)
- [TargetDependency](swift-package-manager/documentation/packageplugin/targetdependency.md)
- [SourceModuleTarget](swift-package-manager/documentation/packageplugin/sourcemoduletarget.md)
- [ModuleKind](swift-package-manager/documentation/packageplugin/modulekind.md)
- [SwiftSourceModuleTarget](swift-package-manager/documentation/packageplugin/swiftsourcemoduletarget.md)
- [ClangSourceModuleTarget](swift-package-manager/documentation/packageplugin/clangsourcemoduletarget.md)
- [BinaryArtifactTarget](swift-package-manager/documentation/packageplugin/binaryartifacttarget.md)
- [SystemLibraryTarget](swift-package-manager/documentation/packageplugin/systemlibrarytarget.md)

### Inspecting Package Files

- [FileList](swift-package-manager/documentation/packageplugin/filelist.md)
- [File](swift-package-manager/documentation/packageplugin/file.md)
- [FileType](swift-package-manager/documentation/packageplugin/filetype.md)
- [Path](swift-package-manager/documentation/packageplugin/path.md)
- [PathList](swift-package-manager/documentation/packageplugin/pathlist.md)

### Plugin Diagnostics and Errors

- [Diagnostics](swift-package-manager/documentation/packageplugin/diagnostics.md)
- [PluginContextError](swift-package-manager/documentation/packageplugin/plugincontexterror.md)
- [PluginDeserializationError](swift-package-manager/documentation/packageplugin/plugindeserializationerror.md)

### Extended Modules

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