Agent skill · Audited from source

terminal

skill · zhinkgit/embeddedskillsMIT licenceAudited 28 Oct 2026 · source 674ae8bca880

★ 769pushed 8 days ago
✓SAFEGrade B · 89/100 · 28 Oct 2026 · 674ae8b
769repo stars · whole zhinkgit/embeddedskills

Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 674ae8bca880 and observed network access and no hard-coded secrets. What it does: 双向交互终端会话工具,用于串口终端、SSH 交互 Shell、本地 Shell、设备控制台、AT/CLI 菜单、需要保持上下文的交互式调试;当用户提到交互终端、串口终端、SSH 终端、打开 shell、发送命令后继续读输出、保持会话、登录后操作、菜单式命令行时触发,也兼容 /terminal 显式调用。

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “terminal (zhinkgit/embeddedskills)”. Retrieved 28 Oct 2026. https://modelsatlas.com/skills/zhinkgit/terminal

Trust audit

Audit 0.4.1 · source read 28 Oct 2026

Trust score89/100✓SAFE B
0 critical0 high1 medium1 low1 info

SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 13,985 of 14,816 audited skills.

What the source does

  • FilesystemNone observedNo reads or writes in the source
  • NetworkUndeclared1 observation, not in its own description
  • ShellNone observedNo commands run in the source
  • DependenciesPinnedNothing floats
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS0
L1 Static sourceSecrets, path traversal, supply chain, hidden codeWARN2
L2 InstructionsPrompt injection, authority framing, hidden directivesPASS1
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: no behavioural pass.

Findings (3)

MEDIUMNetwork egressnet.client · scripts/terminal_session.py:372
F-04 Network egressCWE-200 · CWE-319Layer L1
with socket.create_connection(("127.0.0.1", int(record["tcp_port"])), timeout=timeout) as sock:
Why
No further detail recorded for this rule.
Fix
—
LOWObfuscation / stealthobf.decode_call · scripts/terminal_session.py:319
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
payload = bytes.fromhex(data) if request.get("hex") else str(data).encode(request.get("encoding") or "utf-8")
Why
No further detail recorded for this rule.
Fix
—
INFOPrompt injectionscope.undeclared_network · <declared scope>
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
network use found in code, not declared in the description
Why
the description does not admit a capability the code has
Fix
declare network use in the description, or remove it

Audit 0.4.1 · source sha 674ae8bca880 · 28 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publisherzhinkgit GitHub userOwner of the repository this skill is read from
  • Source folderzhinkgit/embeddedskills/terminalThe exact folder we audited
  • LicenceMITAs the repository states it
  • Commit pinned for this verdict674ae8bca880A new audit runs when the source changes
  • Repository statusNot archivedLast push 8 days ago
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: 双向交互终端会话工具,用于串口终端、SSH 交互 Shell、本地 Shell、设备控制台、AT/CLI 菜单、需要保持上下文的交互式调试;当用户提到交互终端、串口终端、SSH 终端、打开 shell、发送命令后继续读输出、保持会话、登录后操作、菜单式命令行时触发,也兼容 /terminal 显式调用。

---
name: terminal
description: 双向交互终端会话工具,用于串口终端、SSH 交互 Shell、本地 Shell、设备控制台、AT/CLI 菜单、需要保持上下文的交互式调试;当用户提到交互终端、串口终端、SSH 终端、打开 shell、发送命令后继续读输出、保持会话、登录后操作、菜单式命令行时触发,也兼容 /terminal 显式调用。
---

# Terminal — 双向交互终端会话

统一封装串口、SSH 和本地 Shell 的双向交互会话。它补齐 `serial` 的“监控/发送是分离命令”和 `ssh` 的“远程命令多为一次性执行”之间的空白:当目标需要保持登录状态、菜单状态、REPL 状态或设备 CLI 上下文时,使用本 skill。

## 定位

- `serial`:扫描、监控、单次发送、日志、Hex 查看。
- `ssh`:OpenSSH 配置、远程命令、传输、隧道。
- `terminal`:保持一个可持续读写的交互式会话,并通过 `send/read` 驱动下一步判断。

## 配置

### 环境级配置 (`config.json`)

terminal skill 的环境级配置目前为空对象 `{}`。交互终端的关键参数通常和具体会话绑定,优先通过 `start` 命令显式传入,避免误连设备或误用凭据。

### 会话状态 (`.embeddedskills/state.json`)

