Thanks for your interest in contributing to Bashkit!
The easiest and most valuable way to contribute is to create an issue. Bug reports, feature requests, compatibility gaps, and questions all help us prioritize and improve bashkit. A well-described issue is often more impactful than a pull request.
If you'd like to contribute code, read on.
# Clone
git clone https://github.com/everruns/bashkit.git
cd bashkit
# Install just (task runner)
cargo install just
# Build
just build
# Test
just test- Fork the repo
- Create a feature branch
- Make changes
- Run pre-PR checks:
just pre-pr - Submit a pull request
just --list # Show all commands
just build # Build all crates
just test # Run all tests
just fmt # Format code (auto-fix)
just check # fmt + clippy + test (checks only)
just pre-pr # Full pre-PR validation- Format with
cargo fmt - Lint with
cargo clippy -- -D warnings - License check:
cargo deny check
Follow Conventional Commits:
feat(parser): add brace expansion support
fix(awk): handle regex in gsub correctly
docs: update compatibility scorecard
test: add array edge case tests
- Check if the feature is documented in
specs/ - Add spec tests in
crates/bashkit/tests/spec_cases/ - Implement the feature
- Update
crates/bashkit/docs/compatibility.mdif applicable - Update
specs/implementation-status.mdif removing a limitation
Tests live in .test.sh files:
### test_name
# Optional description
echo hello world
### expect
hello world
### end
### skipped_test
### skip: reason for skipping
command
### expect
expected
### end-
just pre-prpasses - Rebased on main
- Specs updated if behavior changes
- CI green
See specs/ for design documents:
architecture.md- Overall designparser.md- Parser/lexer detailsvfs.md- Virtual filesystemtesting.md- Testing strategy
Open an issue at https://github.com/everruns/bashkit/issues