Contents
Overview
RepoRemedy aims to lower the barrier to applying software engineering best practices in open-source software (OSS) repositories.
Who is the target audience?
RepoRemedy is targeted towards two main audiences:
- OSS maintainers who are interested to have an interactive and batched approach to fixing best practices issues in their repos. RepoRemedy allows for interactive exploration of common improvements as well as automated issue and PR generation to apply common "remedies" to a repository.
- OSS auditors who are interested in investigating and potentially applying fixes to multiple repositories. This audience might be an organizational or academic Open Source Program Office (OSPO) or a maintainer who manages a larger number of repositories. RepoRemedy allows for easier management and potentially replication of common fixes across repositories.
How to use RepoRemedy
RepoRemedy has three steps where each step is a separate command. Only the last step makes changes to a GitHub repository.
| Step | Command | What it does | Changes GitHub? |
|---|---|---|---|
| 1. Inspect | inspect |
Reads a RepoAuditor or Scorecard report and lists the findings it can fix | No |
| 2. Propose | propose |
Reads the repository and drafts a concrete issue or PR for each finding | No |
| 3. Publish | publish |
Creates the issues and PRs you reviewed and approved | Yes, after --confirm |
Reports come from RepoAuditor and Scorecard; see generating input reports. Use --interactive to run all three steps in one terminal session for a single repository.
1. Inspect
inspect reads an existing report and writes normalized findings and source provenance as JSON.
RepoRemedy inspect scorecard_report.json --report-type ossf-scorecard --repo gt-csse/reporemedy-live-fixture
RepoRemedy inspect report.txt --report-type repoauditor --repo https://github.com/gt-csse/reporemedy-live-fixture
Use RepoRemedy inspect --help for inspection options and RepoRemedy --version for the installed version. For GitHub Enterprise, use an HTTPS URL or HOST/OWNER/REPO.
2. Propose
propose gathers context and creates concrete remedy proposals from an audit report:
RepoRemedy propose report.json --report-type ossf-scorecard --repo gt-csse/reporemedy-live-fixture > proposals.json
propose will read the audited commit and branch used for a input report but can also use main. Use --ref main
or a full commit SHA to select a revision explicitly. It resolves catalog inputs
and renders an issue or an eligible draft PR, including file contents and diffs.
Missing inputs and blocked proposals remain visible. propose makes no GitHub changes.
See repository context for authentication, collected context, maintainer inputs, PR guards and the saved proposal contract.
3. Publish
Publish only reviewed selections, with explicit confirmation:
RepoRemedy publish proposals.json --repo gt-csse/reporemedy-live-fixture --select security-policy \
--receipts publication-receipts.json --confirm
See publishing remedies for permissions, stale-content checks, duplicate prevention and receipt recovery.
Interactive mode
To select and review remedies interactively for one repository, add --interactive. The session saves your selections to a plan file:
RepoRemedy inspect report.txt --report-type repoauditor --repo gt-csse/reporemedy-live-fixture --interactive
RepoRemedy inspect --resume remedy-plan.json
RepoRemedy publish --plan remedy-plan.json
publish --plan takes the plan file saved by an interactive session whereas publish proposals.json takes the output of propose run without an interactive session or other flags.
The interactive workflow supports bulk selection, input forms, issue/PR previews, save/resume and confirmed publication. Without --interactive, inspect prints findings as JSON to stdout and writes no file.
Several repositories
Generate proposals for several repositories using report-path templates:
RepoRemedy propose-batch demo/batch.json --output batch-results
The batch workflow uses the same remediation behavior as propose,
preserves each repository's bundles and summary, and continues after input failures.
Exit code 3 identifies partial failure; output directories must be new.
Installation
| Installation Method | Command |
|---|---|
| Via uv | uv add RepoRemedy |
| Via pip | pip install RepoRemedy |
Verifying Signed Artifacts
Artifacts are signed and verified using py-minisign and the public key in the file ./minisign_key.pub.
To verify that an artifact is valid, visit the latest release and download the .minisign signature file that corresponds to the artifact, then run the following command, replacing <filename> with the name of the artifact to be verified:
uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>'); print('The file has been verified.')"
Development
Please visit Contributing and Development for information on contributing to this project.
Additional Information
Additional information can be found at these locations.
| Title | Document | Description |
|---|---|---|
| Code of Conduct | CODE_OF_CONDUCT.md | Information about the norms, rules, and responsibilities we adhere to when participating in this open source community. |
| Contributing | CONTRIBUTING.md | Information about contributing to this project. |
| Development | DEVELOPMENT.md | Information about development activities involved in making changes to this project. |
| Governance | GOVERNANCE.md | Information about how this project is governed. |
| Maintainers | MAINTAINERS.md | Information about individuals who maintain this project. |
| Security | SECURITY.md | Information about how to privately report security issues associated with this project. |
License
RepoRemedy is licensed under the MIT license.
Metadata
Release files for reporemedy 0.1.19
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 | |
|---|---|---|---|---|
| reporemedy-0.1.19.tar.gz | 71.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reporemedy-0.1.19-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 160.3 kB
Release files / reporemedy-0.1.19.tar.gz
| Download URL | reporemedy-0.1.19.tar.gz |
|---|---|
| Size | 71.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c31e656d92ba781a8f0f521fbf0b90101a0fdc3f4dc45cbdb0b1707ba3aa8c7d
|
|
BLAKE2b-256 checksum How to use checksums |
7d27677438fe372dbd7e42c4c9771a0c318c799c7e6c3f0182d013b17f7a0d58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","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 / reporemedy-0.1.19-py3-none-any.whl
| Download URL | reporemedy-0.1.19-py3-none-any.whl |
|---|---|
| Size | 88.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
70ee45837e83530f204cad1dd33480d7d8b7fe00afa34aeb1f1ed1c70164b3c2
|
|
BLAKE2b-256 checksum How to use checksums |
76de83a7af7e71c8a7e5a2913d8c94546c37f14c2b237aaa921f6dc1da491a71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","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 reporemedy 0.1.19
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.