SuperAPI AI 工具集

shell-conventions

编程与开发

查看项目

更新于 10-16 02:44

技能介绍

Shell Conventions 是一个专注于 shell 工具约定的技能,用于在编辑或审查 shell 相关文件时应用和检查约定。

用途 该技能的核心用途是执行 shell 约定,包括可移植的 bash 和 sh 实践、变量引用、环境变量使用,以及 Makefile 或 justfile 的模式。它适用于以下场景:编辑现有 shell 脚本、shell 片段、Makefile 或 justfile;规范化可移植性、引用、shebang、环境变量使用或任务命名;审查 shell 变更的基线安全性和仓库 shell 习惯;检查 shell 代码是否遵循仓库要求的约定。

主要能力 技能提供三种入口路径:active(自动调用)、empty(显示模式摘要和触发边界)、check(仅验证约定)。在 active 模式下,技能会确认 shell 工作是主要任务而非附带细节,应用 shell 特定约定,并按需读取参考文件:references/script-baseline.md 用于 shell 脚本和片段,references/make-just.md 用于 Makefile 或 justfile,references/redirection-boundaries.md 用于混合范围任务,references/check-mode.md 用于 check 模式。

核心约定包括:对于不需要数组、[[ ]] 或进程替换的简单自动化,优先使用 POSIX sh;仅在脚本明显受益于 bash 特有功能时使用 bash;使用基于 env 的 shebang 而非硬编码解释器路径;对于 bash,以 set -euo pipefail 开头,除非有明确理由不这样做;对于可移植 sh,使用 set -eu 并避免 pipefail;除非有意需要单词拆分,否则引用变量扩展;在依赖非保证工具之前使用 command -v tool >/dev/null 2>&1;优先使用内置命令和标准工具;保持 shell 函数简短且单一用途。Make 和 Just 约定包括:Make 目标必须面向任务,并在文件较大时通过 help 目标记录;对非文件 Make 目标使用 .PHONY;尽可能保持配方幂等;在 Makefile 中,在配方内将 $ 转义为 $$;在 justfile 中,仅在参数能实质性简化重复任务时使用参数;不要用模糊的目标名称隐藏破坏性行为。命名和结构约定包括:使用小写、描述性的函数名称;优先使用 project_root、target_path 或 output_file 而非单字母名称;环境变量名称保持大写;倾向于早期验证和显式用法文本而非静默失败。

使用方式 该技能在编辑 .sh、.bash、.zsh、Makefile 或 justfile 时自动调用。用户也可以显式使用 check 模式来仅验证约定。技能通过渐进式披露按需读取参考文件,而不是一次性加载所有内容。

适用场景 适用于 shell 风格、可移植性、shebang、引用、环境变量使用、Make 或 just 约定以及仅约定审查。

限制 不适用于 Python、CI 工作流 YAML、部署自动化设计、脚本生成或大规模 shell 重写。当请求涉及脚本生成、转换或 CI 工作流时,应重定向到 shell-scripter 或 devops-engineer。技能不触发的情况包括:shell 仅作为较大 Python、JS 或基础设施任务的附带细节;CI 工作流 YAML、部署管道或发布自动化设计;创建新脚本、转换 shell 方言或深度 shell 重构。