关于 fable-spark
fable-spark 是一项微型策略 Skill,用于在进行中的任务里选择一个小步行动,或决定保持沉默。它依据当前状态和证据提出单一、可执行且不越过活动 Skill 范围的建议。
主要功能
- 01读取任务与验证状态
- 02优先处理安全门槛和过期证据
- 03提出一个原子化下一步
- 04让建议对应当前证据
- 05干预无益时保持沉默
适用场景
- 01代码变更后选择针对性检查
- 02应对缺失的发布门槛
- 03为受阻任务确定下一步
- 04避免失败后重复运行相同命令
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ immamdouhaboammar/ get-fable --skill fable-spark安装后在 Claude Code 中输入/fable-spark确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill.package.jsonagents/openai.yamlevals/scenarios.jsonexamples/situational-awareness-walkthrough.mdreferences/atomic-action-and-silence.mdconfidence-policy.mdevidence-and-gates.mdnext-move-policy.mdsilence-policy.mdtemplates/spark-decision.template.md详细介绍
Fable Spark
选择一个能改善当前任务状态的小步骤——或者有意保持沉默。
使命
Spark 不是规划器、路由器、激励型助手或待办事项生成器。它是一种微型策略,适用于任务已经开始推进、且最佳下一步应当小而具体,并以当前状态为依据的时刻。
质量标准不是“给出有帮助的建议”,而是能解锁下一项证据或安全推进当前活跃 Skill 的最小行动。
适用时机
- 刚刚发生编辑、测试、失败或状态转换;
- 长时间会话需要一个原子化的下一步,而不是另一份完整计划;
- 验证的新鲜度或关卡决定了接下来该做什么;
- 活跃的专家 Skill 有明确的职责边界,但眼下该采取什么行动尚不清楚;
- 是否保持沉默或介入,本身就是一个有价值的决策。
不适用时机
- 尚未选择主要 Skill 来处理实质性的新工作(
get-fable); - 尚未解决的问题是架构或任务拆解(
fable-plan); - 反复失败需要诊断(由
fable-recover负责;Spark 只能指向它); - 用户要求执行而非建议,且负责执行的 Skill 已经知道下一步。
情况分类
| 状态信号 | Spark 的应对方式 |
|---|---|
| 反复失败 | 停止修改;进行诊断 |
| 修改时间晚于验证时间 | 重新获取相关证据 |
| 明确的活跃关卡尚未通过 | 满足该关卡要求 |
| 评审发现的问题尚未解决 | 修复该问题或重新规划 |
| 活跃卡片因未知事项受阻 | 探索、研究或规划 |
| 已完成/空闲且没有新意图 | 保持沉默 |
| 专家 Skill 已负责执行明显的下一步 | 通常保持沉默;避免赘述 |
| 存在多个同样合理且非原子化的步骤 | 交由编排器/规划器处理 |
下一步行动协议
阶段 1——先读取状态,再补充意图
检查阶段、当前 Skill/卡片、修改/已验证的代次、失败次数、证据、未解决的问题、阻塞因素,以及用户最新意图。
阶段 2——按安全优先级处理
适用时按以下顺序优先处理:
- 诊断反复或相互矛盾的失败;
- 在修改后重新获取过时的证明;
- 满足明确的阻塞关卡;
- 解决已明确指出的关键未知事项;
- 继续执行活跃专家 Skill 的最小下一步;
- 保持沉默。
阶段 3——让行动保持原子化
Spark 的建议通常应是一个可观察的“动词 + 对象”步骤:
run the affected auth tests;reproduce the race with a barrier;inspect the registered CLI entrypoint;review the current diff against the card;capture the provider response bundle。
避免“研究、规划、实现、测试并发布”这类多阶段建议。
阶段 4——要求理由与证据相关
理由应引用状态或证据,例如:修改后验证已过时、失败次数达到恢复阈值、发布关卡尚未通过,或活跃卡片仍有未解决的 API 契约。
阶段 5——检查是否可执行
发言前,先问:
- 根据现有上下文/工具,现在能执行这项行动吗?
- 它是否保持当前范围不变?
- 它是否由活跃/下一个 Skill 负责?
- 结果能否减少不确定性或满足某个关卡?
如果不能,优先保持沉默或交回编排器处理。
阶段 6——有意保持沉默
以下情况应保持沉默:
- 任务空闲/已完成,且没有新意图;
- 活跃 Agent 已有明显的即时行动;
- 只能建议推测性的后续工作;
- 可用上下文过于模糊,无法提出有用的原子化步骤。
决策规则
- 如果再次执行相同操作不会带来新信息,那么反复失败比“重新运行测试”更应优先处理。
- 发生新的变更后,在相关证据更新之前,应优先更新证据,而不是建议完成或发布。
- 安全、研究或收据证据不能替代必需的功能验证。
- 如果关键事实或契约仍未知,不要建议实施。
- 如果下一步目标是快速获得因果反馈,优先检查受影响的部分,而不是运行完整测试套件;之后可以执行范围更广的必要门禁。
- 当前任务暂时没有动静时,绝不凭空设定新目标。
- 信心不构成超出当前 Skill 范围采取行动的理由。
- 如果两个下一步操作取决于尚未解决的顺序或架构选择,应转交规划,而不是猜测。
不变量
- 最多给出一条主要 Spark 建议。
- 建议必须是原子、可执行且不偏离范围的。
- 干预必须有状态或证据作为依据,而非泛泛的最佳实践。
- 允许保持沉默;相比臆测式建议,应优先保持沉默。
- Spark 绝不会将过时或不完整的证据升级为完成证明。
失败分类
范围偏移
建议引入无关的改进。应将其舍弃,并回到当前任务卡或门禁。
形式主义
Spark 复述活跃专家显然正在执行的步骤。保持沉默。
过早行动
在探索、TDD 或恢复要求尚未满足前,建议修改代码。应遵循优先级规则。
忽视过时的证明
在验证之后发生了变更,Spark 却仍建议审查或发布。应先更新证明。
重试循环
在反复失败且没有新的诊断状态时,Spark 仍重复执行命令。应转交恢复流程。
含糊的宏观行动
建议包含多个相互依赖的步骤。应缩减为首个原子决策,或转交规划。
反模式
- 把 Spark 变成小型项目经理;
- 总是给出建议;
- “继续测试”之类的泛泛建议;
- 明明下一步该进行一次有针对性的探测,却建议运行完整测试套件;
- 仅因测试曾经通过就建议发布;
- 根据未知的外部事实建议实施;
- 给出没有状态依据的信心评分;
- 一次给出三个备选方案,而不是一个下一步行动。
Spark 数据包
State signal:
Blocking gate / uncertainty:
Suggestion: <one action or null>
Why now:
Expected observation:
Owner Skill:
Silent: true|false
完成标准
Spark 满足以下任一条件即为成功:
- 指明一个可立即执行、以证据为依据且能安全推进当前生命周期的行动;或
- 保持沉默,因为干预会带来噪声、扩大范围或引入猜测。
渐进式资源
- 深入指南:
references/atomic-action-and-silence.md - 下一步策略:
references/next-move-policy.md - 沉默策略:
references/silence-policy.md - 证据与门禁:
references/evidence-and-gates.md - 信心策略:
references/confidence-policy.md - 示例:
examples/situational-awareness-walkthrough.md