Agent skill

phx:techdebt

Analyze Elixir/Phoenix technical debt — duplicates, refactoring opportunities, credo issues. Use when asked about code quality, cleanup, or what to improve.

Stars 252
Forks 17

Install this agent skill to your Project

npx add-skill https://github.com/oliver-kriska/claude-elixir-phoenix/tree/main/plugins/elixir-phoenix/skills/techdebt

SKILL.md

Technical Debt Detection

Find and eliminate duplicate code patterns, anti-patterns, and refactoring opportunities in Elixir/Phoenix projects.

Iron Laws - Never Violate These

  1. Search before refactoring - Understand full scope of duplication before extracting
  2. Three strikes rule - Extract shared code only after 3+ duplications
  3. Prefer composition - Use behaviours and protocols over inheritance-style abstractions
  4. Test coverage first - Ensure tests exist before refactoring duplicated code

Analysis Checklist

1. Run Credo for Automated Detection

Run mix credo --strict.

Focus on:

  • Design issues (duplication, complexity)
  • Consistency issues (naming, patterns)
  • Refactoring opportunities

2. Find Duplicate Ecto Query Patterns

Use Grep to search for repeated Repo calls (Repo.get!, Repo.get, Repo.one) in lib/**/*.ex. Use Grep to find duplicate query patterns (from.*in.*where) in lib/**/*.ex.

3. Find Duplicate Validation Logic

Use Grep with output_mode: "count" to count def changeset occurrences in lib/**/*.ex. Use Grep to find repeated validations (validate_required, validate_format) in lib/**/*.ex.

4. Find Copy-Pasted Controller Actions

Use Grep to find similar action patterns (def create, def update, def delete) in lib/*_web/**/*.ex.

Common Duplication Patterns

Pattern Symptom Solution
Repeated queries Same Repo.get in multiple contexts Create shared query module
Duplicate validations Same validate_* calls Extract to shared changeset
Similar controllers Copy-pasted CRUD actions Use Phoenix generators consistently
Repeated transforms Same Enum.map patterns Extract to domain module

Reporting Format

For each duplication found, report:

  1. Location: File paths and line numbers
  2. Pattern: What code is duplicated
  3. Extraction: Suggested shared function/module
  4. Effort: Low/Medium/High to fix

Usage

Run /phx:techdebt to analyze the codebase and generate a prioritized report of technical debt with specific remediation steps.

Expand your agent's capabilities with these related and highly-rated skills.

oliver-kriska/claude-elixir-phoenix

lab:autoresearch

Self-improving loop for plugin skills. Reads program.md, proposes one mutation per iteration, evaluates against deterministic scorer, keeps improvements via git, reverts failures. Targets weakest skill+dimension. Use with /loop for overnight runs.

252 17
Explore
oliver-kriska/claude-elixir-phoenix

promote

Generate X/Twitter release promotion posts with ASCII tables and CodeSnap rendering. Use when writing release posts, promotion tweets, plugin announcements, or preparing social media content for new versions.

252 17
Explore
oliver-kriska/claude-elixir-phoenix

skill-monitor

Analyze skill effectiveness across sessions. Computes per-skill metrics (action rate, friction, outcomes), identifies degrading skills, and generates improvement recommendations. Requires session-scan data in metrics.jsonl.

252 17
Explore
oliver-kriska/claude-elixir-phoenix

session-trends

Analyze trends across session metrics. Computes windowed aggregates, deltas, and compares against MEMORY.md findings. Use periodically for progress tracking.

252 17
Explore
oliver-kriska/claude-elixir-phoenix

cc-changelog

CONTRIBUTOR TOOL - Track CC changelog, extract new versions since last check, analyze impact on plugin (breaking changes, opportunities, deprecations). Run periodically or before releases. NOT part of the distributed plugin.

252 17
Explore
oliver-kriska/claude-elixir-phoenix

session-scan

Compute metrics for Claude Code sessions. Discovers via ccrider, filters trivial, computes friction/opportunity/fingerprint scores. Use for broad session triage.

252 17
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results