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.