Recommendation
Use GitHub Copilot inline suggestions to propose tiny refactors as you code, accept edits locally on a feature branch, and surface each suggested change as a draft PR created with the GitHub CLI or VS Code Git extension. Gate those draft PRs in CI with tests, lint, size limits, and a required human reviewer before merge.
Decision criteria
- Budget: Copilot (paid) gives best inline UX; if budget is tight, use Copilot chat or ChatGPT to craft patches instead.
- Skill level: automatic suggestions are great for junior devs and time savings, but require stricter gating for teams with mixed experience.
- Team size / stage: small teams can allow more aggressive Copilot-driven PRs; large orgs should run an opt-in pilot and require reviews.
- Output quality: allow only tiny, well-tested refactors (single-file, <~30 LOC) for automatic PR creation.
Best VS Code settings (practical)
- Enable inline suggestions so Copilot shows ghost text (less disruptive than the full panel). In settings, turn on Copilot inline/ghost text and editor.inlineSuggest.enabled.
- Keep auto-completion non-intrusive: set quickSuggestions to { "other": true, "comments": false, "strings": false } so suggestions appear for code but not inside comments/strings.
- Set suggestion acceptance to manual (Tab or Ctrl+Enter) so you review before applying.
- Install Copilot Labs / Copilot Chat for transformation prompts (extract method, rename) when you need bigger refactors.
- Use branch naming convention: copilot/refactor/ to identify automated suggestions.
Prompt patterns you can reuse
- Small, behavior-preserving refactor: "Refactor the function below to be more readable and shorter while preserving behavior and passing existing tests. Show only the updated file contents, not explanation."
- Extract helper: "Extract the highlighted block into a well-named helper method with a single-responsibility name and update callers."
- Minimal diff constraint: "Minimize diff size; prefer local helper extraction over large restructures. Keep changes under N lines."
- Add a unit test when behavior changes: "If behavior changes are required, add a minimal unit test that captures the intended behavior."
Use these in Copilot Chat or inline comments above the function to bias suggestions.
CI gating ideas (must-haves)
- Automatically run full test suite and linters on draft PRs.
- Enforce a max-diff size (e.g., <30 LOC or <3 files) using a lightweight CI script; fail CI if exceeded.
- Run static analysis (type checks, security scans).
- Add a “no-behavior-change” check: compare test coverage + run integration tests; for critical code, require golden-file or contract tests.
- Use branch protection: require at least one human review and passing CI before merge.
Practical checklist (apply per suggested refactor)
1. Create branch copilot/refactor/.
2. Ask Copilot to generate suggestion with explicit prompt.
3. Review suggestion locally; run tests.
4. Commit with structured message (copilot: refactor — short).
5. Create draft PR (gh pr create --draft --title "copilot: ").
6. CI runs tests, lint, size checks.
7. Wait for reviewer; annotate PR with reasoning and prompt used.
Best-for / Avoid-if
- Best for incremental cleanup: naming, small extractions, simplifying conditionals, replacing idioms.
- Avoid if: core algorithm logic, complex concurrency, security-sensitive code, or when you can’t afford behavioral risk.
If you want, I can: (a) give exact VS Code JSON settings to paste into settings.json, or (b) draft a small CI script (GitHub Actions) that enforces diff-size + tests.
Compare GitHub Copilot and Cursor