A full-featured CAN/CAN-FD debugging tool that wraps interface discovery, real-time monitoring, frame transmission, logging, and DBC decoding into a single workflow. It auto-scans USB-CAN adapters (PCAN, Vector, slcan), writes working configs to your project so you don't re-specify channels every time, and handles both arbitration and data bitrates for FD frames. The send command goes straight through once configured, no confirmation prompts, which is efficient but means you should double-check your IDs first. Output is structured JSON or JSON Lines for streaming, and it prioritizes CLI args over project config over defaults, so you can override on the fly. If you're doing embedded CAN work and tired of switching between vendor tools, this consolidates the repetitive stuff.
npx -y skills add zhinkgit/embeddedskills --skill can --agent claude-codeInstalls into .claude/skills of the current project.
统一封装接口发现、实时监控、报文发送、日志记录、数据库文件解码和统计分析能力。
skill/config.json)仅保留 slcan 相关的环境级配置:
{
"slcan_serial_port": "",
"slcan_serial_baudrate": 115200
}
| 字段 | 说明 | 默认值 |
|---|---|---|
slcan_serial_port | slcan 场景的串口 | "" |
slcan_serial_baudrate | slcan 场景的串口速率 | 115200 |
.embeddedskills/config.json)工作区下的 .embeddedskills/config.json 存放工程级 CAN 配置:
{
"can": {
"interface": "",
"channel": "",
"bitrate": 500000,
"data_bitrate": 2000000,
"log_dir": ".embeddedskills/logs/can"
}
}
| 字段 | 说明 | 默认值 |
|---|---|---|
interface | CAN 后端,如 pcan / vector / slcan | "" |
channel | 通道名,如 PCAN_USBBUS1 | "" |
bitrate | 仲裁域比特率 | 500000 |
data_bitrate | CAN-FD 数据域比特率 | 2000000 |
log_dir | 日志输出目录 | .embeddedskills/logs/can |
--interface, --channel, --bitrate 等) - 最高优先级.embeddedskills/config.json 中的 can 部分).embeddedskills/state.json 中的历史记录)当未指定 interface 和 channel 时,脚本会自动扫描系统 CAN 接口,按以下步骤处理:
| 子命令 | 用途 | 风险 |
|---|---|---|
scan | 扫描可用 CAN 接口与 USB-CAN 设备 | 低 |
monitor | 实时监控总线报文 | 低 |
send | 发送标准帧 / 扩展帧 / 远程帧 / CAN-FD 帧 | 高 |
log | 记录总线报文到 ASC / BLF / CSV 文件 | 低 |
decode | 用 DBC 等数据库文件解码报文或日志 | 低 |
stats | 统计总线负载、ID 分布和帧率 | 低 |
python-can 是否可用,未安装时提示 pip install python-canscanmonitor / send / log / stats 使用解析后的连接参数decode 先确认数据库文件和输入源存在interface/channel,自动扫描系统 CAN 接口:
send 只要配置可连接就直接执行,不二次确认所有脚本位于 skill 目录的 scripts/ 下,通过 python 直接调用。
脚本会按优先级从 CLI 参数、工程级配置、状态文件中读取参数。
# 扫描接口
python scripts/can_scan.py [--json]
# 实时监控
python scripts/can_monitor.py [--interface <接口>] [--channel <通道>] [--bitrate <速率>] [--fd] [--filter-id <ID列表>] [--exclude-id <ID列表>] [--dbc <DBC文件>] [--timeout <秒>] [--json]
# 发送报文
python scripts/can_send.py [--interface <接口>] [--channel <通道>] [--bitrate <速率>] <id> <data> [--extended] [--remote] [--fd] [--repeat <次>] [--interval <秒>] [--periodic <毫秒>] [--listen] [--json]
# 日志记录
python scripts/can_log.py [--interface <接口>] [--channel <通道>] [--bitrate <速率>] [--output <文件>] [--duration <秒>] [--max-count <数量>] [--filter-id <ID列表>] [--console] [--json]
# 数据库解码
python scripts/can_decode.py <db_file> [--db-format <auto|dbc|arxml|kcd|sym|cdd>] [--id <CAN_ID>] [--data <HEX数据>] [--log <日志文件>] [--signal <信号名>] [--list] [--json]
# 总线统计
python scripts/can_stats.py [--interface <接口>] [--channel <通道>] [--bitrate <速率>] [--duration <秒>] [--top <数量>] [--watch <ID列表>] [--json]
单次命令返回标准 JSON:
{
"status": "ok",
"action": "scan",
"summary": "发现 2 个 CAN 接口",
"details": { ... }
}
持续命令(monitor --json、send --listen --json)输出 JSON Lines,结束摘要写入 stderr。
错误输出:
{
"status": "error",
"action": "send",
"error": { "code": "interface_open_failed", "message": "无法打开指定 CAN 接口" }
}
interface/channel 时自动扫描,唯一候选自动写入配置,多候选需用户选择.embeddedskills/config.json--json 输出的持续流使用 JSON Lines,摘要写 stderr 不污染数据流references/common_interfaces.json:常见 USB-CAN 设备信息juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills