Commands
Every fobis command, by area. Each page lists all the options of the command (generated from the command line itself); fobis <command> --help prints the same. The fobos file holds the settings a command reads from the project, the user configuration those of the machine.
Building
| Command | What it does |
|---|---|
build | Build all programs found or specific target(s). |
clean | Clean project: remove all OBJs and MODs files. Use carefully. |
run | Build a target (if needed) and execute it. |
install | Install previously built files, or clone+build+install a GitHub-hosted FoBiS project. |
rule | Execute special rules or user-defined ones from a fobos file. |
cache | Manage the FoBiS build artifact cache. |
introspect | Emit machine-readable JSON project metadata. |
tree | Print the resolved inter-project dependency tree. |
check | Validate the dependency graph without building. |
Dependencies and projects
| Command | What it does |
|---|---|
new | Create a project: a module in src/, a program in app/, a test in test/, a fobos with debug and release modes and a [test] section, a .gitignore and a git repository (nothing committed). An existing file is never overwritten. |
fetch | Fetch and build GitHub-hosted Fortran dependencies listed in the fobos [dependencies] section. |
fpm | Interoperate with the Fortran Package Manager: fpm.toml to fobos and back. |
scaffold | Manage project boilerplate via bundled scaffold templates. |
ecosystem | Manage a set of interconnected FoBiS projects (registry: [ecosystem] in the user config). |
Testing
| Command | What it does |
|---|---|
test | Discover, build, and run Fortran test programs. |
doctests | Test all valid doctests snippets found. |
coverage | Generate HTML/XML coverage reports from instrumented test runs. |
Verifying results
| Command | What it does |
|---|---|
case | Run the cases declared in the fobos ([case:NAME]) and extract their quantities. |
provenance | Print what a result produced now would depend on: commit, dependency pins, compiler, flags, machine. |
verify | Run cases and compare their quantities with the stored references, within each quantity's tolerance. |
matrix | Build, test (and verify) every mode x shadow combination available on this machine. |
assess | Assess the numerical error and uncertainty of a case's quantities from ensembles of its variants. |
diff-run | Run the cases on a revision and on the working tree, in scratch copies, and compare their quantities. |
bench | Measure the run time of cases: warm-up, then runs until the median's 95% interval is narrow enough; compared with the case's recorded history or, with --compare, with a revision. Faster or slower only when the intervals do not overlap. |
gate | One verdict for a change: build, review of the changed lines, tests, verify, diff-run and bench against the base, assessment budgets and the declared matrix, each reduced to pass/fail/skipped with its first failing fact. Exit 1 when a non-advisory stage fails. |
profile | Profile a case: where it spends its time (gprof), its instructions (callgrind) or its GPU time and transfers (nsys), mapped to the project's procedures and source lines. |
Code analysis
| Command | What it does |
|---|---|
lint | Report bug-prone and obsolescent Fortran constructs (rules: fobis lint --list-rules). |
review | Report the lint findings on the changed lines only (staged, since a base, or uncommitted). |
query | Answer a question about the code from the analysis: who calls what, who writes a variable, where a name is defined, which directive regions hold a line, where a variable lives on the device, which MPI calls are made. |
modernize | Apply the automatic lint fixes (array constructors, relational operators, generic intrinsics, character length, labelled DO loops) to a scratch copy and keep them only when it builds, the tests still pass and the declared cases give equivalent results; each rule is checked alone when the whole set fails. |
bindings | Generate bind(c) shims (NAME_c.f90), a C header (NAME.h) and a Python ctypes wrapper (NAME.py) for the public procedures of the modules whose arguments allow it; report why the others are not bound. |
agents-md | Generate the build, test and verification instructions for coding agents (AGENTS.md) from the fobos and the sources, between fobis:begin/end markers: the rest of the file is kept. |
AI assistance
| Command | What it does |
|---|---|
llm | Manage the local LLM: models pulled from the Hugging Face Hub (nothing is downloaded implicitly). |
ask | Answer a question from the knowledge packs (and, with --project, the project's procedures), citing sources. |
kb | Search the knowledge packs (Fortran, OpenMP, OpenACC, MPI references; your own packs). |
testgen | Generate a test program for a module's public procedures; kept only when it builds, runs and checks. |
merge-assist | Propose resolutions for merge, rebase or cherry-pick conflicts, checked by the compiler; never stages. |
commit | Generate a Conventional Commits message for staged changes via a local LLM. |
mcp | Serve lint, rules, knowledge packs and build commands to MCP clients over stdio. |