3.2 KiB
3.2 KiB
Contributing to
Thank you for your interest in contributing! This document provides guidelines and instructions for contributing to this project.
Code of Conduct
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please see CODE_OF_CONDUCT.md for details.
Getting Started
Prerequisites
- Rust 1.70+ (if project uses Rust)
- NuShell (if project uses Nushell scripts)
- Git
Development Setup
- Fork the repository
- Clone your fork:
git clone - Add upstream:
git remote add upstream - Create a branch:
git checkout -b feature/your-feature
Development Workflow
Before You Code
- Check existing issues and pull requests to avoid duplication
- Create an issue to discuss major changes before implementing
- Assign yourself to let others know you're working on it
Code Standards
Rust
- Run
cargo fmt --allbefore committing - All code must pass
cargo clippy -- -D warnings - Write tests for new functionality
- Maintain 100% documentation coverage for public APIs
Nushell
- Validate scripts with
nu --ide-check 100 script.nu - Follow consistent naming conventions
- Use type hints where applicable
Nickel
- Type check schemas with
nickel typecheck - Document schema fields with comments
- Test schema validation
Commit Guidelines
- Write clear, descriptive commit messages
- Reference issues with
Fixes #123orRelated to #123 - Keep commits focused on a single concern
- Use imperative mood: "Add feature" not "Added feature"
Testing
All changes must include tests:
# Run all tests
cargo test --workspace
# Run with coverage
cargo llvm-cov --all-features --lcov
# Run locally before pushing
just ci-full
Pull Request Process
- Update documentation for any changed functionality
- Add tests for new code
- Ensure all CI checks pass
- Request review from maintainers
- Be responsive to feedback and iterate quickly
Review Process
- Maintainers will review your PR within 3-5 business days
- Feedback is constructive and meant to improve the code
- All discussions should be respectful and professional
- Once approved, maintainers will merge the PR
Reporting Bugs
Found a bug? Please file an issue with:
- Title: Clear, descriptive title
- Description: What happened and what you expected
- Steps to reproduce: Minimal reproducible example
- Environment: OS, Rust version, etc.
- Screenshots: If applicable
Suggesting Enhancements
Have an idea? Please file an issue with:
- Title: Clear feature title
- Description: What, why, and how
- Use cases: Real-world scenarios where this would help
- Alternative approaches: If you've considered any
Documentation
- Keep README.md up to date
- Document public APIs with rustdoc comments
- Add examples for non-obvious functionality
- Update CHANGELOG.md with your changes
Release Process
Maintainers handle releases following semantic versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
Questions?
- Check existing documentation and issues
- Ask in discussions or open an issue
- Join our community channels
Thank you for contributing!