Valentine Tikhomirov got tired of typing the same setup, refactoring and shipping instructions into every new AI-agent session. His answer was a personal, alpha-stage Claude Code plugin of reusable skills and agents for React Native work, invoked with an rnmh: prefix. He says he uses it daily on his own projects. He also says several newer skills have not been tested on a real project, and that his one detailed refactoring was checked statically, not by running the app. This article covers what he built, what his refactoring example shows, and where the limits are.
The problem: re-entering the same instructions
Tikhomirov’s starting point was repetition. In each new session he kept pasting the same project setup, refactoring standards and shipping checks. His first fix was a set of files in ~/.claude. When that became hard to maintain, he moved the material into a plugin with its own Git repository.
As an Amazon Associate I earn from qualifying purchases.
The central idea is to write down his working practices as task-specific instructions, and to give each task its own skill or agent. A skill holds the instructions for one kind of work. An agent carries out that work. Instead of one long standing prompt that tries to cover everything, the agent is loaded for the job at hand.
He reports that answers became more structured once the work was split into dedicated skills. That is his own observation from using the plugin, not the result of an independent evaluation.
#1 Best Overall
What the plugin contains
The author describes the plugin as a set of workflows. Some are established in his daily use; others are newer and, by his account, have not yet been exercised on a real project.
| Workflow | What it is for, as described | Maturity, as the author describes it |
|---|---|---|
| Project bootstrap | Sets up a new React Native project. It deliberately limits itself to strict TypeScript and the author’s preferred folder layout, and asks about other choices for each project. | In daily use |
| Refactoring skill and agent | Restructures existing components. The worked example below comes from this agent. | In daily use; the example was checked statically |
| Cross-project consistency checks | Looks for duplicated code and naming drift across projects. | In daily use |
| Design-to-code | Turns design input into implementation. | In daily use |
| Architecture review | Reviews how a codebase is structured. | In daily use |
| Testing and test coverage | Covers test writing and coverage work. | In daily use |
| Diagnostics | Newer addition. | Not yet battle-tested on a real project |
| Release checklist | Newer addition. | Not yet battle-tested on a real project |
| Security review | Newer addition. | Not yet battle-tested on a real project |
| React Native upgrades | Newer addition. | Not yet battle-tested on a real project |
The “in daily use” column reflects the author’s statement that he uses the plugin on his own projects. It does not mean each workflow has been measured against an external standard.
Worked example: splitting a 330-line component
The clearest example in the write-up is a refactoring of the Home() component in a personal headache-tracker app. Before the change, the component was roughly 330 lines long. It held five useState calls, five useEffect calls, three asynchronous handlers and a multi-branch JSX return.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallRank #2
Measure in Home() |
Before | After |
|---|---|---|
| Approximate line count | About 330 | About 150 |
useState calls |
5 | Not stated |
useEffect calls |
5 | Not stated |
| Asynchronous handlers | 3 | Not stated |
| Whole-project line count | Not stated | Somewhat higher, per the author, because files and imports were added |
The work was moved into named components and hooks. The author names IntensityPicker, OngoingAttackCard, RecentAttacksList and HomeActions as components, and useReduceMotion, useDictation and useKeyboardVisible as hooks. The agent also moved formatTime() into a shared formatting module and removed code that was no longer used. The aim, in his words, was to give each piece one job. The line count of the whole project rose, which he accepts as the cost of that split.
He says each change maps to a named refactoring from the catalogue in Martin Fowler’s Refactoring, 2nd edition. Readers who want to look up the individual moves may find the book a useful reference, though it is not required to follow the example.
What was checked, and what was not
The author reports that behaviour was unchanged and that TypeScript (tsc) and ESLint checks came back clean. He is also clear about the gap: the app was not run. Simulator review was still needed, and that is a separate step from the static checks above.
Rank #3
Static checks confirm that the code compiles and follows the lint rules. They do not confirm that a screen behaves the same way on a device. For a refactor like this one, the practical gap is the one he names: nobody has yet watched the screen run after the change.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →What one project can and cannot show
The evidence here is one developer, one plugin and one refactoring example. The write-up is a design account and an experience report. It is not a controlled comparison of harnesses against prompts, and it does not show that harnesses outperform prompts in general. The author does not present a benchmark, a measured comparison with other workflows, or a statistical study.
The line counts are measurements of one component in one app, not broader figures about React Native code.
Rank #4
Three lessons the author draws
Narrow skills beat one large instruction
The author’s first lesson is that task-specific skills seemed to produce more structured answers than one large general instruction. He states it directly: “Narrow skills beat one giant prompt.” Tikhomirov, article author.
Agents should act and explain
He wants agents to carry out a change and explain what they did, not only list problems for a human to fix. The refactoring agent is built that way, and that is how the Home() change was produced.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteUnderstanding the codebase is still the weak spot
Agents sometimes miss features that already exist in the project and need the user to steer them back. The author puts it this way: “Understanding the project is still the weak spot.” Tikhomirov, article author. He mentions Graphify as a way to give an agent a map of the codebase, but he does not claim the underlying weakness is solved.
Availability and status
The author planned to open the harness to other React Native developers. The write-up does not confirm that this has happened, and it gives no pricing, licensing terms or partner arrangement. Check the project’s current status before assuming you can install it. Nothing in the article establishes a public release.
If you want to try the same approach
The author’s account suggests a practical order of work for a team or solo developer who wants a similar setup:
- Pick one recurring task, such as refactoring or release checks, and write its instructions as a single skill before writing anything broader.
- Decide which checks must run every time. The author’s refactoring example relied on type checking and linting, and he still ran the app by hand.
- Keep project-specific choices explicit. His bootstrap asks about them rather than assuming them.
- Treat newer skills as untested until they have run on a real project, and say so in your own notes.
- Review what an agent changed by running the app, not only by reading the diff.
Conclusion
Tikhomirov’s plugin is a personal, alpha-stage answer to a common frustration: re-entering the same setup and standards at the start of every session. Its strongest point in the write-up is the split of one oversized React Native component into named pieces, with type checks and linting clean. Its weakest point, by his own account, is that the app was not run, several newer skills are untested on a real project, and codebase understanding still needs steering. Read it as one developer’s report of a working method, not as proof that the method works for everyone.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Valentine Tikhomirov, “I stopped prompting and started building a harness,” DEV Community, September 23, 2026.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




