Skip to content

Folder Rules

Folder rules enforce repository layout: required directories, allowed subdirectories, and required files within folders.

folders:
- id: docs-root
path: docs
requiredFolders:
- guides
- reference
requiredFiles:
- README.md

This ensures:

  • docs/guides/ exists
  • docs/reference/ exists
  • docs/README.md exists
folders:
- id: src-structure
path: src
requiredFolders:
- components # Must exist
- utils # Must exist
allowedFolders:
- components
- utils
- hooks # Can exist, but not required
- types # Can exist, but not required

Enforce naming conventions on folder paths:

folders:
- id: kebab-case-src
path: src
pathCase: kebab # kebab | camel | pascal | snake
StyleExample
kebabmy-component
camelmyComponent
pascalMyComponent
snakemy_component

Ensure specific files exist in a folder:

folders:
- id: components-structure
path: src/components
requiredFiles:
- index.ts # Export barrel
- README.md # Component docs

Restrict what files can exist in a folder:

folders:
- id: config-folder
path: config
allowedFiles:
- "*.json"
- "*.yaml"
- README.md

Any file not matching the patterns is an error.

Rules apply to specific paths. Create multiple rules for nested structure:

folders:
- id: src-root
path: src
requiredFolders: [components, hooks]
- id: components
path: src/components
requiredFiles: [index.ts]
- id: hooks
path: src/hooks
requiredFiles: [index.ts]

Use globs for dynamic folder matching:

folders:
- id: feature-folders
path: src/features/*
requiredFiles:
- index.ts
- types.ts

This applies to every subfolder of src/features/.

folders:
- id: packages-root
path: packages
allowedFolders: ["*"] # Any package name allowed
- id: package-structure
path: packages/*
requiredFiles:
- package.json
- README.md
- tsconfig.json
requiredFolders:
- src
folders:
- id: features
path: src/features/*
requiredFiles:
- index.ts
- types.ts
requiredFolders:
- components
- hooks
folders:
- id: docs-root
path: docs
requiredFolders:
- getting-started
- guides
- reference
allowedFolders:
- getting-started
- guides
- reference
- examples
- api
requiredFiles:
- README.md

Folder rule violations produce these diagnostic codes:

CodeMeaning
missing_required_folderRequired folder doesn’t exist
disallowed_folderFolder exists but isn’t in allowlist
missing_required_fileRequired file in folder doesn’t exist
disallowed_file_in_folderFile in folder not in allowlist
folder_path_case_violationFolder name doesn’t match pathCase