Automated research quality assurance — catches fabricated citations, overclaimed results, irreproducible numbers, and statistical misinterpretations.
Project description
Rigorously
Automated research quality assurance.
Rigorously catches the mistakes that slip past manual review — fabricated citations, overclaimed results, irreproducible numbers, and statistical misinterpretations. One command. Eight checks.
Tested on: Python CLI, Claude Code, pre-commit hooks · Compatible with: 16+ AI coding platforms via the Agent Skills standard and MCP
The Problem
Citation errors appear in 25% of published papers. "Statistically significant" gets misused in half of biomedical literature. Overclaimed results are the #1 reason reviewers reject computational papers. Manual review catches some of these. Rigorously catches the rest.
pip install rigorously
rigorously check paper.tex
What It Catches
| Check | What It Does |
|---|---|
| Citation Verification | Verifies every bib entry against CrossRef — DOIs, titles, authors, journals |
| Overclaim Detection | Flags "proven," "validated," "novel," "impossible" — suggests precise alternatives |
| Number Consistency | Cross-checks every number across abstract, body, tables, and captions |
| Parameter Auditing | Verifies code parameters match paper claims and docstrings |
| Statistical Auditing | Checks p-values, sample sizes, test appropriateness, power analysis |
| Evidence Mapping | Traces every claim to supporting code, data, or citation |
| Reproducibility | Runs referenced scripts, compares output to paper numbers |
| Adversarial Review | Compiles findings into a simulated hostile peer review |
Sample Output
$ rigorously check paper.tex
Overclaim Detection: 4 findings
┌──────────┬────────┬───────────────────────┬─────────────────────────────┐
│ CRITICAL │ L.56 │ validated │ Use "consistent with" unless│
│ │ │ │ quantitatively compared │
│ CRITICAL │ L.216 │ proof_language │ Models provide evidence, │
│ │ │ │ not proof │
│ WARNING │ L.502 │ confirms_demonstrates │ Models predict or suggest; │
│ │ │ │ they do not confirm │
│ INFO │ L.89 │ significant_ambiguous │ Specify p < X or use │
│ │ │ │ "substantial" │
└──────────┴────────┴───────────────────────┴─────────────────────────────┘
Citation Verification: 12 entries checked
✓ Best2010 — DOI resolves, metadata matches
✓ Karin2020 — DOI resolves, metadata matches
✗ LePoul2000 — Author mismatch: bib has "Bhatt" x4, PubMed has "Hanoun"
VERDICT: 4 critical issues. Fix before submission.
Platform Support
| Platform | Command |
|---|---|
| CLI | pip install rigorously |
| Claude Code | claude plugin install rigorously |
| Cursor | cursor plugin install rigorously |
| Codex CLI | codex plugin install rigorously |
| Kiro | Add power → rigorously |
| Windsurf | Add skill → rigorously |
| Continue.dev | Add MCP → rigorously |
| Aider | aider --read rigorously |
| Any MCP client | "command": "rigorously", "args": ["serve"] |
| Pre-commit | rigorously install-hook |
| CI/CD | rigorously check paper.tex |
How It Works
paper.tex + refs.bib
│
▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│ Parse │───▶│ Extract │───▶│ Verify │
│ LaTeX/MD │ │ claims, │ │ against │
│ │ │ numbers, │ │ CrossRef,│
│ │ │ citations│ │ code, │
│ │ │ │ │ PubMed │
└─────────┘ └──────────┘ └──────────┘
│
▼
┌──────────┐
│ Report │
│ GO/NO-GO │
└──────────┘
MCP Server
For AI agent integration:
pip install "rigorously[mcp]"
python -m rigorous.mcp_server
Tools: check_paper, verify_citation, check_overclaims, audit_parameters, generate_report
Pre-commit Hook
rigorously install-hook
# Blocks commits with critical integrity issues in paper files
vs. Alternatives
| Feature | Rigorously | RefChecker | ACL pubcheck |
|---|---|---|---|
| Citation verification | ✓ | ✓ | ✗ |
| Overclaim detection | ✓ | ✗ | ✗ |
| Number consistency | ✓ | ✗ | ✗ |
| Parameter auditing | ✓ | ✗ | ✗ |
| Statistical auditing | ✓ | ✗ | ✗ |
| Evidence mapping | ✓ | ✗ | ✗ |
| Reproducibility | ✓ | ✗ | ✗ |
| Adversarial review | ✓ | ✗ | ✗ |
| AI agent integration | ✓ (16+ platforms) | ✗ | ✗ |
| Pre-commit hook | ✓ | ✗ | ✗ |
| Format checking | ✗ | ✗ | ✓ |
Origin
Built to catch real mistakes in real research. During development of a computational neuroscience paper, Rigorously caught 5 fabricated bibliography entries, 4 overclaimed results, and a parameter bug that was disguised as a scientific discovery — all before submission. It now runs on every commit.
Contributing
See CONTRIBUTING.md.
Citation
If you use Rigorously in your research workflow:
@software{rigorously,
author = {Miraj, Mansib},
title = {Rigorously: Automated Research Quality Assurance},
url = {https://github.com/XenResearch/rigorously},
year = {2026}
}
License
MIT
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 rigorously-0.1.0.tar.gz.
File metadata
- Download URL: rigorously-0.1.0.tar.gz
- Upload date:
- Size: 37.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa149bd133dd9d882e0cd631a107fb1fe64f9b6a97269d30473733fa5432cb12
|
|
| MD5 |
f566671807c8f0e6da8470e147702229
|
|
| BLAKE2b-256 |
33bb0431cd2db6db1617b390dbb0ebbd0f3f66a650bdfededfa371249c92d861
|
File details
Details for the file rigorously-0.1.0-py3-none-any.whl.
File metadata
- Download URL: rigorously-0.1.0-py3-none-any.whl
- Upload date:
- Size: 42.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31a1103004b617aefcb25a9e5345ad4cd184c67f5ba34ab63420068cf0ea5f10
|
|
| MD5 |
0e8da162c9bf0301008446595dd12964
|
|
| BLAKE2b-256 |
778f50a562f858a1288c9cb861740b6d406f07630f3d3c08fd515bc24531e6f2
|