Thank you for your interest in contributing to this project! This document outlines the principles and processes for contributing.
- Node.js 22+
- pnpm
- Git
- GitHub CLI (
gh)
- Clone the repository
- Install dependencies with pnpm
- Build the project to verify setup
- Run tests to ensure everything works
pnpm install
pnpm build
pnpm test:run- Check existing issues and pull requests to avoid duplication
- For major changes, discuss the approach first
- Ensure your contribution aligns with the archive and scheduler goals
- Type Safety: Keep TypeScript strict and avoid unnecessary assertions
- Error Handling: Use project-specific errors for validation and repository failures
- Testing: Add unit tests for helpers and integration tests for CLI/scheduler behavior
- Documentation: Update README, COMMANDS, or architecture docs when behavior changes
- Code Style: Follow Biome formatting and linting
- Keep command flow readable and close to the user-facing behavior
- Prefer small helper utilities over heavy orchestration abstractions
- Preserve mirror archive semantics: existing archives fetch by default
- Keep proxy support and prettier out of this project
- Do not expose tuning knobs such as retry or concurrency unless the product need is clear
Run the relevant checks before submitting:
pnpm test:unit
pnpm test:integration
pnpm test:run
pnpm checkFor command documentation:
pnpm build
pnpm build:readme- Test pure functions in isolation
- Cover edge cases and error conditions
- Keep tests focused and independent
- Test CLI command behavior through oclif
- Use local or fake Git execution instead of network calls
- Verify filesystem effects and error behavior
- Be constructive and specific
- Focus on behavior, maintainability, and test coverage
- Distinguish between required changes and suggestions
- Keep pull requests focused
- Explain what changed and why
- Include the commands used for verification