# New folders for one or two files; layer trees for small apps

*Files and folders*: one of the ways AI coding agents bloat software, from lessloc's [pattern catalog](https://lessloc.org/patterns/index.md). lessloc catches it as [`new-folder`](https://lessloc.org/guide/reference.md#tier-2).

## What makes new folders for one or two files and layer trees for small apps a bad practice?

The standards that call it a bad practice: Ousterhout: shallow modules; Martin's Common Closure Principle.

## What does lessloc do about new folders for one or two files and layer trees for small apps?

lessloc catches it as [`new-folder`](https://lessloc.org/guide/reference.md#tier-2). Framework route folders (Next.js, SvelteKit, Expo) are exempt.

- `new-folder` (tier 2): A new folder with one or two entries, or an examples or demo folder nobody asked for.

## Related patterns

The other patterns in [Files and folders](https://lessloc.org/patterns/index.md#files-and-folders):

- [Scratch, backup, copy and harness files](https://lessloc.org/patterns/index.md#scratch-files): lessloc catches it as `junk-file` and refuses it before it lands.
- [Caches, build output and logs about to be committed](https://lessloc.org/patterns/index.md#caches): lessloc catches it as `junk-file`.
- [CI workflows and Dockerfiles nobody asked for](https://lessloc.org/patterns/scaffolding.md): lessloc catches it as `unrequested-file`.
- [Tiny one-function files; file-per-concern splits](https://lessloc.org/patterns/tiny-files.md): lessloc catches it as `tiny-file` and `new-files`.
- [Junk-drawer utils and helpers modules and folders](https://lessloc.org/patterns/junk-drawer.md): lessloc catches it as `junk-drawer`.
- [Vague names (process\_data, handle)](https://lessloc.org/patterns/vague-name.md): lessloc catches it as `vague-name`.
- [Moving or renaming files without a reason](https://lessloc.org/patterns/moved-files.md): lessloc catches it as `moved-files`.
- [Secrets: a committed .env, API keys, private keys](https://lessloc.org/patterns/secrets.md): lessloc catches it as `secret`.
