Git-tracked Specify 7 configuration as code for Unimus: form/view XML and discipline schema configuration (field visibility, labels, required flags).
Specify ships UI export for schema and no official import/GitOps tooling; this
repo provides export / plan / import for both forms and schema via the public API.
./install.sh # creates/repairs .venv, upgrades pip, pip install -e .
source .venv/bin/activate
specli --version
cp example.env .env
# edit .envIf a previous pip install -e . failed, remove the broken venv first: rm -rf .venv && ./install.sh
No install (works immediately):
./bin/specli form export --helpspecli form export --clean --no-manifests --output-dir forms specli form plan --forms-dir forms specli form import --forms-dir forms --apply
specli schema export --clean --output-dir schema specli schema plan --schema-dir schema specli schema import --schema-dir schema --apply
## Documentation
- [Forms git sync](docs/specify_forms_git_sync.md)
- [Schema git sync](docs/specify_schema_git_sync.md) — why exports are large, what exists upstream
## Repository layout
| Path | Purpose |
|------|---------|
| `specli` (package) / `bin/specli` | CLI entry point |
| `scripts/form.py` | Thin wrapper → `specli form` |
| `scripts/schema.py` | Thin wrapper → `specli schema` |
| `scripts/export_specify_forms.py` | Export view XML from Specify |
| `scripts/import_specify_forms.py` | Import view XML into DB viewsets |
| `scripts/export_specify_schema.py` | Export schema localization JSON |
| `scripts/import_specify_schema.py` | Import schema into `SpLocaleContainer*` |
| `forms/` / `forms_all/` | Form XML trees |
| `schema/` | Schema JSON per discipline (created by export) |
| `example.env` | Template for `.env` credentials |