Thanks for your interest in contributing. coding-ethos is an open source
project maintained by Blackcat Informatics® Inc. We welcome improvements to
code, tests, documentation, examples, and release tooling.
Please read the Code of Conduct before participating. We expect respectful, professional collaboration. To report unacceptable behaviour, email conduct@blackcat.ca.
Before opening an issue:
- Search existing issues first
- Verify the problem on the latest code in
mainwhen possible - Capture a minimal reproduction
When filing a bug, include:
- a clear title
- exact reproduction steps
- expected behavior
- actual behavior
- relevant command output or stack traces
- environment details such as OS, Python version, and
uvversion
Feature requests are welcome. Good enhancement reports usually include:
- the problem you are trying to solve
- the current limitation or workflow pain
- the proposed behavior
- concrete examples of the expected result
- Fork the repository and create a branch from
main. - Install dependencies with
uv sync --group dev. - Make the smallest coherent change that solves the problem.
- Add or update tests when behavior changes.
- Update docs and examples when outputs, flags, or workflow change.
- Complete the CLA Assistant check if prompted on your pull request.
- Run the verification steps below before requesting review.
External contributions are accepted under the project Contributor License Agreement, enforced by CLA Assistant:
https://gist.github.com/paudley/38386a03dd8b25d7c26cd9ce146219c1
When you open a pull request, CLA Assistant may comment with a signing link and publish a status check. Follow that link and sign in with GitHub to accept the agreement. After you accept it, CLA Assistant updates the pull request status.
The CLA confirms that you have the right to submit the contribution, grants the project the rights needed to use and redistribute it, and does not require you to provide support, updates, or future contributions.
The project also accepts Developer Certificate of Origin style sign-off trailers as additional contribution evidence, but DCO sign-off does not replace the CLA Assistant check when that check is required:
Signed-off-by: Your Name <you@example.com>
For Blackcat Informatics® Inc. maintainers, @paudley and @ErinAudley are
directors of Blackcat Informatics® Inc. and are authorized to submit project
contributions on behalf of the company. The repository CODEOWNERS file lists
both maintainers as project owners.
coding-ethos is maintained by Blackcat Informatics® Inc. The project owners
make decisions through GitHub issues, pull requests, discussions, and release
reviews, using the repository ETHOS, documented quality bar, security policy,
and release process as the decision framework.
The current project owners are listed in .github/CODEOWNERS:
@paudley@ErinAudley
Both project owners are directors of Blackcat Informatics® Inc. and have authority to administer the repository for the company. This shared ownership is the project's continuity mechanism: if one owner becomes unavailable, the other can continue issue triage, pull request review, repository administration, and release management.
- Git
- Python 3.13+
uv
git clone https://github.com/<your-username>/<repo-name>.git
cd <repo-name>
make install
make doctor
make help- Keep
coding_ethos.ymland generated documentation examples aligned. - If CLI behavior changes, update README.md.
- If repo-overlay behavior changes, update repo_ethos.example.yml.
- If enforcement config behavior changes, update repo_config.example.yaml.
- If hook behavior changes, update pre-commit/PRE-COMMIT.md or pre-commit/hooks/HOOKS.md.
- If output structure changes, update tests to cover the new contract.
- If
repo_ethos.ymlor renderer behavior changes, regenerate the checked-in agent docs.
Contributions should follow the standard style guides for the primary languages used by the project and must pass the managed style and lint tools configured in this repository.
- Python follows PEP 8 and the stricter project rules enforced by Ruff, mypy, Pyright, Pylint, and the generated Python tool configs.
- Go follows
gofmt,go vet, Effective Go, and Go Code Review Comments, with additional checks through the project Go test suites and generatedgolangci-lintconfig. - Shell follows ShellCheck and
shfmtguidance. Prefer moving durable shell behavior into Go when the logic is part of hook, policy, or managed-toolchain runtime. - YAML, TOML, SQL, GitHub Actions, and container/config files follow the generated configs for yamllint, Tombi, SQLFluff, actionlint, and hadolint.
The canonical verification command is make check. For generated config or
hook-runtime changes, also run the narrower checks listed below.
Before requesting review, make sure you:
- ran
uv run pytest - ran
make doctorafter changing Makefile tool resolution or hook path logic - ran
make checkfor the current repository gate - ran
make check-tool-configsafter changingconfig.yaml,repo_config.example.yaml, or tool-config generation logic - ran
make check-gemini-promptsafter changing Gemini prompts,coding_ethos.yml,repo_ethos.yml,config.yaml, orrepo_config.example.yaml - ran
make validateafter changing files underpre-commit/ - ran
make generateafter changingcoding_ethos.yml,repo_ethos.yml, or generated-doc rendering behavior - updated tests for any behavioral change
- updated
README.mdif usage, flags, or outputs changed - updated
repo_ethos.example.ymlif repo overlay behavior changed
We prefer Conventional Commits:
feat:new functionalityfix:bug fixesdocs:documentation-only changesrefactor:internal restructuring without behavior changetest:test additions or updateschore:maintenance work
Examples:
feat: add repo overlay path aliases
fix: preserve existing claude imports during inject merge
docs: clarify llm merge workflow
test: cover symlink replacement for ETHOS.md
For public questions, open an issue or discussion in the repository. For private matters, email oss@blackcat.ca.
By contributing, you agree that your contributions will be licensed under the project license defined in LICENSE.