UNPKG

fallow

Version:

Codebase intelligence for TypeScript and JavaScript: health, complexity, duplication, architecture, styling drift, and unused code from one graph. CLI, LSP, and MCP server. Zero config for over 100 frameworks.

45 lines (32 loc) • 3.13 kB
# Tooling detection Inspect the repository before you change it. Record what you find, because the later steps use it. ## Files to inspect | Tool area | Signals | |---|---| | Package manager | `packageManager` in `package.json`; the lockfile: `pnpm-lock.yaml`, `yarn.lock`, `bun.lock` or `bun.lockb`, `package-lock.json` | | Formatter | `.oxfmtrc.json`, `.prettierrc*`, `prettier.config.*`, `biome.json`, `biome.jsonc`, a `format` script in `package.json` | | Linter | `.oxlintrc.json`, `eslint.config.*`, `.eslintrc*`, `biome.json`, a `lint` script in `package.json` | | TypeScript | `tsconfig.json`, `tsconfig.*.json`, a `typecheck` script, `typescript` in `devDependencies` | | CI | `.github/workflows/*.yml`, `.gitlab-ci.yml`, other CI config files | | Existing analysis | `knip.json`, `knip.jsonc`, `.knip.json`, `.knip.jsonc`, a `knip` field in `package.json`; `.jscpd.json`; `.dependency-cruiser.*` | | Existing Fallow | `fallow config --path` prints the config path, or exits 3 when there is no config | | Agent harnesses | `CLAUDE.md`, `.claude/`, `.codex/`, `.cursor/` (`AGENTS.md` alone does not name a harness) | `fallow doctor --format json --quiet` checks the project root, the config, the workspaces, and the installed dependencies. It changes nothing. Run it when the project layout is not clear. ## Responsibility split Give each tool one job. Do not configure two tools for the same job. | Job | Tool | Command | |---|---|---| | Formatting | Oxfmt | `oxfmt` | | Local lint rules | Oxlint | `oxlint` | | Type correctness | TypeScript | `tsc --noEmit` | | Repository and system analysis | Fallow | `fallow`, `fallow audit` | Repository and system analysis covers unused files, exports, types, and dependencies, duplication, complexity, circular dependencies, architecture boundaries, and changed-code risk. For a new project, use the tools in this table. For an existing project, keep the current formatter, linter, and type check. Add Fallow for the system analysis. ## Parity check Do this check before you remove a tool whose job overlaps with Fallow, for example Knip, jscpd, or dependency-cruiser. When a step fails, keep the tool and tell the user why. 1. Ask the user for approval to replace the tool. 2. Migrate the config when Fallow can read it: `fallow migrate --dry-run` for Knip, jscpd, and stylelint. When the project has no Fallow config, review the preview, then run `fallow migrate`. When a Fallow config exists, `fallow migrate` refuses to write. Merge the settings from the preview into that config by hand. Fallow cannot migrate a dependency-cruiser config. Write the rules again as `boundaries` in the Fallow config (`fallow config-schema` gives the format). 3. Run the old tool and Fallow on the same commit. Compare the findings by category. 4. Explain each finding that only one tool reports. A finding that Fallow does not report must have a reason, for example a framework entry point that Fallow detects. 5. Move each CI step and each `package.json` script of the old tool to Fallow. 6. Remove the old tool and its config in a separate commit, so that the user can revert it.