关于 pre-flight-check
pre-flight-check 是在 Agent 开始工作前呈现既有项目经验的技能,可通过 SessionStart hook 轻量扫描,也可手动进行深入检查。它读取学习记录、评估结果和交接文件,让相关经验在新会话中可见,但不会修改记录或阻止执行。
主要功能
- 01会话启动时轻量扫描
- 02手动深入检查学习记录
- 03检查失败或过期的评估
- 04读取未处理的交接文件
- 05按任务领域筛选相关经验
适用场景
- 01新会话开始时提示近期错误
- 02重大任务前查找相关历史经验
- 03发现待处理评估或交接内容
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pskoett/ pskoett-ai-skills --skill pre-flight-check安装后在 Claude Code 中输入/pre-flight-check确认已加载。
附带文件scripts/pre-flight.sh
详细介绍
预检
在会话开始时呈现相关的累积知识。这是将外循环连接回内循环的桥梁——它会在 Agent 开始工作前,让 Agent 看到先前积累的经验。
如果没有这一步,新会话就看不到累积的 .learnings/。由于没人提醒 Agent 去查看,它会重复已经记录过的错误。
运行时机
- 自动运行:通过 SessionStart 钩子(轻量扫描,约 100-200 个 token)
- 手动运行:在重要任务开始前(深度扫描,可按领域筛选)
钩子输出(自动 — 轻量)
SessionStart 钩子(scripts/pre-flight.sh)会快速扫描;如果发现相关信号,就输出简短提醒:
<pre-flight-check>
Active learnings: N entries in .learnings/
Recent errors (last 7 days): N
Promotion-ready patterns: N
Failed evals: N
High-priority items:
- [Pattern-Key]: [one-line summary] (seen N times)
- [Pattern-Key]: [one-line summary] (seen N times)
Consider running /learning-aggregator if promotion-ready count > 0.
</pre-flight-check>
如果没有信号(.learnings/ 为空,且没有失败的评估),钩子不会输出任何内容——零额外开销。
手动深度扫描
显式调用时,预检会进行更深入的分析:
步骤 1:扫描 .learnings/
读取 .learnings/LEARNINGS.md、.learnings/ERRORS.md、.learnings/FEATURE_REQUESTS.md 和 .learnings/HEALS.md(后者来自 self-healing——记录了先前会话中经过验证的运行时修复;应重点呈现这些内容,让 Agent 在重新摸索之前应用已知修复)。
对每条记录,提取:
- Pattern-Key、Summary、Priority、Status、Area、Related Files、Recurrence-Count、Last-Seen
- 对于 HEAL 记录:还需提取 Active-Context、Trigger,以及任何标记可晋升状态的 Handoff 块
步骤 2:扫描 .evals/(如果存在)
读取 .evals/EVAL_INDEX.md,查找失败或过时的评估。
步骤 3:检查 Context-Surfing 交接内容
查找 .context-surfing/ 中未读的文件(与 handoff-checker.sh 的功能相同,但已集成)。
步骤 4:相关性筛选
如果用户描述了任务领域,则筛选出以下经验:
Area与任务匹配的记录Related Files与可能会修改的文件有重叠的记录- 无论所属领域如何,
Priority: high/critical的记录 Recurrence-Count>= 3 的记录(达到按复现次数晋升的条件——需要关注)
步骤 5:输出
## Pre-Flight Check
### Task Area: [inferred or stated]
### Relevant Learnings
| ID | Summary | Recurrence | Priority | Status |
|----|---------|-----------|----------|--------|
| LRN-... | ... | 3 | high | pending |
| ERR-... | ... | 2 | medium | pending |
### Key Warnings
- [Pattern-Key]: "Concise warning based on learning" — seen N times, last on YYYY-MM-DD
- [Pattern-Key]: "Concise warning based on learning" — seen N times, last on YYYY-MM-DD
### Failed Evals
| Eval ID | Pattern-Key | Last Failed | Recovery Action |
|---------|------------|-------------|-----------------|
| eval-... | ... | YYYY-MM-DD | ... |
### Handoff Files
- [filename] — from session on YYYY-MM-DD
### Recommendations
- [ ] Read handoff files before starting
- [ ] Run learning-aggregator (N promotion-ready patterns)
- [ ] Fix failed evals before starting new work
- [ ] Watch for [specific pattern] in [area]
集成
上游(输入来源)
.learnings/*.md— 自我改进流程积累的经验记录.evals/EVAL_INDEX.md— 来自 eval-creator 的评估结果.context-surfing/— 来自 context-surfing 的交接文件
下游(输出去向)
- 内循环上下文 — Agent 开始工作时,已了解已知模式
- learning-aggregator — 如果达到可晋升条件的记录数量较多,建议运行它
- eval-creator — 如果存在失败的评估,建议先修复再开始新工作
复利效应
博客中的复利效应正是在这里实现的:
Outer loop improves harness → pre-flight surfaces improvements → inner loop starts stronger
每条记录下来的经验、每条晋升的规则、每个创建的评估,都会在下一次会话开始时呈现。每经过一个周期,知识缺口都会缩小。
增量扫描(未来增强)
可以扩展钩子脚本,使其使用本地缓存文件(.pre-flight-cache.json)保存上次已知状态——条目数量、扫描日期、高优先级项目——这样下一次会话开始时就只需重新扫描缓存状态之后新增的条目。这将支持增量报告(“自上次会话以来,新增了 2 条错误记录,且有 1 个模式达到了晋升门槛”),并让钩子无论 .learnings/ 增长到多大,都能近乎即时地完成。此功能目前尚未实现——当前钩子会在每次会话开始时直接扫描。
此技能不会做什么
- 不会修改
.learnings/文件(只读) - 不会晋升模式(这属于需人工把关的自我改进工作流)
- 不会运行评估(这由 eval-creator 负责)
- 不会阻止执行——它只呈现信息,由 Agent 决定采取哪些行动