Prevent Drift
Stop files from ending up in random places. Enforce where things belong.
Linting for your entire repository. Not just code.
ESLint checks your code. Prettier formats it. But what checks your repository structure?
Repotype is a repo-level linter that enforces:
Prevent Drift
Stop files from ending up in random places. Enforce where things belong.
Consistent Standards
Every markdown file has proper frontmatter. Every config file matches the schema.
CI-Ready
Validate in pre-commit hooks and CI pipelines. Catch issues before merge.
Auto-Fix
Many violations can be automatically fixed. Rename files, add missing sections.
repotype.yamlrepotype validate . — locally or in CIrepotype fix .repotype report .$ npx repotype validate .✗ docs/guide.md missing required frontmatter⚠ src/Utils.ts should be kebab-case✗ config/ missing required README.md
$ npx repotype fix .✓ Fixed 3 issues
$ npx repotype validate .✓ All 142 files valid. Repository standards enforced.version: "1"
folders: - id: src-root path: src requiredFolders: [components, utils, hooks] pathCase: kebab
files: - id: typescript-files glob: "src/**/*.ts" pathCase: kebab
- id: markdown-docs glob: "docs/**/*.md" frontmatter: required: [title, description]
- id: package-json glob: "package.json" schema: kind: json schema: schemas/package.schema.json