一键导入
protocol
MeshCore binary Companion Protocol conventions. Use when reading or writing anything in lib/meshcore/ — commands, responses, frame parsing, or transports.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
MeshCore binary Companion Protocol conventions. Use when reading or writing anything in lib/meshcore/ — commands, responses, frame parsing, or transports.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Project stack, module layout, and core data flow. Use when navigating the codebase, locating where functionality lives, or understanding how the client, Zustand store, and persistence layers connect.
Workflow for evaluating and resolving pull request review feedback. Use when asked to "resolve feedback" on a PR, respond to review comments, address reviewer suggestions, or work through unresolved review threads.
Commit message and branch naming conventions. Use when writing commit messages, naming branches, or squashing changes before a pull request.
Pull request conventions and requirements. Use when creating a pull request, writing a PR description, preparing changes for review, or referencing the PR template.
TypeScript, React, and styling conventions for this project. Use when writing or reviewing any source file, adding components, or touching the state layer.
| name | protocol |
| description | MeshCore binary Companion Protocol conventions. Use when reading or writing anything in lib/meshcore/ — commands, responses, frame parsing, or transports. |
| license | Proprietary. See LICENSE for complete terms. |
| compatibility | Requires access to https://docs.meshcore.io/companion_protocol/ for full spec. |
| metadata | {"author":"kNoAPP","version":"1.1.0"} |
Full spec: https://docs.meshcore.io/companion_protocol/
The docs are incomplete in places — the firmware source at
https://github.com/meshcore-dev/MeshCore is the authority when they disagree
(e.g. out_path_len mode bits, the 0x88 RX log push).
Same structure both directions, but the delimiter differs:
[delimiter] [length: 2 bytes LE] [payload: N bytes]
0x3E, parsed in
lib/meshcore/frameParser.ts. Frames with length 0 or > 512 are discarded.0x3C, built in lib/meshcore/frames.ts.BLE uses the Nordic UART Service (NUS). No delimiter or length prefix — each
GATT notification is treated as one complete inbound frame, and outbound
payloads are written with writeValueWithResponse in 512-byte chunks
(lib/meshcore/transports.ts).
MeshCoreClient (lib/meshcore/client.ts). Default timeout is 5
s.CMD const object in lib/meshcore/constants.ts;
response bytes in the RESP object.>= 0x80 are unsolicited pushes from the radio (RESP.PUSH_ADVERT,
PUSH_PATH_UPDATED, PUSH_SEND_CONFIRMED, PUSH_MSG_WAITING,
PUSH_LOG_RX_DATA), not command responses.CMD.SYNC_NEXT_MESSAGE) every 5
seconds.lib/meshcore/frames.ts.lib/meshcore/parsers.ts.uint32 little-endian.pubkeyPrefix in parsers.ts).frames.ts).Contact.outPathLen === 255 (NO_PATH) means no route is known and messages
flood.constants.ts.frames.ts.parsers.ts.MeshCoreClient (client.ts).