Rýni
Share conventions. Catch harness drift.
Rýni helps teams adopt a trusted standard, express their own harness conventions, and share those conventions as installable Python rule packs.
- Adopt a pack. One uv installation activates its rules. No
ryni.toml. - Express your conventions. Use Python checks or focused agent review instructions.
- Check with your agent. The
ryni-checkskill runs checks and delegates every pending review to a sub-agent, then combines the findings. - Catch drift in CI. Structured diagnostics and explicit incomplete/pending states.
Rýni runs locally and does not launch a model or require an API key. Agent reviews use your existing agent. Built-in checks validate skill frontmatter, names, directory matches, and description length. Python 3.14 or later is required.
Get started
For a shared repository, add Rýni as a development dependency:
uv add --dev ryni
uv run ryni check .
Add your team's published rule pack as a development dependency too. Replace
your-team-rules with its package name:
uv add --dev your-team-rules
uv run ryni rule
Commit pyproject.toml and uv.lock. Use uv run ryni locally and in your agent;
in CI, run uv sync --locked --group dev before uv run --no-sync ryni check ..
Installed rules are active immediately. See Your first rule pack
for a walkthrough of creating, installing, and running a pack.
Check with your agent
Install the bundled skill into your agent's skills directory:
uv run ryni skill install .claude/skills
Invoke /ryni-check in Claude Code. For Codex, install into .agents/skills and
invoke $ryni-check. An agent with sub-agent support is required for review rules;
missing review capability is reported as incomplete.
Documentation
Rule packs and agent reviews require Rýni 0.1.1 or later. To try this source version:
uv run --with-editable . --with ./examples/team-pack ryni check .
Contributing
uv run pytest 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.
Metadata
Release files for ryni 0.1.1
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.1.tar.gz | 55.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ryni-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.4 kB
Release files / ryni-0.1.1.tar.gz
| Download URL | ryni-0.1.1.tar.gz |
|---|---|
| Size | 55.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af5b6e396c05080ad1aa53272ce25b98949983f549af42833a66c1916d64dde1
|
|
BLAKE2b-256 checksum How to use checksums |
6723deafbdbff18125ee4e8356d091f152249135d758628a6e3f4cad4dbbfa6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ryni-0.1.1-py3-none-any.whl
| Download URL | ryni-0.1.1-py3-none-any.whl |
|---|---|
| Size | 13.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ae8b2c2389bef5520728f4158fe09b4c8388aff23c402859c75050d24c37536b
|
|
BLAKE2b-256 checksum How to use checksums |
63b9daab16b3bac0b37283612f1b555fb4e1934f649c3a264c722ebc7ca2c2d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for ryni 0.1.1
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.