Token导航 LogoToken导航TokenDH.com
效率需要联网clawhub未标认证来源可访问clear审计通过

ai-cli-designAI CLI 设计

Agent Skill

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

总安装

3,398

周安装

143

GitHub Stars

公开资料未说明

下载量

1,190
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ai-cli-design(AI CLI 设计)
来源仓库:https://github.com/dongsheng123132/ai-cli-design
安装命令:
openclaw skills install ai-cli-design
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install ai-cli-design

简介

为AI代理设计本地API风格的命令行界面规范。

  • 强调TTY检测、JSON输出分离和退出代码标准化。
  • 帮助开发者建立一致且易用的CLI交互体验。ai-cli-design 属于效率类 Skill,可作为该场景下的辅助能力补充。
  • 安装命令:openclaw skills install ai-cli-design。
  • 建议结合具体使用场景调整输出格式与错误处理机制。

SKILL.md

name
ai-cli-design
version
1.0.0
description
Design CLI tools as local APIs for AI agents. TTY detection, --json output, stderr/stdout separation, exit codes. | 为 AI 设计 CLI 工具的规范:TTY 检测、JSON 输出、stderr/stdout 分离、退出码。
user_invocable
false

AI-CLI Design - 给 AI 设计 CLI 工具的规范

核心理念 / Core Principle

CLI 不是"命令行界面",是"AI 可调用的本地 API"。 Unix 风格 = 最便宜、最稳定、最通用的 API 协议。

规范 / Specification

1. TTY 检测:终端 vs AI

检测 stdout 是否连接终端,自动切换输出模式:

import "golang.org/x/term"

isTTY := term.IsTerminal(int(os.Stdout.Fd()))
场景stdout行为
人在终端敲命令TTY进度条、颜色、交互提示
AI/脚本调用pipe纯文本、无 ANSI、无进度条
--json 显式指定任意强制 JSON 输出

规则:如果不是 TTY,绝对不输出 ANSI 转义码、进度条、spinner。

2. stdout/stderr 分离

这是最关键的设计:

stdout = 结果数据(机器读)
stderr = 日志/进度/调试信息(人读)

AI 调用时:tool action 2>/dev/null 拿到纯净数据。 人调试时:stderr 能看到过程信息。

绝对不要把日志和结果混在 stdout 里。

// 日志 → stderr
func log(format string, a ...any) {
    if !jsonMode && !quiet {
        fmt.Fprintf(os.Stderr, format+"\
", a...)
    }
}

// 结果 → stdout
func output(data any) {
    if jsonMode {
        json.NewEncoder(os.Stdout).Encode(data)
    } else {
        // tab-separated 纯文本
        fmt.Println(formatTSV(data))
    }
}

3. 双模输出:默认 + --json

默认模式(人 + 简单脚本)

Tab-separated,可 grep/awk/cut:

OK	/media/usb1	31 files	500KB	25ms	20MB/s
OK	/media/usb2	31 files	500KB	26ms	19MB/s
FAIL	/media/usb3	0 files	0B	1ms	0B/s
# 脚本用法
tool list | grep FAIL
tool list | awk '{print $2}'
tool list | wc -l

--json 模式(AI 专用)

{
  "ok": true,
  "data": [...],
  "error": null
}

JSON 输出契约(必须遵守):

顶层必有 "ok": bool          → AI 判断成功/失败
失败时必有 "error": string    → AI 读取错误信息
列表用数组 []                 → 不要换行拼接字符串
字段名用 snake_case           → 统一风格
数值不要格式化                → bytes 用数字,不用 "1.5MB"

完整 JSON 响应结构模板:

type Response struct {
    OK      bool        `json:"ok"`
    Data    interface{} `json:"data,omitempty"`
    Error   string      `json:"error,omitempty"`
    Stats   *Stats      `json:"stats,omitempty"`
}

type Stats struct {
    Elapsed  string `json:"elapsed"`
    Count    int    `json:"count,omitempty"`
}

4. 退出码规范

0 = 成功
1 = 运行时错误(部分失败、IO 错误)
2 = 参数/用法错误

AI 用 $? 快速判断:

tool action --json && echo "success" || echo "failed: $?"

不要用奇怪的退出码(比如 137、255)。简单的 0/1/2 足够。

5. 命令设计 = API 设计

把每个子命令看作一个 API endpoint:

CLI 命令等价 API说明
tool list --jsonGET /items查询
tool get ID --jsonGET /items/:id获取
tool create --name foo --jsonPOST /items创建
tool delete ID --jsonDELETE /items/:id删除
tool scan --jsonPOST /scan动作

设计原则:

  • 一个命令做一件事(Unix 哲学)
  • 参数用 --flag value 不用交互式输入(AI 没法交互)
  • 支持 --yes / --no-input 跳过确认(AI 不能回答 y/n)
  • 幂等操作优先(重复执行不出错)

6. 标准 flag 集

每个 AI-friendly CLI 都应该支持这些 flag:

--json           结构化 JSON 输出
--quiet, -q      只输出结果,不输出日志
--verbose, -v    详细日志
--no-input       禁用交互式提示
--yes, -y        自动确认所有提示
--version        版本号

7. Go 实现模板

参考 templates/tty.go.tmpl 获取完整的 Go 代码模板,包含:

  • TTY 检测
  • stdout/stderr 分离
  • --json / --quiet / --verbose 三模式
  • 退出码处理
  • JSON 响应结构

检查清单 / Checklist

设计一个新的 CLI 工具时,逐项检查:

  • [ ] stdout 只输出结果数据,stderr 输出日志
  • [ ] 支持 --json 输出结构化 JSON
  • [ ] JSON 顶层有 okerror 字段
  • [ ] TTY 检测:非终端时不输出 ANSI/进度条
  • [ ] 退出码:0=成功,1=失败,2=参数错误
  • [ ] 默认输出 tab-separated 可 grep
  • [ ] 支持 --quiet--verbose
  • [ ] 不需要交互式输入(或有 --yes 跳过)
  • [ ] 参数全部通过 flag 传递,不依赖 stdin 交互

实际案例 / Real Example

fastcp(本规范的第一个实践项目):

# AI 调用方式
fastcp --json --verify /source /target1 /target2 2>/dev/null
# 返回 {"ok":true, "targets":[...], "elapsed":"25ms"}

# 人工调用方式
fastcp --verify /source /target1 /target2
# stderr 显示进度条,stdout 显示 OK/FAIL 汇总

# 脚本调用方式
fastcp -q /source /target1 /target2 | grep FAIL

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

93.57%
按下载量换算1,113

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills