name: speckit-workflows.refactor description: Create a refactoring workflow with metrics tracking and behavior preservation validation. compatibility: Requires spec-kit project structure with .specify/ directory metadata: author: github-spec-kit source: templates/commands/workflows.refactor.md
Speckit Workflows.Refactor Skill
<!-- Extension: workflows --> <!-- Config: .specify/extensions/workflows/ -->The user input to you can be provided directly by the agent or as a command argument - you MUST consider it before proceeding with the prompt (if not empty).
User input:
$ARGUMENTS
The text the user typed after /speckit.workflows.refactor (or /speckit.refactor) in the triggering message is the refactoring description. Assume you always have it available in this conversation even if $ARGUMENTS appears literally below. Do not ask the user to repeat it unless they provided an empty command.
Given that refactoring description, do this:
-
Run the script
.specify/extensions/workflows/scripts/bash/create-refactor.sh --json "$ARGUMENTS"from repo root and parse its JSON output for REFACTOR_ID, BRANCH_NAME, REFACTOR_SPEC_FILE, TESTING_GAPS, METRICS_BEFORE, BEHAVIORAL_SNAPSHOT. All file paths must be absolute. IMPORTANT You must only ever run this script once. The JSON is provided in the terminal as output - always refer to it to get the actual content you're looking for. -
Load
.specify/extensions/workflows/templates/refactor/refactor-template.mdto understand required sections. -
Write the refactor spec to REFACTOR_SPEC_FILE using the template structure:
- Fill "Motivation" section with code smells and justification from description
- Fill "Proposed Improvement" with refactoring approach
- Identify files that will be affected
- Fill "Phase 0: Testing Gap Assessment" with initial assessment
- Leave baseline metrics sections empty (will be filled by measure-metrics.sh)
- Document behavior preservation requirements
- Assess risk level (High/Medium/Low)
-
Update TESTING_GAPS file with initial testing gap assessment:
- Identify code areas that will be modified during refactoring
- List files/functions/classes to be refactored
- Flag this as critical first step before baseline
- Provide guidance on assessing test coverage
-
Update BEHAVIORAL_SNAPSHOT file with key behaviors to preserve:
- Extract observable behaviors from description
- Document inputs and expected outputs
- Create verification checklist
-
Report completion with Next Steps:
Refactor workflow initialized
**Refactor ID**: [REFACTOR_ID]
**Branch**: [BRANCH_NAME]
**Refactor Spec**: [REFACTOR_SPEC_FILE]
**Testing Gaps**: [TESTING_GAPS]
**Behavioral Snapshot**: [BEHAVIORAL_SNAPSHOT]
**Next Steps:**
1. **CRITICAL FIRST STEP**: Complete testing gap assessment in [TESTING_GAPS]
- Identify all code that will be modified
- Assess test coverage for affected areas
- Add tests for critical gaps BEFORE capturing baseline
2. Review refactoring goals and behaviors to preserve
3. Once testing gaps are addressed, baseline metrics have been automatically captured
4. Run `/speckit.plan` to create refactoring plan
5. Run `/speckit.tasks` to break down into tasks
6. Run `/speckit.implement` to execute refactoring
**Reminder**: Behavior must not change - all tests must still pass
**NEW**: Testing gap assessment ensures adequate coverage exists to validate behavior preservation
Note: The script creates and checks out the new branch before writing files. Refactoring MUST follow test-first approach - all existing tests must pass before and after. NEW: Testing gaps must be assessed and critical gaps filled BEFORE baseline capture. Baseline metrics are automatically captured during workflow creation but should only be trusted after testing gaps are addressed.