The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases.
Project description
SpecFact CLI
Review AI-assisted code against your own contracts. Catch drift before it reaches PR or main.
No API keys required. Works offline. Zero vendor lock-in.
Try it in 60 seconds
# Zero-install, no API key, works offline
uvx specfact-cli init --profile solo-developer
uvx specfact-cli code review run --path . --scope full
Sample output:
SpecFact CLI - v0.46.1
Running Ruff checks...
Running Radon complexity checks...
Running Semgrep rules...
Running AST clean-code checks...
Running basedpyright type checks...
Running pylint checks...
Running contract checks...
Running targeted tests and coverage...
Verdict: FAIL | CI exit: 1 | Score: 0 | Reward delta: -80
Findings:
- specfact_demo/enforcement.py:96 Cyclomatic complexity for run_enforcement is 16.
- specfact_demo/main.py:81 Avoid print() in source files; use structured logging instead.
- examples/buggy_math.py:4 Public function divide is missing @require/@ensure decorators.
Evidence bundle: docs/_support/readme-first-contact/sample-output/
⭐ Star this repo if the output is useful. Open an issue if you want the workflow adapted for your stack.
Already installed the CLI? Use:
specfact init --profile solo-developer
specfact code review run --path . --scope full
The sample output comes from a pinned capture against nold-ai/specfact-demo-repo. Reproduce it with docs/_support/readme-first-contact/capture-readme-output.sh; capture metadata lives alongside the raw logs in docs/_support/readme-first-contact/sample-output/.
What SpecFact does
- Reviews AI-assisted changes deterministically — compare code against contracts, clean-code rules, and policy gates
- Extracts structure from existing code — reverse-engineer brownfield repos before you change them
- Blocks drift before merge — use the same checks locally, in pre-commit, and in CI
- Links backlog intent to code reality — connect backlog, specs, validation, and implementation
- Stays local-first — no cloud account, no vendor lock-in, no built-in model dependency
What is SpecFact?
SpecFact is a local CLI for catching backlog/spec/code drift before it becomes expensive. It gives solo developers, legacy maintainers, and teams a validation layer around AI-assisted delivery, brownfield reverse engineering, and contract-first reviews.
It exists because delivery drifts in predictable ways:
- AI-assisted code lands faster than validation catches up
- brownfield systems rarely have trustworthy up-to-date specs
- backlog intent gets reinterpreted before it reaches code
- teams need the same review rules across IDEs, CI, and pull requests
Add SpecFact to your workflow
Pre-commit hook
This repository uses a modular local hook layout (parity with specfact-cli-modules: fail_fast,
separate verify / format / YAML / Markdown / workflow / lint / Block 2 hooks). If you copy
.pre-commit-config.yaml into another repo, you must also vendor the
referenced scripts/*.sh entrypoints (at minimum scripts/pre-commit-quality-checks.sh,
scripts/pre-commit-verify-modules.sh, and scripts/git-branch-module-signature-flag.sh) so hook
entry: paths resolve. Alternatively, skip vendoring the modular file and use the remote hook below.
For a single-hook setup in downstream repos, keep using the stable id and script shim:
- repo: https://github.com/nold-ai/specfact-cli
rev: v0.46.1
hooks:
- id: specfact-smart-checks
The shim runs scripts/pre-commit-quality-checks.sh all (full pipeline including module verify).
GitHub Actions
- name: SpecFact Gate
run: uvx specfact-cli@latest govern enforce stage --preset minimal
How SpecFact is built
SpecFact uses the same discipline it asks you to trust:
- Outside-in research on the workflow or drift problem
- Public OpenSpec proposal and spec deltas
- TDD evidence before implementation
- Dogfooding with
specfact code review - Format, type-check, contract-test, and docs quality gates
- PR review with evidence artifacts
- Release through the same reproducible CLI paths
For teams and organizations
SpecFact still scales beyond the solo-developer entry path:
- Backlog + ceremony workflows for GitHub, Azure DevOps, Jira, and Linear
- DoR/DoD and policy enforcement for teams that need repeatable gates
- Evidence-backed PR review with the same checks used locally
- CI/CD adoption path that keeps validation deterministic instead of model-driven
Start with:
specfact backlog ceremony standup ...specfact backlog ceremony refinement ...specfact backlog verify-readiness --bundle <bundle-name>specfact govern ...
Module system
Official workflow behavior ships from nold-ai/specfact-cli-modules. The core CLI owns bootstrap, runtime contracts, trust checks, logging, and the grouped command surface. Installed modules add families such as project, backlog, code, spec, and govern.
Install examples:
specfact module install nold-ai/specfact-project
specfact module install nold-ai/specfact-backlog
specfact module install nold-ai/specfact-codebase
specfact module install nold-ai/specfact-code-review
specfact module install nold-ai/specfact-govern
If startup warns that modules are missing or outdated, run:
specfact module init --scope project
specfact module init
Documentation topology
docs.specfact.io is the canonical starting point for SpecFact.
- Core CLI/runtime/platform documentation remains owned by
specfact-cli - Module-specific deep docs are canonically owned by
specfact-cli-modules - The live modules docs site is published at
https://modules.specfact.io/
Use this repository's docs for the product story, runtime lifecycle, command topology, trust model, and getting-started flow. Use the modules docs site when you want deeper workflow, adapter, and module-authoring guidance.
How do I get started if I want more?
Next steps:
- Core CLI docs for the core runtime, bootstrap, and validation flow
- Installation guide for uvx-first and persistent CLI setup
- Quickstart for the first repo review path
- Reference: command topology for grouped command surfaces
- Canonical modules docs site for bundle-deep workflows
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file specfact_cli-0.46.2.tar.gz.
File metadata
- Download URL: specfact_cli-0.46.2.tar.gz
- Upload date:
- Size: 601.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c0bf56664447be906f5c83eb8ddef33c7f947b6d1514ce58f5c23f2d5cc4831
|
|
| MD5 |
c4b8036330528e3b8fd68431e35e1b4b
|
|
| BLAKE2b-256 |
429548bac1306459e148c849ed44c5319c30b029ebf306111580abcf149fe74c
|
File details
Details for the file specfact_cli-0.46.2-py3-none-any.whl.
File metadata
- Download URL: specfact_cli-0.46.2-py3-none-any.whl
- Upload date:
- Size: 749.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e744ba5f7baad231feeb137b2738ad2775f8c196e08feab11ff11968e01f8203
|
|
| MD5 |
fc8242f2b104f6b3b114f8df21365073
|
|
| BLAKE2b-256 |
d583ceabb1e9853f77bcbde2c7c76964a7b5843098cf72790f71427b74c1bf6c
|