A linter for your agent harness.
Harness engineering is hard. Keeping a team aligned on it is harder. Rýni checks
your AGENTS.md, instructions, skills, and Markdown docs against shared
conventions, so your agents get a consistent and coherent working environment.
- 🔍 Lint your harness. Catch structural issues with deterministic checks.
- 📝 Review your markdown docs. Structure non-deterministic checks that require judgment.
- 📦 Share your conventions. Turn your team’s standards into rule packs you can use across repositories.
Get started
Requires Python 3.14 or later. Add Rýni and tidy-harness, an opinionated example rule pack, as development dependencies:
uv add --dev ryni tidy-harness
uv run ryni check .
Installed rules are active automatically. The CLI runs deterministic checks and
reports agent reviews as pending. Commit pyproject.toml and uv.lock to share
the same versions with your team.
Run with your agent
Install the bundled skill for your agent, then invoke it in the same repository:
| Agent | Install in your terminal | Send in your agent |
|---|---|---|
| Claude Code | uv run ryni skill install .claude/skills |
/ryni-check |
| Codex | uv run ryni skill install .agents/skills |
$ryni-check |
The skill runs deterministic checks, delegates reviews to sub-agents, and combines the findings. Your agent must support sub-agents to complete reviews. Rýni itself runs no model and needs no API key.
Make it your own
A rule pack can combine deterministic checks with instructions for agent reviews. Write your team's conventions once and share them across repositories.
Contributing
uv run pytest tests
uv run --with-editable . --with-editable ./examples/tidy-harness pytest examples/tidy-harness/tests
uv run ruff check .
uv run --group docs mkdocs build --strict
uv run --group docs mkdocs serve
See our jobs to be done for the project's direction.
Maintainers: see the release guide for Rýni's PyPI
releases, dry runs, and the ryni-release skill.
Rýni — from Old Norse, “scrutiny” or “contemplation.”
Metadata
Release files for ryni 0.1.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ryni-0.1.11.tar.gz | 490.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ryni-0.1.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 505.6 kB
Release files / ryni-0.1.11.tar.gz
| Download URL | ryni-0.1.11.tar.gz |
|---|---|
| Size | 490.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
97ee9875994e275864aee665f4d9936c94eed32581049603e18f2245fd62b084
|
|
BLAKE2b-256 checksum How to use checksums |
183a9b2864582e695546e99aa5d3aca85e8f20cbdc0bbf978ddb9b776324d95a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ryni-0.1.11-py3-none-any.whl
| Download URL | ryni-0.1.11-py3-none-any.whl |
|---|---|
| Size | 14.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
53437a5fc748a575fd4fd011955fd56d9649ad124e06bb3ae94546d2cbd1d3ef
|
|
BLAKE2b-256 checksum How to use checksums |
accb9db503d27bddc2a3dfa32bf265e815e85cc8bbfeda0952cfca1ea29eb88d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for ryni 0.1.11
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.