# Contributing to GAM Thank you for your interest in contributing! ## Development Setup ```bash git clone https://github.com/miguelbalvin-dev/gam.git cd gam npm install ``` ## Project Structure - Each command lives in `src/commands/` and should be thin — delegate all logic to a service. - Business logic lives in `src/services/`. Services must not import from `src/ui/` or `src/commands/`. - Tests mirror the `src/` tree under `tests/`. ## Workflow 1. Fork the repository 2. Create a feature branch: `git checkout -b feat/my-feature` 3. Make your changes 4. Run the full suite: `npm run lint && npm test && npm run build` 5. Open a pull request ## Code Standards - TypeScript strict mode — no `any`, no non-null assertions without justification - Async/await everywhere, no raw Promises - All new services must include unit tests - `npm run lint` and `npm run format` must pass before merging ## Commit Messages Use [Conventional Commits](https://www.conventionalcommits.org/): ``` feat: add gam list command fix: handle expired device code gracefully test: add ConfigStore edge cases docs: document OAuth App setup ``` ## License By contributing, you agree your code will be released under the [MIT License](LICENSE).