AI instruction diagnostics for coding agents
Project description
Reporails CLI
AI instruction diagnostics for coding agents. Validates instruction files for Claude, Codex, Copilot, Gemini, and Cursor against 90+ deterministic rules.
Beta — limited 100 spots, free until GA. Moving fast, feedback welcome.
Quick Start
npx @reporails/cli check
# or
uvx reporails-cli check
No install needed. Or install globally:
npm install -g @reporails/cli # adds `ails` to PATH
# or
pip install reporails-cli # same, via Python
Then just:
ails check
You'll get a score, level, and actionable findings:
Reporails — Diagnostics
┌─ Main (1)
│ CLAUDE.md 12 dir / 5 con · 60% prose
│ ⚠ L1 No NEVER or AVOID statements found CORE:C:0003
│ ○ L1 No version or date marker found CORE:C:0012
│
└─ 3 findings
── Summary ──────────────────────────────────────────────
Score: 7.2 / 10 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░ (0.3s)
Agent: Claude
Scope:
capabilities: 1 main
instructions: 12 directive / 5 prose (28%)
5 constraint
3 findings · 0 errors · 2 warnings · 1 info
Full diagnostics free for the first 100 registering users during beta
ails auth login
Fix the issues, run again, watch your score improve.
Install
# Node.js (recommended — no separate Python install needed)
npm install -g @reporails/cli
# Python
pip install reporails-cli
# Zero install (ephemeral, always latest)
npx @reporails/cli check
uvx reporails-cli check
All paths add ails to your PATH. The npm package auto-installs uv if needed — no Python install required.
Authentication
Free offline diagnostics work without an account. For server-enhanced diagnostics (cross-file analysis, reinforcement detection, compliance scoring), sign up for the beta:
ails auth login # GitHub Device Flow — authorize in browser
ails auth status # Check your current auth state
ails auth logout # Remove stored credentials
Credentials are stored in ~/.reporails/credentials.yml.
Commands
ails check # Validate your instruction files
ails check -f json # JSON output
ails check -f github # GitHub Actions annotations
ails check --strict # Exit 1 if violations found
ails check --agent claude # Agent-specific rules only
ails check --exclude-dir vendor # Exclude directory from scanning
ails check -v # Verbose: per-file PASS/FAIL with rule titles
ails explain CORE:S:0001 # Explain a specific rule
ails heal # Interactive auto-fix for violations
ails install # Install MCP server for detected agents
ails version # Show version info
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Violations found (strict mode) |
| 2 | Invalid input (bad path, unknown agent/format/rule) |
Supported Agents
| Agent | Instruction files |
|---|---|
| Claude | CLAUDE.md, .claude/rules/*.md, .claude/skills/*/SKILL.md |
| Codex | AGENTS.md, CODEX.md, agents/*.md |
| Copilot | copilot-instructions.md, .github/copilot-instructions.md |
| Gemini | GEMINI.md, .gemini/rules/*.md |
| Cursor | .cursorrules, .cursor/rules/*.md |
The CLI auto-detects which agents are present in your project.
Configuration
Project config in .ails/config.yml:
default_agent: claude # Default agent (run: ails config set default_agent claude)
exclude_dirs: [vendor, dist] # Directories to skip
disabled_rules: [CORE:C:0010] # Rules to disable
Set values via CLI: ails config set <key> <value>
Global defaults
Global config in ~/.reporails/config.yml applies to all projects. Project config overrides global.
ails config set --global default_agent claude
GitHub Actions
Add ails check as a CI gate with inline PR annotations:
# .github/workflows/reporails.yml
name: Reporails
on:
pull_request:
paths: ['CLAUDE.md', '.claude/**', 'AGENTS.md', '.cursorrules']
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install reporails-cli
- run: ails check . --format github --strict
What It Checks
90+ rules across six categories:
- Structure — File organization, discoverability, size limits
- Content — Clarity, specificity, reinforcement patterns, anti-patterns
- Context Quality — Tech stack, project description, domain terminology
- Efficiency — Token usage, import depth, instruction elaboration
- Maintenance — Versioning, review processes
- Governance — Security policies, credential protection, permissions
Levels [* under re-evaluation *]
Levels describe what your AI instruction setup enables.
| Level | Name | What It Enables |
|---|---|---|
| L0 | Absent | No instruction file |
| L1 | Present | A non-trivial, tracked instruction file exists |
| L2 | Structured | Project-specific constraints, focused content |
| L3 | Substantive | Modular guidance with external references |
| L4 | Actionable | Instructions adapt based on code location |
| L5 | Refined | Structurally sound, governed, navigable |
| L6 | Adaptive | Agent dynamically discovers context and extends capabilities |
Offline vs Server
| Feature | Unauthenticated | Authenticated |
|---|---|---|
| Mechanical rules | 70+ rules | 70+ rules |
| Deterministic rules | 20+ rules | 20+ rules |
| Cross-file analysis | - | Conflicts, repetition |
| Reinforcement detection | - | Orphan instructions, topic clustering |
| Compliance scoring | - | Per-instruction strength |
| Rate limit | - | 10/hour (beta) |
Performance
First run downloads the embedding model (~90MB) to cache. Subsequent runs start in under 2 seconds for typical projects.
Rules
Rules are bundled with the CLI — no separate install or download needed. See reporails.com/rules for the full rule reference.
License
BUSL 1.1 — converts to Apache 2.0 three years after each release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reporails_cli-0.5.0.tar.gz.
File metadata
- Download URL: reporails_cli-0.5.0.tar.gz
- Upload date:
- Size: 542.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98c7313d9e903ee0aa3b53d10f674ef6af5ae208e9a5a33c313ee9e0c2628914
|
|
| MD5 |
0e7809affd05ab0345446316e57222ad
|
|
| BLAKE2b-256 |
c01b37f3a605718e2f47cbf54c691c4b9b47db7887d1935f4418fc84b60c6f87
|
Provenance
The following attestation bundles were made for reporails_cli-0.5.0.tar.gz:
Publisher:
release.yml on reporails/cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reporails_cli-0.5.0.tar.gz -
Subject digest:
98c7313d9e903ee0aa3b53d10f674ef6af5ae208e9a5a33c313ee9e0c2628914 - Sigstore transparency entry: 1310050026
- Sigstore integration time:
-
Permalink:
reporails/cli@9c87607066541060895391225c673cb923e69d39 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/reporails
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9c87607066541060895391225c673cb923e69d39 -
Trigger Event:
push
-
Statement type:
File details
Details for the file reporails_cli-0.5.0-py3-none-any.whl.
File metadata
- Download URL: reporails_cli-0.5.0-py3-none-any.whl
- Upload date:
- Size: 83.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8cb5bac671e948a3a007bb7adbea837489455dfc9781214f259b4502a910168
|
|
| MD5 |
0da4d350bb6585ded7247d479099e824
|
|
| BLAKE2b-256 |
75a296de90320e260ea4cb6ad5289e7f5e3a7b01399bac468bca2a43b2d30152
|
Provenance
The following attestation bundles were made for reporails_cli-0.5.0-py3-none-any.whl:
Publisher:
release.yml on reporails/cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reporails_cli-0.5.0-py3-none-any.whl -
Subject digest:
f8cb5bac671e948a3a007bb7adbea837489455dfc9781214f259b4502a910168 - Sigstore transparency entry: 1310050165
- Sigstore integration time:
-
Permalink:
reporails/cli@9c87607066541060895391225c673cb923e69d39 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/reporails
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9c87607066541060895391225c673cb923e69d39 -
Trigger Event:
push
-
Statement type: