Thank you for your interest in contributing!
Prerequisites: Node.js ≥ 24, pnpm
# Install dependencies
pnpm install# Lint (CI mode, no auto-fix)
pnpm lint
# Lint with auto-fix
pnpm lint:fix
# Run unit tests
pnpm test
# Run tests with verbose output
pnpm test -- --reporter=verbose
# Run a single test file
npx vitest run __test__/<file>.test.ts
# Build (compiles TypeScript → dist/index.js via @vercel/ncc)
pnpm build
# Package (copies action.yml + README.md into dist/)
pnpm packageTo test against the AMO (addons.mozilla.org) API, you need JWT credentials (auth-api-issuer and auth-api-secret). You can obtain them from the AMO Developer Hub.
- Fork the repository and create a branch from
master. - Make your changes with tests where applicable.
- Run
pnpm lintandpnpm testto verify everything passes. - Open a pull request against
master.
Important: All commit messages must follow Conventional Commits — this is required for the automated release process to correctly determine version bumps and generate changelog entries.
Examples:
fix: handle unlisted channel upload errorsfeat: support release-note localeschore: update dependencies
Releases are automated with Release Please:
- Merge changes to
masterfollowing Conventional Commits. - Release Please opens or updates a release PR with version bumps and changelog updates.
- Squash and merge the release PR.
- CI builds
dist/, pushes it to thelatestbranch, and creates signedvXandvX.Y.Ztags.
Note: Never commit generated
dist/files to the source branch — they are built and published automatically by CI.