From credo
Explains and fixes common Credo issues in Elixir code including module documentation, function complexity, pipe chains, and unused variables for consistency, design, readability, and refactoring.
npx claudepluginhub thebushidocollective/han --plugin credoThis skill cannot use any tools. It operates in read-only mode without the ability to modify files or execute commands.
Understanding and fixing common Credo issues.
Creates custom Credo checks for Elixir projects to enforce project-specific code quality rules, such as detecting hardcoded secrets. Guides configuration in .credo.exs.
Analyzes Elixir/Phoenix technical debt: duplicates, refactoring opportunities, Credo issues. Useful for code quality reviews, cleanup, or improvements.
Guides code reviews with checklists for correctness, functionality, security vulnerabilities, performance issues, and maintainability. Use for pull requests, audits, and feedback.
Share bugs, ideas, or general feedback.
Understanding and fixing common Credo issues.
Ensure consistent code style across the project.
Identify design issues and anti-patterns.
Improve code readability and maintainability.
Highlight refactoring opportunities.
Catch potential bugs and issues.
# Issue: Missing module documentation
defmodule MyModule do
end
# Fixed
@moduledoc """
This module handles user authentication.
"""
defmodule MyModule do
end
# Issue: High cyclomatic complexity
def complex_function(x) do
if x > 10 do
if x < 20 do
if rem(x, 2) == 0 do
:even_mid
else
:odd_mid
end
else
:high
end
else
:low
end
end
# Fixed: Extract to separate functions
def classify_number(x) do
case {x > 10, x < 20, rem(x, 2) == 0} do
{false, _, _} -> :low
{true, false, _} -> :high
{true, true, true} -> :even_mid
{true, true, false} -> :odd_mid
end
end
# Issue: Single pipe
list |> Enum.map(&(&1 * 2))
# Fixed
Enum.map(list, &(&1 * 2))
# Issue
def process({:ok, result}, _context) do
result
end
# Fixed: Prefix with underscore
def process({:ok, result}, _context) do
result
end