ModFig requires Python 3.11 or later.
python3 -m pip install -e ".[dev]"The package exposes the modfig command and can also be run as a module:
python3 -m modfig --helpCommits use Conventional Commits:
feat(registry): add provider defaults
fix(factory): extend probe timeout
docs: update installation instructions
chore(deps): bump cryptography
feat creates a minor release. fix and perf create patch releases. Other
types do not create a release by themselves. Describe a breaking change with a
BREAKING CHANGE: footer:
feat(registry): replace provider identity
BREAKING CHANGE: provider identifiers are now required to be stable
Install the local commit-msg hook once after installing the development
dependencies:
pre-commit install --hook-type commit-msgThe hook is a convenience; pull-request CI validates the complete commit range again. To check a message or range manually:
cz check --message "fix: handle missing provider"
cz check --rev-range BASE_SHA..HEADPython Semantic Release calculates the next version from commits merged to
main, updates project.version in pyproject.toml, creates the release
commit and vX.Y.Z tag, and creates the GitHub Release. Distribution builds are
not currently published by this workflow.
The repository starts at 0.1.0. On the first push to main after the release
workflow is merged, no version tag exists, so Semantic Release calculates
0.1.0, creates the release commit, pushes the annotated v0.1.0 tag, and
creates the GitHub Release. Because the package already contains 0.1.0, the
first tag normally points at the baseline commit; later releases add a version
commit before tagging.
Do not create v0.1.0 manually before that first workflow run. After the
baseline exists, merge normal Conventional Commits to main and let the
release workflow own subsequent tags. The project remains on the 0.x line
while major_on_zero = false; change that policy deliberately when the public
API is ready for 1.0.0.
GitHub setup must allow the release job to write repository contents. If branch
protection blocks the Actions bot from pushing its release commit, use a
dedicated GitHub App or token with the required contents permission instead of
disabling protection. Require the commit-messages CI job in pull requests.
pytest -q
mypy --platform darwin src/modfig
ruff format --check src tests
ruff check src testsThe packaging tests build a wheel and source distribution, verify packaged specification assets, install a wheel into a temporary target, and load resources without the source tree.
spec/is canonical for the registry specification, schema, capability matrix, and conformance fixtures.src/modfig/contains the implementation.docs/contains maintained user and architecture documentation.docs/superpowers/plans/contains historical implementation plans and is not current product documentation.
Do not put secrets, resolved API keys, response bodies, or personal absolute paths in source, tests, documentation, manifests, or diagnostics.