Plugins
@wagmi/cli has multiple built-in plugins for managing ABIs, integrating smart contract development tools, and generating code. You can also create your own plugins to hook into the CLI commands.
Built-in
| Name | Description | 
|---|---|
| Actions | Generate type-safe VanillaJS actions from configuration contracts. | 
| Block Explorer | Fetch ABIs from Block Explorers that support ?module=contract&action=getabi. | 
| ERC | Add ERC ABIs into configuration contracts. | 
| Etherscan | Fetch ABIs from Etherscan and add into configuration. | 
| Fetch | Fetch and parse ABIs from network resource with fetch. | 
| Foundry | Generate ABIs and watch for Foundry project changes. | 
| Hardhat | Generate ABIs and watch for Hardhat projects changes. | 
| React | Generate type-safe React Hooks from configuration contracts. | 
| Sourcify | Fetch ABIs from Sourcify from configuration contracts. | 
Creating plugins
Creating plugins to hook into the CLI is quite simple. Plugins most commonly inject contracts into contracts config, e.g. Etherscan and ERC plugins, and/or generate code using the run option, e.g. the React plugin. All you need to do is write a function that returns the Plugin type (name is the only required property, but you likely want to at least include contracts or run).
wagmi.config.ts
import type { Plugin } from '@wagmi/cli'
 
function myPlugin(): Plugin {
  name: 'MyPlugin',
  // ...
}
 
export default {
  out: 'src/generated.ts',
  plugins: [myPlugin()],
}