CCM
/Skills
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
zhinkgit avatar

Openocd

zhinkgit/embeddedskills
480 installs545 stars
Summary

This is a comprehensive OpenOCD wrapper that handles the full embedded debugging workflow: probe detection, firmware flashing, Flash erase, GDB server management, and live Telnet debugging with halt/resume/step/breakpoint control. It bridges OpenOCD's command line interface with structured JSON output and maintains project-level config in `.embeddedskills/config.json` for board/interface/target settings. The implementation covers both one-shot operations and persistent GDB sessions, plus semihosting and ITM trace capture for printf debugging. Ships with five Python scripts using stdlib only, so no dependency hell. If you're doing ARM Cortex development with ST-Link, CMSIS-DAP, or FTDI probes and want OpenOCD accessible without memorizing flags, this handles the orchestration. The risk-aware operation modes are a nice touch for destructive commands.

Install to Claude Code

npx -y skills add zhinkgit/embeddedskills --skill openocd --agent claude-code

Installs into .claude/skills of the current project.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
inference shell
inference shell
create and run specialised agents in minutes
build now →
Files
SKILL.mdView on GitHub

OpenOCD 下载与调试

本 skill 提供 OpenOCD 的探针探测、固件烧录、Flash 擦除、GDB Server 启动、目标复位、 Telnet 在线调试、GDB 源码级调试和 Semihosting 输出捕获能力。

配置

环境级配置(skill/config.json)

skill 目录下的 config.json 包含环境级配置(工具路径、端口号等),首次使用前确认 exe 路径正确:

{
  "exe": "openocd",
  "scripts_dir": "",
  "gdb_port": 3333,
  "telnet_port": 4444,
  "gdb_exe": "",
  "operation_mode": 1
}
  • exe:openocd.exe 路径或命令名(必填)
  • scripts_dir:OpenOCD 配置脚本目录,为空时使用 OpenOCD 内置路径
  • gdb_port:GDB Server 端口,默认 3333
  • telnet_port:Telnet 端口,默认 4444
  • gdb_exe:arm-none-eabi-gdb 路径,GDB 调试子命令(run/backtrace/locals)需要
  • operation_mode:1 直接执行 / 2 输出风险摘要但不阻塞 / 3 执行前确认

工程级配置(.embeddedskills/config.json)

board/interface/target 等工程参数统一在工作区的 .embeddedskills/config.json 中管理:

{
  "openocd": {
    "board": "",
    "interface": "interface/stlink.cfg",
    "target": "target/stm32f4x.cfg",
    "adapter_speed": "4000",
    "transport": "swd",
    "tpiu_name": "stm32f4x.tpiu",
    "traceclk": "168000000",
    "pin_freq": "2000000"
  }
}
  • board:board 配置(如 board/stm32f4discovery.cfg),优先级高于 interface+target
  • interface:interface 配置(如 interface/stlink.cfg)
  • target:target 配置(如 target/stm32f4x.cfg)
  • adapter_speed:调试速率 kHz
  • transport:传输协议(swd/jtag)
  • tpiu_name / traceclk / pin_freq:ITM/SWO 观测所需的 TPIU 参数

参数解析优先级:CLI 显式参数 > .embeddedskills/config.json(工程级)> skill/config.json(环境级)> .embeddedskills/state.json > 默认值/报错

成功执行后,确认过的参数会自动写回工程配置。

子命令

基础操作

子命令用途风险
probe验证 board 或 interface+target 组合,探测目标连通性低
flash烧录固件(.elf / .hex / .bin)高
erase擦除目标 Flash高
reset / reset-init复位目标芯片高
targets / flash-banks / adapter-info查询底层 target / flash / adapter 信息低
raw执行受控 OpenOCD 原生命令高

GDB Server

子命令用途风险
gdb-server启动 GDB Server,保持运行等待 GDB 连接低
gdb backtrace/locals快捷获取调用栈和局部变量低
gdb break/continue/next/step/finish/untilone-shot 执行流控制低
gdb frame/print/watch/disassemble/threads/crash-reportone-shot 源码级诊断低

