MSPM0 Skill
The mspm0-ccs skill takes a TI MSPM0 board from editing .syscfg to build, flash and debug on real hardware, with examples.
- 378 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- Scripts run builds, flashing and a debugger, which means writing to the flash memory of the connected board.
- A locked chip may require erase and factory reset, which happen only after the user's explicit permission.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/mspm0-skillDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Scripts run builds, flashing and a debugger, which means writing to the flash memory of the connected board.
- A locked chip may require erase and factory reset, which happen only after the user's explicit permission.
This is third-party code. Review the repository files before installing.
What it does
MSPM0 Skill teaches an agent to work on Texas Instruments MSPM0 microcontroller projects. The agent reads and edits `.syscfg` and leaves the generated `ti_msp_dl_config.c` and `ti_msp_dl_config.h` alone. It then identifies the project environment, CCS, Keil, or CMake with GCC and OpenOCD, and picks a build, flash and debug path for the connected probe. The skill ships Python scripts: a project and probe check, a SysConfig CLI run in a temporary folder, a serial console, and debugging through CCS-DSS or through OpenOCD with GDB. Six ready examples cover an LED, PWM, a timer interrupt and UART, including a DMA variant.
Who it is for. Students and engineers writing firmware for MSPM0 boards, including for student electronics contests.
Good fit when
- An LED on PB22 of an MSPM0G3507 board must blink, and pins and clocks are not configured yet.
- An existing CCS or Keil project needs UART with DMA added without breaking the rest of the configuration.
- Firmware does not start, and it is unclear whether a J-Link, XDS110 or DAPLink probe responds.
- Controller gains are tuned from data the board sends over a serial port.
- You need an example from the Texas Instruments SDK for a specific module, such as UART for LP-MSPM0G3507.
Not a fit when
- Firmware targets STM32, ESP32 or another platform without SysConfig.
- Your board differs from the verified one, and there is no time for a trial LED or timer run.
- A chip is locked by protection, and you expect the agent to erase it without your decision.
- The SDK, SysConfig and debugger are not installed, and the skill is expected to install them.
Example request
Use the mspm0-ccs skill: check the project's `.syscfg` and toolchain, configure the PB22 LED to blink once a second, build the project and flash the board.Limitations
The skill was verified on a Lichuang MSPM0G3507 board with CCS Theia, CLion, J-Link and DAPLink. Other boards, packages and SDK versions were not tested on hardware. It does not install the SDK, SysConfig, CCS, UniFlash, OpenOCD or GDB, so prepare them beforehand. The scripts need Python 3.10 or newer, and the serial tools also need `pyserial`. If a chip is locked, the agent stops automatic actions and asks you to unlock it by hand; erasing is allowed only after explicit permission.
How to disable. Delete the `~/.claude/skills/mspm0-ccs/` folder or its equivalent for another agent. Project files the agent already changed stay in place, so restore them from version control.
FAQ
Which boards and environments were verified?
The Lichuang MSPM0G3507 board, CCS Theia, Keil, VS Code and CLion, J-Link, XDS110 and DAPLink probes, and SysConfig 1.26.2 and 1.28.0 CLI. On any other combination, first run an LED blink, UART or timer test.
What if `detect_probe.py` finds nothing?
An empty result only says the method did not recognize a probe; it does not prove nothing is connected. Some DAPLink and XDS110 devices show up as composite USB devices or virtual ports, so the agent next lists ports with `serial_console.py --list`.
Can CCS and OpenOCD debugging be mixed?
No. CCS-DSS and OpenOCD with GDB are two independent paths, and their configurations are kept apart. Do not run several OpenOCD operations against one probe at once.
Which examples ship with the skill?
Six: `empty_project`, `led_blink`, `pwm_breath_led`, `timer_irq_led`, `uart_blocking_tx` and `uart_dma_tx_irq_rx`. The agent borrows the `.syscfg` fields and patterns it needs and keeps your project layout.
How do I test UART traffic?
Close programs that hold the port, such as VOFA+, then run `serial_console.py` with a port and speed, for example `-p COM6 -b 115200`. The `--send` option sends a string and `--duration` sets the listening time.
Discussion
No questions or reviews yet.
Related
SkillsClaude Code skill for the MSPM0G3507 MCU and K230 camera: pin maps, peripheral drivers, PID and contest task solutions.
24 skills for microcontroller firmware: build, flash, GDB debugging, UART, Modbus, CAN, logic analyzers and static analysis
1c-lsp-mcp-skill
1с-lsp-mcp-skill
Manager for multiple bsl-language-server instances across 1C projects, usable via MCP or skills with a CLI, no Docker
CLI and MCP tools for finding and installing skills, with SKILL.md linting and flags for network use, scripts and secrets
Tech Leads Club Agent Skills
Agent Skills
A vetted skill registry with a CLI that installs into twenty-plus agents and an MCP server for on-demand skill lookup
Dozens of mizchi's agent skills: frontend audits, AWS, Cloudflare, SQL, Playwright and OpenTelemetry, installed one by one
README in short
The repository bundles rules, scripts and examples tested on real projects. Its usage section gives prompts for an LED blink and a UART check, plus advice to start new projects in planning mode and to hand the agent datasheets of external modules. A 2024 contest task is documented in a separate repository and two videos.
README badge
Original SKILL.md
--- name: mspm0-ccs description: Tool-neutral CLI agent rules for TI MSPM0 development with Code Composer Studio, Keil/uVision, CMake/GCC/OpenOCD, SysConfig, and DriverLib. Use when an agent needs to inspect or modify MSPM0 projects, edit .syscfg configuration, avoid generated SysConfig/build files, use DriverLib APIs, validate SysConfig output, package reusable MSPM0 examples, or work on NUEDC-style MSPM0 embedded firmware. --- # MSPM0 Agent Skill Use this skill for TI MSPM0 firmware projects that use SysConfig and DriverLib through CCS / CCS Theia, Keil/uVision, or CMake + Arm GNU Toolchain + OpenOCD workflows. It is intended for Claude Code, OpenCode, OpenClaw, Continue, Cursor, Codex, and similar CLI/editor agents. ## Default Workflow 1. Locate the project `.syscfg` or `system.syscfg`, editable source files, generated `ti_msp_dl_config.h`, and the active project entrypoint: `targetConfigs/*.ccxml` for CCS, `*.uvprojx` plus scatter file for Keil/uVision, or `CMakeLists.txt` plus OpenOCD `.cfg` files for CMake/GCC/OpenOCD. 2. Run `python scripts/check_syscfg.py <project-dir>` when this skill is available. 3. Read `.syscfg` metadata: device, package, SDK product, SysConfig version, modules, instances, pins, clocks, and interrupts. 4. Inspect generated `ti_msp_dl_config.h` for macro names, IRQ names, instance names, and the exact SysConfig init function spelling. 5. Before adding unfamiliar SysConfig fields, inspect the user's existing `.syscfg`, `examples/*/manifest.json`, TI SDK examples, or `source/ti/driverlib/.meta/*.syscfg.js`. 6. Modify the smallest relevant `.syscfg` and application-code surface. 7. By default, make the smallest evidence-based `.syscfg` edit and run `python scripts/run_sysconfig.py <project-dir>` before rebuilding. Use CCS SysConfig MCP only when the user explicitly requests it or the current session already exposes a confirmed SysConfig MCP tool. 8. If flashing or debugging, run `python scripts/detect_probe.py` or `python scripts/check_syscfg.py <project-dir> --probe` before selecting a backend. Confirm the configured probe matches the connected hardware and prefer a System Reset after programming. ## Core Rules - Treat `.syscfg` as the source of truth for pinmux, peripheral setup, clocks, interrupts, DMA ownership, and generated initialization. - Prefer SysConfig + DriverLib for GPIO, UART, PWM, Timer, ADC, I2C, SPI, DMA, and clock setup. - Do not hand-edit generated outputs such as `Debug/ti_msp_dl_config.c`, `Debug/ti_msp_dl_config.h`, the project-root `ti_msp_dl_config.c` / `ti_msp_dl_config.h` pair in Keil layouts, `device_linker.cmd`, `Objects/`, `Listings/`, object files, maps, or `.out` files. - Preserve `.syscfg` metadata such as `@cliArgs`, `@v2CliArgs`, `@versions`, `--device`, `--package`, and `--product`. - Do not guess generated names. Read `ti_msp_dl_config.h` and use the local macros and the local init function spelling, such as `SYSCFG_DL_init()`. - Do not invent SysConfig fields, enum values, device metadata, board names, package names, or tool versions. Validate against local examples, SDK metadata, or SysConfig CLI. - New SysConfig releases may explicitly recommend the CCS SysConfig MCP. This skill does not probe for or require that unverified backend by default: use it only when the user asks for MCP or the current session already exposes a confirmed SysConfig MCP tool. Otherwise use a minimal manual edit followed immediately by standalone CLI validation, and state that this does not provide the MCP's interactive mutation feedback. - Preserve unrelated user code, comments, copyright headers, project layout, and existing `.syscfg` settings. If a requested feature requires a larger rewrite, explain why before making it when possible. - Do not change device, package, SDK, compiler, CCS version, board, or debug probe without user confirmation. - If the user asks only to "flash" or "debug", do not silently assume J-Link, XDS110, CMSIS-DAP/DAPLink, or ST-Link. Detect the connected probe first. If detection is unknown, multiple probes are connected, or the project configuration conflicts with the physical probe, stop and ask the user which backend to use. - Treat an empty probe-detector result as inconclusive, not proof that no probe is connected. Some DAPLink/CMSIS-DAP and XDS110 devices appear only as Windows `USBDevice`, `HIDClass`, or `Ports` children. Inspect OS USB/PnP devices and serial ports (`python scripts/serial_console.py --list` on Windows), then try the intended backend's read-only probe/list command or ask the user before concluding the probe is absent. - If SysConfig emits warnings, report them separately from build/flash success. Do not call a warning-producing generation "clean". - If hardware behavior is not verified on a connected board, say that validation stopped at source, SysConfig, or build level. ## Board-Specific Pin Caution When the user explicitly says the board is LCKFB Tianmengxing MSPM0G3507: - Avoid choosing A21/PA21, A23/PA23, A02/PA02, and A18/PA18 for ordinary user-requested pin assignments unless the user asks for those pins or the local project already deliberately uses them. - PA10 and PA11 are also marked as special, but Tianmengxing routes them as the default UART pins. When choosing pins for a UART, consider PA10 TX and PA11 RX first if they are free and match the requested UART instance. For GPIO, PWM, SPI, I2C, timer, or other non-UART uses, continue to treat PA10/PA11 as special pins and prefer other available pins. - If the user asks to drive or reuse one of these special pins for a non-default purpose, remind them of the Tianmengxing board note. In particular, explain that repurposing PA10/PA11 can conflict with or remove the board's default UART connection. - Do not silently move an existing project away from these pins. Explain the board caveat first, then ask or proceed according to the user's intent. ## Project Shape Checks - Simple projects usually keep most logic in `main.c`, `empty.c`, or a small number of files. It is acceptable to make narrowly scoped edits there. - Framework projects often have multiple source directories such as `app/`, `bsp/`, `components/`, `core/`, `drivers/`, `hal/`, `middleware/`, or `tasks/`. First identify ownership boundaries before adding peripherals or changing control logic. - Do not assume every MSPM0 project is CCS-like or single-file. A framework project can still use CCS, Keil, or CMake/GCC/OpenOCD.