Skip to content

Reorganize AI assistant instructions for multi-agent support#2

Closed
vogella wants to merge 56 commits into
masterfrom
convert-terminal-junit3-to-junit5
Closed

Reorganize AI assistant instructions for multi-agent support#2
vogella wants to merge 56 commits into
masterfrom
convert-terminal-junit3-to-junit5

Conversation

@vogella
Copy link
Copy Markdown
Owner

@vogella vogella commented Nov 11, 2025

Summary

  • Move .github/copilot-instructions.md to AGENTS.md at repository root for better visibility
  • Create CLAUDE.md with repository-specific instructions for Claude Code
  • Update AGENTS.md with agent-specific guidance for GitHub Copilot, Claude Code, and other AI assistants

Motivation

The previous .github/copilot-instructions.md file was specific to GitHub Copilot. This restructuring:

  1. Makes the instructions accessible to multiple AI coding assistants
  2. Provides a central AGENTS.md file that all AI agents can reference
  3. Creates a dedicated CLAUDE.md for Claude Code integration
  4. Documents the strengths of different AI assistants for contributors

Changes

  1. Renamed: .github/copilot-instructions.mdAGENTS.md (more generic name, better location)
  2. Added: CLAUDE.md - Claude Code specific instructions
  3. Enhanced: AGENTS.md with new section "AI Agent-Specific Notes" covering:
    • GitHub Copilot: Inline completion and small-scale refactoring
    • Claude Code: Multi-file refactoring and architectural changes
    • Other AI Agents: General guidance

Test Plan

  • Verify AGENTS.md is accessible at repository root
  • Verify CLAUDE.md is accessible at repository root
  • Content preserved from original copilot-instructions.md
  • Enhanced with multi-agent support

🤖 Generated with Claude Code

vogella and others added 30 commits October 2, 2025 19:28
Changed ProjectDescription.hasPrivateChanges() to use HashSet instead of
Set.of() to handle duplicate natures gracefully. Set.of() throws
IllegalArgumentException on duplicates, but HashSet tolerates them and
correctly compares nature sets.

Also added test case testDuplicateNatures() to ensure this regression
doesn't occur again.
This commit converts the following terminal test suite classes from JUnit3/4 to JUnit5:
- AutomatedTestSuite.java: Converted from JUnit3 TestCase with suite() method to JUnit5 @Suite/@SelectClasses
- AutomatedPluginTestSuite.java: Converted from JUnit3 TestCase with suite() method to JUnit5 @Suite/@SelectClasses
- terminal.internal.emulator.AllTestSuite.java: Converted from JUnit3 TestCase with suite() method to JUnit5 @Suite/@SelectClasses
- terminal.internal.model.AllTestSuite.java: Converted from JUnit3 TestCase with suite() method to JUnit5 @Suite/@SelectClasses
- terminal.model.AllTestSuite.java: Converted from JUnit3 TestCase/JUnit4TestAdapter to JUnit5 @Suite/@SelectClasses

Updated MANIFEST.MF to include org.junit.platform.suite.api import for JUnit5 suite annotations.

All tests (336) continue to pass after the conversion. The migration follows the pattern of replacing:
- extends TestCase with plain classes
- static Test suite() methods with @suite and @SelectClasses annotations
- suite.addTestSuite() calls with class references in @SelectClasses
- JUnit4TestAdapter usage with direct class references

The test functionality remains identical, only the test runner framework has been modernized.
…gurations are

disabled

The previous patch was not completely fixed the issue.

Fix issue
eclipse-platform#2167

Signed-off-by: Pauline DEVILLE <pauline.deville@cea.fr>
Signed-off-by: Pauline DEVILLE <pauline.deville@cea.fr>
This commit fixes launch not found error while switching from modified
launch config tab to new launch config tab.

