grace-refactor
Refactor a GRACE project without letting architecture or verification drift.
When to Use
- rename a module, file, symbol, or path
- split one module into multiple modules
- merge tightly coupled modules
- extract helpers or adapters into a new module
- move code across layers while preserving behavior
- tighten an interface or dependency surface with explicit approval
Do not use this skill for greenfield implementation. Use $grace-plan, $grace-execute, or $grace-multiagent-execute for new work.
Prerequisites
docs/development-plan.xmlmust existdocs/knowledge-graph.xmlmust existdocs/verification-plan.xmlshould exist- if the refactor introduces new modules, removes modules, or changes contract behavior, stop and get explicit user approval before editing code
- if
docs/operational-packets.xmlexists, use its canonical packet and delta shapes
Core Principle
A GRACE refactor is not just a code move.
It is an atomic migration across:
- source files
- test files
- semantic markup
docs/development-plan.xmldocs/knowledge-graph.xmldocs/verification-plan.xml
The refactor is not done until all six agree again.
Process
Step 1: Classify the Refactor
Identify the exact refactor type:
renamemovesplitmergeextractinterface-tightenpath-only
For the requested change, capture:
- source module IDs and file paths
- target module IDs and file paths
- behavior that must remain invariant
- approved contract changes, if any
- likely graph and verification fallout
If the change affects behavior, public contracts, or architecture boundaries, present the planned deltas and wait for approval.
Step 2: Build a Refactor Packet
Before editing, prepare a controller-owned packet containing:
- refactor kind
- source scope
- target scope
- approved write scope
- invariants to preserve
- contract delta summary
- graph delta summary
- verification delta summary
- required local, integration, and follow-up checks
When docs/operational-packets.xml exists, align the packet, graph delta, verification delta, and failure handoff to those canonical templates.
Step 3: Apply the Smallest Safe Refactor
Work in the safest order for the refactor type.
Always:
- preserve or intentionally update MODULE_CONTRACT, MODULE_MAP, CHANGE_SUMMARY, function contracts, and semantic blocks
- keep imports aligned with approved dependencies
- preserve or update stable
[Module][function][BLOCK_NAME]markers when critical branches move - move module-local tests with the behavior they verify
- prefer atomic renames over long-lived mixed states
For split and merge refactors:
- keep ownership explicit for each resulting module
- update write scopes and test scopes accordingly
- do not leave half-migrated logic spread across modules silently
Shared-doc rule:
- keep shared docs focused on public module contracts and public interfaces
- let private helper reshaping stay local unless it changes the public boundary
Step 4: Synchronize Shared Artifacts
After the code refactor, update the shared artifacts in one coherent pass.
Update docs/development-plan.xml for:
- module IDs and names
- target source/test paths
- implementation order or ownership changes
- verification references
Update docs/knowledge-graph.xml for:
- module tags
- public annotations and public exports only
- CrossLinks
- verification refs
Update docs/verification-plan.xml for:
V-M-xxxentries- test file paths
- module-local commands
- required markers and trace assertions
- wave-level or phase-level follow-up checks
If IDs changed, update every reference atomically. Do not leave temporary stale IDs unless the user explicitly requires compatibility handling.
Step 5: Verify by Blast Radius
Run verification at the smallest level that still protects correctness:
- renamed or moved module-local checks first
- affected integration surfaces second
- broader phase checks when coupling changed materially
If the refactor causes failures, produce a structured failure handoff using the canonical FailurePacket shape when available.
Step 6: Review and Refresh
Before declaring success:
- run a scoped
$grace-reviewerpass on the changed files and shared-artifact deltas - run targeted
$grace-refreshon the touched modules and dependency surfaces - escalate to a full refresh or broader review if the refactor reveals wider drift
Rules
- Never silently invent new architecture during a refactor
- Never leave code and shared artifacts in different realities
- Prefer smaller, narratable migrations over giant rewrites
- Keep compatibility shims only when there is a concrete requirement
- If the refactor reveals weak tests or weak logs, strengthen verification before calling it complete
Deliverables
- refactor kind and affected scope
- files changed
- graph delta proposal
- verification delta proposal
- verification evidence
- remaining risks or follow-up checks
More from osovv/grace-marketplace
grace-explainer
Complete GRACE methodology reference. Use when explaining GRACE to users, onboarding new projects, or when you need to understand the GRACE framework - its principles, semantic markup, knowledge graphs, contracts, testing, and unique tag conventions.
48grace-multiagent-execute
Execute a GRACE development plan in controller-managed parallel waves with selectable safety profiles, verification-plan excerpts, batched shared-artifact sync, and scoped reviews.
29grace-execute
Execute the full GRACE development plan step by step with controller-managed context packets, verification-plan excerpts, scoped reviews, level-based verification, and commits after validated sequential steps.
27grace-status
Show the current health status of a GRACE project. Use to get an overview of project artifacts, codebase metrics, knowledge graph health, verification coverage, and suggested next actions.
26grace-fix
Debug an issue using GRACE semantic navigation. Use when encountering bugs, errors, or unexpected behavior - navigate through the graph, verification plan, and semantic blocks to analyze the mismatch and apply a targeted fix.
26grace-refresh
Synchronize GRACE shared artifacts with the actual codebase. Use targeted refresh after controlled waves, or full refresh after refactors and when you suspect wider drift between the graph, verification plan, and code.
26