关于 terminal-ui
面向使用 Ink 和 Clack 构建 TypeScript 终端界面的最佳实践技能,按优先级整理 CLI 开发与代码生成所需的规则,涵盖渲染、输入、提示和兼容性。
主要功能
- 01涵盖八类的 42 条规则
- 02Ink 终端界面模式
- 03Clack 提示设计
- 04键盘与状态处理
- 05渲染和终端兼容性
适用场景
- 01构建交互式 TypeScript CLI
- 02改进 Ink 界面渲染
- 03设计多步骤 Clack 提示
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill terminal-ui安装后在 Claude Code 中输入/terminal-ui确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdinput-escape-routes.mdinput-immediate-feedback.mdinput-isactive-focus.mdinput-modifier-keys.mdinput-useinput-hook.mdprompt-cancellation.mdprompt-custom-render.mdprompt-group-flow.mdprompt-spinner-tasks.mdprompt-validation.mdrender-60fps-baseline.mdrender-escape-sequence-batching.mdrender-overwrite-dont-clear.mdrender-partial-updates.mdrender-single-write.mdrender-synchronized-output.mdrobust-exit-codes.mdrobust-graceful-degradation.mdrobust-signal-handling.mdrobust-terminal-restore.mdrobust-tty-detection.mdtuicfg-env-vars.mdtuicfg-flags-over-args.mdtuicfg-help-system.mdtuicfg-json-output.md详细介绍
DevEx 开发者体验 TUI 最佳实践
全面的开发者体验指南,介绍如何使用 Ink(适用于 CLI 的 React)和 Clack prompts 构建 TypeScript 终端用户界面。包含 8 个类别中的 42 条规则,并按影响力排序,以指导自动重构和代码生成。
适用场景
在以下情况下,请参考这些指南:
- 使用 @clack/prompts 构建带交互式提示的 CLI 工具
- 使用 Ink 创建基于 React 的终端 UI
- 处理键盘输入和用户交互
- 优化终端渲染并防止闪烁
- 设计对开发者友好的 CLI 体验
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 渲染与输出 | CRITICAL | render- |
| 2 | 输入与键盘 | CRITICAL | input- |
| 3 | 组件模式 | HIGH | tuicomp- |
| 4 | 状态与生命周期 | HIGH | tuistate- |
| 5 | 提示词设计 | MEDIUM-HIGH | prompt- |
| 6 | 用户体验与反馈 | MEDIUM | ux- |
| 7 | 配置与 CLI | MEDIUM | tuicfg- |
| 8 | 稳健性与兼容性 | LOW-MEDIUM | robust- |
快速参考
1. 渲染与输出(CRITICAL)
render-single-write- 将终端输出合并为单次写入render-overwrite-dont-clear- 覆盖内容,而非清除后重绘render-synchronized-output- 使用同步输出协议实现动画render-60fps-baseline- 以 60fps 为目标,实现流畅动画render-partial-updates- 仅更新发生变化的区域render-escape-sequence-batching- 延迟生成 ANSI 转义码,直至最终输出
2. 输入与键盘(CRITICAL)
input-useinput-hook- 使用 useInput Hook 处理键盘输入input-immediate-feedback- 针对输入提供即时视觉反馈input-modifier-keys- 正确处理修饰键input-isactive-focus- 使用 isActive 选项管理焦点input-escape-routes- 始终提供退出途径
3. 组件模式(HIGH)
tuicomp-box-flexbox- 使用 Box 组件和 Flexbox 进行布局tuicomp-text-styling- 使用 Text 组件显示所有可见内容tuicomp-measure-element- 使用 measureElement 实现动态尺寸调整tuicomp-static-for-logs- 使用 Static 组件输出日志tuicomp-percentage-widths- 使用百分比宽度实现响应式布局tuicomp-border-styles- 使用边框样式构建视觉结构
4. 状态与生命周期(HIGH)
tuistate-useapp-exit- 使用 useApp Hook 管理应用生命周期tuistate-cleanup-effects- 卸载时始终清理副作用tuistate-functional-updates- 使用函数式状态更新,避免闭包中的状态过期tuistate-usecallback-stable- 使用 useCallback 稳定回调tuistate-usememo-expensive- 使用 useMemo 缓存开销较大的计算
5. 提示词设计(MEDIUM-HIGH)
prompt-group-flow- 使用 Clack group() 组织多步提示prompt-validation- 尽早验证输入,并提供描述性消息prompt-cancellation- 使用 isCancel 优雅地处理取消prompt-spinner-tasks- 使用 Spinner 和 Tasks 处理长时间运行的操作prompt-custom-render- 使用 @clack/core 构建自定义提示
6. 用户体验与反馈(MEDIUM)
ux-progress-indicators- 为耗时超过 1 秒的操作显示进度ux-color-semantics- 语义一致地使用颜色ux-error-messages- 编写可指导用户采取行动的错误消息ux-next-steps- 完成后显示后续步骤ux-intro-outro- 使用 Intro 和 Outro 为会话设置开场和收尾
7. 配置与 CLI(MEDIUM)
tuicfg-sensible-defaults- 为所有选项提供合理的默认值tuicfg-env-vars- 支持标准环境变量tuicfg-flags-over-args- 优先使用标志,而非位置参数tuicfg-help-system- 实现全面的帮助系统tuicfg-json-output- 支持机器可读的输出格式
8. 稳健性与兼容性(低-中)
robust-tty-detection- 检测 TTY 并据此调整行为robust-signal-handling- 妥善处理进程信号robust-exit-codes- 使用有意义的退出代码robust-terminal-restore- 退出时始终恢复终端状态robust-graceful-degradation- 在功能受限的终端中优雅降级
使用方法
阅读各个参考文件,了解详细说明和代码示例:
- 章节定义 - 类别结构和影响级别
- 规则模板 - 添加新规则的模板
- render-single-write - 规则文件示例
- input-useinput-hook - 规则文件示例
完整编译文档
如需查看包含所有展开规则的完整指南:AGENTS.md
评论
支持 Markdown