Thank you for your interest in contributing to Devir! This document provides guidelines and instructions for contributing.
- Go 1.24 or later
- Make (optional, for using Makefile commands)
-
Fork the repository
-
Clone your fork:
git clone https://github.com/productdevbook/devir.git cd devir -
Build the project:
make build # or go build -o devir ./cmd/devir -
Run tests:
make test -
Run linter:
make lint
devir/
├── cmd/devir/ # Application entrypoint
│ └── main.go
├── internal/ # Private packages
│ ├── config/ # Configuration loading
│ ├── mcp/ # MCP server implementation
│ ├── runner/ # Service runner
│ ├── tui/ # Terminal UI
│ └── types/ # Shared types
├── .github/workflows/ # CI/CD workflows
├── Makefile # Build commands
└── README.md
- Follow standard Go conventions
- Run
gofmtbefore committing - Run
golangci-lint runto check for issues - Keep functions small and focused
- Add comments for exported functions
We use Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(runner): add support for environment variables
fix(tui): resolve viewport scroll issue
docs: update installation instructions
-
Create a new branch for your changes:
git checkout -b feat/my-feature
-
Make your changes and commit them following the commit message guidelines
-
Push your branch:
git push origin feat/my-feature
-
Open a Pull Request against the
masterbranch -
Ensure CI passes and address any review feedback
- Code follows the project style guidelines
- Tests added/updated for new functionality
- Documentation updated if needed
- Commit messages follow Conventional Commits
- CI passes
When reporting bugs, please include:
- Devir version (
devir -v) - Operating system and version
- Steps to reproduce
- Expected vs actual behavior
- Relevant logs or error messages
For feature requests, please describe:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
Feel free to open an issue for any questions about contributing.
By contributing, you agree that your contributions will be licensed under the MIT License.