I built a CLI and Skill to help Claude Code refactor faster with fewer tokens
An IDE already knows how to rename a symbol and update its references. I wanted Claude Code to use those operations through its shell.
So I built RipIDE, a free, open-source CLI and Skill for symbol renames, moving exports, and updating imports.
I used Claude Code to help replace ts-morph with TypeScript’s native language server. That meant connecting four tools:
- ripgrep to find candidate files
- TypeScript’s native server for references and rename edits
- Oxc for parsing and syntax transforms
- Volar for Vue scripts and templates
One trap during that work: the server could rename a declaration but preserve its old re-export name. Consumers kept using the old name. The rename preferences had to go through workspace/configuration before requests, so they actually took effect.
That migration and the configuration detail are recorded in this commit. Getting the tools to agree was harder than I expected.
Commands preview changes by default. Supported refactors check for new type errors before applying.
harlan-zw/ripide
Any refactoring cases that you think would be useful :)
1 point · 2 comments
I built RipIDE to help agents refactor faster with fewer tokens
I built RipIDE to help coding agents refactor faster with fewer tokens.
Benchmarks (https://github.com/harlan-zw/ripide/blob/main/bench/README.md) indicate 45–60% fewer tokens and 35–60% less time across different refactoring work loads.
One command handles references and edits across files, using TypeScript’s native language server, Oxc and ripgrep. It can rename symbols, move exports, update imports and rename CSS classes.
Commands preview the diff by default. Supported refactors check for new type errors before applying.
Free and open source, with an Agent Skill included.
harlan-zw/ripide
Let me know what you think :)
6 comments
I built RipIDE: IDE-like refactoring for agents, powered by TypeScript’s native language server
TypeScript’s native language server exposes IDE operations through LSP, so other tools can use them too. For example, you can rename a symbol across files, find its references, jump to its definition, get updated import paths for a file rename, or check unsaved changes for type errors.
I built RipIDE around that, with Oxc handling syntax details like destructured bindings. ripgrep narrows the candidate files and helps flag imports still using the old name.
I took it further with CSS class renaming, moving exports, replacing imported symbols, and deleting unused declarations. It works with JavaScript and TypeScript, with Vue support through an adapter.
The idea is to give agents the refactoring commands we already use in an IDE:
ripide rename useStore useAppStore
ripide move helper --from src/utils.ts --to src/helpers.ts
ripide css-class-rename bg-gray-500 bg-neutral-500
2 comments
@SheltonLouisGT The broken templates are less of an issue these days; it's true, thank god.
This is based on evals on fairly medium-to-large-sized projects running 6.1 Luna and GLM 5.3. I'll get some benchmarks with Opus 5.5 once my weekly renews.
You can see here github.com/harlan-zw/ripast/tree/main/bench
87 views
Agents suck at refactoring. They're slow, break templates, miss declarations.
Introducing 𝚛𝚒𝚙𝚊𝚜𝚝. A CLI with IDE-like refactoring.
🔸~50% fewer tokens, ~50% less time waiting
🔸TypeScript, React, Vue, Nuxt, Solid
🔸Components, CSS classes + vars
harlan-zw/ripast t.co
43 likes · 2,869 views
Mentions
I built a CLI and Skill to help Claude Code refactor faster with fewer tokens An IDE already knows how to rename a symbol and update its references. I wanted Claude Code to use those operations through its shell. So I built RipIDE, a free, open-source CLI and Skill for symbol renames, moving exports, and updating imports. I used Claude Code to help replace ts-morph with TypeScript’s native language server. That meant connecting four tools: - ripgrep to find candidate files - TypeScript’s native server for references and rename edits - Oxc for parsing and syntax transforms - Volar for Vue scripts and templates One trap during that work: the server could rename a declaration but preserve its old re-export name. Consumers kept using the old name. The rename preferences had to go through workspace/configuration before requests, so they actually took effect. That migration and the configuration detail are recorded in this commit. Getting the tools to agree was harder than I expected. Commands preview changes by default. Supported refactors check for new type errors before applying. harlan-zw/ripide Any refactoring cases that you think would be useful :)
I built RipIDE to help agents refactor faster with fewer tokens I built RipIDE to help coding agents refactor faster with fewer tokens. Benchmarks (https://github.com/harlan-zw/ripide/blob/main/bench/README.md) indicate 45–60% fewer tokens and 35–60% less time across different refactoring work loads. One command handles references and edits across files, using TypeScript’s native language server, Oxc and ripgrep. It can rename symbols, move exports, update imports and rename CSS classes. Commands preview the diff by default. Supported refactors check for new type errors before applying. Free and open source, with an Agent Skill included. harlan-zw/ripide Let me know what you think :)
I built RipIDE: IDE-like refactoring for agents, powered by TypeScript’s native language server TypeScript’s native language server exposes IDE operations through LSP, so other tools can use them too. For example, you can rename a symbol across files, find its references, jump to its definition, get updated import paths for a file rename, or check unsaved changes for type errors. I built RipIDE around that, with Oxc handling syntax details like destructured bindings. ripgrep narrows the candidate files and helps flag imports still using the old name. I took it further with CSS class renaming, moving exports, replacing imported symbols, and deleting unused declarations. It works with JavaScript and TypeScript, with Vue support through an adapter. The idea is to give agents the refactoring commands we already use in an IDE: ripide rename useStore useAppStore ripide move helper --from src/utils.ts --to src/helpers.ts ripide css-class-rename bg-gray-500 bg-neutral-500
@SheltonLouisGT The broken templates are less of an issue these days; it's true, thank god. This is based on evals on fairly medium-to-large-sized projects running 6.1 Luna and GLM 5.3. I'll get some benchmarks with Opus 5.5 once my weekly renews. You can see here github.com/harlan-zw/ripast/tree/main/bench
Agents suck at refactoring. They're slow, break templates, miss declarations. Introducing 𝚛𝚒𝚙𝚊𝚜𝚝. A CLI with IDE-like refactoring. 🔸~50% fewer tokens, ~50% less time waiting 🔸TypeScript, React, Vue, Nuxt, Solid 🔸Components, CSS classes + vars harlan-zw/ripast t.co