SkillVaultskills Browse all 500 skills

Code Quality · Version 1.5.0 · Reviewed 2026-08-02

Dependency Injection Reviewer

Make a defensible decision about lifetime correctness and composition root design with evidence, explicit trade-offs, and a verification plan.

4 method steps 5 documented failure modes 4 diagnostic checks 7 quality gates

Reviews composition roots, lifetimes, and boundaries so wiring stays testable without becoming indirection.

₹99 one-time

Get this skill archive

What this skill helps you do

  • Lifetime correctness
  • Composition root design
  • Testability

How Dependency Injection Reviewer works

You provide

The code, its invariants, and how failures currently surface

It inspects

Error paths and lifetime handling for lifetime correctness

It decides

A composition root design change that makes invalid states unrepresentable

You verify

A deliberately invalid input fails clearly at the boundary

What it checks first

Dependency Injection Reviewer reviews composition roots, lifetimes, and boundaries so wiring stays testable without becoming indirection. Use it when the work involves Lifetime correctness, Composition root design, Testability.

  1. Whether errors are handled where they can be resolved or merely passed upward with less context.
  2. Whether types make invalid states unrepresentable or merely document intent.
  3. Ownership and lifetime of resources, and whether every path releases what it acquired.
  4. Whether abstractions hide complexity or relocate it somewhere harder to inspect.

Failure modes it recognizes

  • A caught exception logged and swallowed, allowing execution to continue with invalid state.
  • Error types collapsed into a single generic type, losing the ability to handle cases differently.
  • Nullable fields encoding several distinct meanings, forcing every caller to guess.
  • A helper abstraction with one caller, which adds indirection without removing duplication.
  • Silent coercion masking a type mismatch until it surfaces as corrupt data.

Answers it will reject

  • Rewriting for elegance without a behavioral test suite, which converts known code into unknown risk.
  • Adding a lint rule to enforce a pattern nobody has justified.
  • Treating warnings as noise, which trains the team to ignore the one that matters.

Decision rules it applies

  • Fail fast on invalid state rather than continuing with a defaulted value.
  • Encode invariants in types and constraints where the language allows it.
  • Prefer local clarity over global cleverness; the reader is the constraint.

Evidence it asks for

  • Confirm each error path is exercised by a test rather than assumed correct.
  • Check that a deliberately invalid input produces a clear failure at the boundary.
  • Compare behavior before and after refactoring with characterization tests.

The method inside

  1. Map the artifact, actors, boundaries, and invariants relevant to lifetime correctness.
  2. Trace concrete failure or abuse paths for composition root design; do not report checklist items without a mechanism.
  3. Prioritize testability findings by impact, likelihood, confidence, and cost of correction.
  4. Recommend the smallest defensible change, then define how an independent reviewer can verify it.

Deliverables

  • Lifetime correctness assessment
  • Composition root design decision and action plan
  • Testability verification checklist

Evidence requirements

  • Functional and quality requirements
  • Scale, latency, consistency, cost, and compliance constraints
  • Current topology and alternatives considered

Quality gates

  • Every material claim traces to supplied evidence or is labeled as a hypothesis.
  • The response follows the declared deliverable contract.
  • No execution, access, measurement, or verification is invented.
  • Secrets and personal data are redacted rather than repeated.
  • The user receives a concrete independent verification step.
  • The relevant failure modes in this domain were considered rather than only the reported symptom.
  • No listed anti-pattern was recommended as a solution.

Example task

Input

Our service occasionally serves one tenant data belonging to another and we suspect the dependency container.

Expected output

That symptom fits a lifetime mismatch: a request-scoped tenant context captured by a singleton, so the first request pins the value for every subsequent one. Audit every singleton for captured scoped dependencies before looking anywhere else...

Boundaries and compatibility

Ideal for

  • Lifetime correctness: produce a decision or artifact grounded in supplied evidence.
  • Composition root design: produce a decision or artifact grounded in supplied evidence.
  • Testability: produce a decision or artifact grounded in supplied evidence.

Out of scope

  • Producing a generic reference architecture without requirements
  • Hiding material trade-offs behind best-practice language

Agent compatibility

  • GitHub Copilot custom agents
  • Claude Agent Skills / SKILL.md
  • Any instruction-following chat model

Tool policy: Advisory by default. No tools are assumed. If the host provides tools, use read-only evidence gathering unless the user explicitly approves a scoped write or execution action.