Skip to main content
Inspect what fallow discovered in your project. Use this command to debug configuration issues or verify that the right files, entry points, plugins, and boundary zones are being picked up.
Use fallow list --plugins to verify which of the 118 built-in plugins are active for your project.
fallow list

Options

FlagDescription
--filesShow all discovered files
--entry-pointsShow entry point files
--pluginsShow active plugins
--boundariesShow architecture boundary zones, rules, and per-zone file counts
--workspacesShow 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

# Show active plugins
fallow list --plugins

# JSON output for scripting
fallow list --plugins --format json

Workspace diagnostics

A malformed declared-workspace package.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:
kindWhen
malformed-package-jsonA declared workspace’s package.json failed to parse. Includes the parse error.
glob-matched-no-package-jsonA 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-tsconfigtsconfig.json exists but failed to parse as JSONC. Includes the parse error.
tsconfig-reference-dir-missingtsconfig.json references a references[].path that does not exist.
undeclared-workspaceA directory contains package.json but is not declared as a workspace.
A malformed ROOT 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
Boundaries: 6 zones, 6 rules, 1 logical group

Zones:
  app                  3 files  src/app/**
  features/auth        4 files  src/features/auth/**
  features/billing     5 files  src/features/billing/**
  features             3 files  src/features/**
  shared               8 files  src/components/**, src/hooks/**, src/lib/**, ...
  server               4 files  src/server/**

Rules:
  features/auth shared, server
  features/billing shared, server
  app features/auth, features/billing, features, shared, server
  features shared, server, features/auth, features/billing
  server shared
  shared               (isolated, no imports allowed)

Logical groups:
  features             12 files autoDiscover: src/features
    children: features/auth, features/billing
The 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
Active plugins:
  - nextjs
  - vite
  - vitest
  - playwright
  - storybook
  - eslint
  - typescript
  - tailwind
  - drizzle
  - commitlint
  - sentry
$ fallow list --entry-points
Found 42 entry points
src/app/layout.tsx                   (Plugin: nextjs)
src/app/page.tsx                     (Plugin: nextjs)
src/instrumentation.ts               (Plugin: nextjs)
src/proxy.ts                         (Plugin: nextjs)
src/lib/utils.test.ts                (Plugin: vitest)
e2e/auth.setup.ts                    (Plugin: playwright)
.storybook/main.ts                   (Plugin: storybook)
drizzle.config.ts                    (Plugin: drizzle)
scripts/db-migrate.ts                (PackageJsonScript)
scripts/db-seed.ts                   (PackageJsonScript)
...
Each entry point shows how it was discovered. The plugin name tells you which framework detected it.

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.