Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill refactor명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | refactor |
| description | | Use when this capability is needed. |
A comprehensive, technique-by-technique catalog of refactoring best practices for any language, sourced from Martin Fowler's Refactoring: Improving the Design of Existing Code (2nd Edition) and Alexander Shvets' Refactoring in Java (Refactoring Guru). Adapted for Python, TypeScript, Go, and Rust with idiomatic examples.
Before applying any technique, detect the project's stack:
| Project File | Language | Idiom Style |
|---|---|---|
pom.xml / build.gradle | Java | OOP, Stream API |
pyproject.toml / requirements.txt / setup.py | Python | Duck typing, comprehensions |
package.json + tsconfig.json | TypeScript | Functional-OOP hybrid |
package.json (no tsconfig) | JavaScript | Prototype-based, functional |
*.csproj | C# | OOP, LINQ |
go.mod | Go | Composition, implicit interfaces |
build.gradle.kts | Kotlin | OOP + functional |
Gemfile | Ruby | Duck typing, open classes |
composer.json | PHP | OOP |
Cargo.toml | Rust | Ownership, traits, no inheritance |
Package.swift | Swift | Protocol-oriented |
If the language is Java, apply techniques with Java OOP, Stream API where appropriate, and the project's detected Java version constraints.
| Concept | Python | TypeScript | Go | Rust |
|---|---|---|---|---|
| Class / struct | class | class | struct + methods | struct + impl |
| Inheritance | class Child(Parent) | extends | Embedding (no inheritance) | Traits (no inheritance) |
| Interface / contract | Protocol / ABC | interface | interface (implicit) | trait |
| Encapsulation | _private convention | private keyword | Unexported (lowercase) | Private by default, pub |
| Polymorphism | Duck typing + ABC | Interfaces + classes | Implicit interfaces | Trait objects + generics |
| Generics | typing.Generic[T] | <T> | [T any] | <T: Trait> |
| Error handling | Exceptions | Exceptions | Error values (error) | Result<T, E> |
| Null safety | None / Optional[T] | null / undefined / ? | nil (zero values) | Option<T> |
| Collections pipeline | Comprehensions / generators | Array methods (.map, .filter) | for range (no pipeline) | Iterator chain (.filter().map()) |
| Pattern matching | match (3.10+) | switch (no pattern matching) | switch (no pattern matching) |
For detailed concept-to-language mappings, see references/language-idioms.md.
Refactoring is the process of changing the internal structure of code without altering its observable behavior. It is a disciplined technique, not a random cleanup. The golden rule is: Cover → Modify → Refactor (always have tests before you start).
techniques/00-code-smells-diagnostic.md)references/language-applicability.md for technique availability per languagereferences/language-idioms.mdThe techniques are organized in 7 groups. Each technique has its own file in the techniques/ directory.
Techniques for building clean, well-structured methods. The foundation of all refactoring.
01-extract-method.md — Extract a code fragment into a named function02-inline-method.md — Replace a function call with the function body03-extract-variable.md — Give a name to a complex expression04-inline-variable.md — Remove a variable that adds no clarity05-replace-temp-with-query.md — Replace temp variables with function calls06-replace-method-with-method-object.md — Turn a complex function into its own class/struct07-substitute-algorithm.md — Replace an algorithm with a clearer versionTechniques for placing code where it truly belongs.
08-move-method.md — Move a function to where it has more cohesion09-move-field.md — Move a field to the type that uses it most10-extract-class.md — Split a type with multiple responsibilities11-inline-class.md — Merge a type that does too little12-hide-delegate.md — Encapsulate chain navigation behind a simpler interface13-remove-middle-man.md — Remove unnecessary delegation14-move-statements.md — Move statements into/out of functions, slide statements15-split-loop.md — Separate a loop that does multiple things16-replace-loop-with-pipeline.md — Use declarative pipelines instead of imperative loops17-remove-dead-code.md — Delete unused codeTechniques for enriching data with behavior and protecting internal state.
18-encapsulate-variable.md — Wrap data access with getters/functions19-encapsulate-record.md — Convert data structures into objects/structs20-encapsulate-collection.md — Protect collections from external mutation21-replace-primitive-with-object.md — Create domain types instead of using raw primitives22-split-variable.md — Give each purpose its own variable23-rename-field.md — Improve field names for clarity24-replace-derived-variable-with-query.md — Calculate values on demand25-change-reference-to-value.md — Make objects immutable (Value Objects)26-change-value-to-reference.md — Share a single instance across consumers27-replace-type-code-with-subclasses.md — Convert type codes to polymorphic hierarchyTechniques for taming conditional complexity.
28-decompose-conditional.md — Name condition and branches29-consolidate-conditional.md — Merge related conditions30-replace-nested-conditional-with-guard-clauses.md — Early returns for special cases31-replace-conditional-with-polymorphism.md — Use polymorphism instead of switch/if-type32-introduce-special-case.md — Null Object pattern for default behavior33-introduce-assertion.md — Document invariants with executable assertions34-replace-control-flag.md — Replace boolean flags with break/returnTechniques for building self-documenting interfaces.
35-change-function-declaration.md — Rename functions and change parameters36-introduce-parameter-object.md — Group related parameters into an object37-parameterize-function.md — Unify similar functions with a parameter38-remove-flag-argument.md — Replace boolean params with named functions39-preserve-whole-object.md — Pass the object instead of extracted values40-replace-parameter-with-query.md — Let the function calculate what it needs41-replace-query-with-parameter.md — Pass value as param for purity/testability42-remove-setting-method.md — Make properties read-only43-replace-constructor-with-factory.md — Use factory functions for flexible creation44-replace-function-with-command.md — Encapsulate function as object45-separate-query-from-modifier.md — CQS: separate reads from writesTechniques for refactoring type hierarchies and shared behavior.
46-pull-up-method.md — Move duplicated functions to shared parent/trait/interface47-push-down-method.md — Move specialized functions to specific types48-pull-up-constructor-body.md — Unify constructor/initialization logic49-extract-superclass.md — Create common parent for shared behavior50-extract-interface.md — Define a contract without implementation51-collapse-hierarchy.md — Merge unnecessary hierarchy levels52-form-template-method.md — Template Method pattern53-replace-subclass-with-delegate.md — Composition over inheritance54-replace-superclass-with-delegate.md — Replace extends with has-a55-replace-inheritance-with-delegation.md — General inheritance to delegationCross-cutting techniques from both sources.
56-combine-functions-into-class.md — Group functions that share data57-combine-functions-into-transform.md — Enrich read-only data58-split-phase.md — Separate code into processing phases59-introduce-foreign-method.md — Extend third-party types you can't modify60-introduce-local-extension.md — Wrapper or subclass for library extension61-replace-error-code-with-exception.md — Modernize error handling62-replace-exception-with-test.md — Don't use exceptions for control flowStart with techniques/00-code-smells-diagnostic.md to identify which techniques apply to your code. The diagnostic maps 24 code smells to their recommended refactoring techniques.
When given code to refactor:
techniques/00-code-smells-diagnostic.md to identify the smells presentreferences/language-applicability.md — if the technique doesn't apply to the target language, the table shows the alternativereferences/language-idioms.mdThese principles underpin every technique in the catalog:
| File | Content |
|---|---|
references/language-idioms.md | Refactoring concept → {Python, TypeScript, Go, Rust} equivalents |
references/language-applicability.md | 62-technique × language applicability matrix with alternatives |
Source: andresnator/agents-orchestrator — distributed by TomeVault.
match (exhaustive) |
| Factory pattern | @classmethod / module function | Static method / function | NewXxx() function | Type::new() associated fn |
| Builder pattern | __init__ + kwargs / dataclass | Fluent builder class | Functional options | Builder with consuming self |