Agent skill
refactor
Analyze code and suggest refactoring opportunities with rationale
Install this agent skill to your Project
npx add-skill https://github.com/thoreinstein/opencode-config/tree/main/skill/refactor
SKILL.md
Refactoring Analysis
Current Time: !date
Go Version: !go version
Analyze code and suggest refactoring opportunities with rationale. Documents findings to Obsidian for tracking and discussion.
Input
- Target: file path, directory/package, or function/component name
- Optional: specific concern (duplication, complexity, coupling, testability, etc.)
Investigation Strategy
Launch parallel investigation tracks:
Track 1: Codebase Exploration (explore agent)
- Map dependencies and call sites for target code
- Identify blast radius of potential changes
- Find related code with similar patterns
- Assess test coverage of affected areas
Track 2: Code Analysis (inferred agent: go/frontend)
- Infer appropriate agent from target context
- Deep analysis of code smells and patterns
- Identify refactoring opportunities
- Assess complexity metrics
Refactoring Patterns
Universal Patterns
- Extract function/method: Pull out reusable logic
- Inline function/variable: Remove unnecessary indirection
- Rename: Improve clarity (with blast radius assessment)
- Move: Relocate to better home (file, package, module)
- Replace conditional with polymorphism: Simplify branching
- Introduce parameter object: Group related parameters
- Dependency inversion: Decouple via interfaces/abstractions
Go-Specific Patterns
- Extract interface: Define behavior contracts
- Consolidate error handling: Reduce repetitive error checks
- Replace concrete with interface: Improve testability
- Extract middleware: Separate cross-cutting concerns
- Table-driven refactor: Convert repetitive code to data-driven
Frontend-Specific Patterns
- Extract component: Break down large components
- Extract custom hook: Reuse stateful logic
- Lift state up: Move state to common ancestor
- Push state down: Colocate state with usage
- Extract render function: Simplify complex JSX
- Memoization: Optimize re-renders
Output
Write to Obsidian via obsidian_append_content at:
$OBSIDIAN_PATH/Refactoring/YYYY-MM-DD-target-name.md
Note:
$OBSIDIAN_PATHmust be a vault-relative path (e.g.,Projects/myapp), set per-project via direnv. Theobsidian_append_contenttool expects paths relative to the vault root.
Document Structure
Use this template for the Obsidian document:
@~/.config/opencode/templates/refactor-analysis.md
Behavior
- Parse target to determine scope (file, directory, function, component)
- Infer appropriate code agent from target context (go vs frontend)
- Launch explore and inferred code agent in parallel
- Map dependencies, call sites, and blast radius
- Identify code smells with specific locations
- Generate refactoring suggestions with risk assessment
- Recommend order of operations based on risk and dependencies
- Write analysis to Obsidian via
obsidian_append_contentwith auto-generated filename:YYYY-MM-DD-target-name.md
$ARGUMENTS
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
seo
Implement SEO optimizations for specified pages or entire site
runbook
Generate operational runbooks for services, procedures, or incident response
file-organizer
Intelligently organizes your files and folders across your computer by understanding context, finding duplicates, suggesting better structures, and automating cleanup tasks. Reduces cognitive load and keeps your digital workspace tidy without manual effort.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
ultrathink
Ultra-deep multi-perspective analysis for complex architectural and strategic decisions
commit
Analyze unstaged changes and suggest atomic commit groups with messages
Didn't find tool you were looking for?