Thanks to visit codestin.com
Credit goes to docs.fallow.tools

Skip to main content
Dry-run your external plugins without running a full analysis: per plugin, did it activate, and what did each manifestEntries rule match and seed. It is read-only, so it is safe to run in a tight loop while you iterate on a fallow-plugin-* file.
plugin-check is advisory, never a gate: it always exits 0 and rejects the output-gating flags (--ci, --fail-on-issues, --output-file). Reach for it to debug why a plugin activates or seeds nothing, not to fail CI.
It pairs with fallow list --plugins, which answers whether a plugin is active. plugin-check goes further: for active plugins it shows exactly what each manifestEntries rule matched and seeded. For the plugin file format, the field reference, and how manifestEntries interpolation works, see Custom plugins.

What it reports

For every external plugin discovered from the plugins config field, the .fallow/plugins/ directory, or fallow-plugin-* files in the project root:
  • active, and when inactive an activation_requirement string naming the unmet condition, so a plugin whose detection fails is no longer silent.
  • For active plugins with manifestEntries, a structured per-rule report: the manifests matched by the glob (manifests_matched), each matched manifest’s when-gate result (when_passed), the entries seeded (each resolved path with a path_exists flag), and any warnings.
Output is deterministic and sorted, so --format json is byte-identical across machines and safe to diff in CI or snapshot in tests.
path_exists reports whether a file matches the seeded glob on disk. false means the entry is definitely broken. true is necessary but not sufficient: it does not prove the entry became reachable, because file discovery still filters gitignored and wrong-extension files.

Warnings

Each manifestEntries rule reports typed warnings[]. Agents branch on the kebab-case kind; each warning carries only the slot relevant to that kind (glob, field_path, manifest, or entry). These are the fastest way to debug a rule that seeds nothing.

Options

Global flags such as --no-cache and --threads still apply; see global flags.

JSON output

The example below covers both shapes in one run: an inactive plugin with its activation_requirement, and an active plugin whose rule seeded an entry that does not yet exist on disk (path_exists: false), raising a seeded-paths-missing warning.
A healthy active plugin reports when_passed: true, path_exists: true for each seeded entry, and an empty warnings array. plugin-check is a CLI-only authoring aid; the MCP server does not expose it.

See also

Custom plugins

The plugin file format, the manifestEntries rule shape, and ${dotted.field} interpolation.

fallow list

fallow list --plugins shows which plugins are active.

Schemas

fallow plugin-schema prints the plugin-file schema for IDE autocomplete.