Thank you for helping improve Xget. Contributions of all sizes are welcome, including bug reports, documentation improvements, test coverage, performance investigations, new platform support, and code changes.
Before you contribute, please read these repository documents:
- README for project scope, supported platforms, and deployment options
- Code of Conduct for community expectations
- Security Policy for responsible vulnerability reporting
- Governance for maintainer roles and decision-making
- Report bugs with a minimal reproduction and clear expected behavior
- Propose features that improve correctness, usability, observability, or maintainability
- Improve documentation, examples, or deployment guidance
- Add or expand automated tests
- Validate behavior against real clients, registries, or upstream platforms
- Search existing issues and pull requests first to avoid duplicates
- Keep one report focused on one problem or one proposal
- Include enough detail for someone else to reproduce the issue
- Do not use public issues for security vulnerabilities; follow
SECURITY.mdinstead
Useful details to include:
- The request URL or request shape that failed, with secrets removed
- The upstream platform involved, such as GitHub, npm, Docker Hub, or OpenAI
- Expected behavior and actual behavior
- Steps to reproduce the problem
- Logs, screenshots, or response headers when relevant
- Your runtime or deployment environment, if it affects the issue
Xget uses Node.js and Wrangler for local development.
- Install Node.js 24 and npm.
- Install dependencies with
npm ci. - Start the local worker with
npm run dev. - Run tests and checks before opening a pull request.
Common commands:
npm run dev
npm run lint
npm run format:check
npm run test:run
npm run test:coverage
npm run type-checksrc/contains the Worker entry point, request pipeline, protocol handlers, routing logic, upstream fetch helpers, and shared utilitiestest/contains unit, feature, platform, and integration testsadapters/contains deployment adapters for non-Workers targetsdocs/contains longer-form operational and deployment documentation
- Fork the repository and create a branch from
main. - Keep the change focused. Avoid mixing unrelated fixes.
- Add or update tests when behavior changes.
- Update documentation when user-facing behavior, configuration, or supported platforms change.
- Run the local checks listed below before requesting review.
- Open a pull request using the repository template and explain the user impact clearly.
Required local checks:
npm run lint
npm run format:check
npm run test:run
npm run type-checkIf your change affects routing, headers, cache behavior, retries, security controls, or protocol compatibility, include test coverage for that behavior.
- Follow the existing project structure and naming conventions
- Prefer small, reviewable changes over large mixed refactors
- Preserve protocol compatibility for Git, Docker, AI, and package manager traffic
- Avoid logging secrets, tokens, or private request data
- Document new platform prefixes and examples in
README.mdwhen support is added
This repository uses Conventional Commits. Preferred format:
type(scope): description
Examples:
feat(docker): normalize blob redirect handlingfix(routing): preserve crates search queriesdocs(readme): clarify npm registry setup
- Maintainers review contributions on a best-effort basis
- Large design changes should start with an issue before implementation
- Merged changes may be edited, squashed, or followed up by maintainers to keep the project consistent
- Acceptance of a contribution does not create an obligation for long-term support, backports, or maintenance
By participating in this project, you agree to follow
CODE_OF_CONDUCT.md. Please be respectful, assume good
intent, and help keep the project welcoming for users and contributors from a
wide range of backgrounds and experience levels.