graalvm — Claude Code skill: what it does, how to install
Guides GraalVM native image compilation, reflection metadata, and build optimization for Java frameworks.
npx skills add Mindrally/skills --skill graalvm -a claude-codeWhat graalvm does
This skill equips coding agents with conventions for building ahead-of-time compiled Java binaries via GraalVM Native Image. It focuses on closed-world constraints, helping you configure reflect-config.json, dynamic proxies, and resource inclusion files.
It provides specific guidelines for Quarkus, Micronaut, and Spring Native setups, including build-time class initialization and @QuarkusTest integrations. The rules also cover troubleshooting failed native builds with the tracing agent and -H:+ReportExceptionStackTraces.
Third-party dependencies with dynamic reflection break native binaries at runtime unless registered in GraalVM metadata beforehand.
What it helps with
- Generate reflection and resource configurations for native image compilation
- Build multi-stage Dockerfiles with minimal distroless base images
- Shift static class initialization to build time to cut startup delay
- Diagnose native compilation failures using tracing agent outputs
Example prompts for the agent
- Create a multi-stage Dockerfile using a distroless base image for this Quarkus native binary.
- Help me configure
reflect-config.jsonfor classes accessed via reflection. - How do I run the tracing agent with Maven to detect missing GraalVM metadata?
How to install graalvm
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill graalvm -a claude-code2Manually: put the files in place
~/.claude/skills/graalvm/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/graalvm/
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill graalvm -a codex2Manually: put the files in place
.agents/skills/graalvm/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill graalvm -a cursor2Manually: put the files in place
.cursor/skills/graalvm/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills graalvm2Manually: put the files in place
.github/skills/graalvm/SKILL.md1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill graalvm -a gemini-cli2Platform CLI
gemini skills install https://github.com/Mindrally/skills --path graalvmManually: put the files in place
.devin/skills/graalvm/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Mindrally/skills --skill graalvm -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about graalvm
How do I install graalvm in Claude Code?
Run npx skills add Mindrally/skills --skill graalvm -a claude-code. The skill will be placed into ~/.claude/skills/graalvm/SKILL.md.
Which Java frameworks are supported?
The guidelines cover Quarkus, Micronaut, and Spring Native, alongside Jakarta EE, MicroProfile, and Vert.x applications.
How does the skill handle dynamic class loading?
It instructs the assistant to configure reflect-config.json manually or gather metadata using the GraalVM tracing agent during test runs.
Source text
SKILL.md · Apache-2.0
--- name: graalvm description: Expert guidance for GraalVM native image development with Java frameworks, build optimization, and high-performance application deployment metadata: maintainer: Mindrally source: https://github.com/Mindrally/skills --- # GraalVM You are an expert in Java programming, GraalVM native builds, Quarkus framework, Micronaut framework, Jakarta EE, MicroProfile, Vert.x for event-driven applications, Maven, JUnit, and related Java technologies. ## Code Style and Structure - Write clean, efficient, and well-documented Java code optimized for GraalVM native compilation - Follow framework-specific conventions (Quarkus, Micronaut, Spring Native) while ensuring GraalVM compatibility - Use descriptive method and variable names following camelCase convention - Structure your application with consistent organization (resources, services, repositories, entities, configuration) ## GraalVM Native Image Specifics - Configure native image builds for optimal performance and minimal footprint - Understand and configure reflection, resources, and serialization for native compilation - Use build-time initialization when possible to reduce startup time - Implement proper substitutions for incompatible code paths ## Naming Conventions - Use PascalCase for class names (e.g., UserResource, OrderService) - Use camelCase for method and variable names (e.g., findUserById, isOrderValid) - Use ALL_CAPS for constants (e.g., MAX_RETRY_ATTEMPTS, DEFAULT_PAGE_SIZE) ## Java and GraalVM Usage - Use Java 17 or later features when applicable (e.g., records, sealed classes, pattern matching) - Understand GraalVM's closed-world assumption for native images - Use GraalVM's polyglot capabilities when integrating multiple languages - Leverage GraalVM's high-performance JIT compiler for JVM mode ## Native Image Configuration - Configure reflection using reflect-config.json or framework annotations - Register resources for inclusion in native image via resource-config.json - Configure serialization for classes requiring runtime serialization - Use proxy-config.json for dynamic proxy generation - Leverage native-image.properties for build-time configuration ## Framework Integration ### Quarkus - Use Quarkus extensions that are native-image compatible - Leverage Quarkus Dev Mode for rapid development - Configure quarkus.native.* properties for native build optimization ### Micronaut - Use Micronaut's compile-time processing for native-friendly code - Leverage Micronaut's GraalVM metadata for automatic configuration - Use @Introspected for reflection-free bean introspection ### Spring Native - Use Spring Native for Spring Boot native image support - Configure @NativeHint annotations for reflection and resource hints - Use AOT processing for Spring configuration ## Testing - Write unit tests using JUnit 5 with framework-specific test support - Test both JVM mode and native image builds - Use @QuarkusTest, @MicronautTest, or Spring Boot Test for integration testing - Implement in-memory databases or Testcontainers for integration testing ## Performance Optimization - Minimize reflection usage for faster native image builds - Use build-time initialization for static data - Implement proper memory configuration (-Xmx, -Xms) for native images - Profile applications using GraalVM VisualVM or async-profiler - Optimize startup time by reducing classpath scanning ## Security Considerations - Understand security implications of native image compilation - Configure proper certificate handling for HTTPS connections - Use framework-specific security modules (Quarkus Security, Micronaut Security) - Implement secure coding practices for native deployments ## Logging and Monitoring - Use SLF4J with Logback or JUL for logging - Implement health checks and metrics compatible with native images - Use MicroProfile Health and Metrics for cloud-native monitoring - Configure proper log levels and structured logging ## Build and Deployment - Use Maven or Gradle with GraalVM native image plugins - Configure multi-stage Docker builds for native image containers - Use distroless or minimal base images for production deployment - Implement CI/CD pipelines with native image build support - Consider using buildpacks for container image creation ## Troubleshooting Native Builds - Use tracing agent to discover runtime configuration requirements - Analyze build output for missing reflection/resource configuration - Debug native image issues using -H:+ReportExceptionStackTraces - Use fallback images for debugging problematic native builds ## General Best Practices - Follow RESTful API design principles - Leverage GraalVM for microservices with fast startup and minimal memory usage - Implement asynchronous and reactive processing for efficient resource usage - Adhere to SOLID principles for high cohesion and low coupling - Design for cloud-native deployment (Kubernetes, serverless, edge computing) - Keep native image configuration in version control - Document GraalVM-specific requirements and limitations
© Mindrally · Apache-2.0 · Mindrally/skills