Getting Started
Quickstart
Install Fensu, initialize a repository, and read your first faults in a few minutes.
This guide gets Fensu running against a Python repository and walks through reading its output.
1. Install
Section titled “1. Install”pip install fensufensu --versionFensu needs Python 3.12 or newer.
2. Initialize
Section titled “2. Initialize”fensu init is the fastest way to start. It detects your layout,
writes a fensu.toml with the full ruleset enabled, runs a first check to show
current drift, and installs agent skill files:
fensu init --yesThe native initializer is non-interactive. For an empty repository with no code,
run fensu init --yes --name my_package; init scaffolds a src/ package and
tests/ directory. Pass --no-skills only when automation explicitly needs
configuration without repository-local agent guidance.
Verify that every generated local skill is present and current before calling onboarding complete:
fensu skills --checkPrefer to write configuration by hand? A minimal fensu.toml only needs your
product roots:
roots = ["src/my_package"]tests defaults to ["tests"], tooling is optional, and every rule family is on
by default. See Configuration for scopes, selection, and
the full schema.
3. Check and read a fault
Section titled “3. Check and read a fault”Run Fensu against the configured repository:
fensu checkIf everything conforms, Fensu prints a summary and exits 0:
Found 0 faultsWhen it finds a problem, it prints a diagnostic for each fault and exits 1. The
output points at the exact line, shows the source, and explains the fix:
FFL102 import 'my_package.payments.processing._helpers.charge_card' reaches into internal structure of 'my_package.payments' --> src/my_package/orders/checkout/main/place_order.py:1:0 |1 | from my_package.payments.processing._helpers.charge_card import charge_card | ^ | = help: Import from classes, models, types, constants, exceptions, or a thin main/ entry.Every diagnostic has two parts: the message states the contract that was
violated, and the = help: line states the normal correction. The messages are
written to be read at the moment of violation, by a person or an agent, so the fix
is clear without opening the docs. Look up any code in full with
fensu rule <CODE>.
4. Optional: look for duplicated code
Section titled “4. Optional: look for duplicated code”fensu check cannot see that two valid functions are the same logic. Run the
advisory duplicated-code report to find copies that may have drifted apart:
fensu dupesIt exits 0 whatever it finds, so there is nothing to fix before you move on.
See Duplicated code for how to read the clusters.
Next steps
Section titled “Next steps”The scopes, roles, and default layout Fensu enforces.
ConfigurationEvery configuration key, threshold, and contract.
Rule familiesWhat each family (FFL, FFR, FFS, FFN, FFH, FFT, FFA) checks.
Adopting FensuRolling out on a new, small, or large repository.
fensu mapRender a deterministic downstream or upstream call tree for any function.
fensu skillsGenerate and verify agent guidance from your active rules.