The .codegen Directory
The .codegen
directory contains your project’s Graph-sitter configuration, codemods, and supporting files. It’s automatically created when you run gs init
.
Directory Structure
Initialization
The directory is created and managed using the gs init
command:
Virtual Environment
Graph-sitter maintains its own virtual environment in .codegen/.venv/
to ensure consistent package versions and isolation from your project’s dependencies. This environment is:
- Created using
uv
for fast, reliable package management - Initialized with Python 3.13
- Automatically managed by Graph-sitter commands
- Used for running codemods and Jupyter notebooks
- Gitignored to avoid committing environment-specific files
The environment is created during gs init
and used by commands like gs run
and gs notebook
.
.codegen/.venv
Configuration
The .env
file stores your project settings:
This configuration is used by Graph-sitter to provide language-specific features and proper repository context.
Git Integration
Graph-sitter automatically adds appropriate entries to your .gitignore
:
- While most directories are ignored, your codemods in
.codegen/codemods/
andconfig.toml
are tracked in Git - The virtual environment and Jupyter notebooks are gitignored to avoid environment-specific issues
Working with Codemods
The codemods/
directory is where your transformation functions live. You can create new codemods using:
This will:
- Create a new file in
.codegen/codemods/
- Generate a system prompt in
.codegen/prompts/
(if using--description
) - Set up the necessary imports and decorators
Use gs list
to see all codemods in your project.
Jupyter Integration
The jupyter/
directory contains notebooks for interactive development:
A default notebook is created during initialization to help you explore your codebase.
Next Steps
After initializing your .codegen
directory:
- Create your first codemod:
- Run it: