Omnicoach: Custom Domain & Code Style Linter
Lightweight, high-signal static analysis engine and command coach designed to enforce domain-specific code style rules, architectural boundaries, and test hygiene across Python and Rust codebases.
📦 Installation
Prebuilt binaries are published to PyPI:
uv tool install omnicoach # or: pipx install omnicoach
From crates.io:
cargo install omnicoach --locked
Both install the omnicoach binary.
🚀 Quickstart
Scan the entire repository:
omnicoach code . # or simply: omnicoach
Scan only modified lines/files (VCS aware):
omnicoach code --diff
Validate an intercepted workflow command:
omnicoach command --cmd "jj edit @"
⚙️ Configuration (.omnicoach.toml)
Create a .omnicoach.toml file at the root of your project workspace.
Framework Rule Design: Enforcement Modes
Every rule in Omnicoach is built on a unified enforcement framework:
enforcement-mode = "ban"(default for most rules): Prohibits the pattern. Violations can only be bypassed using explicit# omni:ignore[rule] -- <reason>(or# omnicoach:ignore[rule] -- <reason>) directives.enforcement-mode = "require-explanation": Permits the pattern as long as it is accompanied by an adjacent or inline substantive explanatory comment.
You can configure enforcement mode globally or per-language for any code rule (suppression audits and command rules reject it):
[rules.type-cast]
enforcement-mode = "ban" # default: strictly banned
[rules.sleep-in-tests]
enforcement-mode = "require-explanation" # permitted only when documented with an explanation comment
# Language-specific mode overrides
[rules.single-letter-name.python]
enforcement-mode = "require-explanation"
Global Selection & File Scoping
# Select tags (topics, facet values such as `heuristic`, or languages) and rule names.
# A topic includes its subtopics: `testing` covers `test-timing`, `test-doubles`, ...
select = ["testing", "type-cast"]
# The nearest selector wins along a topic path, so `testing` rules stay on except the
# `test-doubles` ones. A rule name beats any tag.
ignore = ["test-doubles"]
# Per-file rule ignores using glob patterns, applied after `select` / `ignore`
[per-file-ignores]
"tests/**" = ["single-letter-name", "heuristic"]
Unknown labels, facet names (precision) and a selector in both select and ignore fail at config load. Run omnicoach --list-tags for the topic tree; facet definitions and selection rules are in docs/dev/tag_guide.md.
📋 Rules
omnicoach documents every rule and topic, code and command alike:
omnicoach --list-rules # every rule, with its languages and summary
omnicoach --list-rules --tag testing # the rules `select = ["testing"]` would select
omnicoach --list-tags # the topic tree: parents, synonyms, descriptions, scope notes
omnicoach --explain sleep-in-tests # one rule: what it does, why, configuration, tags, status
--explain also reports whether the rule is on under the .omnicoach.toml of the current directory, and which selector decided it.
🔕 Suppressions
Suppression directives accept either omni: or omnicoach: and require explicit bracketed rule targets and a -- <reason> explanation:
Inline Suppression (omni:ignore / omnicoach:ignore)
task = asyncio.create_task(loop()) # omni:ignore [unstructured-task] -- top-level daemon lifecycle
let x = 1; // omni:ignore [single-letter-name] -- 2D vector coordinate
Preceding-Line Suppression (omni:ignore / omnicoach:ignore)
# omni:ignore [nested-function] -- factory requires localized closure
@dataclass
def make_handler():
def helper(): pass
return helper
File-Level Suppression (omni:disable-file / omnicoach:disable-file)
# omni:disable-file [nested-function, single-letter-name] -- generated schema
🤝 Contributing
To add a rule, follow docs/dev/adding_a_rule.md.
Metadata
Release files for omnicoach 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| omnicoach-0.1.0.tar.gz | 282.7 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| omnicoach-0.1.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| omnicoach-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| omnicoach-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| omnicoach-0.1.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| omnicoach-0.1.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 14.8 MB
Release files / omnicoach-0.1.0.tar.gz
| Download URL | omnicoach-0.1.0.tar.gz |
|---|---|
| Size | 282.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59a275a2b82693054865b15591ec92c9b20e434789b0035038b311ddb2cfcecf
|
|
BLAKE2b-256 checksum How to use checksums |
ee70a4047ad4b65e9cf8738c718292ea7afc5547514fdf62bc1b3829a8465246
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / omnicoach-0.1.0-py3-none-win_amd64.whl
| Download URL | omnicoach-0.1.0-py3-none-win_amd64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c627233839aa0a21cdc7aefd80c358224b7afb2be468f733cf86402012326bf4
|
|
BLAKE2b-256 checksum How to use checksums |
f509832fd864ca4708d8c79789a2e520fa3b0ef87fd29ff85ec0f01d1bfa8196
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / omnicoach-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | omnicoach-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c0d43b50b4e1419040c8c20671be5b23787c4b681204ded28788e394cbdecefa
|
|
BLAKE2b-256 checksum How to use checksums |
a3760437d00eb6de01d49b932070079be917147844b95985111c2b92506f27c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / omnicoach-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | omnicoach-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
ccf42d2e679117f5ea8d5ea09c708289b90a43fffe9792fd1cf65ab67ac3ba7c
|
|
BLAKE2b-256 checksum How to use checksums |
2b0f740132985bf1c7c265523a4862700a9c01c8364578376511e4097170bbcf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / omnicoach-0.1.0-py3-none-macosx_11_0_arm64.whl
| Download URL | omnicoach-0.1.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
47b9c0719c53ea911168e4531cda0848d652f0d0115028340c316f1cd0fdff59
|
|
BLAKE2b-256 checksum How to use checksums |
3c0c9757364fda8bd621dabf08e1b0798cb0cf0c7188f9ed755864935e7d1a4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / omnicoach-0.1.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | omnicoach-0.1.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
7c1a75fb8c8d42891155b891d15694943cf9be61d5b84fe81c8f63b08baea41b
|
|
BLAKE2b-256 checksum How to use checksums |
fe42f22586a16482883bb4c5cd57c78db30ed1cd3fd30226f583f8b9f85a4097
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log