plugins/jay-ai-basis-env/skills/show-dont-tell/SKILL.md
信息可视化呈现行为准则。当模型回复中包含对比、步骤、配置、架构等结构化信息时自动激活,确保优先使用表格、代码块、列表、树形结构等可视化格式,而不是纯文字堆砌。触发词:「用表格」「画个图」「列个表」「结构化一下」「别光用文字」「可视化」「对比一下」。即使没有触发词,只要回复中包含适合可视化的结构化信息,本 skill 的规则就应生效。也适用于:「太多字了看不下去」「能不能更直观一点」「整理成表格」等场景。
npx skillsauth add nangongwentian-fe/agent-skills show-dont-tellInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
用结构说话,不要用段落堆砌。能用表格的不写段落,能用代码块的不描述代码。
当回复中包含对比、列举、步骤、配置、参数等结构化信息时,必须用对应的可视化格式。纯文字描述结构化信息是信息表达的降级。
不是所有内容都适合可视化。纯解释性文字、因果推理、观点论证——这些用自然段落更好。可视化是为了帮助扫描和对比,不是为了好看。
如果一段回复既有结构化数据又有解释文字,先给表格/列表/代码块,再在下面用 1-2 句话补充必要说明。不要把解释嵌在表格前面当铺垫。
| 信号 | 说明 | 应该用的格式 | |------|------|-------------| | 对比 A 和 B | 两个以上选项的优劣、差异、区别 | 表格,列是选项,行是维度 | | 多个属性/字段 | 参数列表、API 字段、配置项、特征 | 表格,每行一个属性 | | 有先后的步骤 | 操作流程、排查思路、安装步骤 | 编号列表,每步一行,关键命令用代码块 | | 层级/分类 | 目录结构、分类体系 | 树形结构或缩进列表 | | 流程/架构/关系 | 系统架构、数据流、状态机、调用链、模块关系 | Mermaid 代码块(flowchart / graph / sequence / classDiagram 等) | | 代码相关 | 用法示例、配置文件、CLI 命令、SQL | 代码块,标注语言 | | 正反对比 | 好的写法 vs 坏的写法、推荐 vs 不推荐 | ❌/✅ 并排对比或两个代码块 |
用户问: "Redis 和 Memcached 有什么区别?"
❌ 纯文字:
Redis 支持多种数据结构,包括字符串、列表、哈希、集合和有序集合,而 Memcached 只支持简单的键值对。Redis 支持数据持久化,可以把数据存到磁盘,Memcached 不支持持久化,重启后数据丢失。Redis 是单线程模型,Memcached 是多线程模型。Redis 支持发布订阅、Lua 脚本、事务等高级功能,Memcached 功能比较简单。内存管理方面,Redis 使用自己的内存分配器,Memcached 使用 slab 分配。
✅ 表格:
| 维度 | Redis | Memcached | |------|-------|-----------| | 数据结构 | string / list / hash / set / zset | 仅 key-value | | 持久化 | 支持(RDB / AOF) | 不支持 | | 线程模型 | 单线程(6.0 起 IO 多线程) | 多线程 | | 高级功能 | pub/sub、Lua、事务 | 无 | | 内存管理 | 自有分配器 | slab 分配 |
一眼就能对比,不用逐句读。
用户问: "怎么在 Ubuntu 上安装 Nginx?"
❌ 纯文字:
首先你需要更新系统的包列表,可以用 apt update 命令。然后安装 Nginx,用 apt install nginx 就可以了。安装完成后启动 Nginx 服务,用 systemctl start nginx。你还可以设置开机自启,用 systemctl enable nginx。最后验证一下是否成功,在浏览器访问服务器 IP 即可。
✅ 编号列表 + 代码块:
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
http://<服务器IP>,看到 Nginx 欢迎页即成功用户问: "这个项目的目录结构是怎样的?"
❌ 纯文字:
src 目录下有 components、pages、utils 和 styles 四个子目录。components 里放公共组件,pages 里放页面组件,utils 里放工具函数,styles 里放全局样式。项目根目录下还有 public 目录放静态资源,以及配置文件。
✅ 树形结构:
project/
├── src/
│ ├── components/ # 公共组件
│ ├── pages/ # 页面组件
│ ├── utils/ # 工具函数
│ └── styles/ # 全局样式
├── public/ # 静态资源
├── package.json
└── tsconfig.json
用户问: "请求从用户发出到返回响应经过哪些环节?"
❌ 纯文本缩进伪图:
用户输入
→ 入口层 (CLI / Telegram / Slack)
→ AIAgent
→ 组装提示词
→ 发起模型调用
→ 如果返回工具调用
→ 执行工具
→ 继续下一轮
→ 产出最终回复
→ 写入数据库
→ 返回用户
✅ Mermaid 流程图(可被终端/编辑器渲染):
flowchart TD
A[用户输入] --> B[入口层<br/>CLI / Telegram / Slack]
B --> C[AIAgent]
C --> D[组装提示词]
D --> E[发起模型调用]
E --> F{返回工具调用?}
F -- 是 --> G[执行工具]
G --> E
F -- 否 --> H[产出最终回复]
H --> I[写入数据库]
I --> J[返回用户]
区别:Mermaid 会被 Codex 终端渲染为可视化图表,纯文本缩进只是假装像个图。流程、架构、状态机、调用链、数据流这类场景,优先用 Mermaid。
用户问: "async/await 和 .then 链哪个好?"
❌ 纯文字:
async/await 写起来更像同步代码,可读性好。.then 链在多层嵌套时容易变成回调地狱。错误处理方面 async/await 用 try/catch,.then 用 .catch。
✅ 并排代码块:
// ❌ .then 链 — 嵌套深、难读
fetch('/api/user')
.then(res => res.json())
.then(user => fetch(`/api/posts/${user.id}`))
.then(res => res.json())
.then(posts => console.log(posts))
.catch(err => console.error(err));
// ✅ async/await — 扁平、易读
try {
const res = await fetch('/api/user');
const user = await res.json();
const postsRes = await fetch(`/api/posts/${user.id}`);
const posts = await postsRes.json();
console.log(posts);
} catch (err) {
console.error(err);
}
生成回复时,逐条检查:
以下情况不需要强制可视化:
development
网页内容获取技巧集合。当用户需要抓取网页内容、提取文章正文、获取社交媒体帖子内容、读取任意 URL 的文本或 Markdown 格式内容时使用。 无论用户是想"获取某个网页的内容"、"抓取这个链接"、"读取这篇文章"、"把这个页面转成 Markdown",还是想访问 X/Twitter、微信、知乎、Medium 等平台的内容,都应触发此 skill。 包含多种方法,覆盖不同场景:Markdown 提取、绕过付费墙、结构化数据抓取等。持续迭代更新中。
tools
更新 Claude Code CLI 到最新版本。当用户说"更新 Claude Code"、"升级 Claude Code"、"update claude code"、"claude code 太旧了"、"执行 install.sh 更新",或者想让 Claude 自我更新时,立即使用此 skill。不要等用户明确说"用 npm"——只要涉及更新 Claude Code 本身,就使用这个 skill。
tools
Post-action workflow that triggers automatically after creating a new skill or updating an existing skill. Ask the user whether to sync the skill to the jay-skills repository and publish to remote. Use whenever a SKILL.md has just been created or modified.
testing
Design, create, split, or revise Markdown/project documentation using progressive disclosure so agents and humans can find the right level of detail without context bloat. Use when writing docs, README files, runbooks, architecture notes, deployment guides, troubleshooting docs, rules, skills, or when deciding whether content belongs in an existing document or should become a new document.