AI & DevelopmentDeveloper ToolsDeveloper Experience

SkillsJars: AI Agent Skills as Maven Dependencies

Java JAR package containing AI agent SKILL.md files with Maven dependency tree visualization

Your team runs Claude Code on three repos. Each has a .claude/skills/ folder. Each folder has the same quarkus-scaffolding skill file — slightly different. One has a newer allowed-tools list. One has a typo fix nobody committed back upstream. One is pinned to a February version nobody remembers editing. This is the agent skills drift problem, and it gets worse every time someone forks a skill instead of sharing one. SkillsJars, featured this week at IntelliJ IDEA Conf 2026, applies a 30-year-old solution to a 2026 problem: package SKILL.md files as JAR artifacts, publish them to Maven Central, and version them like any other dependency.

Why Copy-Pasting Skills Is a Governance Problem, Not Just Inconvenience

Agent skills are not documentation. They actively control what your AI agent can and cannot do. The YAML frontmatter in every SKILL.md file includes an allowed-tools field that constrains which capabilities an agent can invoke during that task. A research team found that 13.4% of scanned agent skills contain critical security issues — instructions that grant broader tool access than intended, or that can be injected with malicious guidance through dependency chains.

When your team copies skill files manually, you lose the audit trail. You cannot tell whether the skill in repo A is more or less permissive than the one in repo B. You cannot roll back a skill that started producing worse output after someone “improved” it. You cannot run a security scanner over the skills before they reach developers. Package managers solve all of this. They just have not existed for agent skills in the JVM ecosystem — until now.

How SkillsJars Works

SkillsJars packages SKILL.md files inside standard JAR artifacts at a well-known classpath path: META-INF/skills/<org>/<repo>/<skill>/SKILL.md. Maven and Gradle plugins extract those skills to whichever directory your AI assistant reads at startup. The agent never interacts with Maven directly — it reads files on the filesystem, same as always. Package management happens at build time.

Adding a skill to a Maven project looks like adding any other dependency:

<dependency>
    <groupId>com.skillsjars</groupId>
    <artifactId>anthropics__skills__pdf</artifactId>
    <version>2026_02_25</version>
</dependency>

After declaring the dependency, run the extraction plugin to push skills to the filesystem:

./mvnw skillsjars:extract -Ddir=.claude/skills

Gradle and SBT plugins are also available. Transitive dependencies work out of the box — if a skills JAR depends on another skills JAR, both get extracted.

What Is Available on Maven Central Today

The com.skillsjars group on Maven Central already includes packaged skills from Anthropic and community contributors:

  • anthropics__skills__pdf — Read, extract, merge, split, and watermark PDFs
  • anthropics__skills__skill-creator — Create and update SKILL.md files for your own tools
  • anthropics__skills__web-artifacts-builder — Generate multi-component HTML with React, Tailwind, and shadcn/ui
  • addyosmani__agent-skills__using-agent-skills — Skill discovery and invocation
  • addyosmani__agent-skills__api-and-interface-design — Guidance for stable API and interface design

These are real versioned artifacts, not placeholders. The catalog will grow as more teams publish their own skills. Browse the full list at mvnrepository.com/artifact/com.skillsjars.

Spring AI Integration

For teams building custom agents with Spring AI, SkillsJars offers a second path that skips filesystem extraction. The Spring AI community’s spring-ai-agent-utils project includes a SkillsTool that loads skills directly from the classpath:

ChatClient chatClient = chatClientBuilder
    .defaultToolCallbacks(SkillsTool.builder()
        .addSkillsResource(
            new ClassPathResource("META-INF/resources/skills/anthropics/skills"))
        .build())
    .defaultTools(FileSystemTools.builder().build())
    .build();

This pattern treats skills the same way Spring treats configuration and static resources: packaged in JARs, resolved from the classpath, no manual file management. A working example is available at skillsjars-example-spring-ai on GitHub.

The Bigger Point

The agent skills package management problem is the same story the industry has run before. JavaScript had a copy-paste library problem before npm. Python had competing ways to share packages before pip settled it. Rust avoided the mess by launching with Cargo. Every language eventually needed a canonical, versioned dependency registry for shared code, and the ecosystem accelerated once it had one.

Agent skills are shared code for AI. They encode team knowledge, security policies, and workflow patterns. At the single-developer scale, throwing SKILL.md files in a folder works fine. At the team level, it starts to break. At the enterprise level, it is a governance liability.

SkillsJars is early and the Maven Central catalog is small. But the approach is sound, and targeting the JVM ecosystem first makes sense — Java shops already have Maven governance pipelines, CVE scanners, and license checkers wired into their builds. Adding skills to that pipeline is one plugin declaration away. The Agent Skills open standard now works across Claude Code, Cursor, GitHub Copilot, Codex CLI, and Gemini CLI. The skills are universal. The packaging, for Java teams, just got a lot more manageable.

ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *