faces-migrate

Migrates Jakarta Faces projects between versions by updating dependencies, namespaces, and descriptors.

25|1|Updated Mar 11, 2026
One-click install
npx skills add https://github.com/omnifaces/claude-faces-expert --skill faces-migrate-omnifaces
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: faces-migrate
Source: https://github.com/omnifaces/claude-faces-expert/tree/main/.claude/skills/faces-migrate
Command: npx skills add https://github.com/omnifaces/claude-faces-expert --skill faces-migrate-omnifaces

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Upgrading a Jakarta Faces (formerly JSF) application across versions involves dozens of coordinated changes: dependency coordinates, package renames from javax to jakarta, XML namespace updates in XHTML files, and version bumps in faces-config.xml, web.xml, and beans.xml. Missing any one of them causes silent runtime failures rather than build errors. ## Core Features & Use Cases - Version and runtime detection: Inspects pom.xml, faces-config.xml, XHTML namespaces, and Java imports to determine the current Faces version and whether the runtime is a full EE server or a barebones servlet container. - Step-by-step migration paths: Covers JSF 1.x to 2.x, 2.x to 2.3, 2.3 to Faces 3.0 (Jakarta namespace rename), 3.0 to 4.0, and 4.0 to 4.1, with exact XML snippets for each descriptor. - Verification pass: Greps for leftover javax references, old namespaces, and deprecated APIs such as ActionSource2 and full state saving parameters. - Use Case: A team needs to move a JSF 2.3 application on Tomcat to Faces 4.1. The skill detects the current setup, applies the 2.3 to 3.0 package rename, then the 3.0 to 4.0 namespace overhaul, then the 4.0 to 4.1 increment, confirming each stage with the developer. ## Quick Start Invoke the skill with a target version such as /faces-migrate 4.1 and confirm the detected current version before it applies the migration steps.

Frequently Asked Questions about faces-migrate

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I migrate a JSF 2.3 application to Jakarta Faces 4.1?

Apply the intermediate steps in order: first the 2.3 to 3.0 javax-to-jakarta package rename, then the 3.0 to 4.0 XHTML namespace overhaul, then the 4.0 to 4.1 increment. The skill detects your current version and walks through each stage with confirmation.

How to rename javax.faces imports to jakarta.faces in a Java project?

Rename all javax.faces, javax.servlet, javax.inject, javax.enterprise, javax.annotation, javax.validation, and related imports to their jakarta equivalents. Also update web.xml context param names and message bundle keys, which fail silently if missed.

Does the migration differ between Tomcat and a full Jakarta EE server?

Yes. On full EE servers like WildFly or GlassFish you update the jakarta.jakartaee-web-api artifact with provided scope. On Tomcat or Jetty you update the standalone Faces implementation such as org.glassfish:jakarta.faces or myfaces-impl directly.

Why does my Faces 4.0 migration fail with no tag defined for name error?

This happens when a custom @FacesComponent still pins the old xmlns.jcp.org namespace while pages use jakarta.faces.component. Rewrite the namespace attribute on the annotation or drop it so it follows the default FacesComponent.NAMESPACE.

What changes in beans.xml when migrating to CDI 4.0?

CDI 4.0 defaults bean-discovery-mode to annotated instead of all, so beans without a bean defining annotation stop being discovered silently. Make the mode explicit before bumping the version, choosing all to preserve behavior or annotated with proper annotations.