Authoring a MetaMask controller: BaseController or not, state metadata (`persist`, `anonymous`, `usedInUi`), `this.update`, the options-bag constructor, typed messenger actions. Use when writing or reviewing a controller, or changing what it persists or exposes to the UI. To wire one in, see `controller-integration`.
Installs into .claude/skills of the current project.
Are you the author of Metamask Official Controller Guidelines?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/jiayaoqijia-metamask-official-controller-guidelines)
---
name: controller-guidelines
description: >
Authoring a MetaMask controller: BaseController or not, state metadata (`persist`,
`anonymous`, `usedInUi`), `this.update`, the options-bag constructor, typed messenger
actions. Use when writing or reviewing a controller, or changing what it persists or exposes
to the UI. To wire one in, see `controller-integration`.
base: true
---