
qa-refactoring
by vasilyu1983
SKILL.md
name: qa-refactoring description: "Safe refactoring for quality engineering: characterization tests, seam creation, incremental steps, contracts, and CI quality gates to preserve behavior while changing structure."
QA Refactoring Safety (Dec 2025) — Quick Reference
This skill provides execution-ready patterns for improving code quality and refactoring safely (preserve behavior, reduce risk, keep CI green).
Core references: Michael Feathers on characterization testing (https://michaelfeathers.silvrback.com/characterization-testing) and Martin Fowler’s Strangler Fig application pattern (https://martinfowler.com/bliki/StranglerFigApplication.html).
Core QA (Default)
Safe Refactor Loop (Behavior First)
- Baseline: tests green on main; reproduce the behavior you must preserve.
- Characterize: add characterization tests around current behavior before changing structure (Feathers: https://michaelfeathers.silvrback.com/characterization-testing).
- Create seams: introduce injection points/adapters to isolate dependencies.
- Refactor in small steps: one behavior-preserving change at a time, with CI staying green.
- Verify: run the smallest relevant suite locally, then full CI; monitor for regressions after merge.
Test Strategy for Refactors
- Prefer contract and integration tests around boundaries to preserve behavior.
- Use snapshots/golden masters only when:
- Output is stable and meaningful, and
- You have a plan to review diffs and prevent “approve everything”.
CI Economics and Debugging Ergonomics
- Keep refactor PRs small and reviewable; avoid refactor + feature in one PR.
- REQUIRED: failure artifacts for tests that guard refactors (logs/trace IDs, deterministic seeds).
Do / Avoid
Do:
- Add missing tests before refactoring high-risk areas.
- Add guardrails (linters, type checks, contract checks) so refactors don’t silently break interfaces.
Avoid:
- Combining large structural refactors with behavior changes.
- Using flaky E2E as the primary safety net for refactors.
Quick Reference
| Task | Tool/Pattern | Command/Approach | When to Use |
|---|---|---|---|
| Long method (>50 lines) | Extract Method | Split into smaller functions | Single method does too much |
| Large class (>300 lines) | Split Class | Create focused single-responsibility classes | God object doing too much |
| Duplicated code | Extract Function/Class | DRY principle | Same logic in multiple places |
| Complex conditionals | Replace Conditional with Polymorphism | Use inheritance/strategy pattern | Switch statements on type |
| Long parameter list | Introduce Parameter Object | Create DTO/config object | Functions with >3 parameters |
| Legacy code modernization | Characterization Tests + Strangler Fig | Write tests first, migrate incrementally | No tests, old codebase |
| Automated quality gates | ESLint, SonarQube, Prettier | npm run lint, CI/CD pipeline | Prevent quality regression |
| Technical debt tracking | SonarQube, CodeClimate | Debt ratio < 10% target | Prioritize refactoring work |
Decision Tree: Refactoring Strategy
Code issue: [Refactoring Scenario]
├─ Code Smells Detected?
│ ├─ Duplicated code? → Extract method/function
│ ├─ Long method (>50 lines)? → Extract smaller methods
│ ├─ Large class (>300 lines)? → Split into focused classes
│ ├─ Long parameter list? → Parameter object
│ └─ Feature envy? → Move method closer to data
│
├─ Legacy Code (No Tests)?
│ ├─ High risk? → Write characterization tests first
│ ├─ Large rewrite needed? → Strangler Fig (incremental migration)
│ ├─ Unknown behavior? → Characterization tests + small refactors
│ └─ Production system? → Canary deployments + monitoring
│
├─ Quality Standards?
│ ├─ New project? → Setup linter + formatter + quality gates
│ ├─ Existing project? → Add pre-commit hooks + CI checks
│ ├─ Complexity issues? → Set cyclomatic complexity limits (<10)
│ └─ Technical debt? → Track in register, 20% sprint capacity
When to Use This Skill
Use this skill when a user requests:
- Refactoring code to improve readability/maintainability
- Identifying and fixing code smells
- Managing technical debt
- Establishing code quality standards
- Setting up automated quality gates (linters, formatters)
- Modernizing legacy codebases
- Reducing code complexity
- Improving test coverage
- Code review automation
- Establishing refactoring strategies
Operational Deep Dives
Shared Foundation
- ../software-clean-code-standard/references/clean-code-standard.md - Canonical clean code rules (
CC-*) for citation - Legacy playbook: ../software-clean-code-standard/references/code-quality-operational-playbook.md -
RULE-01–RULE-13, decision trees, and operational procedures - ../software-clean-code-standard/references/refactoring-operational-checklist.md - Refactoring smell-to-action mapping, safe refactoring guardrails
- ../software-clean-code-standard/references/working-effectively-with-legacy-code-operational-checklist.md - Seams, characterization tests, incremental migration patterns
Skill-Specific
See references/operational-patterns.md for detailed refactoring catalogs, automated quality gates, technical debt playbooks, and legacy modernization steps.
Templates
See assets/ for copy-paste ready examples organized by domain:
Refactoring Process
Checklists and workflows for systematic code improvement:
- Refactoring Checklist - Refactor safety checklist (characterization tests + incremental steps)
- Code Review Quality Checklist - Quality-focused code review guide with SOLID principles
Technical Debt Tracking
Tools for managing and prioritizing technical debt:
- Technical Debt Register - Track and prioritize technical debt with impact/effort matrix
Quality Gates Configuration
Automated quality enforcement by tech stack:
JavaScript/TypeScript
- ESLint Configuration - Comprehensive linting setup with complexity rules, code smell prevention
Platform-Agnostic
- SonarQube Setup - Static analysis and quality gates for 20+ languages (Docker, Cloud, Server)
Resources
See references/ for deep-dive guides:
- Operational Patterns: references/operational-patterns.md - Core refactoring catalogs, quality gates, and legacy modernization
- Refactoring Catalog: references/refactoring-catalog.md
- Code Smells Guide: references/code-smells-guide.md
- Technical Debt Management: references/tech-debt-management.md
- Legacy Code Modernization: references/legacy-code-strategies.md
Optional: AI / Automation
Do:
- Use AI to propose mechanical refactors (rename/extract/move) only when you can prove behavior preservation via tests and contracts.
- Use AI to summarize diffs and risk hotspots; verify by running targeted characterization tests.
Avoid:
- Accepting refactors that change behavior without an explicit requirement and regression tests.
- Letting AI “fix tests” by weakening assertions to make CI green.
Navigation
Resources
- references/operational-patterns.md
- references/refactoring-catalog.md
- references/code-smells-guide.md
- references/tech-debt-management.md
- references/legacy-code-strategies.md
Templates
- assets/README.md
- assets/process/refactoring-checklist.md
- assets/process/code-review-quality.md
- assets/process/README.md
- assets/tracking/tech-debt-register.md
- assets/tracking/README.md
- assets/quality-gates/README.md
- assets/quality-gates/javascript/eslint-config.js
- assets/quality-gates/platform-agnostic/sonarqube-setup.md
Data
- data/sources.json — Curated external references
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です