CLI 工作流

用 CLI 稳定转换 JSON

先检查输入形状,再编写确定性的 jq filter,验证结果后才考虑替换文件。

数据与文本本地写入

开始前准备好工具、认证与证据

先安装推荐工具,确认最小权限,再区分兼容性和真实执行记录。

jqverified
在本地以确定性输出解析、筛选、校验和转换 JSON。

推荐安装

$ shell
brew install jq
认证
基础操作无需认证
已测试 Agent
暂无 Agent 级执行记录
证据状态
verified · 文档检查 2026-07-10
CLI 独立执行
jq-1.7.1-apple · 4 项检查

复制或下载本工作流 Skill

Skill 包含输入输出合同、推荐工具、审批点、回滚和证据边界;保存前仍应按当前环境审查。

transform-json-SKILL.md
---
name: transform-json-workflow
description: "先检查输入形状,再编写确定性的 jq filter,验证结果后才考虑替换文件。"
---

# 转换 JSON

## 适用目标

按目标 schema 生成有效 JSON,同时保留原始输入。

## 证据边界

- 工具状态分别标注 `docs-verified` 与真实独立执行;二者不能互换。
- 当前注册表没有记录某次工具执行具体由哪个 Agent 完成,因此不能把“兼容 Agent”称为“已测试 Agent”。
- 执行前重新核对目标账户、环境、版本与官方文档。
- 不自动执行 R2、R3 或任何标记为需要确认的步骤;必须在执行前获得明确批准。

## 推荐工具、安装与认证

- **jq**(证据:`verified`,文档检查:`2026-07-10`,已记录独立测试版本 jq-1.7.1-apple)
  - 安装:`brew install jq`
  - 认证:基础操作无需认证
  - 最小权限:无需服务凭据;仍应把文件系统和网络访问限制在任务范围内。

## 输入合同

- JSON 文件或数据流
- 必需输出字段
- 筛选与排序规则
- 示例记录

## 输出合同

- jq filter
- 已验证 JSON
- 变更摘要
- 可选替换文件

## 安全工作流

1. **检查数据形状** — 写 filter 前先读取类型、代表性 key 和边界情况。
   - 输入: 源 JSON
   - 输出: 观察到的 schema 和边界情况
   - 风险: `read-only`
   - 命令: `jq 'type, (if type == "array" then .[0] else keys end)' input.json`
2. **转换到新文件** — 把结果写到临时输出,不直接覆盖源文件。
   - 输入: 已审查 jq filter
   - 输出: 候选 JSON 文件
   - 风险: `local-write`
   - 命令: `jq '[.items[] | {id, name}]' input.json > output.json`
3. **验证并比较** — 解析候选文件,检查必需字段,并在替换前比较数量或校验值。
   - 输入: 源文件和候选文件
   - 输出: 验证与变更摘要
   - 风险: `read-only`
   - 命令: `jq -e 'all(.[]; has("id") and has("name"))' output.json`

## 必须先确认

- 替换已有文件
- 删除需求未明确提到的字段
- 把本地 JSON 发到远程服务

## 回滚

- 验证通过前保持源文件不变
- 从已验证临时文件原子替换
- 从版本控制或备份恢复旧文件

## 官方来源

- [jq manual](https://jqlang.github.io/jq/manual/) — 用于核对当前命令、认证、输出和操作边界。

目标、输入与输出

在 Agent 选择命令前,先明确要交付的结果和证据。

目标

按目标 schema 生成有效 JSON,同时保留原始输入。

所需输入

  • JSON 文件或数据流
  • 必需输出字段
  • 筛选与排序规则
  • 示例记录

预期输出

  • jq filter
  • 已验证 JSON
  • 变更摘要
  • 可选替换文件

用 CLI 稳定转换 JSON:安全执行步骤

每一步都要在已声明的边界内执行,验证输出后再继续。

步骤 1只读

检查数据形状

写 filter 前先读取类型、代表性 key 和边界情况。
输入
源 JSON
输出
观察到的 schema 和边界情况
$ 检查数据形状
jq 'type, (if type == "array" then .[0] else keys end)' input.json
步骤 2本地写入

转换到新文件

把结果写到临时输出,不直接覆盖源文件。
输入
已审查 jq filter
输出
候选 JSON 文件
$ 转换到新文件
jq '[.items[] | {id, name}]' input.json > output.json
步骤 3只读

验证并比较

解析候选文件,检查必需字段,并在替换前比较数量或校验值。
输入
源文件和候选文件
输出
验证与变更摘要
$ 验证并比较
jq -e 'all(.[]; has("id") and has("name"))' output.json

审批点与回滚

在列出的决策点停下,并让恢复方法始终紧跟操作。

这些操作需要先确认

  • 替换已有文件
  • 删除需求未明确提到的字段
  • 把本地 JSON 发到远程服务

恢复计划

  • 验证通过前保持源文件不变
  • 从已验证临时文件原子替换
  • 从版本控制或备份恢复旧文件

选 CLI、MCP 还是 API?

根据执行位置、身份、输出合同与权限边界选接口。

CLI

本地确定性 JSON 转换和 shell pipeline 的默认选择。

MCP

通常不需要,除非数据必须留在受治理的远程系统内。

API

转换需要成为带稳定 schema 合同的共享服务时使用。

建议方案

本地使用 jq,并把覆盖写作为独立可审查步骤。

官方证据与参考

执行前使用这些官方或上游来源确认当前命令行为。

jq manual

用于核对本页涉及的当前命令、认证、输出格式与操作边界。

执行前的常见问题

字段缺失时如何让命令失败?

使用 jq 的 -e 选项检查结构,让缺少必需字段时返回非零退出码。

jq 能原地编辑文件吗?

更安全的方式是写入临时文件、验证后再原子替换源文件。

相关工具与指南

浏览同类指南,选择与你当前任务最接近的下一页。

继续查看与当前任务相关的工具证据、工作流或决策指南。

继续查看与当前任务相关的工具证据、工作流或决策指南。

继续查看与当前任务相关的工具证据、工作流或决策指南。