后台会话运行时状态保存到工作区的 `.embeddedskills/state.json`,使用 `terminal_sessions` 字段记录会话名、后端、PID、TCP 控制端口和日志路径。

### 参数优先级

1. **CLI 参数** (`--port`, `--baudrate`, `--host`, `--name` 等) - 最高优先级
2. **会话状态** (`.embeddedskills/state.json` 中已启动的 `terminal_sessions`)
3. **默认值** - 最低优先级

## 子命令

| 子命令 | 用途 | 风险 |
|--------|------|------|
| `start` | 启动一个后台交互会话 | 中 |
| `list` | 列出现有会话 | 低 |
| `status` | 查询单个会话状态 | 低 |
| `send` | 向会话写入文本或 Hex 数据 | 中 |
| `read` | 读取并清空会话输出缓冲 | 低 |
| `attach` | 前台行模式接入会话 | 中 |
| `stop` | 停止会话并清理状态 | 中 |

## 后端

| 后端 | 适用场景 | 依赖 |
|------|----------|------|
| `serial` | MCU UART 控制台、AT 命令、Bootloader 菜单、板卡 CLI | `pyserial` |
| `ssh` | Linux 开发板交互 Shell、登录后持续操作 | OpenSSH 客户端 |
| `local` | 本机临时 Shell、REPL、CLI 程序交互 | Python 标准库 |

## 脚本调用

所有脚本位于 skill 目录的 `scripts/` 下,通过 `python` 直接调用。命令示例均以当前 skill 目录为基准。

```bash
# 启动串口终端
python scripts/terminal_session.py start serial --port COM11 --baudrate 115200 --name board

# 启动 SSH 终端,host 使用 ~/.ssh/config 中的 Host 别名
python scripts/terminal_session.py start ssh --host 1380-P904 --name devboard

# 启动本地 Shell
python scripts/terminal_session.py start local --name local-shell

# 发送一行命令并追加 CRLF
python scripts/terminal_session.py send board "help" --crlf

# 读取输出,最多等待 1 秒
python scripts/terminal_session.py read board --timeout 1

# 前台行模式接入
python scripts/terminal_session.py attach board

# 查询与停止
python scripts/terminal_session.py list
python scripts/terminal_session.py status board
python scripts/terminal_session.py stop board
```

## 会话状态详情

会话元数据保存到工作区:

```text
.embeddedskills/state.json
```

使用 `terminal_sessions` 字段记录:

```json
{
  "terminal_sessions": {
    "board": {
      "backend": "serial",
      "tcp_port": 23145,
      "pid": 1234,
      "started_at": "2026-05-26T10:00:00+08:00"
    }
  }
}
```

后台进程日志保存到:

```text
.embeddedskills/logs/terminal/
```

## 输出格式

脚本默认输出 JSON:

```json
{
  "status": "ok",
  "action": "read",
  "summary": "读取 42 字节",
  "details": {
    "session": "board",
    "text": "help\r\n..."
  }
}
```

错误输出:

```json
{
  "status": "error",
  "action": "send",
  "error": {
    "code": "session_unreachable",
    "message": "会话不可达,可能已退出"
  }
}
```

## 操作流程

1. 判断是否真的需要保持交互状态;若只是一次性远程命令,优先使用 `ssh`;若只是串口抓日志,优先使用 `serial`。
2. 选择后端:串口控制台用 `serial`,远程 shell 用 `ssh`,本机交互程序用 `local`。
3. `start` 后先 `read --timeout 1` 获取启动横幅、登录提示或 shell prompt。
4. 每次 `send` 后都用 `read --timeout <秒>` 观察反馈,再决定下一步。
5. 完成后执行 `stop`,避免后台进程长期占用串口、SSH 连接或本地 Shell。

## 核心规则

- 不自动猜测串口端口、波特率、SSH Host 或登录凭据。
- 未明确用途时不主动发送任何会改变设备状态的命令。
- 多个会话必须使用不同 `--name`,避免输出混淆。
- `read` 会清空当前输出缓冲;重要输出需要及时记录到最终回复。
- `attach` 是行模式,不等同于完整 TTY/raw 模式;需要全屏程序、vim、top、交互式密码输入时,优先让用户使用真实终端工具。
- 串口会话会独占真实串口;如果需要和外部串口工具共享端口,先使用 `serial` skill 的 mux 能力。
- SSH 后端使用 `~/.ssh/config` 的 Host 别名;配置主机、跳板机、传输文件仍交给 `ssh` skill。
- 失败时保留真实错误:端口占用、缺少 `pyserial`、`ssh` 不存在、Host 别名无法解析、进程已退出等都不要吞掉。

