--- name: igniter description: Rules for working with Igniter --- # Rules for working with Igniter ## Understanding Igniter Igniter is a code generation and project patching framework that enables semantic manipulation of Elixir codebases. It provides tools for creating intelligent generators that can both create new files and modify existing ones safely. Igniter works with AST (Abstract Syntax Trees) through Sourceror.Zipper to make precise, context-aware changes to your code. ## Available Modules ### Project-Level Modules (`Igniter.Project.*`) - **`Igniter.Project.Application`** - Working with Application modules and application configuration - **`Igniter.Project.Config`** - Modifying Elixir config files (config.exs, runtime.exs, etc.) - **`Igniter.Project.Deps`** - Managing dependencies declared in mix.exs - **`Igniter.Project.Formatter`** - Interacting with .formatter.exs files - **`Igniter.Project.IgniterConfig`** - Managing .igniter.exs configuration files - **`Igniter.Project.MixProject`** - Updating project configuration in mix.exs - **`Igniter.Project.Module`** - Creating and managing modules with proper file placement - **`Igniter.Project.TaskAliases`** - Managing task aliases in mix.exs - **`Igniter.Project.Test`** - Working with test and test support files ### Code-Level Modules (`Igniter.Code.*`) - **`Igniter.Code.Common`** - General purpose utilities for working with Sourceror.Zipper - **`Igniter.Code.Function`** - Working with function definitions and calls - **`Igniter.Code.Keyword`** - Manipulating keyword lists - **`Igniter.Code.List`** - Working with lists in AST - **`Igniter.Code.Map`** - Manipulating maps - **`Igniter.Code.Module`** - Working with module definitions and usage - **`Igniter.Code.String`** - Utilities for string literals - **`Igniter.Code.Tuple`** - Working with tuples