This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This project has Eclipse MCP servers configured in opencode.json. Always prefer MCP server tools over built-in tools when they are available.
| Operation | Preferred Tool |
|---|---|
| Reading Java source | eclipse-ide (readProjectResource, getSource, getClassOutline, getMethodSource) |
| Editing code | eclipse-coder (replaceString, insertIntoFile, createFile, replaceFileContent) |
| Searching code | eclipse-ide (fileSearch, fileSearchRegExp, findReferences) |
| Git operations | eclipse-git instead of CLI git |
| Running/debugging | eclipse-runner, eclipse-pde |
After every code change:
eclipse-ide_getCompilationErrors— check for compile errorseclipse-ide_executeQuickFix— auto-resolve errors with available quick fixeseclipse-coder_organizeImports— fix importseclipse-coder_formatFile— format the file- Spotbugs errors at the two highest severity levels are blocking — fix them in any new/modified code
See AGENTS.md for the full tool policy and workflow.
Prerequisites: Maven 3.9.0+, Java 21. Tycho version is set in .mvn/maven.config.
# Build all plugins (default)
mvn clean verify
# Full product with bundled JREs and Node.js
mvn clean verify -Pproduct
# Feature and product only (skips JREs/Node.js)
mvn clean verify -Ponly_product
# Target platform definition only
mvn clean verify -PtargetTarget platform files are in launch_targets/. The main target (com.servoy.eclipse.target.target) pulls Eclipse 2025-12, GEF Classic 3.26.0, NatTable 2.6.0, Nebula 3.2.0, and Equo Chromium/CEF.
- Java plugin tests:
com.servoy.eclipse.tests(eclipse-test-plugin) — run viaeclipse-ide_runClassTestsoreclipse-pde_runJUnitPluginTestClass - Angular (NGClient UI):
com.servoy.eclipse.ngclient.ui/node/run_tests.bat - Angular (Designer RFB):
com.servoy.eclipse.designer.rfb/node/— Karma (karma.conf.js) - Angular (WPM):
com.servoy.eclipse.designer.wpm/node/src/test.ts
This is a multi-module Maven/Tycho Eclipse RCP application (~40+ OSGi plugin bundles) built on Eclipse 2025-12. Java 21, version 2026.6.0-SNAPSHOT.
Core:
com.servoy.eclipse.core— main plugin, extension point schemas, launch configurationscom.servoy.eclipse.model— data model layer (solution model, type inference, natures)com.servoy.eclipse.ui— views, perspectives, editors, exporters UIcom.servoy.eclipse.debug— debugger supportcom.servoy.eclipse.cloud— cloud integration
Form Designers (three separate builders):
com.servoy.eclipse.designer— base form designercom.servoy.eclipse.designer.rfb— Responsive Form Builder; Angular frontend lives innode/com.servoy.eclipse.designer.rib— legacy RIB buildercom.servoy.eclipse.designer.wpm— Web Package Manager; Angular frontend innode/
NG Client:
com.servoy.eclipse.ngclient— support modulecom.servoy.eclipse.ngclient.ui— full Angular workspace innode/
Exporters: solution, WAR, NG Desktop, mobile — each in a separate com.servoy.eclipse.exporter.* plugin with a shared extension-point pattern.
AI Integration:
com.servoy.eclipse.opencode— "Servoy AI" perspective, embedded browser editor (Equo Chromium)com.servoy.eclipse.servoypilot+servoypilot.langchain4j— AI assistant with LangChain4jcom.servoy.eclipse.aibridge— AI backend bridge
Platform bundles: com.servoy.eclipse.jre.* and com.servoy.eclipse.nodejs.* provide bundled JREs and Node.js for win32/linux/macosx × x86_64/aarch64.
The RFB designer, WPM, and NGClient UI each have a full Angular CLI workspace under their node/ subdirectory. These are compiled separately from Maven (via the tycho-extras frontend plugin) and bundled into the OSGi plugin at build time.
com.servoy.eclipse.core defines the main extension points (aiprovider, debugstarter, activesolutionlistener, preInitializeJob). Plugins contribute to these declaratively via plugin.xml. This is standard Eclipse plugin architecture — search plugin.xml files for extension/extension-point declarations when tracing feature contributions.
Feature specs and design documents live in docs/ at the repository root.
- Name files after the Jira case with a
.spec.mdextension:docs/SVY-21080-embedded-opencode.spec.md - Never place spec files inside a plugin or module subdirectory — they don't belong in OSGi bundles and won't be built into JARs.
- When asked to write a spec, always create it in
docs/unless explicitly told otherwise.
- Include the Jira case number when relevant:
SERVOY-293 fix NPE in WAR export [ai] - Append
[ai]to the subject line when the commit is mostly AI-generated - Case prefixes:
SVY-,SVYX-,SERVOY-
AGPL v3. Compatible with all open source licenses except GPL.