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:

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