关于 quack
quack 是用于显式路由工作流类请求的 skill,供主动调用其路由的用户使用。它解析别名、按关键词调整匹配优先级,并依据规则内联执行或委派,同时遵守审批约束。
主要功能
- 01仅在显式调用时启用
- 02基于别名解析路由
- 03按关键词调整路由匹配优先级
- 04支持内联或委派执行策略
- 05为含糊或未知路由请求澄清
- 06遵循审批与安全边界
适用场景
- 01将请求路由到指定工作流
- 02处理多个匹配的路由别名
- 03澄清无法识别的请求
- 04在修改工作区前执行审批要求
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sprngr/ rubber-duck --skill quack安装后在 Claude Code 中输入/quack确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/heartbeat.mdquick-help.mdroute-aliases.jsonsubagent-runbook.mdreferences/Examples.mdGUARDRAILS.md详细介绍
技能:quack
显式路由控制 🦆。优先按别名自动路由,否则提出一个有针对性的消歧问题。
用途
为类似工作流的请求提供由用户显式控制的路由,同时遵守安全和审批约束。
理念护栏(技能局部)
继承 references/GUARDRAILS.md 中的共享护栏。
- 上下文不完整时,提出 1-3 个有针对性的澄清问题
- 缺少证据时,明确说明假设
激活
仅当用户显式调用 quack 时使用;不要根据推断出的意图自动激活。
方法
- 验证是否显式调用了
quack。 - 规范化意图:去掉
quack后的分隔符(:,-,—),去掉外层成对引号,去掉末尾标点(?!.;:)。 - 裸
quack(心跳路径):- 如果规范化后的意图为空或仅包含空白字符:
- 读取
assets/heartbeat.md,并从列表中随机选择一条心跳语句 - 读取并原样输出完整的
assets/quick-help.md内容(不做摘要) - 输出结束提示:
What would you like to route? - 停止(不要临时生成俏皮话,也不要进入消歧流程)
- 读取
- 如果规范化后的意图为空或仅包含空白字符:
- 解析可选覆盖项:
use <subagent>或with <subagent>或via <subagent>。 - 验证覆盖项(如果存在)是否属于平台子 Agent 列表;如果无效,只提一个更正问题:
Need one detail: unknown subagent "<x>". Use duckling or general?,然后停止。 - 确定有效子 Agent:如果在步骤 4 中解析到覆盖项,则使用该项;否则默认使用
duckling。 - 确定路由执行策略:
- 默认内联:
duck-design、duck-teach、duck-debug、duck-debt - 默认委派:
duck-patch、duck-refactor、duck-risk、duck-review、duck-triage、duck-simplify - 用户覆盖项无论默认策略如何,都会强制委派
- 默认内联:
- 如果输入中包含完整技能名称,解析该技能并执行路由(见步骤 11)。
- 否则,加载
assets/route-aliases.json并尝试进行不区分大小写的匹配。 - 应用基于关键词的优先级(匹配到多个技能时):
- 扫描意图中的优先级关键词:
- 风险信号(
rollback、breaking、compatibility、compat、failure、impact)-> 优先选择duck-risk - 复杂度信号(
overengineered、complexity、simpler、too many、bloated)-> 优先选择duck-simplify - 学习信号(
why、how、what does、explain、teach me)-> 优先选择duck-teach,而不是duck-debug - 测试信号(
test、coverage、should I test、before PR)-> 优先选择duck-triage - 设计信号(
choose、tradeoff、approach、option)-> 优先选择duck-design
- 风险信号(
- 将匹配到的技能重新排序,使优先级匹配的技能排在最前
- 仍然提供其他选项(优先级只用于排序,不会消除选项)
- 扫描意图中的优先级关键词:
- 如果应用优先级后仍有多个别名匹配,则按以下规则打破平局:精确匹配 > 别名最长 > 提出一个消歧问题。
- 路由执行(完整技能名称或别名匹配):
- 从
assets/subagent-runbook.md加载已解析技能的角色指令 - 如果策略为默认内联,且没有用户覆盖项:
- 先以内联方式执行技能
- 如果执行失败,只提出一个更正问题,然后停止
- 仅在内联执行步骤完成后输出
Routing: <skill>.
- 否则(默认委派或存在用户覆盖项):
- 首先使用框架原生调度工具,将任务委派给子 Agent,并设置
subagent=<effective_subagent>(由步骤 6 确定,默认为duckling) - 传递
skill_name=<resolved_skill>参数 - 如果调度失败,只提出一个更正问题,然后停止
- 如果提供了用户覆盖项,则仅在调度成功后输出
Routing: <skill> via <subagent>.;否则仅在调度成功后输出Routing: <skill>.
- 首先使用框架原生调度工具,将任务委派给子 Agent,并设置
- 执行路径可用时,不要仅输出路由文本就停止。
- 从
- 别名未匹配(消歧):
- 检测意图片段并提出一个有针对性的问题:
- 类似调试(error/fail/trace/stack/broken):
Need one detail: is this debug, trace, or review? - 发布/风险(rollout/migration/compat/rollback):
Need one detail: is this risk review or design tradeoff? - 代码变更(fix/change/refactor/clean up):
Need one detail: do you want review, patch, refactor, or simplify? - 技术债(todo/defer/fixme/debt):
Need one detail: is this debt audit or simplify? - 未知:
Need one detail: which route fits—review, debug, design, teach, triage, risk, simplify, patch, refactor, or debt?
- 类似调试(error/fail/trace/stack/broken):
- 等待用户澄清,然后重新尝试解析别名。
- 检测意图片段并提出一个有针对性的问题:
边界
- 保留用户对决策的所有权。
- 如果某项更改会削弱信任边界验证、安全控制、数据丢失防护、无障碍要求或明确的用户要求,请拒绝该更改,并仅提供保留这些约束的安全替代方案。
- 未经明确且有范围限定的授权,不得进行编辑、执行会更改工作区状态的命令或委派子 Agent。
评论
支持 Markdown