skills/tech-debt-analysis/SKILL.md
Analyzes technical debt in codebases, test suites, architecture, dependencies, and delivery workflows using observable signals. Use when auditing repository health, explaining slow delivery or flaky tests, prioritizing refactoring, or building an evidence-based remediation roadmap with risk, effort, and ROI. Use when user asks for technical debt analysis, repository audit, or refactor planning.
npx skillsauth add jaktestowac/awesome-copilot-for-testers tech-debt-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when a user needs to understand the technical debt in a codebase, test suite, architecture, or delivery process. It is designed for evidence-driven analysis that surfaces the real drivers of delivery drag, quality risk, and maintenance cost, rather than relying on intuition or vague impressions. The output is a structured report that prioritizes debt items based on severity, remediation risk, effort, and ROI, with actionable recommendations for next steps.
Use this skill when the user asks for things like:
Typical scenarios:
Follow these phases in order.
Before scanning the codebase, clarify:
If some information is missing, infer carefully and list assumptions explicitly.
Never start by assigning debt labels from instinct.
Read the repository context first:
Use ./resources/debt-taxonomy.md as the primary scanning lens.
When the target includes automated tests, also load ./resources/test-debt-catalogue.md.
Capture evidence such as:
If no evidence exists, record an assumption or unknown - not a debt item.
Each debt item should be specific and scoped.
For every candidate item, capture:
Avoid vague findings such as "the code is messy" or "tests need improvement." Each item should describe a distinct problem with a distinct consequence.
Use ./resources/prioritization-matrix.md for scoring.
Each meaningful item should be assessed using:
Then group items into practical buckets:
Do not treat all debt as equally urgent.
For the top-priority items, propose the safest realistic path:
Good remediation advice includes:
Prefer reversible steps unless the user explicitly asks for a larger redesign.
Use ./resources/technical-debt-report-template.md for the default deliverable.
Default output modes:
TECHNICAL_DEBT_REPORT.mdIf the user asks for an example of the target output, use ./resources/example-technical-debt-report.md.
Before delivering the report, verify:
Debt is often hiding when you see patterns like:
./resources/debt-taxonomy.md - analysis lenses, categories, and signal guide./resources/prioritization-matrix.md - scoring rubric and decision buckets./resources/technical-debt-report-template.md - standard report structure for debt audits./resources/example-technical-debt-report.md - example filled report./resources/test-debt-catalogue.md - focused anti-pattern catalogue for automated test suitescode-review-advanced - for reviewing a specific change instead of mapping broader debtstatic-code-analysis-typescript - when the main issue is linting, formatting, or TypeScript quality gatesrequirements-test-coverage-mapper - when the problem is coverage traceability rather than debt discoverytesting
Tests the customization assets themselves - skills, prompts, custom agents, instructions - the way a product is tested: activation cases that check an asset fires when it should and stays quiet when it should not, output-contract cases, safety cases, collision cases between assets competing for the same trigger, a weighted rubric scored blind, and a baseline-versus-candidate gate before an edit ships. Use when a skill is edited and nobody knows whether behaviour changed, when two skills fight over the same request, when a description is being tuned for discoverability, when a collection has grown past manual spot-checking, or when the request mentions skill evals, prompt regression, or "does this skill actually work".
development
Shapes QA output for the person who has to act on it: result and blocker in the first two lines, one decision per report, findings ordered by what they cost, the long artifact in a file and the decisions in the message, and magnitude stated in units the reader can count. Use when a report is accurate but nobody acts on it, when a finding set is too long to read under time pressure, when the same findings must be retold for a developer, a release manager, and an on-call engineer, or when the request mentions "too long", "make this readable", "just tell me what to do", "so what", or "summarize this for stakeholders". Pairs with unslop-answers, which makes the same report honest.
testing
Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk changes into a blocking finding. Use when a pull request needs a coverage gate that unrelated tests cannot satisfy, when total coverage looks healthy but the diff is untested, when wiring diff coverage into CI, or when someone claims a change is covered because the suite is green.
development
Cuts AI tells from test code: tests that pass without proving anything, tautological assertions, mock-only tests, hardcoded waits, coverage theater, vague names, swallowed errors, retries used as fixes. Use whenever test code is written, changed, or reviewed, including tests produced as a side effect of a feature task, and when the request mentions "review these tests", "are these tests any good", "this test always passes", "this suite is flaky", or "clean up these tests". Must always apply to test code.