Skip to content
Development
Skill

/move-code

Moves a Java class or package to another package in this project with OpenRewrite, so every import, fully qualified reference, Javadoc link, properties value and META-INF/services entry follows, the same way each time. Use when the user asks to move, relocate or repackage a

From plugin
springboot-skills-marketplace
818 skills

Claude Code

$ npx -y skills add a-pavithraa/springboot-skills-marketplace --skill move-code --agent claude-code

SKILL.md

move-code.SKILL.md
name: move-code
description: Moves a Java class or package to another package in this project with OpenRewrite, so every import, fully qualified reference, Javadoc link, properties value and META-INF/services entry follows, the same way each time. Use when the user asks to move, relocate or repackage a class or package, or to rename a package, to restructure code into modules, or when a fix would mean moving a type across modules.

Move a class or package

Don't move Java files by hand or with text edits: imports and references in other files go stale, and names in resources are missed.

1. Decide whether a move is the fix. To clear a module-boundary violation, prefer a facade in the target module's top-level package or an event; moving an internal type into a module's top-level package publishes it to every module. A move fits when the type belongs to another module, or when restructuring into modules. 2. Write the recipe to a file in a temporary folder outside the repository, here `$TMPDIR/move.yml`, so nothing is left to commit:

   type: specs.openrewrite.org/v1beta/recipe
   name: local.Move
   recipeList:
     - org.openrewrite.java.ChangeType:          # one class
         oldFullyQualifiedTypeName: {{BASE_PACKAGE}}.orders.internal.Discounts
         newFullyQualifiedTypeName: {{BASE_PACKAGE}}.catalog.internal.Discounts
     # or, for a whole package and its subpackages:
     # - org.openrewrite.java.ChangePackage:
     #     oldPackageName: {{BASE_PACKAGE}}.orders.internal
     #     newPackageName: {{BASE_PACKAGE}}.orders.pricing
     #     recursive: true

<!-- maven:begin --> 3. Preview, and read the patch in `target/rewrite/rewrite.patch` before applying it:

   ./mvnw -q org.openrewrite.maven:rewrite-maven-plugin:6.46.1:dryRun -Drewrite.configLocation=$TMPDIR/move.yml -Drewrite.activeRecipes=local.Move

4. Apply it with the same command and goal `run` instead of `dryRun`. <!-- maven:end --> <!-- gradle:begin --> 3. Write an init script next to the recipe, `$TMPDIR/rewrite.gradle`, so the build files stay unchanged:

   initscript {
       repositories { gradlePluginPortal(); mavenCentral() }
       dependencies { classpath "org.openrewrite:plugin:7.39.0" }
   }
   rootProject {
       plugins.apply(org.openrewrite.gradle.RewritePlugin)
       rewrite {
           activeRecipe("local.Move")
           configFile = new File(System.getProperty("moveRecipe"))
       }
   }

Preview, and read the patch in `build/reports/rewrite/rewrite.patch` before applying it:

   ./gradlew -q rewriteDryRun --init-script $TMPDIR/rewrite.gradle -DmoveRecipe=$TMPDIR/move.yml

4. Apply it with the same command and task `rewriteRun` instead of `rewriteDryRun`. <!-- gradle:end --> 5. Find what the recipe can't see: `git grep -n '<old fully qualified name>'`. A class name inside a Java string literal is not updated. Change each hit only if it names the moved type. 6. Run `{{VERIFY}}`. A compile error naming a type from the old package means the moved class used package-private code there: move that code with it (move the whole package instead), or make it reachable on purpose. The module-boundary test reports a move that crosses a module boundary. 7. Commit the move on its own, with no other edits, so the review is mechanical and `git log --follow` keeps the file's history.

Read more
@a-pavithraa
Ships withspringboot-skills-marketplace

Claude Code and Codex skills for Spring Boot 4 and Java 25. The main one, spring-boot-team-harness, gives every developer on a team the same agent setup and makes ./mvnw verify (or ./gradlew build) fail on the mistakes agents make.

Stars on GitHub

Momentum

stars in total
81
Star history of a-pavithraa/springboot-skills-marketplace on GitHub, a chart by star-history.com

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about move-code.

Which coding agents can use move-code?
move-code installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.