s32ds-configure-preferences
Browse and open S32DS IDE preference/settings pages. Lists all available preference pages with their IDs, then opens a specific page by ID so the user can adjust IDE settings (compiler paths, code sty
SKILL.mdskills/s32ds/s32ds-configure-preferences/SKILL.md
GitHubConfigure Preferences
Goal
Browse, locate, and open specific IDE preference pages in S32 Design Studio so the user can modify settings.
Tools Used
search_actions- call FIRST to discover available actions; the returned catalog includes each action's input schemaexecute_action- invoke any discovered action viaexecute_action(action_name="X", params={...}); the staticstart_toolaction brings the IDE up if it is not running- The
waitForJobaction (viaexecute_action) - blocks until a named async job completes
Before You Start
Call search_actions(query="...") first to discover all available actions, their descriptions, and input schemas (a parameterless search_actions() browses everything). Use the returned catalog to determine correct action names and required/optional parameters before calling execute_action.
Prerequisites
- S32DS IDE must be running and responsive
- Know what setting the user wants to change (or at least the domain: compiler, formatting, debug, etc.)
Guardrails
Scope
- Only open the specific preference page the user requested. Do not change setting values unless the user explicitly asks; opening a page for review is the default.
Destructive actions
- Confirm before altering toolchain/compiler paths or other build-affecting settings - a wrong value can break every build. Report the change made so the user can revert it.
Refuse-and-escalate
- If the requested preference page ID is unknown or not found, list the available pages and ask the user to choose rather than guessing an ID.
When to Use
User wants to change IDE settings (compiler paths, formatting, encoding, etc.)
Need to find a specific preference page by name or keyword
Adjusting toolchain, code style, or workspace preferences
Configuring debug probe defaults, memory settings, or console behavior
Decision Tree
START
├─ User knows exact preference page?
│ YES -> Open directly (step 3)
│ NO -> List all pages first (step 1) -> search/filter (step 2)
│
├─ Is this a workspace-level or project-level setting?
│ WORKSPACE -> Use execute_action(action_name="openPreferences") (this skill)
│ PROJECT -> Use execute_action(action_name="getProjectInfo") + guide to Project Properties
│
└─ User wants to install extensions/SDKs?
YES -> Use the s32ds-open-extensions-and-updates skill instead
NO -> Continue with this skill
Steps
1. List Available Preference Pages
- Tool:
execute_action(action_name="listPreferencePages") - Purpose: Discover all registered preference page IDs and labels
- Expected result: JSON with
{ count, preferencePages: [ { id, label }, ... ] } - If it fails: IDE may not be running - verify with
execute_action(action_name="listProjects")
2. Identify the Target Page
- Purpose: Match user's request to a specific page ID
- Search the returned list for keywords relevant to the user's request
- Common preference pages:
| User Request | Likely Page ID Pattern | Label |
|---|---|---|
| Code formatting / indentation | org.eclipse.cdt.ui.preferences.CodeFormatterPreferencePage |
C/C++ Code Style > Formatter |
| Include paths / symbols | org.eclipse.cdt.ui.preferences.BuildPathsPropertyPage |
C/C++ General > Paths and Symbols |
| Workspace encoding / line endings | org.eclipse.ui.preferencePages.Workspace |
General > Workspace |
| Console output limits | org.eclipse.debug.ui.ConsolePreferencePage |
Run/Debug > Console |
| Toolchain / compiler paths | Pages containing toolchain or S32 |
S32DS-specific toolchain |
| Debug probe settings | Pages containing debug or probe |
S32 Debugger settings |
| Git / version control | org.eclipse.egit.ui.internal.preferences |
Team > Git |
| Editor behavior (tabs, spaces) | org.eclipse.ui.preferencePages.GeneralTextEditor |
General > Editors > Text Editors |
- If no match found: Ask user for more details about what they want to configure
3. Open the Preference Page
- Tool:
execute_action(action_name="openPreferences", params={"pageId": "<preference_page_id>"}) - Purpose: Navigate directly to the desired preference dialog
- Expected result:
{ ok: true }- dialog opens in IDE - If it fails: Page ID may be incorrect - double-check against step 1 results
To open the root preferences dialog (for browsing):
- Tool:
execute_action(action_name="openPreferences")(no pageId)
4. Discover Available IDE Commands (optional)
- Tool:
execute_action(action_name="listCommands") - Purpose: List all executable IDE command IDs (useful when user wants to trigger actions programmatically)
- Expected result: JSON with available command identifiers
- Use case: User asks "what commands can I run?" or needs a command ID for keybindings/automation
5. Guide the User
- Purpose: Since MCP cannot programmatically change preference values, provide clear instructions
- Tell the user:
- What setting to look for in the opened dialog
- What value to set or change
- Whether to click "Apply" or "Apply and Close"
- Whether a restart is needed (rare, but some settings require it)
6. Verify (if applicable)
- For settings that affect build behavior: suggest a clean rebuild
- the
s32ds-clean-and-rebuildskill
- the
- For settings that affect project structure: re-check with
execute_action(action_name="getProjectInfo", params={"projectName": "<name>"})
Error Catalog
| Error Pattern | Likely Cause | Fix |
|---|---|---|
execute_action(action_name="openPreferences", ...) returns error |
IDE not running or busy | Wait for jobs to complete, retry |
| Page ID not found in list | Preference page from a plugin not installed | Check Extensions and Updates for missing plugin |
| Setting doesn't persist after restart | Project-level setting overriding workspace | Check Project Properties (right-click project) |
| "Apply" button grayed out | No changes detected by dialog | Ensure you actually modified a value |
| Preference affects only new projects | Some defaults only apply to new projects | For existing projects, change in Project Properties |
Common Patterns
Pattern 1: Change Workspace Encoding
execute_action(action_name="listPreferencePages")
# Find: "General > Workspace" or ID containing "Workspace"
execute_action(action_name="openPreferences", params={"pageId": "org.eclipse.ui.preferencePages.Workspace"})
# Guide: "Text file encoding" -> select "Other: UTF-8" -> Apply and Close
Pattern 2: Configure Code Formatter
execute_action(action_name="listPreferencePages")
# Find: C/C++ > Code Style > Formatter
execute_action(action_name="openPreferences", params={"pageId": "org.eclipse.cdt.ui.preferences.CodeFormatterPreferencePage"})
# Guide: Select profile or import formatter XML -> Apply
Pattern 3: Adjust Console Buffer Size
execute_action(action_name="openPreferences", params={"pageId": "org.eclipse.debug.ui.ConsolePreferencePage"})
# Guide: Check "Limit console output" -> set buffer size -> Apply
Related Skills
s32ds-open-extensions-and-updates- for installing plugins/SDKs, not preferencess32ds-analyze-project- to understand project settings before changing preferencess32ds-clean-and-rebuild- after changing build-related preferences
Notes
- MCP cannot programmatically set preference values - it can only open the dialog
- Some preferences are project-scoped (right-click project -> Properties) vs workspace-scoped (Window -> Preferences). This skill handles workspace-scoped only.
- Preference pages come from Eclipse plugins; if a plugin isn't installed, its pages won't appear
- Changes to build-related preferences (toolchains, paths) typically require a clean rebuild to take effect
- Some preference page IDs may vary between S32DS versions
Anti-Patterns (Do NOT)
- Do NOT guess preference page IDs without listing first - IDs vary by installation
- Do NOT confuse workspace preferences with project properties - they override differently
- Do NOT assume a preference change takes effect immediately - some need restart or rebuild
- Do NOT use this skill for SDK installation - use
s32ds-open-extensions-and-updatesinstead