Token-efficient codebase refactoring plugin for Claude Code. Provides shared cross-language tools plus Python-only Rope extras.
Refactory provides 6 well-named refactoring tools with complete input schemas and descriptions. Tool names follow verb_noun convention (move_module, rename_symbol, extract_variable). All parameters have type definitions and descriptions. However, output schemas are not documented, LLMs cannot predict what fields to expect from tool responses. Error handling is minimal; no recovery guidance or actionable error messages visible. The 'apply' parameter pattern is good (preview-first safety), but descriptions lack detail on what changes are returned in preview mode. No tool annotations (readOnlyHint/destructiveHint) despite clear WRITE vs READ_ONLY semantics.
Python-only: extract the selected expression into a variable using Rope.
Move a file/module to a new location and update all imports across the codebase. Supports Python and TypeScript.
Move a function, class, or variable from one module to another and update all references.
Python-only: organize imports in a Python module using Rope.
Rename a function, class, variable, or parameter across the entire codebase.
Check for refactor-related import and name-resolution errors after restructuring. This is a narrow safety probe, not a full compiler or linter run.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Breaks tool chaining and forces agents to guess what data is available.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools clearly have WRITE (move_module, move_symbol, rename_symbol, organize_imports, extract_variable) and READ_ONLY (validate_imports) semantics, but LLMs cannot see this in the schema.
Error handling and recovery guidance absent. No visible error classification (retryable vs user-fixable vs fatal) or actionable error messages. Agents cannot self-correct on failure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
Parameter descriptions lack format/constraint details. E.g., 'start_line' in extract_variable has no min/max bounds; 'language' in validate_imports has enum but no description of what each value means.
No confirmation/dry-run pattern for irreversible operations. move_module, move_symbol, rename_symbol, organize_imports, and extract_variable all modify code. The 'apply' flag provides preview, but no explicit confirmation step before destructive changes.