Recommend a project-tailored config without writing anything. fallow recommend inspects the project (frameworks, workspace layout, tooling) and emits three things: what it detected, a safe proposed config, and the list of decisions behind that proposal, so a human or an agent can review the reasoning instead of trusting a generated file.
Zero config is a valid stop: fallow’s defaults are strong, so writing no config at all is fully supported. recommend exists for the projects that do want one, and for agents that need to author it with the user instead of guessing.
fallow recommend
fallow recommend --format json
Unlike fallow init, which writes a config file, recommend is read-only. The intended flow for agents: run recommend --format json, apply the auto decisions, disclose the default decisions, ask the user about the taste decisions, then write the result (or run init).
Decision tiers
Every proposed setting comes with its tier and rationale:
| Tier | Meaning |
|---|
auto | Decided from detection (a detected framework, workspace layout, test runner). Safe to apply as-is. |
default | A disclosed, overridable default. Applied in the proposal, but the user may want it different. |
taste | A genuinely subjective choice. Surfaced as an open question for the user; not silently decided. |
Options
| Flag | Description |
|---|
--root <ROOT> | Project root directory |
--config <CONFIG> | Path to an existing config file to take into account |
--format <FORMAT> | Output format (human default, json for agents) |
--quiet | Suppress progress output |
Global flags such as --no-cache and --threads also apply; see global flags.
JSON output
{
"kind": "recommend",
"schema_version": "1",
"detected": {
"has_typescript": true,
"is_monorepo": false,
"package_manager": "npm",
"ui_framework": null,
"test_framework": "vitest"
},
"proposed_config": {
"$schema": "https://raw.githubusercontent.com/fallow-rs/fallow/main/schema.json",
"entry": ["src/index.{js,jsx,mjs}", "src/main.{js,jsx,mjs}"]
},
"decisions": [
{
"setting": "entry",
"value": ["src/index.{js,jsx,mjs}", "src/main.{js,jsx,mjs}"],
"rationale": "Assumes the src/index or src/main entry convention. Adjust for framework-routed apps or DI-wired entry points (fallow also auto-honors package.json exports/main/module for libraries).",
"kind": "auto",
"question": null
}
],
"note": "proposed_config is the safe, detection-derived baseline; resolve every taste decision with the user before finalizing. For the full set of valid config keys and their shapes, run `fallow config-schema`.",
"config_schema_command": "fallow config-schema"
}
The detected block also reports monorepo workspace patterns, the workspace tool, Storybook presence, and whether frameworks live in workspace packages rather than the root.
fallow init writes the config file (and can scaffold AGENTS.md and git hooks)
fallow config-schema prints the full JSON schema for every config key
- The MCP server exposes this command as the read-only
recommend tool; see MCP integration