Skip to content

Add support to use Ai skills#314

Draft
cmoulliard wants to merge 12 commits into
mainfrom
add-support-ai-skills
Draft

Add support to use Ai skills#314
cmoulliard wants to merge 12 commits into
mainfrom
add-support-ai-skills

Conversation

@cmoulliard
Copy link
Copy Markdown
Member

  • Add support to use Ai skills
  • WIP

Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
@cmoulliard
Copy link
Copy Markdown
Member Author

There is an issue to be fixed

2026-04-20 17:52:07,430 INFO  [io.quarkiverse.langchain4j.skills.runtime.SkillsRecorder] (Quarkus Main Thread) Loaded 3 skill(s) from directory: /Users/cmoullia/code/quarkus/rewrite-mtool/migration-tool/.claude/skills
2026-04-20 17:52:07,441 INFO  [io.quarkiverse.langchain4j.vertexai.runtime.anthropic.VertexAiBaseChatModel] (Quarkus Main Thread) Request: [SystemMessage { text = "You have access to the following skills:
<available_skills>
<skill>
<name>migrate-spring-to-quarkus</name>
<description>Migrate Spring Boot applications to Quarkus. Use when the user wants to migrate, convert, or port a Spring Boot app to Quarkus, or asks about Spring-to-Quarkus migration steps. Supports both Spring compatibility extensions and native Quarkus migration paths.</description>                                                                                                                                           
</skill>                                                                                                                                                                                                            
<skill>                                                                                                                                                                                                             
<name>write-rule</name>                                                                                                                                                                                             
<description>Create migration rules for mtool (migration-tool). Use when the user wants to write, create, or add a new YAML migration rule for Java application migrations (Spring Boot to Quarkus, RESTEasy Classic to Reactive, etc.).</description>                                                                                                                                                                                  
</skill>                                                                                                                                                                                                            
<skill>                                                                                                                                                                                                             
<name>spring-boot-to-quarkus-migration-orchestrator</name>                                                                                                                                                          
<description>Decision-gate orchestrator that evaluates preconditions to determine which migration phases to execute during a Spring Boot to Quarkus migration.</description>                                        
</skill>                                                                                                                                                                                                            
</available_skills>                                                                                                                                                                                                 
" }, UserMessage { name = null, contents = [TextContent { text = "Migrate the application using the SKILL provided" }], attributes = {} }]                                                                          
                                                                                                                                                                                                                    
2026-04-20 17:52:07,445 ERROR [dev.snowdrop.mtool.transform.provider.impl.AiSkillsProvider] (Quarkus Main Thread) Error executing AI SKILL: Param was null
java.lang.NullPointerException: Param was null
        at org.jboss.resteasy.reactive.client.impl.WebTargetImpl.resolveTemplate(WebTargetImpl.java:112)
        at org.jboss.resteasy.reactive.client.impl.WebTargetImpl.resolveTemplate(WebTargetImpl.java:25)
        at io.quarkiverse.langchain4j.vertexai.runtime.anthropic.VertexAiRestApi$$QuarkusRestClientInterface.createMessage(Unknown Source)
        at io.quarkiverse.langchain4j.vertexai.runtime.anthropic.VertexAiAnthropicChatModel.callApi(VertexAiAnthropicChatModel.java:73)
        at io.quarkiverse.langchain4j.vertexai.runtime.anthropic.VertexAiBaseChatModel.chat(VertexAiBaseChatModel.java:101)
        at dev.langchain4j.guardrail.SynchronousChatExecutor.execute(SynchronousChatExecutor.java:32)
        at dev.langchain4j.guardrail.AbstractChatExecutor.executeInternal(AbstractChatExecutor.java:66)
        at dev.langchain4j.guardrail.AbstractChatExecutor.execute(AbstractChatExecutor.java:52)
        at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.doImplement0(AiServiceMethodImplementationSupport.java:403)
        at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.doImplement(AiServiceMethodImplementationSupport.java:207)
        at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.implement(AiServiceMethodImplementationSupport.java:182)
        at dev.snowdrop.mtool.transform.provider.ai.SkillsAssistant$$QuarkusImpl.chat(Unknown Source)
        at dev.snowdrop.mtool.transform.provider.impl.AiSkillsProvider.lambda$execAiSkillCmd$0(AiSkillsProvider.java:118)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
        at dev.snowdrop.mtool.transform.provider.impl.AiSkillsProvider.execAiSkillCmd(AiSkillsProvider.java:110)
        at dev.snowdrop.mtool.transform.provider.impl.AiSkillsProvider.executeAiInstruction(AiSkillsProvider.java:93)
        at dev.snowdrop.mtool.transform.provider.impl.AiSkillsProvider.execute(AiSkillsProvider.java:59)
        at dev.snowdrop.mtool.transform.TransformationService.lambda$callProvider$0(TransformationService.java:72)
        at java.base/java.util.Optional.map(Optional.java:260)

@cmoulliard cmoulliard marked this pull request as draft April 20, 2026 15:55
Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
@cmoulliard
Copy link
Copy Markdown
Member Author

VertexAiAnthropicChatModel

The publisher parameter was missing. Fixed with: c7a60fe

…on. Disable the logging

Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
…Create a new method to return warn messages when by example we cannot find skills to be executed. Review how we configure the Skills Assistant

Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
…n-cli/src/main/resources/application.properties as it must be provided as env var by the user

Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
…e path of the SKILLS using Smallrye config

Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
Signed-off-by: Charles Moulliard <cmoulliard@ibm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant