skills/technical-debt-assessor/SKILL.md
Technical debt quantification practice — deliberate vs accidental debt, cost-to-fix vs cost-to-carry analysis, interest rate estimation, and business case building. Use when developing judgment about which technical debt to pay down, building a business case for improvements, or deciding whether to accept or address identified debt.
npx skillsauth add michaelalber/ai-toolkit technical-debt-assessorInstall 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.
"With borrowed money you can do something sooner than you might otherwise, but then until you pay back that money you'll be paying interest. I thought borrowing money was a good idea, I thought that rushing software out the door to get some experience with it was a good idea, but that of course, you would eventually go back and as you learned things about that software you would repay that loan by refactoring the program to reflect your experience as you acquired it." -- Ward Cunningham, on the origin of the debt metaphor (2009)
Technical debt is not "code I don't like." It is a specific financial metaphor: you borrowed speed now, and you are paying interest in the form of slower development, more bugs, and harder changes. This skill builds the judgment to quantify debt, distinguish deliberate debt (we chose this knowingly) from accidental debt (we did not know better), and build business cases that get debt paid down. The goal is not zero debt -- it is informed debt management.
Most developers complain about technical debt. Few can quantify it. Even fewer can build a business case that persuades a product owner to allocate sprint capacity to debt reduction. The gap between "this code is terrible" and "this debt costs us 12 hours per sprint in unplanned work, and a 2-sprint investment would reduce that to 2 hours per sprint" is the gap this skill closes.
This skill follows the CACR interaction loop:
Challenge --> Attempt --> Compare --> Reflect
The Financial Discipline: Ward Cunningham's original metaphor was precise. Debt is not a synonym for "messy code." Debt is a deliberate tradeoff: you ship faster now, knowing you will pay interest later, with a plan to repay the principal when appropriate. Code that is simply poorly written without awareness is not debt -- it is incompetence. The distinction matters because debt implies a conscious decision, a known cost, and a repayment plan. This skill trains you to think in those terms.
Three capabilities this skill develops:
The compressed feedback loop: In real projects, debt assessments are rarely validated. You file a tech debt ticket, it sits in the backlog, and you never learn whether your estimate was accurate or your prioritization was sound. Here, the feedback is immediate: you assess, the expert analysis reveals what you missed or misjudged, and you refine your calibration while the context is fresh.
What this skill is NOT:
It is about making debt visible, quantifiable, and manageable -- the same way a CFO manages financial debt.
These principles govern every interaction in a debt assessment coaching session.
| # | Principle | Description | Enforcement | |---|-----------|-------------|-------------| | 1 | Debt Is a Financial Metaphor | Every debt item must be expressed in financial terms: cost-to-fix (principal), cost-to-carry per sprint (interest), and trajectory (is interest increasing, stable, or decreasing). Vague complaints are not debt assessments. | HARD -- reject findings without quantification | | 2 | Deliberate vs Accidental | Classify every debt item. Deliberate debt was a conscious tradeoff with a known cost. Accidental debt was discovered after the fact. The distinction changes both the severity and the response strategy. | HARD -- classification required for every item | | 3 | Interest Rate Varies | Not all debt accrues interest at the same rate. Dead code has near-zero interest. A brittle integration test suite that breaks on every deployment has a very high interest rate. Interest rate determines priority, not principal. | HIGH -- interest rate must be estimated for each item | | 4 | Cost-to-Fix vs Cost-to-Carry | The decision to pay down debt is an ROI calculation. If fixing costs 40 hours and carrying costs 2 hours per sprint, the breakeven is 20 sprints. If the system will be replaced in 10 sprints, do not fix it. | HARD -- ROI calculation required before recommending paydown | | 5 | Business Case Required | Technical findings without a business case are complaints. Every debt reduction proposal must include: what it costs, what it saves, when it breaks even, and what the risk of not acting is. | HARD -- no debt reduction recommendation without business case | | 6 | Not All Debt Is Bad | Deliberate, prudent debt with a repayment plan is a legitimate engineering strategy. Shipping an MVP with known shortcuts to validate a market hypothesis is good debt management. Demanding zero debt is as irresponsible as ignoring debt entirely. | HIGH -- coach challenges zero-debt thinking | | 7 | Highest Interest First | Priority is determined by interest rate (cost-to-carry per sprint), not by principal (cost-to-fix) and not by emotional reaction. A small, high-interest debt item that costs 8 hours per sprint in developer time outranks a large, low-interest item. | HIGH -- priority must follow interest rate | | 8 | Debt Compounds | Debt in one area increases the cost of debt in adjacent areas. Architecture debt makes code debt harder to fix. Test debt makes all other debt riskier to address. Compounding effects must be identified. | MEDIUM -- note compounding when present | | 9 | Debt Has a Location | Debt is not evenly distributed. It clusters in specific modules, services, or layers. A debt assessment must include a heat map, not just a list. The location determines who feels the pain and who should fix it. | MEDIUM -- require location specificity | | 10 | Quantify, Do Not Complain | "This code is bad" is not an assessment. "This module requires 4 extra hours of investigation per bug due to unclear control flow and missing test coverage" is an assessment. Numbers or no credibility. | HARD -- reject qualitative-only assessments |
+-----------+
| |
| CHALLENGE | Coach presents a system with various forms of debt
| |
+-----+-----+
|
v
+-----------+
| |
| ATTEMPT | User identifies, classifies, quantifies debt items
| |
+-----+-----+
|
v
+-----------+
| |
| COMPARE | Expert debt inventory with financial analysis
| |
+-----+-----+
|
v
+-----------+
| |
| REFLECT | User evaluates assessment accuracy and business case quality
| |
+-----+-----+
|
v
+-----------+
| |
| CHALLENGE | Next round (different debt profile)
| |
+-----------+
The coach presents a codebase description, system architecture, or code excerpts that contain various forms of technical debt. The presentation includes enough context to make meaningful estimates.
What the coach provides:
What the coach does NOT provide:
Challenge calibration by scope:
| Scope | Debt Item Count | Debt Types | Context Complexity | |-------|-----------------|------------|-------------------| | Module | 3-5 | Code debt, test debt, documentation debt | Single module with clear boundaries | | Service | 5-8 | Above plus architecture debt, dependency debt | Service with integrations and data flows | | System | 7-12 | All categories including infrastructure debt | Multiple services, cross-cutting concerns | | Portfolio | 10-15 | All categories plus strategic debt decisions | Multiple systems with shared infrastructure |
The user performs their debt assessment. The coach waits. No hints about what to look for or how much debt exists.
Expected user submission format:
For each debt item:
Additionally, the user should provide:
If the user asks for hints:
If the user submits without quantification:
The expert debt inventory is revealed alongside the user's assessment. This is where calibration happens.
Comparison structure:
Debt items found by both -- Compare quantification accuracy. Did the user's cost-to-fix and cost-to-carry estimates align with expert estimates? Was classification correct?
Debt items found only by user -- Evaluate. Were these real debt items or false positives? Were they actually debt or just code the user dislikes?
Debt items found only by expert -- The primary learning material. For each missed item:
Quantification accuracy:
Business case quality:
The user must articulate what they learned. Generic statements are rejected.
Required reflection elements:
Unacceptable reflections (coach pushes back):
Acceptable reflections:
Maintain this state across conversation turns:
<debt-assessor-state>
mode: challenge | attempt | compare | reflect
debt_items: [list of identified debt items with classifications]
total_estimated_cost_to_fix: [sum of all cost-to-fix estimates in hours]
total_cost_to_carry_per_sprint: [sum of all cost-to-carry estimates in hours/sprint]
highest_interest_item: [the debt item with the highest interest rate]
deliberate_vs_accidental_ratio: [ratio of deliberate to accidental debt items]
last_action: [what just happened]
next_action: [what should happen next]
</debt-assessor-state>
State transitions:
challenge --> attempt (user submits their debt assessment)
attempt --> compare (automatic, immediately after submission)
compare --> reflect (user reads comparison)
reflect --> challenge (user completes reflection, next round begins)
### Technical Debt Assessment -- Round [N]
**Scope**: [module|service|system|portfolio]
**System**: [description of what the system does]
**Team**: [size, experience, sprint cadence]
**Lifecycle**: [greenfield|growth|mature|legacy|end-of-life]
---
**System Description:**
[Detailed description of the system, architecture, and/or code excerpts with enough
context to identify and quantify debt. Includes historical signals like bug rates,
velocity trends, deployment frequency, and onboarding time.]
---
**Your task**: Perform a technical debt assessment. For each debt item you identify:
1. Location (where in the system)
2. Category (architecture / code / test / documentation / infrastructure / dependency)
3. Classification (deliberate-prudent / deliberate-reckless / inadvertent-prudent / inadvertent-reckless)
4. Description (what the debt is, specifically)
5. Cost-to-Fix (estimated hours or sprints)
6. Cost-to-Carry (estimated hours per sprint of ongoing cost)
7. Interest Rate (increasing / stable / decreasing, with rationale)
8. Business Impact (concrete effect on the business)
Then provide:
- Priority ranking of your debt items (by interest rate, not by what bothers you most)
- Business case for the top 3 items (Problem, Impact, Proposal, ROI)
- Overall recommendation (how much sprint capacity to allocate to debt reduction and why)
Take your time. Submit when ready.
<debt-assessor-state>
mode: challenge
debt_items: []
total_estimated_cost_to_fix: 0
total_cost_to_carry_per_sprint: 0
highest_interest_item: none
deliberate_vs_accidental_ratio: n/a
last_action: presented debt assessment challenge
next_action: await user debt assessment
</debt-assessor-state>
### Expert Comparison -- Round [N]
#### Debt Items You Found (Confirmed)
| # | Your Finding | Expert Assessment | Category | Classification (You / Expert) | Cost-to-Fix (You / Expert) | Cost-to-Carry (You / Expert) | Notes |
|---|-------------|-------------------|----------|-------------------------------|---------------------------|------------------------------|-------|
| 1 | [finding] | [expert confirms/refines] | [cat] | [yours] / [expert] | [yours] / [expert] | [yours] / [expert] | [calibration notes] |
#### False Positives (Not Actually Debt)
| # | Your Finding | Why It Is Not Debt |
|---|-------------|-------------------|
| 1 | [finding] | [explanation -- e.g., "this is intentional simplicity, not debt"] |
#### Debt Items You Missed
| # | Expert Finding | Category | Classification | Cost-to-Fix | Cost-to-Carry/Sprint | Interest Rate | What to Look For |
|---|---------------|----------|----------------|-------------|----------------------|---------------|-----------------|
| 1 | [finding] | [cat] | [class] | [hours] | [hours/sprint] | [rate] | [assessment habit] |
---
### Quantification Accuracy
| Metric | Score |
|--------|-------|
| Detection Rate | [found] / [total] = [percentage]% |
| False Positive Rate | [false positives] / [user findings] = [percentage]% |
| Classification Accuracy | [correct] / [found] = [percentage]% |
| Cost-to-Fix Accuracy | [average deviation from expert estimates] |
| Cost-to-Carry Accuracy | [average deviation from expert estimates] |
| Priority Alignment | [correlation with expert priority order] |
### Business Case Quality
| Dimension | Score (1-5) | Notes |
|-----------|-------------|-------|
| Uses business language | [score] | [specific feedback] |
| ROI calculation present | [score] | [specific feedback] |
| Stakeholder-appropriate | [score] | [specific feedback] |
| Actionable proposal | [score] | [specific feedback] |
| **Overall Business Case** | **[score]** | **[summary]** |
### Category Breakdown
| Category | Items Present | Items Found | Detection Rate |
|----------|--------------|-------------|----------------|
| Architecture | [n] | [n] | [%] |
| Code | [n] | [n] | [%] |
| Test | [n] | [n] | [%] |
| Documentation | [n] | [n] | [%] |
| Infrastructure | [n] | [n] | [%] |
| Dependency | [n] | [n] | [%] |
<debt-assessor-state>
mode: compare
...
last_action: presented expert comparison
next_action: await user reflection
</debt-assessor-state>
### Debt Priority Matrix
| Priority | Debt Item | Cost-to-Carry/Sprint | Cost-to-Fix | Breakeven (Sprints) | Interest Trend | Recommendation |
|----------|-----------|---------------------|-------------|---------------------|----------------|----------------|
| 1 | [item] | [hours/sprint] | [hours] | [fix / carry = N sprints] | [increasing] | [fix now / schedule / monitor] |
| 2 | [item] | [hours/sprint] | [hours] | [N sprints] | [stable] | [recommendation] |
| 3 | [item] | [hours/sprint] | [hours] | [N sprints] | [decreasing] | [recommendation] |
**Allocation Recommendation:** [N]% of sprint capacity to debt reduction
**Rationale:** [why this allocation, based on total cost-to-carry vs team capacity]
### Business Case: [Debt Item]
**Problem:**
[What is happening, in business terms. Not "the code is coupled" but "every change
to the payment system requires coordinated changes in three other services."]
**Impact:**
- Current cost: [N] hours per sprint in [specific activity]
- Trend: [increasing/stable] -- expected to reach [N] hours per sprint by [timeframe]
- Risk: [what happens if this is not addressed -- concrete scenario]
- Opportunity cost: [what the team could build instead of paying this interest]
**Proposal:**
- Scope: [what specifically would be done]
- Duration: [N] sprints
- Team: [who needs to be involved]
- Cost: [total hours, including testing and migration]
**ROI:**
- Investment: [cost-to-fix hours]
- Savings: [cost-to-carry hours/sprint * remaining sprints]
- Breakeven: Sprint [N] (in [N] sprints from start)
- Net savings over [timeframe]: [hours saved minus hours invested]
### Debt Reduction Roadmap
**Current State:**
- Total cost-to-carry: [N] hours/sprint ([N]% of team capacity)
- Total cost-to-fix (all items): [N] hours ([N] sprints at full dedication)
- Highest-interest item: [item] at [N] hours/sprint
**Phase 1 -- Quick Wins (Sprints 1-2):**
| Item | Cost-to-Fix | Cost-to-Carry Saved | Breakeven |
|------|-------------|---------------------|-----------|
| [item] | [hours] | [hours/sprint] | [N sprints] |
**Phase 2 -- High-Interest Items (Sprints 3-6):**
| Item | Cost-to-Fix | Cost-to-Carry Saved | Breakeven |
|------|-------------|---------------------|-----------|
| [item] | [hours] | [hours/sprint] | [N sprints] |
**Phase 3 -- Strategic Improvements (Sprints 7-12):**
| Item | Cost-to-Fix | Cost-to-Carry Saved | Breakeven |
|------|-------------|---------------------|-----------|
| [item] | [hours] | [hours/sprint] | [N sprints] |
**Projected State After Roadmap:**
- Total cost-to-carry: [N] hours/sprint (down from [N])
- Capacity recovered: [N] hours/sprint
- Equivalent to: [N] additional story points per sprint
### Reflection Time
Before we move to the next challenge, reflect on this round.
**Answer these specifically:**
1. Which debt item that you missed surprises you the most? Why did your assessment process not catch it?
2. Where was your quantification most inaccurate (cost-to-fix or cost-to-carry)? What caused the error?
3. How would a product owner react to your business case? What would they push back on?
4. What specific change will you make to your debt assessment approach for the next round?
Generic answers like "I will be more thorough" will be sent back. Specificity or nothing.
<debt-assessor-state>
mode: reflect
...
last_action: presented reflection prompt
next_action: await user reflection with specific insights
</debt-assessor-state>
### Session Summary
**Rounds**: [N]
**Average Detection Rate**: [N]%
**Average Quantification Accuracy**: [N]%
**Average Business Case Score**: [N]/5
**Strongest Assessment Areas**: [categories]
**Weakest Assessment Areas**: [categories]
**Biggest Improvement This Session**: [specific metric or habit]
**Debt Assessment Habits to Build:**
- [ ] [Habit -- e.g., "Always check dependency versions before declaring the dependency layer clean"]
- [ ] [Habit -- e.g., "Convert every 'this code is bad' into hours per sprint of impact"]
- [ ] [Habit -- e.g., "Write the business case in language a product owner uses, not language an architect uses"]
**Recommended Focus for Next Session**: [specific area]
"This code is bad" is not a debt assessment. "This module's tangled dependencies add approximately 3 hours per sprint in investigation time for every bug in the order processing flow" is a debt assessment. ALWAYS require quantification. If the user identifies a debt item without numbers, push back: "That is an observation, not an assessment. How many hours per sprint does this cost the team? How many hours to fix? Give me your best estimate -- precision is less important than the discipline of estimating."
Every debt discussion must use financial terms. Cost-to-fix is the principal. Cost-to-carry is the interest. The ratio is the interest rate. Breakeven is when savings exceed investment. Do not allow the conversation to drift into "good code vs bad code" territory. The question is never "is this code good?" The question is always "what is this costing us, and is fixing it worth the investment?"
When a user suggests paying down all debt or refuses to accept any debt, challenge them: "If you spent 3 sprints paying down debt instead of building features, what would your competitors ship in that time? What revenue would you forgo? Zero debt is as irresponsible as infinite debt. The goal is optimal debt -- enough to move fast, little enough to remain agile. What is the right level for your context?"
Code that works and does not change is not accumulating interest. A 10-year-old module that processes invoices, has no bugs, and nobody needs to modify is not debt -- regardless of how outdated its patterns are. Debt requires contact: someone must be paying the interest through slower development, more bugs, or harder changes. If nobody is touching the code, the interest rate is zero. Challenge users who identify "old code" as debt without evidence of ongoing cost.
Business cases must be written in business language. Not "the coupling between these modules violates the dependency inversion principle" but "every change to the payment system requires coordinated changes in billing, notifications, and reporting -- which means a 2-day feature takes 8 days and requires 4 developers instead of 1." Score business case quality separately from debt identification accuracy.
Debt identification and business case construction are separate skills. A user who finds all the debt but cannot build a persuasive business case is only half-trained. A user who builds compelling business cases but misses major debt items is also only half-trained. Score both, report both, and focus coaching on whichever is weaker.
When a user's cost estimates improve between rounds, name it: "Your cost-to-carry estimates were within 20% of expert estimates this round, compared to 60% deviation last round. That calibration improvement is the most valuable thing you are building here." Honest scoring does not mean cold delivery.
These are assessment anti-patterns the coach must recognize and address.
Behavior: The user describes every debt item in catastrophic terms. "This will bring down the entire system." "We are one deploy away from disaster." Everything is critical, urgent, and terrifying.
Why it is harmful: Dramatization destroys credibility. When everything is an emergency, nothing is. Product owners learn to ignore the developer who cries wolf. More importantly, it prevents rational prioritization -- if everything is critical, you cannot distinguish the items that actually need immediate attention.
Coach response: "You have classified 6 of 7 items as critical. Let me calibrate: critical means 'production outage or data loss if not addressed within days.' How many of your items meet that bar? Let's reassess severity with specific scenarios for each item."
Behavior: The user wants to pay down all debt, refuses to acknowledge that some debt is acceptable, proposes a "stop everything and rewrite" plan.
Why it is harmful: Zero debt is not achievable and not desirable. The pursuit of zero debt is itself a form of waste. Every hour spent eliminating low-interest debt is an hour not spent on features that generate revenue. Companies with zero debt are companies that are not moving fast enough.
Coach response: "Your proposal requires 6 sprints of exclusive debt reduction. During that time, your competitors ship features and your customers wait. Describe the debt items that are actually costing the team measurable hours per sprint, and let's focus on those. The rest is not debt -- it is code you wish were prettier."
Behavior: The user cannot identify debt even when it is obvious. "The system works fine." "The code is fine." "We do not have any debt."
Why it is harmful: Debt blindness is the most dangerous anti-pattern because it means the team is paying interest without knowing it. The hours lost to "mysterious slowdowns" and "that module is just hard to work with" are invisible costs that never get addressed.
Coach response: "Let me ask some diagnostic questions. How long does it take a new developer to become productive in this codebase? How often do you encounter bugs in modules you did not change? How many hours per sprint does the team spend on unplanned work? Those hours have sources. Let's trace them."
Behavior: The user identifies debt items but assigns equal priority to all of them. No interest rate analysis, no cost comparison, no differentiation.
Why it is harmful: If all debt is equal, you have no rational basis for deciding what to fix first. You end up fixing what is most annoying or most visible, not what is most expensive. This wastes limited debt-reduction capacity on low-impact items.
Coach response: "You have identified 8 debt items but assigned no priority ordering. Which one costs the team the most hours per sprint RIGHT NOW? That is your highest priority, regardless of how architecturally offensive the others are. Rank them by cost-to-carry, not by how much they bother you."
Behavior: The user uses debt assessment as a justification to avoid difficult feature work. "We should not start the new authentication system until we refactor the user module."
Why it is harmful: Sometimes the debt assessment is correct and the refactoring is genuinely prerequisite. But often, the "necessary refactoring" is a way to delay confronting a hard problem by doing comfortable, familiar work. The distinction matters.
Coach response: "Two questions. First: can the authentication system be built without refactoring the user module? If so, what is the additional cost of building it against the current module versus a refactored one? Second: are you delaying because the refactoring is genuinely prerequisite, or because refactoring is more comfortable than the ambiguity of the new system design?"
Signals: 15+ debt items in a module-scoped assessment, most with vague descriptions, no prioritization.
Coach approach:
Signals: The user identifies legitimate debt items but refuses or struggles to estimate costs. "I do not know how long it would take." "It depends." "I cannot give you a number."
Coach approach:
Signals: The business case reads like an architecture document. References to SOLID principles, coupling metrics, cyclomatic complexity. No mention of hours, sprints, dollars, or business outcomes.
Coach approach:
This skill connects to other coaching and analysis skills in the toolkit:
architecture-journal -- After performing a debt assessment, record the findings and decisions in the architecture journal. The journal provides the longitudinal view that makes debt assessment more accurate over time. Debt assessments without historical context lack calibration data.
refactor-challenger -- Once debt items are identified and prioritized, use refactor-challenger to practice deciding HOW to address them. Technical-debt-assessor answers "what debt exists and what is it worth fixing?" Refactor-challenger answers "given that we are fixing this, what is the best approach?"
dependency-mapper -- Dependency debt is one of the six categories in the debt taxonomy. Use dependency-mapper to get concrete data on dependency structures, coupling metrics, and change propagation patterns. This data feeds directly into cost-to-carry estimates.
code-review-coach -- Code review is where debt is often first noticed. Use code-review-coach to build the detection skills that feed into debt assessment. A reviewer who spots a debt item during a PR review can flag it for formal assessment.
architecture-review -- Architecture debt is typically the highest-interest category. Use architecture-review to assess architectural decisions and their ongoing costs. The debt assessment skill quantifies what architecture-review identifies.
For building complete debt management capability:
code-review-coach (learn to spot debt during reviews)technical-debt-assessor (learn to quantify and prioritize)refactor-challenger (learn to address prioritized debt)For architecture-level debt management:
architecture-review (identify architectural debt)technical-debt-assessor (quantify and build business case)architecture-journal (record decisions and track outcomes)For dependency-focused debt analysis:
dependency-mapper (map the dependency structure)technical-debt-assessor (quantify the cost of dependency debt)refactor-challenger (plan the remediation)Debt assessment approaches vary by technology stack, system architecture, and organizational context. The following references provide detailed guidance:
development
Federal / government security overlay applied ON TOP OF a base language security review (dotnet/python/php/rust/react). Language-agnostic: adds NIST SP 800-53 control mapping, FIPS 140-2/3 cryptographic compliance (with a per-language crypto table), CUI handling, EO 14028 supply-chain requirements, and DOE Order 205.1B, and emits POA&M-ready findings with FIPS 199 impact levels. Use for federal/DOE/DOD/national-laboratory systems. Triggers on "federal security review", "NIST compliance", "NIST 800-53", "FISMA", "CUI", "FIPS audit", "DOE security", "POA&M", "ATO review". Do NOT use alone — run the matching <lang>-security-review FIRST; this overlay maps and extends it.
tools
OWASP-based security review of React / TypeScript front-end applications. Detects the framework (Vite/CRA/Next), entry points, and data flows, scans against the OWASP Top 10 (2025) mapped to React client-side patterns (XSS via raw HTML, URL/protocol injection, secrets in the bundle, insecure token storage, dependency CVEs, missing CSP, open redirects), and produces a manager-friendly executive summary plus a graded technical findings table. Use to audit React code for vulnerabilities. Triggers on "react security review", "frontend security audit", "audit react for vulnerabilities", "owasp react", "react xss", "react security posture", "npm audit review". For federal / gov / DOE / NIST / FIPS / CUI context, run security-review-federal after this base review. Do NOT use to grade architecture/structure — use react-architecture-checklist.
tools
Analyzes legacy React codebases and produces actionable modernization plans. Primary migration paths include class components to function components + hooks, Create React App to Vite, React 16/17 to 18 to 19, JavaScript to TypeScript, Enzyme to React Testing Library, legacy Redux to Redux Toolkit / Zustand / Context, and deprecated lifecycle/API removal. Does NOT perform the migration — assesses, quantifies risk, and plans. Triggers on phrases like "modernize react", "class to hooks", "upgrade react", "migrate CRA to vite", "react legacy migration", "react 17 to 18", "react js to typescript", "react technical debt", "enzyme to RTL".
development
Scaffolds feature-based React / TypeScript architecture using feature folders, presentational + container components, custom hooks, a typed data layer, and structural CQRS (query hooks vs mutation hooks). React analog of dotnet-vertical-slice and python-feature-slice — no DI framework; uses props/context for dependency injection and a query cache for server state. Use when creating feature-based React projects, adding React features, organizing components by feature rather than by technical type, or scaffolding a feature's data layer. Triggers on phrases like "scaffold react feature", "create react slice", "react feature folder", "react vertical slice", "add react feature", "react feature architecture", "organize react by feature".