mcpField
S
shell-integration

shell-integration

github.com/oakoss开发20115 次安装10 周前更新
代码仓库

关于 shell-integration

面向开发者的参考技能,用于构建扩展或交互于 Unix shell 的工具,涵盖 Zsh、Bash 和 Fish 的补全、钩子、按键绑定、终端控制及插件分发。

主要功能

  1. 01Zsh、Bash 和 Fish 补全
  2. 02提示符钩子与事件处理器
  3. 03ZLE 小部件与按键绑定
  4. 04终端与进程控制
  5. 05插件安装模式

适用场景

  1. 01为 CLI 工具添加补全
  2. 02构建 shell 插件和提示符定制
  3. 03创建终端界面
  4. 04检查脚本的跨 shell 兼容性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oakoss/agent-skills --skill shell-integration

安装后在 Claude Code 中输入/shell-integration确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
bash-integration.md
fish-integration.md
plugin-distribution.md
posix-scripting.md
terminal-control.md
zsh-integration.md

详细介绍

Shell 集成

概述

Shell 集成涵盖用于构建扩展或交互 Unix Shell 的工具的 API 和模式。这包括 Zsh、Bash 和 Fish 的补全系统、提示符钩子、按键绑定、终端控制和插件分发。

适用场景: 构建 CLI 工具补全、Shell 插件、提示符自定义、终端 UI、点文件管理器、安装脚本或原生二进制文件包装器。

不适用场景: 与扩展 Shell 无关的通用脚本(独立脚本请参考 POSIX 脚本参考)、GUI 应用或 Web 服务开发。

快速参考

模式Shell要点
补全函数Zsh使用 compdef、compadd 和 zstyle 配置匹配器
补全函数Bashcomplete、compgen、COMP_WORDS、COMP_CWORD、COMPREPLY
补全函数Fishcomplete -c cmd -a args、条件标志、子命令模式
ZLE 小组件Zshzle -N widget func,使用 bindkey 映射按键
提示符钩子Zsh通过 add-zsh-hook 使用 precmd、preexec、chpwd
提示符钩子BashPROMPT_COMMAND(Bash 5.1+ 中为字符串或数组)
事件处理程序Fish--on-event、--on-variable、--on-signal
缩写Fishabbr -a name expansion,使用 --function 实现动态缩写
参数展开Zsh${(s.:.)var}、${var:=default}、标志和修饰符
终端控制所有ANSI/CSI 转义序列、tput、stty
信号处理所有trap 内置命令、清理模式、EXIT/INT/TERM
进程管理所有作业控制(&、wait、bg、fg)、子 Shell、协程
插件安装所有加载策略、版本检测、ZDOTDIR 加载顺序

常见错误

错误正确做法
使用 echo -e 以便跨平台输出转义序列使用 printf 或 tput,以确保在不同 Shell 和操作系统间的可移植性
在 Bash 中使用 = 修改 PROMPT_COMMAND使用 += 追加,避免覆盖其他工具设置的内容
在延迟加载的函数中定义 Fish 事件处理程序将事件处理程序放在 config.fish 中,或显式加载它们
将终端功能硬编码通过 tput 查询,它会遵循 TERM 和 terminfo
Zsh 函数中缺少 emulate -L zsh始终设置本地选项,避免污染调用方环境
使用拆分 $COMP_LINE 而非 COMP_WORDS使用 COMP_WORDS[$COMP_CWORD] 可靠地提取单词
包装脚本中的 $@ 未加引号始终使用 "$@" 保留参数边界
假设 /bin/sh 是 Bash以 POSIX sh 为目标编写可移植脚本,并使用 dash 测试
在 POSIX 脚本中使用 function 关键字使用 name() { ... } 语法以兼容 POSIX
忽略用于清理的 EXIT 陷阱始终设置 trap cleanup EXIT 来清理临时文件和状态

委派

  • 完成情况测试:使用 Explore Agent 交互式验证完成情况
  • 脚本审查:使用 Task Agent 审核跨 Shell 兼容性
  • 代码审查:委派给 code-reviewer Agent

如果有 rust 技能,请委派原生二进制编译模式相关工作。Shell 包装器通常会调用 Rust 编译的二进制文件,以执行性能关键型操作。 如果有 cli-power-tools 技能,请委派现代 CLI 实用工具模式相关工作。许多 Shell 插件会包装 fd、ripgrep 和 fzf 等工具。

参考资料

评论

支持 Markdown