agentsclimarketplace

Rust refactor helper

Skill moeru-ai/auv/.agents/skills/rust-refactor-helper

๐Ÿ“ฑ๐Ÿญ No we are not computer use, it's Application Use Via... a unified orchestration layer of OS automation, 0 token cost

Install
npx -y skills add moeru-ai/auv --skill rust-refactor-helper

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 20 stars20 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Safe Rust refactoring with LSP analysis. Triggers on: /refactor, rename symbol, move function, extract, ้‡ๆž„, ้‡ๅ‘ฝๅ, ๆๅ–ๅ‡ฝๆ•ฐ, ๅฎ‰ๅ…จ้‡ๆž„

SKILL.md

5.9 KB, as published. Nobody here has run it

Rust Refactor Helper

Perform safe refactoring with comprehensive impact analysis.

Usage

/rust-refactor-helper <action> <target> [--dry-run]

Actions:

  • rename <old> <new> - Rename symbol
  • extract-fn <selection> - Extract to function
  • inline <fn> - Inline function
  • move <symbol> <dest> - Move to module

Examples:

  • /rust-refactor-helper rename parse_config load_config
  • /rust-refactor-helper extract-fn src/main.rs:20-35
  • /rust-refactor-helper move UserService src/services/

LSP Operations Used

Pre-Refactor Analysis

# Find all references before renaming
LSP(
  operation: "findReferences",
  filePath: "src/lib.rs",
  line: 25,
  character: 8
)

# Get symbol info
LSP(
  operation: "hover",
  filePath: "src/lib.rs",
  line: 25,
  character: 8
)

# Check call hierarchy for move operations
LSP(
  operation: "incomingCalls",
  filePath: "src/lib.rs",
  line: 25,
  character: 8
)

Refactoring Workflows

1. Rename Symbol

User: "Rename parse_config to load_config"
    โ”‚
    โ–ผ
[1] Find symbol definition
    LSP(goToDefinition)
    โ”‚
    โ–ผ
[2] Find ALL references
    LSP(findReferences)
    โ”‚
    โ–ผ
[3] Categorize by file
    โ”‚
    โ–ผ
[4] Check for conflicts
    - Is 'load_config' already used?
    - Are there macro-generated uses?
    โ”‚
    โ–ผ
[5] Show impact analysis (--dry-run)
    โ”‚
    โ–ผ
[6] Apply changes with Edit tool

Output:

## Rename: parse_config โ†’ load_config

### Impact Analysis

**Definition:** src/config.rs:25
**References found:** 8

| File | Line | Context | Change |
|------|------|---------|--------|
| src/config.rs | 25 | `pub fn parse_config(` | Definition |
| src/config.rs | 45 | `parse_config(path)?` | Call |
| src/main.rs | 12 | `config::parse_config` | Import |
| src/main.rs | 30 | `let cfg = parse_config(` | Call |
| src/lib.rs | 8 | `pub use config::parse_config` | Re-export |
| tests/config_test.rs | 15 | `parse_config("test.toml")` | Test |
| tests/config_test.rs | 25 | `parse_config("")` | Test |
| docs/api.md | 42 | `parse_config` | Documentation |

### Potential Issues

โš ๏ธ **Documentation reference:** docs/api.md:42 may need manual update
โš ๏ธ **Re-export:** src/lib.rs:8 - public API change

### Proceed?
- [x] --dry-run (preview only)
- [ ] Apply changes

2. Extract Function

User: "Extract lines 20-35 in main.rs to a function"
    โ”‚
    โ–ผ
[1] Read the selected code block
    โ”‚
    โ–ผ
[2] Analyze variables
    - Which are inputs? (used but not defined in block)
    - Which are outputs? (defined and used after block)
    - Which are local? (defined and used only in block)
    โ”‚
    โ–ผ
[3] Determine function signature
    โ”‚
    โ–ผ
[4] Check for early returns, loops, etc.
    โ”‚
    โ–ผ
[5] Generate extracted function
    โ”‚
    โ–ผ
[6] Replace original code with call

Output:

## Extract Function: src/main.rs:20-35

### Selected Code
โ€‹```rust
let file = File::open(&path)?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
let config: Config = toml::from_str(&contents)?;
validate_config(&config)?;
โ€‹```

### Analysis

**Inputs:** path: &Path
**Outputs:** config: Config
**Side Effects:** File I/O, may return error

### Extracted Function

โ€‹```rust
fn load_and_validate_config(path: &Path) -> Result<Config> {
    let file = File::open(path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    let config: Config = toml::from_str(&contents)?;
    validate_config(&config)?;
    Ok(config)
}
โ€‹```

### Replacement

โ€‹```rust
let config = load_and_validate_config(&path)?;
โ€‹```

3. Move Symbol

User: "Move UserService to src/services/"
    โ”‚
    โ–ผ
[1] Find symbol and all its dependencies
    โ”‚
    โ–ผ
[2] Find all references (callers)
    LSP(findReferences)
    โ”‚
    โ–ผ
[3] Analyze import changes needed
    โ”‚
    โ–ผ
[4] Check for circular dependencies
    โ”‚
    โ–ผ
[5] Generate move plan

Output:

## Move: UserService โ†’ src/services/user.rs

### Current Location
src/handlers/auth.rs:50-120

### Dependencies (will be moved together)
- struct UserService (50-80)
- impl UserService (82-120)
- const DEFAULT_TIMEOUT (48)

### Import Changes Required

| File | Current | New |
|------|---------|-----|
| src/main.rs | `use handlers::auth::UserService` | `use services::user::UserService` |
| src/handlers/api.rs | `use super::auth::UserService` | `use crate::services::user::UserService` |
| tests/auth_test.rs | `use crate::handlers::auth::UserService` | `use crate::services::user::UserService` |

### New File Structure

โ€‹```
src/
โ”œโ”€โ”€ services/
โ”‚   โ”œโ”€โ”€ mod.rs (NEW - add `pub mod user;`)
โ”‚   โ””โ”€โ”€ user.rs (NEW - UserService moved here)
โ”œโ”€โ”€ handlers/
โ”‚   โ””โ”€โ”€ auth.rs (UserService removed)
โ€‹```

### Circular Dependency Check
โœ… No circular dependencies detected

Safety Checks

CheckPurpose
Reference completenessEnsure all uses are found
Name conflictsDetect existing symbols with same name
Visibility changesWarn if pub/private scope changes
Macro-generated codeWarn about code in macros
DocumentationFlag doc comments mentioning symbol
Test coverageShow affected tests

Dry Run Mode

Always use --dry-run first to preview changes:

/rust-refactor-helper rename old_name new_name --dry-run

This shows all changes without applying them.

Related Skills

WhenSee
Navigate to symbolrust-code-navigator
Understand call flowrust-call-graph
Project structurerust-symbol-analyzer
Trait implementationsrust-trait-explorer

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.