[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AD1WCGGQDP42RSBC13QTX2":3,"skill-same:01M6AD1WCGGQDP42RSBC13QTX2":115},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":24,"frontMatter":25,"refName":26,"commitSha":27,"skillDirectory":28,"forksCount":29,"repositoryHtmlUrl":30,"repositoryHomepageUrl":31,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":6,"updatedAt":34,"install":35,"resources":48},"01M6AD1WCGGQDP42RSBC13QTX2","update-sling-parent-pom",null,"Use when the user asks to upgrade the Sling parent POM version in their project","apache\u002Fsling-agent-skills","apache","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47359?v=4","01M6AC83E6K4FDKK7HZ8WNMQKE","The Apache Software Foundation","01M6AD1M9S2K8GV5EXRYQTBDW0",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002FSKILL.md",[],[19,20],"update","update sling parent pom","2026-11-10 10:12:30",false,"---\nname: update-sling-parent-pom\ndescription: Use when the user asks to upgrade the Sling parent POM version in their project\n---\n\n# Updating the Sling Parent POM\n\n## When to use\n\nUse when the user asks to upgrade the Sling parent POM version in their project. \n\n## Instructions\n\n- record the current Java and Maven environment with `java -version` and `mvn -version`\n- run a baseline `mvn clean verify` if the current checkout is expected to support the current Java version\n    - if the baseline build fails only because the current parent POM or project setup requires an older Java version, document that and continue\n    - assume the unchanged project would pass with its required Java version; do not switch to version-specific Maven wrappers just to prove the baseline unless the user explicitly asks\n    - if the baseline fails for a reason unrelated to the Java version, abort execution and inform the user of the root cause before changing the parent POM\n- check if any known workarounds exist, but do not remove them yet\n- if other repos in the same workspace\u002Forg use the same parent artifact and test patterns (e.g. pax-exam quickstart ITs), check whether one has already been migrated to the target parent version — its pinned test\u002FIT dependency versions are a validated reference point and can save significant troubleshooting\n- identify the current version of the Sling parent POM in the user's project\n- determine the latest available Sling parent POM version for the applicable parent artifact\n    - target the latest available version, not merely the next increment\n- check `https:\u002F\u002Fcwiki.apache.org\u002Fconfluence\u002Fspaces\u002FSLING\u002Fpages\u002F284790344\u002FUpdate+to+Parent+60`for additional instructions. Follow any steps it documents that are not already covered by this skill's reference files\n- update the parent POM version\n- run `mvn validate` with the current Java version before running a full build\n    - if `mvn validate` fails, fix any POM syntax issues first\n    - if the new parent POM no longer manages some plugin versions, add explicit plugin versions for the affected plugins\n    - if the new parent POM no longer manages some dependency versions, add explicit dependency versions for the affected dependencies\n    - do not continue to `clean verify` until `mvn validate` succeeds\n- run a full `mvn clean verify` build with the current Java version\n    - the goal is for the upgraded project to build successfully with the current Java version\n    - if the build fails because Spotless formatting checks were introduced or changed by the new parent POM, run `mvn spotless:apply`, review the resulting formatting changes, and rerun `mvn clean verify`\n- if the project's CI runs a Java version matrix (check the Jenkinsfile or CI config; commonly includes versions newer than the one just used to verify), also verify with the **highest** JDK version in that matrix using the appropriate `mvnNN` wrapper (e.g. `mvn21 clean verify` for JDK 21 — see [skills\u002FREADME.md](..\u002FREADME.md) § Invoking Apache Maven with different Java versions) before considering the upgrade complete — some failures (e.g. [felix-http-jetty-jdk21.md](.\u002Freferences\u002Ffelix-http-jetty-jdk21.md)) only reproduce on newer JDKs and will not show up when verifying with the minimum required version alone\n- apply additional verification steps as needed if the specific version requires it\n- if workarounds were present before updating the parent POM version, check if they can be removed. If they are needed add them back\n\nDo not touch the git repository state - no staging\u002Funstaging, no commits, no pushes.\n\nIf the user separately commits and pushes the changes (e.g. to an open PR) and a CI build fails, fetch the raw log (e.g. a Jenkins job's `consoleText` endpoint) rather than a JS-rendered log viewer — rendered pipeline-explorer pages often don't expose the actual error text to a fetch tool. A \"tests passed\" summary alongside an overall build failure means the real failure is in a later stage (verify\u002FIT\u002Fchecks) — check the full log rather than stopping at the test summary.\n\n### Unsupported versions\n\nThe following historical versions are not supported and must be skipped:\n- 42\n- 50\n\n### Additional fixes\n\nUse the following reference files when a matching migration issue or build failure appears.\n\n- rat-disable: [rat-disable.md](.\u002Freferences\u002Frat-disable.md)\n- osgi-r6: [osgi-r6.md](.\u002Freferences\u002Fosgi-r6.md)\n- servlet-3: [servlet-3.md](.\u002Freferences\u002Fservlet-3.md)\n- osgi-annotations: [osgi-annotations.md](.\u002Freferences\u002Fosgi-annotations.md)\n- bundle-parent: [bundle-parent.md](.\u002Freferences\u002Fbundle-parent.md)\n- timestamp: [timestamp.md](.\u002Freferences\u002Ftimestamp.md)\n- mockito-java17: [mockito-java17.md](.\u002Freferences\u002Fmockito-java17.md)\n- readd-scr-annotations: [readd-scr-annotations.md](.\u002Freferences\u002Freadd-scr-annotations.md)\n- osgi-deps: [osgi-deps.md](.\u002Freferences\u002Fosgi-deps.md)\n- deps-scope: [deps-scope.md](.\u002Freferences\u002Fdeps-scope.md)\n- sling-java-version: [sling-java-version.md](.\u002Freferences\u002Fsling-java-version.md)\n- slf4j2-paxexam-it: [slf4j2-paxexam-it.md](.\u002Freferences\u002Fslf4j2-paxexam-it.md)\n- felix-http-jetty-jdk21: [felix-http-jetty-jdk21.md](.\u002Freferences\u002Ffelix-http-jetty-jdk21.md)\n- pax-exam-timeouts: [pax-exam-timeouts.md](.\u002Freferences\u002Fpax-exam-timeouts.md)\n- git-blame-ignore-revs: [git-blame-ignore-revs.md](.\u002Freferences\u002Fgit-blame-ignore-revs.md)\n\n### Workarounds\n\n- rat-enable: [rat-enable.md](.\u002Freferences\u002Frat-enable.md)\n","# Updating the Sling Parent POM\n\n## When to use\n\nUse when the user asks to upgrade the Sling parent POM version in their project. \n\n## Instructions\n\n- record the current Java and Maven environment with `java -version` and `mvn -version`\n- run a baseline `mvn clean verify` if the current checkout is expected to support the current Java version\n    - if the baseline build fails only because the current parent POM or project setup requires an older Java version, document that and continue\n    - assume the unchanged project would pass with its required Java version; do not switch to version-specific Maven wrappers just to prove the baseline unless the user explicitly asks\n    - if the baseline fails for a reason unrelated to the Java version, abort execution and inform the user of the root cause before changing the parent POM\n- check if any known workarounds exist, but do not remove them yet\n- if other repos in the same workspace\u002Forg use the same parent artifact and test patterns (e.g. pax-exam quickstart ITs), check whether one has already been migrated to the target parent version — its pinned test\u002FIT dependency versions are a validated reference point and can save significant troubleshooting\n- identify the current version of the Sling parent POM in the user's project\n- determine the latest available Sling parent POM version for the applicable parent artifact\n    - target the latest available version, not merely the next increment\n- check `https:\u002F\u002Fcwiki.apache.org\u002Fconfluence\u002Fspaces\u002FSLING\u002Fpages\u002F284790344\u002FUpdate+to+Parent+60`for additional instructions. Follow any steps it documents that are not already covered by this skill's reference files\n- update the parent POM version\n- run `mvn validate` with the current Java version before running a full build\n    - if `mvn validate` fails, fix any POM syntax issues first\n    - if the new parent POM no longer manages some plugin versions, add explicit plugin versions for the affected plugins\n    - if the new parent POM no longer manages some dependency versions, add explicit dependency versions for the affected dependencies\n    - do not continue to `clean verify` until `mvn validate` succeeds\n- run a full `mvn clean verify` build with the current Java version\n    - the goal is for the upgraded project to build successfully with the current Java version\n    - if the build fails because Spotless formatting checks were introduced or changed by the new parent POM, run `mvn spotless:apply`, review the resulting formatting changes, and rerun `mvn clean verify`\n- if the project's CI runs a Java version matrix (check the Jenkinsfile or CI config; commonly includes versions newer than the one just used to verify), also verify with the **highest** JDK version in that matrix using the appropriate `mvnNN` wrapper (e.g. `mvn21 clean verify` for JDK 21 — see [skills\u002FREADME.md](..\u002FREADME.md) § Invoking Apache Maven with different Java versions) before considering the upgrade complete — some failures (e.g. [felix-http-jetty-jdk21.md](.\u002Freferences\u002Ffelix-http-jetty-jdk21.md)) only reproduce on newer JDKs and will not show up when verifying with the minimum required version alone\n- apply additional verification steps as needed if the specific version requires it\n- if workarounds were present before updating the parent POM version, check if they can be removed. If they are needed add them back\n\nDo not touch the git repository state - no staging\u002Funstaging, no commits, no pushes.\n\nIf the user separately commits and pushes the changes (e.g. to an open PR) and a CI build fails, fetch the raw log (e.g. a Jenkins job's `consoleText` endpoint) rather than a JS-rendered log viewer — rendered pipeline-explorer pages often don't expose the actual error text to a fetch tool. A \"tests passed\" summary alongside an overall build failure means the real failure is in a later stage (verify\u002FIT\u002Fchecks) — check the full log rather than stopping at the test summary.\n\n### Unsupported versions\n\nThe following historical versions are not supported and must be skipped:\n- 42\n- 50\n\n### Additional fixes\n\nUse the following reference files when a matching migration issue or build failure appears.\n\n- rat-disable: [rat-disable.md](.\u002Freferences\u002Frat-disable.md)\n- osgi-r6: [osgi-r6.md](.\u002Freferences\u002Fosgi-r6.md)\n- servlet-3: [servlet-3.md](.\u002Freferences\u002Fservlet-3.md)\n- osgi-annotations: [osgi-annotations.md](.\u002Freferences\u002Fosgi-annotations.md)\n- bundle-parent: [bundle-parent.md](.\u002Freferences\u002Fbundle-parent.md)\n- timestamp: [timestamp.md](.\u002Freferences\u002Ftimestamp.md)\n- mockito-java17: [mockito-java17.md](.\u002Freferences\u002Fmockito-java17.md)\n- readd-scr-annotations: [readd-scr-annotations.md](.\u002Freferences\u002Freadd-scr-annotations.md)\n- osgi-deps: [osgi-deps.md](.\u002Freferences\u002Fosgi-deps.md)\n- deps-scope: [deps-scope.md](.\u002Freferences\u002Fdeps-scope.md)\n- sling-java-version: [sling-java-version.md](.\u002Freferences\u002Fsling-java-version.md)\n- slf4j2-paxexam-it: [slf4j2-paxexam-it.md](.\u002Freferences\u002Fslf4j2-paxexam-it.md)\n- felix-http-jetty-jdk21: [felix-http-jetty-jdk21.md](.\u002Freferences\u002Ffelix-http-jetty-jdk21.md)\n- pax-exam-timeouts: [pax-exam-timeouts.md](.\u002Freferences\u002Fpax-exam-timeouts.md)\n- git-blame-ignore-revs: [git-blame-ignore-revs.md](.\u002Freferences\u002Fgit-blame-ignore-revs.md)\n\n### Workarounds\n\n- rat-enable: [rat-enable.md](.\u002Freferences\u002Frat-enable.md)\n",{"name":5,"description":7},"master","d568740afee83b99732b9e474aa3a125b5fa91f8","skills\u002Fupdate-sling-parent-pom",2,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills","https:\u002F\u002Fsling.apache.org\u002F","https:\u002F\u002Fgithub.com\u002Fapache","https:\u002F\u002Fwww.apache.org\u002F","2026-10-30 19:47:07",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add apache\u002Fsling-agent-skills --skill update-sling-parent-pom",{"tool":41,"command":42},"bunx","bunx skills add apache\u002Fsling-agent-skills --skill update-sling-parent-pom",{"tool":44,"command":45},"pnpm","pnpm dlx skills add apache\u002Fsling-agent-skills --skill update-sling-parent-pom","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002FSKILL.md",true,[49,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111],{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"references\u002Fbundle-parent.md","REFERENCE","参考文档",2548,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fbundle-parent.md",{"path":56,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Fdeps-scope.md",208,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fdeps-scope.md",{"path":60,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":61,"sourceHtmlUrl":62},"references\u002Ffelix-http-jetty-jdk21.md",2644,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Ffelix-http-jetty-jdk21.md",{"path":64,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fgit-blame-ignore-revs.md",2346,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fgit-blame-ignore-revs.md",{"path":68,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fmockito-java17.md",257,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fmockito-java17.md",{"path":72,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fosgi-annotations.md",8157,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fosgi-annotations.md",{"path":76,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fosgi-deps.md",994,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fosgi-deps.md",{"path":80,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fosgi-r6.md",415,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fosgi-r6.md",{"path":84,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fpax-exam-timeouts.md",2280,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fpax-exam-timeouts.md",{"path":88,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Frat-disable.md",295,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Frat-disable.md",{"path":92,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Frat-enable.md",199,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Frat-enable.md",{"path":96,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Freadd-scr-annotations.md",410,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Freadd-scr-annotations.md",{"path":100,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fservlet-3.md",190,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fservlet-3.md",{"path":104,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fslf4j2-paxexam-it.md",4619,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fslf4j2-paxexam-it.md",{"path":108,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fsling-java-version.md",1200,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Fsling-java-version.md",{"path":112,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Ftimestamp.md",184,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fupdate-sling-parent-pom\u002Freferences\u002Ftimestamp.md",[116,128],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":21},"01M6AD1TAXS9F6BZ34Y9M8A6H5","sling-release","Automates releasing an Apache Sling project end-to-end using Maven and the sling-cli Docker tool. Use when the user wants to release a Sling project, start a release, perform any step of the Apache Sling release process, or asks about releasing\u002Fvoting\u002Fpromoting a Sling module.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fsling-release\u002FSKILL.md",[],[123,124,125,126,127,9],"release","sling release","cli","docker","release process",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":139,"publishedAt":21},"01M6AD1P7F6P5AXJFVVG85Z4M7","osgi-scr-migrator","Migrate OSGi-based Java projects from deprecated Felix SCR annotations to official OSGi R6\u002FR7 Component annotations. Use when migrating legacy OSGi bundles that use @Component, @Service, @Reference, @Property from org.apache.felix.scr.annotations to org.osgi.service.component.annotations. Handles both Java source code transformation and Maven POM updates (removing maven-scr-plugin, updating dependencies). Also supports Sling-specific annotations like @SlingServlet and @SlingFilter. Features full automation of property migration, metatype configuration generation, constructor injection optimization, validation, and comprehensive reporting. After basic migration, offers optional Step 7 to optimize code with constructor injection for immutable dependencies.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fsling-agent-skills\u002Fblob\u002Fmaster\u002Fskills\u002Fosgi-scr-migrator\u002FSKILL.md",[134],{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[140,141,142,143,144,145,146,9,147],"osgi scr migrator","automation","component","official","plugin","code","validation","java"]