Thank you for considering contributing to this project! We welcome improvements and bug fixes.
- Devcontainer: The easiest way to get a consistent development environment is to use the provided Dev Container configuration (
.devcontainer/). If you have Docker and the VS Code Dev Containers extension installed, simply reopen the project folder in a container. - Manual Setup: If you prefer not to use the devcontainer, ensure you have Node.js (v22 or later recommended) and npm installed. Clone the repository and run
npm installto install dependencies.
This project uses just as a command runner for common development tasks. See the justfile for all available commands. Key commands include:
just install: Install dependencies (npm install).just format: Format code using Prettier.just lint: Check code for linting errors using ESLint.just build: Compile TypeScript code (npx tsc).just test: Run unit and end-to-end tests using Jest.just test-coverage: Run tests and generate a coverage report.just security: Run security checks (npm audit, license check).just all: Run format, lint, build, test-coverage, and security checks sequentially.
Please ensure just all passes before submitting a pull request.
- Formatting: We use Prettier for automatic code formatting. Please run
just formatbefore committing. - Linting: We use ESLint for code analysis. Please run
just lintto check for issues.
This project uses semantic-release to automate versioning and releases. Therefore, commit messages must follow the Conventional Commits specification. This allows the release process to automatically determine the version bump (patch, minor, major) and generate changelogs.
Common commit types include:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)refactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testsbuild: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)chore: Other changes that don't modify src or test files
Example: feat: add support for YAML output format
Example: fix: correct handling of remote URL loading errors
Example: docs: update README with client configuration examples
This project utilizes Cline for AI-assisted development. The memory-bank/ directory contains documentation specifically for Cline's context. Maintaining this memory bank helps ensure Cline can effectively assist with development tasks.
If you make significant changes to the project's architecture, features, or development process, please consider updating the relevant files in memory-bank/. You can learn more about the Cline Memory Bank here.
- Fork the repository.
- Create a new branch for your feature or fix (
git checkout -b feat/my-new-featureorgit checkout -b fix/my-bug-fix). - Make your changes.
- Ensure all checks pass (
just all). - Commit your changes using the Conventional Commits format.
- Push your branch to your fork (
git push origin feat/my-new-feature). - Open a pull request against the
mainbranch of the original repository.
Thank you for your contribution!