Fixes : eclipse-platform#2003
This commit fixes Add to run/debug favorite not showing in launch
contexts and updates labels for launches if its already exists in
run/debug config
This commit adds a filter text field that allows users to quickly find
and select launch configurations without manually expanding all launch
types or scrolling through the list.
…rminal

The Eclipse Terminal feature replaces a whole set of features that the
TM project used to provide. The granularity of the TM project is
collapsed into a single feature in Eclipse Terminal. For ISVs that
require additional granularity they are advised to provide their own
features that lists their requirements
This commit improves Copy Expression by excluding eclipse ui values such
as pending, error and disabled
Remove redundant return and additional empty string calculation
iloveeclipse and others added 26 commits November 5, 2025 09:38
- Main fix: the child path created from the link should use
`realParentPath` to avoid silent `NoSuchFileException`'s if the
constructed link does not match actual (fully resolved) file system
state of the local file we are checking. Original code run into (silent)
exceptions and because of that was not able to detect some of possible
recursive links.
- Removed pattern checking for "../X" because backwards links can also
be created with absolute paths, as seen in
`Bug_185247_recursiveLinks.test5_linkParentDirectoyTwiceWithAbsolutePath(boolean)`
- Added regression test `SymlinkResourceTest.testGithubBug2220`.
- Added `UnifiedTree` methods to set/read
`disable_advanced_recursive_link_checks` flag in tests so we can test
both variants of link checking code.
- Updated existing tests to test both advanced / simple link checks
(where possible): `SymlinkResourceTest`, `Bug_185247_recursiveLinks` &
`Bug_185247_LinuxTests`
- Improved `WorkspaceResetExtension` to properly report test names (it
only reported `false` or `true` for parametrized tests).

Fixes eclipse-platform#2220
The TreeMap data retrieval is slower compared to HashMap and TreeMap
"sorted" behavior is only used in matchingPrefixDo() and
overLappingResourcesDo() while updating resources.

Reading unchanged data will be faster if using HashMap, updating the
data will use TreeSet and still be as fast as before.

Fixes eclipse-platform#2251
Add shortenWindowsCommandLine() to shorten all command line arguments
that exceed Windows MAX_PATH limit, not just the working directory. This
fixes issues where Eclipse is unable to launch processes with long
executable paths on Windows.

The fix uses Windows GetShortPathName API via Win32Handler to convert
long paths to their 8.3 short form before passing them to ProcessBuilder
or Runtime.exec().

Co-authored-by: laeubi <1331477+laeubi@users.noreply.github.com>

