# Contributing Thanks for helping improve WHOOP Personal MCP. The project is intentionally single-user, read-only with respect to WHOOP, and provider-neutral. Changes should preserve those boundaries unless a proposal explicitly explains and tests a new security model. Participation is governed by [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). Repository roles and merge policy are defined in [GOVERNANCE.md](GOVERNANCE.md), with current stewards listed in [MAINTAINERS.md](MAINTAINERS.md). ## Set up a development checkout Use Node.js 22 or 24 and pnpm 10: ~~~bash git clone https://github.com/josealvaradoa/whoop-personal-mcp.git cd whoop-personal-mcp corepack enable pnpm install --frozen-lockfile cp .env.example .env cp whoop-mcp.config.example.json whoop-mcp.config.json ~~~ Corepack is no longer bundled with Node.js 25 and later. On those versions, install pnpm using its official installation instructions instead of assuming corepack enable exists. Tests do not need live WHOOP credentials. Run the full local gate before opening a pull request: ~~~bash pnpm run typecheck pnpm run lint pnpm test pnpm run smoke:package ~~~ ## Pull request expectations - Work from a non-default branch and open a pull request; direct pushes to `main` are blocked, including for maintainers. - Use a Conventional Commit title such as `feat(mcp): add a resource` or `fix(auth): bind the redirect`. The title becomes the squash-merge commit. - Add or update tests for behavior changes. - Do not include real WHOOP data, OAuth credentials, database files, access passwords, bearer tokens, or screenshots containing personal metrics. - Keep tool results explicit about missing and stale data. A missing value must not become a fabricated zero. - Update README and docs/ when a public tool, route, environment variable, deployment step, retention behavior, or security boundary changes. - Treat changes to authentication, redirect handling, token storage, logging, caching, and model-facing tool descriptions as security/privacy changes. - Keep provider-specific examples in client documentation; do not make one AI vendor part of the core server contract. - Resolve review conversations and keep the branch up to date until the protected `quality-gate` succeeds. For a security vulnerability, do not open a public pull request or issue first. Follow [SECURITY.md](SECURITY.md). By contributing, you agree that your contribution is licensed under the repository's [MIT License](LICENSE).