Contributing

Prowl is open source under the MIT License, and fixes, features and docs are welcome. This page is the short version. CLAUDE.md and docs/architecture.md hold the details.

Before you start

Open an issue for anything bigger than a small fix, so we can agree on the approach before you write code. Prowl stays small on purpose: no backend, no telemetry, and GitHub is the only remote host.

Set up

You need Node 24 or newer (.nvmrc, so nvm use picks it) and pnpm 12. An older pnpm (10 or newer) downloads the version packageManager names by itself.

git clone https://github.com/aemard/prowl.git
cd prowl
pnpm install
pnpm build

Load the extension from dist/: open chrome://extensions, turn on Developer mode, choose Load unpacked and pick the dist folder. pnpm dev rebuilds on every change; reload the extension on chrome://extensions to pick it up.

Check your work

Command What it does
pnpm verify:fast Lint, types and unit tests. Use it while you work.
pnpm verify Everything CI runs: lint, types, unit tests with coverage gates, build, size budget and end-to-end tests.
pnpm lint:fix Formats the code with Biome and applies its safe fixes.

A pull request needs a green pnpm verify. Tests never call the real GitHub API: they use the builders in tests/fixtures/ and the mock GitHub server of the end-to-end suite. The end-to-end tests run in Playwright’s Chromium (pnpm exec playwright install chromium once); set PROWL_CHROMIUM=/path/to/chromium to use a Chromium you already have.

Conventions

Commits and pull requests

Use Conventional Commits: feat:, fix:, docs:, test:, ci:, refactor:, perf: or chore:, with an optional scope. Release notes and version numbers are generated from them. Keep a pull request to one change, say what it does and why, and add a screenshot for anything users see.

The website

The site in site/ is built with Astro. pnpm --filter site build builds it, and pnpm --filter site lighthouse checks every page for a Lighthouse score of 95 or more in all four categories (it needs Chrome: set CHROME_PATH if it is not found). The auth guide, the privacy policy, the changelog and this page are rendered from docs/auth.md, docs/privacy.md, CHANGELOG.md and CONTRIBUTING.md, so edit those files, not the site.

Security

Do not post exploit details in a public issue. Open an issue that says you found a security problem, without the details, and a maintainer will arrange a private way to receive them.