Filesystem Navigation
When to Use This Skill
When you are asked to explore, understand, or map a project's file structure. This includes requests like "what is this project?", "show me the structure", or "help me find where X is".
Strategy
Start at the Root
Always begin by listing the top-level directory. The root reveals the project type faster than anything else:
README.md or README.rst → start here, it's the author's own summary
requirements.txt, pyproject.toml, package.json → tells you the language and dependencies
Dockerfile, docker-compose.yml → the project is containerized
Makefile, justfile → there are predefined commands to run
.env.example → environment variables are needed; never read .env itself
Explore Breadth Before Depth
List all top-level directories before diving into any single one. Build a mental map:
src/ or app/ → application code lives here
tests/ or test/ → test suite
config/ or conf/ → configuration
docs/ → documentation
scripts/ or bin/ → utility scripts
migrations/ or alembic/ → database migrations
Go Deeper with Purpose
Don't read every file. Choose what to read based on what you're trying to answer:
- To understand what the project does → README, then entry point
- To understand how it's structured → list
src/ recursively
- To understand how to run it → README, Makefile, Dockerfile, config
- To understand dependencies → requirements.txt, package.json, pyproject.toml
Things to Avoid
- Don't assume a file's purpose from its name alone —
utils.py could contain anything
- Don't read binary files (images, compiled files, databases)
- Don't read
.env files — they may contain secrets
- Don't try to read
node_modules/, __pycache__/, .git/, or other generated directories
- Don't list deeply nested directories all at once — go level by level
Signals That Help
- A
__main__.py or if __name__ == "__main__" block indicates an entry point
- A file named
app.py, main.py, or server.py is usually the entry point
__init__.py files in Python indicate a package; they may re-export key symbols
- Hidden files (
.gitignore, .flake8, .pre-commit-config.yaml) reveal tooling choices
1---2name: filesystem-navigation-23description: Guidelines for systematically exploring and understanding directory structures.4---56# Filesystem Navigation78## When to Use This Skill910When you are asked to explore, understand, or map a project's file structure. This includes requests like "what is this project?", "show me the structure", or "help me find where X is".1112## Strategy1314### Start at the Root1516Always begin by listing the top-level directory. The root reveals the project type faster than anything else:1718- `README.md` or `README.rst` → start here, it's the author's own summary19- `requirements.txt`, `pyproject.toml`, `package.json` → tells you the language and dependencies20- `Dockerfile`, `docker-compose.yml` → the project is containerized21- `Makefile`, `justfile` → there are predefined commands to run22- `.env.example` → environment variables are needed; never read `.env` itself2324### Explore Breadth Before Depth2526List all top-level directories before diving into any single one. Build a mental map:2728- `src/` or `app/` → application code lives here29- `tests/` or `test/` → test suite30- `config/` or `conf/` → configuration31- `docs/` → documentation32- `scripts/` or `bin/` → utility scripts33- `migrations/` or `alembic/` → database migrations3435### Go Deeper with Purpose3637Don't read every file. Choose what to read based on what you're trying to answer:3839- To understand **what the project does** → README, then entry point40- To understand **how it's structured** → list `src/` recursively41- To understand **how to run it** → README, Makefile, Dockerfile, config42- To understand **dependencies** → requirements.txt, package.json, pyproject.toml4344## Things to Avoid4546- Don't assume a file's purpose from its name alone — `utils.py` could contain anything47- Don't read binary files (images, compiled files, databases)48- Don't read `.env` files — they may contain secrets49- Don't try to read `node_modules/`, `__pycache__/`, `.git/`, or other generated directories50- Don't list deeply nested directories all at once — go level by level5152## Signals That Help5354- A `__main__.py` or `if __name__ == "__main__"` block indicates an entry point55- A file named `app.py`, `main.py`, or `server.py` is usually the entry point56- `__init__.py` files in Python indicate a package; they may re-export key symbols57- Hidden files (`.gitignore`, `.flake8`, `.pre-commit-config.yaml`) reveal tooling choices