# Contributing to PDF Reader MCP Server Thank you for considering contributing! We welcome contributions from the community. ## How to Contribute 1. **Reporting Issues:** If you find a bug or have a feature request, please open an issue on GitHub. - Provide a clear description of the issue. - Include steps to reproduce (for bugs). - Explain the motivation for the feature request. 2. **Submitting Pull Requests:** - Fork the repository. - Create a new branch for your feature or bugfix (e.g., `feature/new-pdf-feature` or `bugfix/parsing-error`). - Make your changes, adhering to the project's coding style and guidelines (ESLint, Prettier). - Add tests for your changes and ensure all tests pass (`npm test`). - Ensure your commit messages follow the Conventional Commits standard. - Push your branch to your fork. - Open a Pull Request against the `main` branch of the `sylphlab/pdf-reader-mcp` repository. - Provide a clear description of your changes in the PR. ## Development Setup 1. Clone the repository: `git clone https://github.com/sylphlab/pdf-reader-mcp.git` 2. Navigate into the directory: `cd pdf-reader-mcp` 3. Install dependencies: `npm install` 4. Build the project: `npm run build` 5. Run tests: `npm test` 6. Use `npm run watch` during development for automatic recompilation. 7. Use `npm run validate` before committing to check formatting, linting, and tests. ## Code Style - We use Prettier for code formatting and ESLint (with strict TypeScript rules) for linting. - Please run `npm run format` and `npm run lint:fix` before committing your changes. - Git hooks are set up using Husky and lint-staged to automatically check staged files. ## Commit Messages We follow the [Conventional Commits](https://www.conventionalcommits.org/) specification. Commit messages are linted using `commitlint` via a Git hook. Example: ``` feat: add support for encrypted PDFs Implemented handling for password-protected PDF files using an optional password parameter. ``` ## License By contributing, you agree that your contributions will be licensed under the MIT License that covers the project.