Skip to content
Back to skills

S32ct Cli

ASecurity

Generic dispatcher wrapper around the S32 Configuration Tools headless CLI. Fronts all 9 S32CT tools (Pins, Clocks, Peripherals, DCD, IVT, eFUSE, GTM, QuadSPI, FFC) behind the unified `nxp_s32ct_execute_action(action_name="s32ct.configure_cli", params={...})` entry point. Trigger phrases include "run S32CT headless", "call -SetValue", "-GetValue", "-ImportBin", "-ImportBlob", "-ExportBlob", "-ExportMEX", "-ExportAB", "-ValidateConfiguration", "apply use-case then tweak", "modify a .mex progra...

  • 5 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 15, 2026
developmentpythonrails

Works with

  • cli
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 15, 2026

npx -y skills add nxp-agentic-ai/s32-ds-ai-support --skill s32ct-cli --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of S32ct Cli?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for S32ct Cli
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nxp-agentic-ai-s32ct-cli/badge)](https://www.skillsdirectory.com/skills/nxp-agentic-ai-s32ct-cli)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: s32ct-cli
description: >
  Generic dispatcher wrapper around the S32 Configuration Tools headless CLI.
  Fronts all 9 S32CT tools (Pins, Clocks, Peripherals, DCD, IVT, eFUSE, GTM,
  QuadSPI, FFC) behind the unified `nxp_s32ct_execute_action(action_name="s32ct.configure_cli", params={...})`
  entry point. Trigger phrases include "run S32CT headless", "call -SetValue",
  "-GetValue", "-ImportBin", "-ImportBlob", "-ExportBlob", "-ExportMEX",
  "-ExportAB", "-ValidateConfiguration", "apply use-case then tweak",
  "modify a .mex programmatically", "read data-model values back". Also the
  fallback for headless flags no facade wraps (`-ApplyUseCase`, the
  `-Import*` and `-Migrate*` families, `extra_args`) - see
  `references/tool-flags.md` for the full matrix. Do NOT use for read-only
  lookups (`s32ct-*-info`), single-tool work an `s32ct-*-facade` covers,
  code generation (`s32ct-generate-code`), or scaffolding a new `.mex`
  (`s32ct-generate-mex-config`). Works on both `desktop` and
  `integrated_s32ds` distributions.

license: LA_OPT_Online Code Hosting NXP_Software_License
metadata:
  author: NXP
  version: "1.0.0"
  product: s32ct
  depends_on: '[s32ct-distributions]'
  tags: '[s32ct, headless, cli, dispatcher, configuration, code-generation]'
---

# S32CT CLI Dispatcher (full surface)

Generic, fully-parameterized wrapper around the S32 Configuration Tools
headless CLI covering all 9 tools. Superset of `s32ct-generate-code` and
`s32ct-gtm-create-from-usecase`. Post 16->5 tool refactor, the standalone
`cli` MCP tool no longer exists - this is the `cli` action of the unified
`nxp_s32ct_execute_action` dispatcher. Every other action (`pins`, `clocks`,
`peripherals`, `dcd`, `ivt`, `efuse`, `gtm`, `quadspi`, `ffc`,
`generate_code`) is a thin pre-fill over the same implementation.

## When to use

Use this skill when:
- Modifying an existing `.mex` programmatically (`-SetValue`, `-ExportMEX`).
- Reading live data-model values back (`-GetValue`).
- Combining `-ApplyUseCase` with fine-grained `-SetValue` in one run.
- Driving any of the 9 tools with a flag the per-tool skill doesn't expose
  (e.g. `-ValidateConfiguration`, `-ImportBlob`, `-ExportAB`).
- Importing binary blobs, IVT images, DCD images, QuadSPI images.
- Exporting application bootloader, blob, DDRC, FSS firmware, ELF, ARXML,
  JSON, source, HTML report, registers dump, CSV, MEX.
- Migrating Peripherals-tool components to a target SDK version.
- Applying custom copyright headers and output-path overrides.

Do **not** use this skill for:
- Plain regeneration of one tool from an existing `.mex` - use
  `nxp_s32ct_execute_action(action_name="s32ct.generate_code", params={...})` (simpler schema).
- Starting from a GTM use-case template - use
  `nxp_s32ct_execute_action(action_name="s32ct.gtm_create_from_usecase", params={...})`.
- Multi-tool runs in one invocation - only one tool block per call; loop
  the caller instead.
- Read-only data-model inspection - see `s32ct-peripherals-info`,
  `s32ct-pins-info`, `s32ct-clocks-info`.

## Available Capabilities

| Type | Name | Invocation |
|------|------|------------|
| Action | Load-and-edit `.mex` | `nxp_s32ct_execute_action(action_name="s32ct.configure_cli", params={"project_path": ..., "tool_name": ..., "set_values": [...], "export_kind": "ExportMEX", "output_dir": ...})` |
| Action | Empty-config bootstrap | `nxp_s32ct_execute_action(action_name="s32ct.configure_cli", params={"empty_config": True, "mcu": ..., "sdk_version": ..., "tool_name": ...})` |
| Action | Read values | `nxp_s32ct_execute_action(action_name="s32ct.configure_cli", params={"project_path": ..., "tool_name": ..., "get_values": [...]})` |
| Action | Validate headlessly | `nxp_s32ct_execute_action(action_name="s32ct.configure_cli", params={"project_path": ..., "tool_name": ..., "validate": True})` |
| Action | Import + export | `nxp_s32ct_execute_action(action_name="s32ct.configure_cli", params={..., "import_bin": ..., "export_kind": ..., "output_dir": ...})` |
| Reference | Per-tool flag matrix | `references/tool-flags.md` |

## Quickstart

1. Modify an existing GTM project and persist as `.mex`:
   ```python
   nxp_s32ct_execute_action(
       action_name="s32ct.configure_cli",
       params={
           "project_path": "C:/out/gtm_demo/S32E2XX.mex",
           "tool_name": "GTM",
           "set_values": ["tom0_ch1_en=true", "tom1_ch2_en=true"],
           "export_kind": "ExportMEX",
           "output_dir": "C:/out/gtm_demo",
       },
   )
   ```

2. Read data-model values back:
   ```python
   nxp_s32ct_execute_action(
       action_name="s32ct.configure_cli",
       params={
           "project_path": "C:/out/gtm_demo/S32E2XX.mex",
           "tool_name": "GTM",
           "get_values": ["atom0_ch2_en", "atom0_ch2_period"],
       },
   )
   ```

3. Apply a use-case AND tweak a value in one run:
   ```python
   nxp_s32ct_execute_action(
       action_name="s32ct.configure_cli",
       params={
           "empty_config": True,
           "mcu": "S32E288",
           "sdk_version": "PlatformSDK_S32ZE",
           "tool_name": "GTM",
           "apply_use_case": "C:/uc/atom_inverted_pwm.mex",
           "set_values": ["gtm_codegen=true", "atom0_ch2_period=0xBB80"],
           "export_kind": "ExportAll",
           "output_dir": "C:/out/gtm_custom",
       },
   )
   ```

4. Validate an existing IVT configuration:
   ```python
   nxp_s32ct_execute_action(
       action_name="s32ct.configure_cli",
       params={
           "project_path": "C:/projects/bldc/bldc.mex",
           "tool_name": "IVT",
           "validate": True,
       },
   )
   ```

5. Import a binary IVT image and export blob:
   ```python
   nxp_s32ct_execute_action(
       action_name="s32ct.configure_cli",
       params={
           "empty_config": True,
           "mcu": "S32S247TV",
           "sdk_version": "s32sdk_s32s_rtm_100",
           "tool_name": "IVT",
           "import_bin": "C:/in/ivt_image.bin",
           "auto_align": "0x34000000",
           "export_kind": "ExportAll",
           "output_dir": "C:/out/ivt_export",
       },
   )
   ```

See `references/tool-flags.md` for the complete flag matrix and 10 worked
examples covering GTM, IVT, eFUSE, FFC, Peripherals, Pins.

## Shared parameters (framework level)

Independent of `tool_name`:

| Name | Maps to |
|------|---------|
| `project_path` OR `empty_config`+`mcu`+`sdk_version` | `-Load` / `-EmptyConfig -MCU -SDKVersion` (mutually exclusive) |
| `config_name` | `-ConfigName` |
| `custom_copyright` | `-CustomCopyright` |
| `output_path_overrides` | `-OutputPathOverrides` |
| `data_dir` | `-data <workspace>` (auto-injected on retry) |
| `extra_args` | verbatim tail - escape hatch |
| `s32ct_launcher`, `launcher_ini` | launcher / ini overrides |
| `timeout_s` (default 600) | process timeout |

## Export verbs

`export_kind` in `{ ExportAll, ExportSrc, ExportHTML, ExportCSV,
ExportRegisters, ExportMEX, ExportBin, ExportC, ExportBlob, ExportAB,
ExportPointers, ExportDDRC, ExportFssFw, ExportConfig, ExportELF,
ExportARXML, ExportJSON }`. When set, `output_dir` is required (created
if missing). `ExportMEX` is the supported way to persist `.mex` changes.

## Configuration

```yaml
# One tool block per invocation. tool_name in
#   Pins | Clocks | Peripherals | DCD | IVT | eFUSE | GTM | QuadSPI | FFC
# enable_tool defaults to true when tool_name is set.
```

## Guardrails

**Scope** - Writes files under `output_dir` when an export verb is set, and
may overwrite prior outputs there. Does not modify the loaded `project_path`
in place; `.mex` changes are persisted via `export_kind="ExportMEX"`. Does
not touch the live target.

**Destructive actions** - `ExportMEX` overwrites any existing `.mex` of the
same name in `output_dir`. Import verbs (`ImportBin`, `ImportBlob`,
`ImportAB`, `ImportDDRC`, `ImportARXML`, `ImportJSON`) mutate the in-memory
data model before export.

**Refuse-and-escalate** - Refuse when `project_path` and `empty_config` are
both set (mutually exclusive), when `empty_config=True` without `mcu` +
`sdk_version`, when `export_kind` is set without `output_dir`, when an
enum value (`tool_name`, `export_kind`, `update_filepaths`, `ivt_filter`,
`file_type`) is outside its allowed set, or when any file input path does
not exist. In each case emit a clear error before spawning the launcher
and list the allowed set.

**Launcher behavior** - Portable across both S32CT distributions.
`desktop` uses `toolsc.exe`; `integrated_s32ds` uses `s32dsc.exe` and
requires `-data <workspace>` (auto-injected). On
`IllegalStateException: instance data location has not been specified`
the wrapper retries once with a temp `-data`; second failure surfaces
the raw exit code. See `s32ct-distributions` for details.

## Output shape

Returns `{ exit_code, command, stdout_tail, stderr_tail, values, summary }`
as a JSON string. `values` is populated only when `get_values` is non-empty;
the parser handles bordered tables, pipe rows, `key=value`, and
whitespace-aligned forms. Non-zero `exit_code` yields a clear failure
`summary` plus truncated stderr.

## Validation loop

1. Confirm exactly one of `project_path` or `empty_config=True` is set.
2. If `empty_config=True`, confirm `mcu` and `sdk_version` are supplied.
3. Confirm every file input (`apply_use_case`, `import_*`, `raw_binary`,
   `clock_config_data`, `mini_paco_structure`, `pre_defined_data`,
   `custom_copyright`, `output_path_overrides`, `sdk_path`,
   `import_project`) exists on disk.
4. Confirm all enum-valued parameters match their allowed set.
5. Confirm `output_dir` is set when `export_kind` is set.
6. Run the launcher. If exit is non-zero and stderr contains
   `IllegalStateException: instance data location has not been specified`,
   retry once with a temporary `-data` directory.
7. Pass criterion: `exit_code == 0` AND (if `export_kind` was set) the
   expected output exists under `output_dir` AND (if `get_values` was
   non-empty) `values` contains one entry per requested id.

## Out of scope

- Multi-tool orchestration in one call (loop the caller).
- Modifying the live target device (use `nxp_s32flashtool`).
- Interactive GUI operations.
- Editing pointer addresses inside IVT `<ivt_pointer>` rows via
  `-SetValue` - those must be edited in the `.mex` XML directly; see
  `s32ct-ivt-build-blob`.

## See Also

- `references/tool-flags.md` - Per-tool flag matrix for all 9 tools
  (Pins, Clocks, Peripherals, DCD, IVT, eFUSE, GTM, QuadSPI, FFC), the
  full command-chain build order, and 10 worked examples.
- Related skills:
  - `s32ct-generate-code` - simpler regen from an existing `.mex`.
  - `s32ct-gtm-create-from-usecase` - GTM use-case starter.
  - `s32ct-peripherals-info`, `s32ct-pins-info`, `s32ct-clocks-info` -
    read-only data-model inspectors.
  - `s32ct-ivt-build-blob` - coordinated `.mex` edits for `-ExportBlob`.
  - `s32ct-distributions` - `desktop` vs `integrated_s32ds` launcher
    conventions.

Files in this skill

  • SKILL.md10.7 KB
  • references/tool-flags.md10.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.