Nm Pensive Shell Review

自动审查Shell脚本的正确性、可移植性和常见陷阱。

已扫描
适合谁
开发人员、DevOps工程师
不适合谁
非Shell脚本开发者、仅需执行一次性命令的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @athola/nm-pensive-shell-review

Skill 说明

命令、参数、文件名以原文为准

夜市技能 — 从 [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) 移植而来。如需完整体验(包括代理、钩子和命令),请安装 Claude Code 插件。

目录

  • [快速开始](#快速开始)
  • [适用场景](#适用场景)
  • [必需的 TodoWrite 项目](#必需的-todowrite-项目)
  • [工作流程](#工作流程)
  • [输出格式](#输出格式)

Shell 脚本审查

审查 Shell 脚本的正确性、安全性和可移植性。

验证

审查完成后,运行 shellcheck <script> 以验证修复是否解决了已识别的问题。

测试

运行 pytest plugins/pensive/tests/skills/test_shell_review.py -v 来验证审查模式的有效性。

快速开始

/shell-review path/to/script.sh

适用场景

  • CI/CD 管道脚本
  • Git 钩子脚本
  • 包装脚本(run-*.sh)
  • 构建自动化脚本
  • pre-commit 钩子实现

不应使用的情况

  • 非 Shell 脚本(如 Python、JS 等)
  • 无需审查的一行命令

必需的 TodoWrite 项目

  1. shell-review:context-mapped
  2. shell-review:exit-codes-checked
  3. shell-review:portability-checked
  4. shell-review:safety-patterns-verified
  5. shell-review:structure-checked
  6. shell-review:evidence-logged

工作流程

步骤 1:上下文映射(shell-review:context-mapped

识别 Shell 脚本:

# 查找 Shell 脚本
find . -not -path "*/.venv/*" -not -path "*/__pycache__/*" \
  -not -path "*/node_modules/*" -not -path "*/.git/*" \
  -name "*.sh" -type f | head -20
# 检查 shebang
rg -l "^#!/" scripts/ hooks/ 2>/dev/null | head -10
# 备用方案:grep -l "^#!/" scripts/ hooks/ 2>/dev/null | head -10

记录内容:

  • 脚本用途及触发上下文
  • 集成点(make、pre-commit、CI)
  • 预期输入与输出

步骤 2:退出码审计(shell-review:exit-codes-checked

@include modules/exit-codes.md

步骤 3:可移植性检查(shell-review:portability-checked

@include modules/portability.md

步骤 4:安全模式验证(shell-review:safety-patterns-verified

@include modules/safety-patterns.md

步骤 5:结构模式检查(shell-review:structure-checked

@include modules/structure-patterns.md

步骤 6:证据记录(shell-review:evidence-logged

使用 imbue:proof-of-work 记录发现,包含文件:行号引用。

总结:

  • 关键问题(失败被掩盖、安全风险)
  • 重大问题(可移植性、可维护性)
  • 次要问题(风格、文档)

输出格式

## 摘要
Shell 脚本审查结果

## 审查的脚本
- [列出脚本并附上行数]

## 退出码问题
### [E1] 管道掩盖了错误
- 位置:script.sh:42
- 模式:`cmd | grep` 丢失退出码
- 修复:使用 pipefail 或分别捕获

## 可移植性问题
[跨平台相关问题]

## 安全问题
[未加引号的变量、缺失 set 标志等]

## 建议
批准 / 批准并采取行动 / 拒绝

通过标准

  • [ ] 已验证退出码传播(管道中检查 pipefail 或捕获并校验)
  • [ ] 已记录可移植性问题(在 #!/bin/sh 脚本中标记 Bash 特有语法)
  • [ ] 已验证安全模式(无 echo、花括号变量、:? 扩展、子 shell 中的 cd、无 basename/dirname)
  • [ ] 已验证结构模式(库/可执行文件区分、main 调用、前置代码、依赖检查、shfmt 格式化)
  • [ ] 使用 imbue:proof-of-work 通过文件:行号记录证据
A
@athola

已收录 1 个 Skill

相关推荐