界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
部署与运维 · SKILL.md

pitfalls

pitfalls

【部署与运维】跨项目复用的通用工程踩坑库速查。在写 bash/shell 脚本、改 git 历史、做 macOS 文件/locale 相关操作、写正则/grep、配 DNS/Docker/反向代理部署、用 Read/Edit 改大文件之前,先查 LIBRARY.md,避免在新项目里重踩别的项目早就踩过的坑;也用于把新踩到的「通用工程坑」按统一格式加进库。触发:/pitfalls、「查坑 / 避坑 / 这类坑查一下」,以及上述高危操作前主动自查。

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: pitfalls description: 跨项目复用的通用工程踩坑库速查。在写 bash/shell 脚本、改 git 历史、做 macOS 文件/locale 相关操作、写正则/grep、配 DNS/Docker/反向代理部署、用 Read/Edit 改大文件之前,先查 LIBRARY.md,避免在新项目里重踩别的项目早就踩过的坑;也用于把新踩到的「通用工程坑」按统一格式加进库。触发:/pitfalls、「查坑 / 避坑 / 这类坑查一下」,以及上述高危操作前主动自查。

pitfalls:通用工程踩坑库

同一个坑,不该让不同项目各踩一遍。 这是一个跨项目复用的「通用工程坑」精选库。一个项目踩过、抽象出来的坑,进了这里,之后任何项目动同类活之前查一眼就能绕开。

单人同时跑很多项目时,最浪费的不是写代码,是在 B 项目重踩 A 项目三周前已经踩明白的坑。每个项目的 Claude 记忆是项目隔离的,A 项目 memory 里的教训,B 项目的 session 默认看不见。这个 skill 就是那条跨项目的「共享记忆」。


核心纪律:它是 pull 模型,该查的时候真去查才有用

这个库不会自动弹出来。它的全部价值取决于「在快要踩坑的那一刻,你真的来查了」。所以只有一条铁律:

干下面这几类「高危活」之前,先扫一眼 LIBRARY.md 对应域。

⚠️ 装好这个 skill 后,请在全局 ~/.claude/CLAUDE.md 里加一句 always-on 纪律(如「写 bash / 改 git 历史 / macOS 文件/locale 操作 / 配 DNS·Docker·反代 / Read·Edit 改大文件前,先查 pitfalls」)。skill 的 description 只给 harness 一个主动想起本 skill 的机会,对「正要写 heredoc」这种当下时刻并不可靠;这条全局纪律才是让 pull 模型稳定在对的时刻触发的关键(没有它,就只能靠你显式 /pitfalls)。

高危域(= 本库覆盖的域,也写进 description,给 harness 一个在这些活儿出现时主动浮现本 skill 的机会;但如上所述不可靠,需靠全局纪律兜底):

域典型动作
Claude Code 工具用 Read/Edit 改大文件、靠 grep 的返回值做判断
Bash / Shell写脚本、heredoc、管道里用 grep/lsof 等命令的退出码
macOS 特有grep/sed 处理中文、写校验脚本、装 Python 包、判断目录存在
Git删除 + 修改混合提交、改历史、批量 add
部署 / 基础设施新子域配 HTTPS、Docker pull、配反向代理
文件同步把开发项目放进 iCloud/网盘同步区

查不到对应坑 ≠ 没坑,只是本库还没收。但凡库里有,就别再用血换一次。


查(默认动作)

  1. 按当前要干的活,定位 LIBRARY.md 里对应的域(## 一级标题)。
  2. 扫该域下的坑条(每条一个 ### 标题 = 一句话坑名),挑和当前操作相关的。
  3. 照「正确做法」改写你即将执行的命令 / 代码,再执行。

LIBRARY.md 刻意做窄、做高信号:只收真·反复踩 + 可泛化的坑。宁可少而准,不要堆成读不完的百科。


加(踩到新坑时)

判断标准:这条坑是「单项目」还是「通用工程」?

  • 单项目(只对这个项目的技术栈 / 领域 / 业务成立):留在项目自己的记忆里(用 stash),不进本库。
  • 通用工程(换个项目、换个人也会踩,与具体业务无关):进本库。

加的时候,在 LIBRARY.md 对应域下追加一条,统一用这个格式(保证全库一致、可扫):

### <一句话把坑说清>
- **症状**:<不报错但给错结果的现象,或具体报错信息>
- **根因**:<为什么会这样>
- **正确做法**:<怎么绕开,给可直接抄的命令/写法>
- **触发场景**:<什么情况下会撞上>(可选)

写库条的红线:

  1. 只写通用知识,不写任何项目/客户/雇主的具体信息(域名、IP、账号 ID、主机名、私有仓名、人名一律抽象成占位符)。本库是公开作品(进 personal-skills 仓),committed 即可被检索缓存。
  2. 不写 key / secret / 凭证 / PII。
  3. 一条坑一个 ###,放进最贴切的那个域;域不够用了再加 ## 新域。

三层提纯阶梯(本库在中间一层)

坑按「局部性」分三层,本库是中间那层。理解这个阶梯,才知道什么进本库、什么不进:

层是什么存哪谁投递
单项目坑只对单个项目成立该项目自己的 memory(stash 写)项目内 session 自动加载
通用工程坑任何项目都可能踩本库 LIBRARY.md高危活前主动查(本 skill)
全局铁律最高频最致命的少数几条全局 ~/.claude/CLAUDE.md每个 session 自动加载

提纯方向:项目里踩到坑,判断可泛化,升进本库;本库里被反复查到、最致命的那几条,再蒸馏一句进全局 CLAUDE.md(always-on)。越往上越贵、越要克制:全局只放「每次都该记得」的极少数,本库放长尾。


关联

  • stash:记项目本地记忆的 skill。两者分工 = stash 管「这个项目的事」,pitfalls 管「所有项目都该知道的工程坑」。踩到坑时先问一句「这是单项目还是通用」,决定进哪边。
  • 全局 ~/.claude/CLAUDE.md:阶梯顶层。本库里被验证最致命的坑,蒸馏一句上去当 always-on 铁律。
我的收藏