Excerpt, first 3,472 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 674ae8b

Download folder ↗
git clone https://github.com/zhinkgit/embeddedskills
git -C embeddedskills checkout 674ae8bca880

The author documents no install command, so this uses the repository directly. Our verdict covers commit 674ae8bca880 only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. ✓SAFE B 89 / 100

    first audit · source 674ae8bca880

README badge

For maintainers · shows the latest audit

ModelsAtlas: SAFE BMODELSATLASSAFE · B
[![ModelsAtlas: SAFE B](https://modelsatlas.com/skills/zhinkgit/terminal/badge.svg)](https://modelsatlas.com/skills/zhinkgit/terminal/)

The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.

workflow✓SAFE

zhinkgit/embeddedskills

embeddedskills 的薄编排层,用于在当前 workspace 中发现工程、选择 build/flash/debug/observe 后端、串联 .embeddedskills/state.json,并聚合底层 skill 的结果。 当用户明确输入以下命令之一:"一键构建烧录"、"自动诊断"、"串起 build -> flash -> debug -> observe" 或显式调用 /workflow 时触发。

★ 772Grade B
serial✓SAFE

zhinkgit/embeddedskills

嵌入式串口调试工具,用于扫描串口、实时监控、发送数据、记录日志和 Hex 查看。 当用户提到串口、COM 口、UART、AT 命令调试、波特率、Hex 串流、串口抓日志、 串口监控、查看 MCU 输出、二进制协议联调时自动触发,也兼容 /serial 显式调用。 即使用户只是说"看看串口输出"、"发个 AT 命令"或"抓一下日志",只要上下文涉及 串口通信就应触发此 skill。

★ 769Grade B
ssh✓SAFE

zhinkgit/embeddedskills

SSH/服务器操作助手。用于远程服务器、user@host、SSH 配置、上传下载、部署、跳板机、隧道、端口转发、服务器命令执行等任务;以 ~/.ssh/config 的 Host 别名为唯一服务器清单,优先密钥认证,通过本 skill 的 Python 脚本封装 OpenSSH 操作。

★ 769Grade B
probe-rs✓SAFE

zhinkgit/embeddedskills

probe-rs 下载与调试工具,用于探针发现、固件烧录、复位、内存读写、GDB Server 调试和 RTT 日志读取。 当用户提到 probe-rs、cargo-embed、DAP、RTT、CMSIS-DAP、ST-Link、J-Link、烧录、芯片信息、 连接 under reset、probe 选择器、probe-rs gdb、probe-rs attach 时自动触发,也兼容 /probe-rs 显式调用。…

★ 767Grade B
openocd✓SAFE

zhinkgit/embeddedskills

OpenOCD 下载与调试工具,用于探针探测、固件烧录、Flash 擦除、GDB Server 启动、目标复位控制、 Telnet 在线调试(halt/resume/step/寄存器/内存/断点)、GDB 源码级调试,以及 Semihosting/ITM 输出捕获和底层查询。 当用户提到 OpenOCD、ST-Link、CMSIS-DAP、DAPLink、FTDI、烧录固件、擦除 Flash、GDB Server、…

★ 766Grade B
net✓SAFE

zhinkgit/embeddedskills

嵌入式网络调试工具,用于发现接口、抓包、分析 pcap/pcapng、做连通性测试、端口扫描和流量统计。 当用户提到 Wireshark、tshark、Npcap、抓包、网络联调、端口扫描、连通性排查、pcap 分析、 网络接口、ping 测试、traceroute、流量统计、Modbus TCP、EtherNet/IP 等网络协议调试时自动触发, 也兼容 /net…

★ 765Grade B

Add this badge to your README

[![ModelsAtlas: SAFE B](https://modelsatlas.com/skills/zhinkgit/terminal/badge.svg)](https://modelsatlas.com/skills/zhinkgit/terminal/)

Questions about terminal

What does the terminal skill do?
An open-source collection of embedded development and debugging skills for Claude Code, Copilot, TRAE, and other AI coding assistants that support the Skill protocol. Once installed, the AI assistant can directly operate compilers, debuggers, and communication buses, automating the full workflow fro
Is terminal safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can terminal access on my machine?
The audit observed that it reaches the network. At least one of those is not mentioned in its own description, which is itself a finding. Secrets in the source: none found.
Which assistants does terminal work with?
Its documentation mentions claude-code. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (674ae8bca880), read on 2026-10-28. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.