Telnet 在线调试

子命令用途风险
halt暂停 CPU,返回 PC/xPSR低
resume恢复 CPU 运行低
step单步执行(支持 --count N)低
reg查看所有 CPU 寄存器低
read-mem读内存(--width 8/16/32,--length N)低
write-mem写内存(--width 8/16/32)高
bp设置硬件断点低
rbp移除断点低
run-to运行到指定地址(设置断点 + resume + 等待命中)低

Semihosting

子命令用途风险
semihosting启用 ARM Semihosting 并捕获目标 printf 输出低
itm基于 TPIU/ITM 读取 SWO/ITM 观测数据低

执行流程

  1. 读取 skill/config.json,确认 exe 路径有效
  2. 读取 .embeddedskills/config.json 获取工程级配置(board/interface/target 等)
  3. 读取 .embeddedskills/state.json 获取历史状态
  4. 参数解析优先级:CLI 显式参数 > .embeddedskills/config.json(工程级)> skill/config.json(环境级)> .embeddedskills/state.json > 默认值/报错
  5. 已知 board 时优先使用 -f board/*.cfg,否则组合 -f interface/*.cfg -f target/*.cfg
  6. board、interface、target 同时缺失时,不自动拼接组合,直接要求用户补充
  7. 按 operation_mode 决定是否需要确认后执行
  8. 根据子命令调用对应脚本
  9. 统一解析输出中的 Info、Error 和就绪日志,返回结构化结果
  10. 成功执行后,将确认过的参数写回 .embeddedskills/config.json

脚本调用

skill 目录下有五个 Python 脚本,使用标准库实现,无额外依赖。

openocd_run.py — 探测 / 烧录 / 擦除 / 复位

# 探测连通性(使用 board)
python <skill-dir>/scripts/openocd_run.py probe --board board/stm32f4discovery.cfg --json

# 探测连通性(使用 interface + target)
python <skill-dir>/scripts/openocd_run.py probe --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 烧录 ELF 固件
python <skill-dir>/scripts/openocd_run.py flash --file build/app.elf --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 烧录 BIN 固件(必须提供地址)
python <skill-dir>/scripts/openocd_run.py flash --file build/app.bin --address 0x08000000 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 擦除 Flash(自动选择 mass/sector)
python <skill-dir>/scripts/openocd_run.py erase --mode auto --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 复位目标
python <skill-dir>/scripts/openocd_run.py reset --mode halt --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 查询 target 列表
python <skill-dir>/scripts/openocd_run.py targets --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 查询 flash bank
python <skill-dir>/scripts/openocd_run.py flash-banks --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 执行受控 raw 命令
python <skill-dir>/scripts/openocd_run.py raw --interface interface/stlink.cfg --target target/stm32f4x.cfg --command "init" "targets" --json

通用可选参数:--board <cfg>、--search <目录>、--adapter-speed <kHz>、--transport <swd|jtag>、--exe <openocd路径>

openocd_gdb.py — GDB Server 启动与调试

# 启动 GDB Server(保持运行)
python <skill-dir>/scripts/openocd_gdb.py server --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 无子命令时默认 server(向后兼容)
python <skill-dir>/scripts/openocd_gdb.py --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 执行自定义 GDB 命令序列
python <skill-dir>/scripts/openocd_gdb.py run --gdb-exe arm-none-eabi-gdb --elf build/app.elf --interface interface/stlink.cfg --target target/stm32f4x.cfg --commands "break main" "continue" "backtrace" "info locals" --json

# 快捷获取调用栈
python <skill-dir>/scripts/openocd_gdb.py backtrace --gdb-exe arm-none-eabi-gdb --elf build/app.elf --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 快捷查看局部变量
python <skill-dir>/scripts/openocd_gdb.py locals --gdb-exe arm-none-eabi-gdb --elf build/app.elf --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

可选参数:--gdb-port、--telnet-port、--search、--adapter-speed、--transport、--board

openocd_telnet.py — Telnet 在线调试

# 暂停 CPU
python <skill-dir>/scripts/openocd_telnet.py halt --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 恢复运行
python <skill-dir>/scripts/openocd_telnet.py resume --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 单步 5 次
python <skill-dir>/scripts/openocd_telnet.py step --count 5 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 查看寄存器
python <skill-dir>/scripts/openocd_telnet.py reg --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 读内存(32bit x 16 个字)
python <skill-dir>/scripts/openocd_telnet.py read-mem --address 0x20000000 --length 16 --width 32 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 写内存
python <skill-dir>/scripts/openocd_telnet.py write-mem --address 0x20000000 --value 0xDEADBEEF --width 32 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 设置硬件断点
python <skill-dir>/scripts/openocd_telnet.py bp --address 0x08001234 --bp-length 2 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 移除断点
python <skill-dir>/scripts/openocd_telnet.py rbp --address 0x08001234 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 运行到指定地址(设置断点 + resume + 等待)
python <skill-dir>/scripts/openocd_telnet.py run-to --address 0x08001234 --timeout-ms 3000 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

通用可选参数:--board、--search、--adapter-speed、--transport、--gdb-port、--telnet-port

openocd_semihosting.py — Semihosting 输出捕获

# 捕获 semihosting 输出(持续到 Ctrl+C)
python <skill-dir>/scripts/openocd_semihosting.py --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 捕获 30 秒
python <skill-dir>/scripts/openocd_semihosting.py --timeout 30 --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

openocd_itm.py — ITM/SWO 观测

# 使用配置中的 TPIU 参数持续读取 ITM
python <skill-dir>/scripts/openocd_itm.py --interface interface/stlink.cfg --target target/stm32f4x.cfg --json

# 指定 TPIU 名称和端口
python <skill-dir>/scripts/openocd_itm.py \
  --interface interface/stlink.cfg --target target/stm32f4x.cfg \
  --tpiu-name stm32f4x.tpiu --traceclk 168000000 --pin-freq 2000000 \
  --itm-port 0 --itm-port 1 --json

openocd_itm.py 会启动独立 OpenOCD Server,打开 TPIU/ITM 配置后,把 trace 输出统一包装成 JSON Lines。

调试典型工作流

快速检查(Telnet)

halt -> reg -> read-mem 0x20000000 -> step -> resume

适合快速查看当前 CPU 状态和内存内容。

断点调试(Telnet)

run-to 0x08001234 -> reg -> read-mem -> resume

运行到指定地址后暂停,检查寄存器和内存。

源码级调试(GDB)

gdb run --elf app.elf --commands "break main" "continue" "backtrace" "info locals"

使用 ELF 文件提供符号信息,进行函数级断点和变量查看。

Semihosting 输出

semihosting

捕获目标通过 printf(SVC 指令)输出的调试信息,类似 J-Link RTT。

输出格式

所有脚本以 JSON 格式返回,基础字段为 status(ok/error)、action、summary、details,并可能附带 context、artifacts、metrics、state、next_actions、timing。流式观测命令使用 JSON Lines,并统一输出 source、channel_type、stream_type。

成功示例:

{
  "status": "ok",
  "action": "halt",
  "summary": "已暂停,PC=0x08000298",
  "details": {
    "pc": "0x08000298",
    "xpsr": "0x01000000",
    "msp": "0x20020000",
    "halted": true
  }
}

GDB 调用栈示例:

{
  "status": "ok",
  "action": "backtrace",
  "summary": "GDB backtrace 执行成功",
  "details": {
    "gdb_port": 3333,
    "frames": [
      {"frame": 0, "function": "main", "location": "src/main.c:42"}
    ]
  }
}

错误示例:

{
  "status": "error",
  "action": "halt",
  "error": {
    "code": "server_failed",
    "message": "OpenOCD 启动失败或超时"
  }
}

核心规则

  • 不自动猜测 board、interface、target 的组合,缺失时必须询问用户
  • 已知 board 时优先使用 board 配置,不再需要 interface+target
  • 参数解析优先级为:CLI 显式参数 > .embeddedskills/config.json(工程级)> skill/config.json(环境级)> .embeddedskills/state.json > 默认值/报错
  • .bin 文件必须显式提供烧录地址,缺失时报错
  • STM32F4 等已映射 target 在 erase --mode auto 下会先 reset halt,再优先使用 mass erase
  • erase --mode mass 在未命中映射时直接返回 mass_erase_unsupported,避免误以为已做整片擦除
  • 检测到 Flash 锁保护时只提示,不自动解锁
  • 连接失败时给出排查建议(检查连线、供电、驱动、cfg 路径),不自动尝试更激进参数
  • 烧录、擦除、复位在参数完整且用户意图明确时直接执行
  • gdb-server 启动后返回端口和连接方式,进程保持运行
  • GDB 调试(run/backtrace/locals)需要配置 gdb_exe(arm-none-eabi-gdb 路径)
  • Telnet 调试命令每次启动独立的 OpenOCD Server,执行完自动关闭
  • Semihosting 通过 Telnet 启用后持续读取 OpenOCD stderr 输出
  • 结果回显中始终包含 cfg 组合、端口和执行动作
  • 产物路径(elf/file)不进入工程配置,仍只依赖 state.json
  • last_flash/last_debug/last_observe 等运行状态继续写入 state.json

参考

遇到 board/interface/target 配置问题时可查阅 references/common_targets.md。

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
inference shell
inference shell
create and run specialised agents in minutes
build now →
Categories
Backend & APIs
First SeenJun 3, 2026
View on GitHub

More from zhinkgit/embeddedskills

All 9 skills →
  • Workflow470
  • Net452
  • Probe Rs448
  • Keil647
  • Serial604
  • Can520
  • Jlink488
  • Gcc481

Recommended

More Backend & APIs →
aj-geddes avatar
react-native-app

aj-geddes/useful-ai-prompts

Build cross-platform mobile apps with React Native. Covers navigation with React Navigation, state management with Redux/Context API, API integration, and platform-specific features.
479
317
dstn2000 avatar
unreal-engine

dstn2000/claude-unreal-engine-skill

Comprehensive Unreal Engine C++ and Blueprint development assistant with deep project structure understanding. Use when helping with Unreal Engine projects, including: C++ gameplay programming, Blueprint development, input system configuration (Enhanced Input), Gameplay Ability System (GAS), project structure navigation, asset discovery and referencing, plugin integration (experimental/beta), API lookups for underdocumented features, and debugging. Triggers on any Unreal Engine development question, especially when working within a .uproject directory.
479
36
freestylefly avatar
canghe-post-to-wechat

freestylefly/canghe-skills

Posts content to WeChat Official Account (微信公众号) via API or Chrome CDP. Supports article posting (文章) with HTML, markdown, or plain text input, and image-text posting (贴图, formerly 图文) with multiple images. Use when user mentions "发布公众号", "post to wechat", "微信公众号", or "贴图/图文/文章".
479
429
uniswap avatar
v4-sdk-integration

uniswap/uniswap-ai

App-layer SDK guide for building swap and liquidity experiences directly with the Uniswap v4 SDK. Use when user asks about "v4 sdk", "uniswap v4", "v4 swap", "v4 liquidity", "PoolManager", "V4Planner", "StateView", "PositionManager", "pool state", "v4 position", "uniswap sdk", or when building swap/liquidity UX directly with SDKs rather than via the Trading API.
479
222
aj-geddes avatar
rate-limiting-implementation

aj-geddes/useful-ai-prompts

Implement rate limiting, throttling, API quotas, and backpressure mechanisms to protect services from abuse and ensure fair resource usage. Use when building APIs, preventing DOS attacks, or managing system load.
478
317
tech-leads-club avatar
technical-design-doc-creator

tech-leads-club/agent-skills

Creates comprehensive Technical Design Documents (TDD) with mandatory and optional sections through interactive discovery. Use when user asks to "write a design doc", "create a TDD", "technical spec", "architecture document", "RFC", "design proposal", or needs to document a technical decision before implementation. Do NOT use for README files, API docs, or general documentation (use docs-writer instead).
478
5k