Thank you for your interest in contributing! This document explains how to get started.
git clone https://github.com/OmnixHQ/ucp-client.git
cd ucp-client
npm install
npm run build
npm test- Fork the repository and create a feature branch
- Write tests first — we follow TDD (Red → Green → Refactor)
- Implement the minimal code to pass
- Run all checks before submitting:
npm run typecheck # TypeScript strict mode
npm run lint # ESLint
npm run format:check # Prettier
npm run build # tsdown (dual ESM + CJS)
npm run check:exports # attw (validates exports)
npm test # vitest- Immutability — all interfaces use
readonly. Never mutate existing objects. - Small files — 200-400 lines typical, 800 max.
- No descriptive comments — comments explain WHY, never WHAT.
- No
ascasts at public boundaries — use genericvalidate<T>(). - Conditional spread for optional properties — never mutate via cast.
We use Conventional Commits:
feat: add new capability
fix: handle edge case in error parsing
refactor: extract shared logic
test: add missing coverage
docs: update README
chore: update dependencies
- Keep PRs focused — one feature or fix per PR
- Include tests for new functionality
- Update CHANGELOG.md under
[Unreleased] - All CI checks must pass
By submitting a pull request, you agree that your contributions may be relicensed under the project's MIT license and any future commercial license. This ensures OmnixHQ can maintain both the open source project and any commercial offerings.
We use CLA Assistant — you'll be prompted to sign on your first PR.
- Bugs: Use the bug report template
- Features: Use the feature request template
- Security: See SECURITY.md
By contributing, you agree that your contributions will be licensed under the MIT License.