## Explanation
The messenger docs generation currently lives in
`scripts/generate-messenger-docs/` and the Docusaurus site template in
`docs-site/`. This makes it unusable by external clients
(metamask-extension, metamask-mobile) without access to this monorepo.
This PR extracts both into a new `@metamask/messenger-docs` package at
`packages/messenger-docs/` with a CLI, so any project with `@metamask`
controller dependencies can generate and serve messenger API docs.
### Usage
```bash
# Default: scans cwd for node_modules/@MetaMask controller/service packages
npx @metamask/messenger-docs
# Scan a specific project
npx @metamask/messenger-docs /path/to/project
# Generate + build static site
npx @metamask/messenger-docs --build
# Generate + serve (build + http server)
npx @metamask/messenger-docs --serve
# Generate + dev server (hot reload)
npx @metamask/messenger-docs --dev
# Scan source .ts files instead of .d.cts (for monorepo development)
npx @metamask/messenger-docs --source
# Custom output directory (default: .messenger-docs)
npx @metamask/messenger-docs --output ./my-docs
```
## References
- Builds on top of `feat/messenger-docs-site`
## Checklist
- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
Explanation
Adds
@metamask/messenger-docs, a publishable package that generates and serves searchable Messenger API documentation for MetaMask controller packages.The package scans TypeScript source files and
.d.ctsdeclaration files for messenger action/event types, then generates a Docusaurus site with per-namespace pages, JSDoc descriptions, source links, and local search.Features
typealiases andinterfacedeclarationspackages/*/src/for.tssource files andnode_modules/@metamask/for.d.ctsdeclarationsscanDirsviapackage.jsonor--scan-dirCLI flagCore monorepo
Client projects (Extension, Mobile)
Install as a dev dependency and add a script:
{ "scripts": { "docs:messenger": "messenger-docs --serve" }, "messenger-docs": { "scanDirs": ["app", "src"] } }The tool scans the client's
node_modules/@metamask/for declaration files and any configured source directories for local messenger types.References
Checklist