Options
| Flag | Description |
|---|---|
--files | Show all discovered files |
--entry-points | Show entry point files |
--plugins | Show active plugins |
--boundaries | Show architecture boundary zones, rules, and per-zone file counts |
--workspaces | Show monorepo workspaces and workspace-discovery diagnostics (malformed package.json, unreachable glob matches, missing tsconfig references). Available as the fallow workspaces alias too. |
-f, --format <FORMAT> | Output format: human (default), json |
Examples
Workspace diagnostics
A malformed declared-workspacepackage.json, a workspace glob that matches a directory without package.json, or a tsconfig reference pointing at a missing directory all surface as workspace_diagnostics[] entries with a kind discriminator:
kind | When |
|---|---|
malformed-package-json | A declared workspace’s package.json failed to parse. Includes the parse error. |
glob-matched-no-package-json | A workspace glob matched a directory that has no package.json (and is not in the conventional skip list or your ignorePatterns). Includes the matching pattern. |
malformed-tsconfig | tsconfig.json exists but failed to parse as JSONC. Includes the parse error. |
tsconfig-reference-dir-missing | tsconfig.json references a references[].path that does not exist. |
undeclared-workspace | A directory contains package.json but is not declared as a workspace. |
package.json is treated as a hard config-load error and exits 2 instead of warning; everything else is warn-and-continue so analysis still runs on the remaining workspaces. The same workspace_diagnostics[] array is emitted on fallow check, fallow dupes, and fallow health JSON envelopes (omitted when empty), so CI consumers can gate on discovery problems without a separate command.
Example output
$ fallow list --boundaries
Logical groups: section appears whenever the config (or a preset) uses
autoDiscover to fan a parent zone out into one zone per child directory.
Each entry shows the user-authored parent name, the exact autoDiscover paths
as written, the discovered children, and a summed file count. The human output
puts misconfigured entries (invalid path, empty) first inside the section
and splits the file count into N files (X children + Y fallback) when the
parent has both patterns and autoDiscover (e.g. the Bulletproof preset).
The --format json output mirrors this in a parallel
boundaries.logical_groups[] array, with extra fields for round-trip config
tooling: auto_discover (verbatim user strings), source_zone_index
(position in the pre-expansion zones[]), status (ok / empty /
invalid_path), authored_rule (the pre-expansion rule keyed on the parent),
fallback_zone (a back-reference when the parent kept its own patterns and
stayed in zones[], as in the Bulletproof preset), merged_from (parent zone
indices when the user declared the same parent name twice; surfaces the
duplicate that would otherwise only appear in tracing::warn!),
original_zone_root (echo of the parent’s root subtree scope so monorepo
patchers can tell whether root was authored on the parent or per-child), and
child_source_indices (parallel to children, attributing each child to a
specific auto_discover entry when multiple paths were authored). The full
shape is documented in
docs/output-schema.json
under ListBoundariesOutput.
$ fallow list --plugins
$ fallow list --entry-points
See also
Built-in plugins
Full list of fallow’s 114 built-in framework plugins.
Custom plugins
Create plugins for frameworks fallow doesn’t cover yet.