Skip to main content

ForgeFix

ForgeFix demo

One command to set up, health-check, and repair any open-source project.

forgefix doctor tells a newcomer exactly what a repository is missing — README, install line, lockfile, CI, security policy, license, working dev environment — with a deterministic 0–100 health score and concrete fixes. forgefix up then does the bring-up: it detects the stack, repairs missing setup files, installs dependencies, and runs the tests.

  • Original code, MIT licensed. ForgeFix reads repository metadata only (file names, README text, config keys). It never copies source code from the projects it inspects.
  • No shells, no eval. Every external command runs as a sanitized argument list with a bounded timeout. bandit and gitleaks are wired into CI and pre-commit.

Quickstart (30 seconds)

pip install forgefix        # once published; or: pip install -e .
cd your-project
forgefix doctor             # see the score + what to fix
forgefix up                 # dry-run: shows the bring-up plan
forgefix up --apply         # repairs + venv + deps + tests (never overwrites files)
forgefix report             # writes reports/forgefix-report.md

Try it on the bundled fixtures right now:

forgefix doctor --path tests/fixtures/broken_repo    # -> 42/100
forgefix doctor --path tests/fixtures/minimal_repo   # -> 100/100

Why

Every contributor's first hour in a new repository is the same loop: clone, guess the install command, discover there is no lockfile, hunt for the test runner, wonder whether the project is even maintained. Maintainers keep re-explaining the same missing pieces in issues. ForgeFix turns that tribal knowledge into one deterministic, scriptable check that both humans and CI can run.

Features

Command What it does
forgefix doctor Health table (pass / warn / fail / skip) with fix suggestions; --json for machines, --min-score for gates
forgefix up Dry-run-by-default bring-up: stack detection, create-if-missing setup repairs, venv + deps, tests, optional dev server (--apply to execute)
forgefix report Markdown report with score, category breakdown, and top fixes
forgefix serve FastAPI server exposing the same checks at /health, /doctor, /report
forgefix init Scaffolds a .forgefix.yml (disable rules, set a score gate)
Plugins Third-party checks via the forgefix.plugins entry-point group

The health score is deterministic and unit-tested: every rule carries fixed fail/warn weights, so the same repository always scores the same.

How it compares (by category, not by name)

ForgeFix does not replace linters, formatters, or container starters — it complements them, one layer higher:

Category What it covers What ForgeFix adds
Linters / formatters (ruff, eslint class) Code style and correctness inside files Repository-level onboarding health that no in-file linter sees
Container starters (cookiecutter / devcontainer class) Bootstrapping a new project Works on the existing repos you already cloned
Manual README checklists What maintainers should document A score, a CI gate, and a JSON API so "should" becomes "does"

Safety model

  • Read-only scans. doctor and report open files and read text. They never execute repository code and never touch the network.
  • up is dry-run by default. With --apply it only creates missing files (README skeleton, SECURITY.md, .editorconfig, CI workflow) and never overwrites an existing file. It deliberately never invents a LICENSE for you.
  • No shell interpolation. Commands are fixed argument lists with full executable paths, shell=False, and bounded timeouts.

Plugins

# my_forgefix_plugin.py
from pathlib import Path
from forgefix.core.rules import Finding


class MyPlugin:
    name = "my-plugin"

    def check(self, root: Path) -> list[Finding]: ...

Register it under the forgefix.plugins entry-point group; ForgeFix discovers it automatically. A broken plugin is logged and skipped — it can never break a scan. See docs/plugins.md.

Roadmap

  • Deterministic doctor/report/serve + bring-up
  • Plugin API (forgefix.plugins)
  • Richer stack detection (rust, java/gradle) and per-rule fix scripts
  • SARIF export for GitHub code scanning
  • forgefix cloud hosted dashboard for private repos — see docs/monetization.md

Development

make setup     # editable install + pre-commit hooks
make test      # pytest (coverage gate 85%)
make lint      # ruff check + format check
make type      # mypy
make gif       # regenerate demo/demo.gif with vhs

Full guidelines in CONTRIBUTING.md. Docs site: mkdocs serve (config in mkdocs.yml, pages in docs/).

Security

Report vulnerabilities privately per SECURITY.md — 48h acknowledgement SLA.

License

MIT © ForgeFix contributors. Original code; no source copied from other projects.

Metadata

Release files for forgefix 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for forgefix 0.1.0
File Size Uploaded
forgefix-0.1.0.tar.gz 29.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for forgefix 0.1.0
File Interpreter ABI Platform
forgefix-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 53.1 kB

Release files / forgefix-0.1.0.tar.gz

Download URL forgefix-0.1.0.tar.gz
Size 29.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ff29ffbba4359740a6724946729d006c1fe0c99b2222a6caaedfb92297c6c2d0
BLAKE2b-256 checksum
How to use checksums
0b4ec91114cce77d054ef44274fc6487b4d44e47514f0242abd444ea413705d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / forgefix-0.1.0-py3-none-any.whl

Download URL forgefix-0.1.0-py3-none-any.whl
Size 23.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
10312c9509091ea424908f793af6d253ec742d2a23768e7db85b72994e32a663
BLAKE2b-256 checksum
How to use checksums
2d539827dcb95e3b6e991995f5b1a272591eff44d0f4f69a895542f88ddf025f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page