> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fallow.tools/llms.txt
> Use this file to discover all available pages before exploring further.

# fallow recommend

> CLI reference for fallow recommend. A read-only, project-tailored config recommendation: what fallow detected, a safe proposed config, and the decisions split into auto, default, and taste.

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.

<Info>
  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.
</Info>

```bash theme={null}
fallow recommend
fallow recommend --format json
```

Unlike [`fallow init`](/cli/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](/cli/global-flags).

## JSON output

```json theme={null}
{
  "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.

## Related

* [`fallow init`](/cli/init) writes the config file (and can scaffold `AGENTS.md` and git hooks)
* [`fallow config-schema`](/cli/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](/integrations/mcp)
