Contributing to BmadElixir
View SourceFirst off, thank you for considering contributing to BmadElixir! It's people like you that make this package better for the Elixir community.
Code of Conduct
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
How Can I Contribute?
Reporting Bugs
Before creating bug reports, please check the existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples (code snippets, screenshots, etc.)
- Describe the behavior you observed and what you expected to see
- Include your environment details (Elixir version, OTP version, OS)
Suggesting Enhancements
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, include:
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Explain why this enhancement would be useful to users
- Provide specific examples to demonstrate the enhancement
Contributing Code
- Fork the repository and create your branch from
master - Follow the existing code style - run
mix formatbefore committing - Write tests - all new code should have comprehensive ExUnit tests
- Ensure the test suite passes - run
mix test - Run quality checks - run
mix precommit(format, credo, dialyzer, tests) - Write a good commit message - follow conventional commits style
Pull Request Process
- Update the README.md with details of changes if applicable
- Update the CHANGELOG.md following Keep a Changelog format
- Ensure all quality checks pass (format, credo, dialyzer, tests)
- The PR will be merged once you have approval from a maintainer
Adding New Agents, Workflows, or Skills
When contributing new agents, workflows, or Claude Code skills:
- Agents (
priv/agents/) - Should follow the established pattern and include comprehensive examples - Workflows (
priv/workflows/) - Should be practical, battle-tested workflows in YAML format - Skills (
priv/skills/) - Should have clear triggers, examples, and YAML frontmatter - Documentation - All new features should be well-documented with examples
Style Guidelines
Elixir Code Style
- Follow the Elixir Style Guide
- Run
mix formatbefore committing - Ensure
mix credo --strictpasses - Ensure
mix dialyzerpasses with zero errors - Write comprehensive
@docand@moduledocdocumentation
Markdown Style
- Use ATX-style headers (
#not underlines) - Use fenced code blocks with language identifiers
- Wrap lines at 80 characters for narrative text
- Use meaningful link text (not "click here")
Commit Messages
Follow the Conventional Commits specification:
type(scope): subject
body
footerTypes:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Example:
feat(skills): add elixir-performance-optimization skill
Add new Claude Code skill for identifying and fixing performance
bottlenecks in Elixir code. Includes patterns for N+1 queries,
GenServer bottlenecks, and inefficient Enum operations.
Closes #42Quality Standards
All contributions must meet these quality standards:
- ✅
mix format --check-formatted- All code formatted - ✅
mix compile --warnings-as-errors- Zero compiler warnings - ✅
mix credo --strict- No Credo issues - ✅
mix dialyzer- Zero Dialyzer errors - ✅
mix test- All tests passing - ✅ Comprehensive documentation
- ✅ CHANGELOG.md updated
Run all checks at once:
mix precommit
Attribution
Contributors will be acknowledged in:
- CHANGELOG.md for their specific contributions
- GitHub contributors page
- Release notes when applicable
Questions?
Feel free to open an issue with the question label if you have any questions about contributing.
Thank you for contributing to BmadElixir! 🎉