Directory Structure Validator is a lightweight GitHub Action that checks whether required folders exist in a repository.
It is useful for enforcing a consistent project layout across repositories, templates, starter kits, open source projects, documentation sites, and internal codebases.
The action verifies that required directories exist relative to a configurable base path.
Common examples include:
srcdocstestsconfig.githubexamples
If one or more required directories are missing, the action can fail the workflow or report the missing directories without failing.
Create a workflow file such as .github/workflows/directory-structure-validator.yml:
name: Directory Structure Validator
on:
pull_request:
push:
branches:
- main
jobs:
validate-directories:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Validate required directories
uses: brandonhimpfen/directory-structure-validator@v1
with:
required-directories: |
src
docs
testsReplace brandonhimpfen/directory-structure-validator@v1 with the published action path.
| Input | Description | Required | Default |
|---|---|---|---|
required-directories |
Newline, comma, or space-separated list of required directories. | No | src docs |
base-path |
Base path to validate from. | No | . |
fail-on-missing |
Whether the workflow should fail when required directories are missing. | No | true |
allow-empty |
Whether an empty required-directories value is allowed. |
No | false |
| Output | Description |
|---|---|
valid |
true when all required directories exist; false otherwise. |
missing-directories |
Comma-separated list of missing directories. |
checked-directories |
Comma-separated list of directories checked. |
- name: Validate required directories
uses: brandonhimpfen/directory-structure-validator@v1
with:
required-directories: |
src
docs
tests- name: Validate required directories
uses: brandonhimpfen/directory-structure-validator@v1
with:
required-directories: src,docs,tests,examples- name: Validate package directories
uses: brandonhimpfen/directory-structure-validator@v1
with:
base-path: packages/app
required-directories: |
src
public
tests- name: Check directory structure
id: directory-check
uses: brandonhimpfen/directory-structure-validator@v1
with:
required-directories: |
src
docs
tests
fail-on-missing: false
- name: Print missing directories
if: steps.directory-check.outputs.valid == 'false'
run: echo "Missing directories: ${{ steps.directory-check.outputs.missing-directories }}"- name: Validate repository support directories
uses: brandonhimpfen/directory-structure-validator@v1
with:
required-directories: |
.github
docsDirectory names may be provided with or without a leading slash.
These are treated the same:
src
/src
src/
The action checks for directories only. It does not check for files.
For most workflows, pin the action to the stable major version:
uses: brandonhimpfen/directory-structure-validator@v1For stricter reproducibility, pin to a full release version:
uses: brandonhimpfen/directory-structure-validator@v1.0.0This project is licensed under the MIT License.