- Elixir 100%
| lib | ||
| priv/templates | ||
| test | ||
| .credo.exs | ||
| .formatter.exs | ||
| .gitignore | ||
| .reach.exs | ||
| .tool-versions | ||
| AGENTS.md | ||
| mix.exs | ||
| mix.lock | ||
| README.md | ||
VibeKit
VibeKit bootstraps a strict, ready-to-run quality setup for Elixir projects.
It is an Igniter installer that adds a mix ci alias, quality-tool dependencies, and baseline config files for Credo, Dialyzer, ExDNA, ExSlop, and Reach.
VibeKit comes from the Elixir Vibe ecosystem: a set of Elixir-native tools for AI-assisted coding, AST-aware code intelligence, architecture checks, duplicate detection, and generated-code quality. The tools are useful independently; VibeKit wires the quality-focused ones into new or existing projects with one command.
Quick start
Install VibeKit into an existing Mix project:
mix igniter.install vibe_kit
Or create a new project with VibeKit applied immediately:
mix igniter.new my_lib --install vibe_kit
After installation, run the full check suite with:
mix ci
What gets added
By default, VibeKit adds this mix ci pipeline:
ci: [
"compile --warnings-as-errors",
"format --check-formatted",
"test",
"credo --strict",
"dialyzer",
"ex_dna --max-clones 0",
"reach.check --arch --smells"
]
It also adds:
def cli, do: [preferred_envs: [ci: :test]]- latest Hex versions of the quality-tool dependencies
.credo.exswith ExSlop's recommended plugin checks enabled.reach.exsas a starting point for Reach architecture policy
The generated .reach.exs starts as:
[]
Add project-specific layer, boundary, source, and call policies as the architecture settles.
Included tools
| Tool | What VibeKit uses it for |
|---|---|
| Credo | General static analysis and style checks |
| Dialyxir | Dialyzer integration for success typing |
| ExDNA | AST-aware duplicate-code detection with a zero-clone default |
| ExSlop | Credo plugin checks for common low-quality generated-code patterns |
| Reach | Architecture policy and cross-function smell checks |
Other Elixir Vibe packages include ExAST for AST-aware search/replace and ProgramFacts for analyzer fixtures.
Options
The strict defaults can be disabled for projects that need a lighter setup:
mix igniter.install vibe_kit --no-reach
mix igniter.install vibe_kit --no-strict-clones
mix igniter.install vibe_kit --no-ex-slop
Optional agent instruction files can be generated too:
mix igniter.install vibe_kit --agents-md
mix igniter.install vibe_kit --claude-md
Options can be combined:
mix igniter.new my_lib \
--install vibe_kit \
--no-reach \
--no-ex-slop \
--agents-md
Generated ExSlop config
VibeKit enables ExSlop through Credo's plugin mechanism:
%{
configs: [
%{
name: "default",
plugins: [{ExSlop, []}]
}
]
}
This enables ExSlop's recommended high-signal checks automatically.
Keeping the installer available
mix igniter.install vibe_kit adds the project conventions and does not require VibeKit to remain as a runtime dependency. If a project should keep the installer task available, add VibeKit explicitly:
def deps do
[
{:vibe_kit, "~> 0.1.1", only: [:dev, :test], runtime: false}
]
end
Part of Elixir Vibe
VibeKit wires the whole quality stack — Credo, Dialyzer, ExDNA, ExSlop, Reach — into one mix ci with a single installer.
It is one building block of a larger stack — tools that make AI-generated software checkable: structural search, dependence analysis, duplication and slop detection, session replay, and ecosystem-wide code search. See the Elixir Vibe organization for the rest, and Building Blocks for the Future Web for the thesis, architecture, and roadmap that tie them together.