Version bump(s) for 4.38 stream
…racters in command lines (eclipse-platform#26)

* Initial plan

* Fix null character in Win32Handler.getShortPathName

The issue was that GetShortPathName returns the total length of the shortened path (including prefix like \\?\), but when creating the String from the buffer with an offset, we need to use (newLength - offset) as the length parameter, not newLength. This was causing the String constructor to read past the actual data, picking up null characters from the uninitialized buffer.

Co-authored-by: laeubi <1331477+laeubi@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: laeubi <1331477+laeubi@users.noreply.github.com>
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
This commit will enable Terminate and Remove option in debug view
context only if there's a valid selection
This commit fixes custom breakpoint labels not being rendered in
breakpoints view when breakpoints organized based on any groupings
Bug fixes:
- Set label background to avoid overlapping text if theming is disabled
- Trim inline editor text to avoid "invisible" breakpoints
- Add more space for inline editor if original labels is very short

Refactoring:
- perform preconditions checking at the beginning
- extracted repeated dispose() code to InlineEditor.dispose()
- extract Mac workaround code to dedicated method
- extract editor extent calculation to dedicated method
- removed useless tree.setText(current) and tree.setText("") calls
- don't use syncExec to get RGB of red color

Fixes eclipse-platform#2262
Merge JVM and OS trust stores in case opt-in system property

  eclipse.platform.mergeTrust

is set and trust is not otherwise customized via the

  javax.net.ssl.trustStore[...]

system properties.

Resolves:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=567504
eclipse-platform#1690

Obsoletes (to-be-reverted):
eclipse-platform/eclipse.platform.releng.aggregator#929
eclipse-packaging/packages#224

Replaces:
eclipse-equinox/equinox#1176

See also:
eclipse-simrel/.github#38
Rename .github/copilot-instructions.md to AGENTS.md at the root level
to make it accessible to multiple AI coding assistants.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Create CLAUDE.md file with repository-specific instructions for Claude
AI coding assistant, copied from AGENTS.md content.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Update AGENTS.md title and add AI agent-specific sections for GitHub
Copilot, Claude Code, and other AI assistants. Provides guidance on
the strengths of each tool and how they should interact with the
repository.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@vogella
Copy link
Copy Markdown
Owner Author

vogella commented Nov 11, 2025

Closing to recreate against upstream eclipse-platform/eclipse.platform repository

@vogella vogella closed this Nov 11, 2025
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @vogella, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a comprehensive overhaul of how AI assistant instructions are structured within the repository, moving towards a more inclusive and multi-agent friendly approach. Beyond this significant documentation update, the changes encompass a wide array of technical improvements, including critical fixes for Windows path handling, strategic deprecations to streamline APIs, and the integration of a robust merged SSL trust store mechanism. These updates collectively aim to enhance the platform's stability, maintainability, and compatibility while preparing for future development paradigms.

Highlights

  • AI Assistant Instructions Reorganization: The AI assistant instructions have been restructured for multi-agent support. The previous .github/copilot-instructions.md has been renamed to AGENTS.md and moved to the repository root. A new CLAUDE.md file has been created for Claude Code-specific instructions, and AGENTS.md now provides comprehensive guidance for GitHub Copilot, Claude Code, and other AI assistants.
  • Windows Path Handling Improvement: A fix has been implemented in DebugPlugin.java to shorten Windows command line paths that exceed the MAX_PATH limit, preventing potential issues when launching processes. New test cases were added to LaunchTests.java to verify this functionality for long executable paths.
  • Deprecations and API Clean-up: Several methods and interfaces across various bundles, including IFilteredStep in org.eclipse.debug.core, Preferences in org.eclipse.core.runtime, and components in org.eclipse.compare and org.eclipse.team.ui, have been marked as @Deprecated to signal their eventual removal or replacement.
  • Merged SSL Trust Store Implementation: New components CollectionTrustManager.java and KeyStoreUtil.java have been added to org.eclipse.core.runtime to enable merging SSL trust stores from JVM defaults and OS-specific locations (Windows, macOS). This enhances SSL context setup and compatibility.
  • JUnit 5 Migration and Updates: Numerous MANIFEST.MF files across test bundles have been updated to specify JUnit 5 import versions ([5.14.0,6.0.0) and [1.14.0,2.0.0)). Additionally, several AllTestSuite.java files in the terminal component have been migrated to use JUnit 5's @Suite and @SelectClasses annotations.
  • UI and Build Enhancements: Various UI improvements include updating FileDialog filter extensions to a single string argument, adding a filter text box to the Export Launch Configurations wizard, and refining the inline editing of breakpoint labels. Build configurations were updated to include new SVG icons and increment bundle versions.
  • Resource Management and Performance Fixes: Improvements were made to resource management, such as optimizing GroupLaunchConfigurationDelegate to filter enabled launches once, correcting short path length calculation in Win32Handler, and refactoring recursive symlink checking in UnifiedTree. AliasManager now uses a custom HashMapWithSortedKeys for better performance.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/copilot-setup-steps.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request is quite large and combines several unrelated changes. While the main goal is to reorganize AI assistant instructions, it also includes bug fixes for long paths on Windows and recursive symbolic links, UI enhancements like a toggle-able 'Add to Favorites' action and a filter in the launch configuration export wizard, and significant API cleanup and code modernization. In the future, it would be better to split such diverse changes into separate pull requests for easier review. Overall, the changes are positive, but I have identified a few issues, mainly related to consistency in the new documentation and some minor typos in the code.

Comment thread AGENTS.md

## Repository Overview

This repository contains the core Eclipse Platform components that form the basis for the Eclipse IDE. It is a **large-scale Java/OSGi project** (~120MB, 5,600+ Java files across 38 Maven modules) using **Maven/Tycho** for building Eclipse RCP bundles and features.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This file is missing the important warning that this repository cannot be built in isolation, which is present in CLAUDE.md. This is critical information for any agent (or human) trying to build the project. Please add a similar warning here for clarity and to prevent build confusion.

Suggested change
This repository contains the core Eclipse Platform components that form the basis for the Eclipse IDE. It is a **large-scale Java/OSGi project** (~120MB, 5,600+ Java files across 38 Maven modules) using **Maven/Tycho** for building Eclipse RCP bundles and features.
This repository contains the core Eclipse Platform components that form the basis for the Eclipse IDE. It is a **large-scale Java/OSGi project** (~120MB, 5,600+ Java files across 38 Maven modules) using **Maven/Tycho** for building Eclipse RCP bundles and features.
**⚠️ IMPORTANT: This repository CANNOT be built in isolation.** It depends on a parent POM (`eclipse-platform-parent`) from the [eclipse.platform.releng.aggregator](https://github.com/eclipse-platform/eclipse.platform.releng.aggregator) repository.

Comment on lines +175 to +182
/**
* Excludes unwanted labels from the selected item
*
* @param itemData Selected object
* @param label Current label
* @return filtered label or null if label or item is null
*/
protected String exludeLabels(Object itemData, String label) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

There is a typo in the method name exludeLabels. It should be excludeLabels. Since this is a protected method intended for subclassing, correcting the name is important for API clarity. This will require updates at the call site (line 149) and in overriding classes like CopyExpressionsToClipboardActionDelegate.

Suggested change
/**
* Excludes unwanted labels from the selected item
*
* @param itemData Selected object
* @param label Current label
* @return filtered label or null if label or item is null
*/
protected String exludeLabels(Object itemData, String label) {
/**
* Excludes unwanted labels from the selected item
*
* @param itemData Selected object
* @param label Current label
* @return filtered label or null if label or item is null
*/
protected String excludeLabels(Object itemData, String label) {

Comment thread AGENTS.md
This repository contains the core Eclipse Platform components that form the basis for the Eclipse IDE. It is a **large-scale Java/OSGi project** (~120MB, 5,600+ Java files across 38 Maven modules) using **Maven/Tycho** for building Eclipse RCP bundles and features.

**Key Technologies:**
- Language: Java (JDK 21)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The Java version information is less precise here than in CLAUDE.md. For better accuracy and consistency, consider using the same description: Java (JDK 17+, targets JDK 21 in CI).

Suggested change
- Language: Java (JDK 21)
- Language: Java (JDK 17+, targets JDK 21 in CI)

Comment thread CLAUDE.md
@@ -0,0 +1,267 @@
# Eclipse Platform Repository - Copilot Instructions
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The title of this file appears to be a copy-paste error from the old Copilot instructions. It should be updated to refer to Claude.

Suggested change
# Eclipse Platform Repository - Copilot Instructions
# Eclipse Platform Repository - Claude Code Instructions

}
} else if (i == 0) {
// Only warn for the executable path, as that's the most critical
log(Status.warning("Executable path exceeds Window's MAX_PATH limit and shortening the path failed: " + arg)); //$NON-NLS-1$
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There's a grammatical error in the warning message. "Window's" should be "Windows'".

Suggested change
log(Status.warning("Executable path exceeds Window's MAX_PATH limit and shortening the path failed: " + arg)); //$NON-NLS-1$
log(Status.warning("Executable path exceeds Windows' MAX_PATH limit and shortening the path failed: " + arg)); //$NON-NLS-1$

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.