Part of the problem is the non deterministic nature of llms. This skill
worked flawless couple of months ago on large, complicated projects. I
used it this week on four projects and it completely messed up. The
annotations were completely wrong after the migration.
In any case, for updates to the skill, I usually use the coding agent
and ask it to update based on the learnings.
Regards
Carsten
On 5/8/2026 10:37 PM, Konrad Windszus wrote:
Another issue is different semantics of SCR Service annotation
(https://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html#_service)
and the service element in the OSGi DS Component annotation
(https://docs.osgi.org/specification/osgi.cmpn/7.0.0/service.component.html#org.osgi.service.component.annotations.Component.service--).
The former always registers implicitly all interfaces (no matter if
transitively or directly declared) while the latter only takes into account
direct ones by default.
Not sure if this requires adaptations to the Python script or just
clarification in the SKILLS.md is enough….
Konrad
On 8. May 2026, at 21:49, Konrad Windszus <[email protected]> wrote:
I just tried the scr migration skill with
https://github.com/Adobe-Consulting-Services/acs-aem-commons/tree/master/bundle
and for example
@SlingServlet(
methods = {HttpConstants.METHOD_GET},
resourceTypes = {"acs-commons/components/utilities/audit-log-search"},
selectors = {"auditlogsearch"},
extensions = {"json"})
(https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/165e4fd09f17dbb6ee919c11dabe53b96a735061/bundle/src/main/java/com/adobe/acs/commons/audit_log_search/impl/AuditLogSearchServlet.java#L51-L55)
was converted to
@Component(service = Servlet.class)
@SlingServletResourceTypes(
resourceTypes = "acs-commons/components/utilities/audit-log-search",
selectors = "auditlogsearch",
extensions = "json",
methods = "HttpConstants.METHOD_GET”
)
Seems that
https://github.com/apache/sling-whiteboard/blob/master/skills/osgi-scr-migrator/scripts/migrate_annotations.py
does not properly deal with non-literal annotation elements yet (like in
methods.
Thanks,
Konrad
On 8. May 2026, at 20:54, Konrad Windszus <[email protected]> wrote:
Great, thanks a lot for that.
I am just wondering if this statement from the README is actually correct:
“**Java 17+** - Required for compiling the migrated code (OSGi R6/R7 annotations
require Java 17+)"
https://github.com/apache/sling-whiteboard/blob/c2ad0487b498c2a30ba96f780ee3818bb421c3dc/skills/osgi-scr-migrator/README.md?plain=1#L55
IMHO OSGi R7 Metatype/DS annotations are fully compliant with Java 8 or am I
missing something?
Thanks,
Konrad
On 30. Apr 2026, at 07:30, Carsten Ziegeler <[email protected]> wrote:
I added the missing instructions to the existing parent update skill and also
added my scr migration skill
Regards
Carsten
On 4/24/2026 1:14 PM, Robert Munteanu wrote:
On Fri, 2026-04-24 at 06:33 +0200, Carsten Ziegeler wrote:
Definitely interesting.
As you might have noticed, I wrote a tool which can perform such
actions
like updating the parent pom across a large selection of repositories
using a coding agent.
Yes, I noticed the results :-)
I have also some skills flying around for the SCR annotation
migration
and parent pom updates :)
Maybe we can combine these into one. I'll have a look in the next
days.
I think that would be very useful. I definitely did not cover a lot of
repos during testing with the current skills and would be happy for any
enhancements.
Thanks,
Robert
Regards
Carsten
On 4/23/2026 5:35 PM, Robert Munteanu wrote:
On Fri, 2026-04-17 at 18:32 +0200, Robert Munteanu wrote:
Hi,
Updating the parent pom version in Sling modules is one task that
usually gets left behind. We have many modules, the work is not
that
rewarding and sometimes very tedious - for instance migrating
from
the
Felix SCR annotations to the official OSGi ones.
To make things simpler I have started an experiment in the
whiteboard
-
using agent skills [1] to upgrade the parent pom version.
I extended the experiment and created a tiny evaluation harness for
agent skills at [3] based on the Inpect framework [4].
I did some measurements of the skill and tried to answer some
questions
around efficiency and cost; captured the raw data at [5]:
1. Is the free variant gpt-oss-120b from openrouter good enough?
With skills it is good enough - sometimes better than haiku-4.5
from
Amazon Bedrock.
2. How big is the difference between haiku-4.5 and sonnet-4.5?
With skills the success rate is almost the same - haiku missed 1/15
of
the evals. But Sonnet ends up being almost 3.x more expensive.
3. How good is Claude Sonnet with or without skills?
The skills make all the difference.
Without skills Sonnet can only perform basic upgrades (100%) but it
fails in more complex cases:
- 20% success rate if the rat checks fail after upgrade
- 0% success rate if the build fails because of relocated
dependencies
(OSGi R6)
With skills Sonnet passes all 15 tests.
[1]: https://agentskills.io/
[2]: https://github.com/apache/sling-whiteboard/tree/master/skills/
[3]:
https://github.com/apache/sling-whiteboard/tree/master/skill-evals
[4]: https://inspect.aisi.org.uk/
[5]:
https://gist.github.com/rombert/c099c13013fbdf27445816c976005aba
--
Carsten Ziegeler
Adobe
[email protected]
--
Carsten Ziegeler
Adobe
[email protected]