docforge-live
DocForge's Word template engine, and the command line that the DocForge.live plugin for Claude runs.
It turns finished .docx files into reusable templates, fills them in the
original layout (fonts, tables, headers and numbering stay as they were), and
checks returned documents against their template. The plugin tells Claude when
and how to use it; this package does the deterministic work, on your computer
or in Claude's code sandbox.
The package makes no network calls and has no telemetry. It reads and writes only the files you give it.
Install
pip install docforge-live
Python 3.10 or newer. PDF export also needs LibreOffice (soffice).
Use
docforge-live --help
python3 -m docforge.toolkit does the same, and works even when pip's script
folder isn't on your PATH. Every command prints one JSON object; errors come
back as {"ok": false, "error", "hint"}.
To try it on sample documents:
docforge-live demo --out demo
docforge-live analyze demo/invoice_1.docx demo/invoice_2.docx --work work --mode smart
docforge-live build --work work --name Invoice --out templates/invoice
docforge-live check templates/invoice demo/invoice_edited.docx
The plugin's skill references describe each workflow and the files Claude
writes along the way (decisions.json, values files, verdicts).
What's in this repository
src/docforge/: DocForge's document engine, copied from r9s9/docforge.tools/UPSTREAM.mdrecords the commit. Never edit these files by hand: change them upstream and sync.src/docforge/toolkit/: this package's own code, the command line and the workflows on top of the engine.tools/sync_upstream.py: copies the engine from a local copy of r9s9/docforge, and--verifychecks it still matches the lock.tools/run_upstream_tests.py: runs DocForge's own engine tests against this copy.tests/: the package's tests.
Development
.github/workflows/ci.yml lists the checks: lint with ruff, the upstream lock
check, the tests on Python 3.10 and 3.13, a build that is installed and run in
a clean environment, and upstream's engine tests. Install the package in a
virtual environment with pytest and ruff, then run the same commands.
After syncing the engine, set ref: in the upstream-parity job of ci.yml
to the new commit in tools/upstream.lock.json; a test fails until the two
match.
Releasing
- Raise
versioninpyproject.toml, push tomain, and wait for CI to pass. - On GitHub, publish a release tagged
vplus that version, for examplev1.0.1. The publish workflow builds the package, checks that the tag matches the version, and waits for approval in thepypienvironment. - Approve it. PyPI never accepts the same version twice, so a fix always gets a new version.
- In the plugin, raise the pinned version in
skills/docforge/SKILL.md, then release the plugin.
License
MIT, © The DocForge Authors, the same as DocForge itself. The dependencies install from PyPI under their own licenses: python-docx (MIT), docxtpl (LGPL-2.1), lxml (BSD), Jinja2 (BSD), pydantic (MIT) and python-dateutil (Apache-2.0 or BSD).
Metadata
Release files for docforge-live 1.0.0
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 | Actions |
|---|---|---|---|---|
| docforge_live-1.0.0.tar.gz | 136.6 kB | With provenance | Details for docforge_live-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| docforge_live-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for docforge_live-1.0.0-py3-none-any.whl |
Total release size: 286.1 kB
Release files / docforge_live-1.0.0.tar.gz
| Download URL | docforge_live-1.0.0.tar.gz |
|---|---|
| Size | 136.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
103562ca71ab4a69b49bf50dc1a81c25bb94761bb1451fb632014d08b4b5bdaa
|
|
BLAKE2b-256 checksum How to use checksums |
6385bdb3dd7494993b5efd3f36fffde62efb640a674aedf185f0690b0f3a1b0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 9, 2026.
Transparency logRelease files / docforge_live-1.0.0-py3-none-any.whl
| Download URL | docforge_live-1.0.0-py3-none-any.whl |
|---|---|
| Size | 149.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b568eb0eff3504cefd5a46fd675c69efe0d47f1dba7e83256d1b01d06af65297
|
|
BLAKE2b-256 checksum How to use checksums |
342e92963d070ac95d33be686001edbe74eba866ed0af49abb33bb8443150f78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 9, 2026.
Transparency logSecurity for docforge-live 1.0.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for docforge_live-1.0.0.tar.gz
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 Nov 9, 2026.
Transparency logA 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.