Skill: quack
Explicit route control 🦆. Alias-first auto-route, else one targeted disambiguation question.
Purpose
Provide explicit user-controlled routing for workflow-like requests while preserving safety and approval constraints.
{{include: skill-snippets/philosophy-guardrails.md}}
{{include: skill-snippets/clarify-first-preflight.md}}
Activation
Use only when user explicitly invokes quack; do not auto-activate from inferred intent.
Method
- Verify explicit
quackinvocation. - Normalize intent: strip separator after
quack(:,-,—), strip outer matching quotes, strip trailing punctuation (?!.;:). - Bare
quack(heartbeat path):- If normalized intent is empty or whitespace-only:
- Read
assets/heartbeat.mdand select one random heartbeat line from the list - Read and emit full
assets/quick-help.mdcontent verbatim (no summarization) - Emit closing prompt:
What would you like to route? - Stop (do not generate ad-hoc quips, do not enter disambiguation)
- Read
- If normalized intent is empty or whitespace-only:
- Parse optional override:
use <subagent>orwith <subagent>orvia <subagent>. - Validate override (if present) against platform subagent list; if invalid, ask one correction question:
Need one detail: unknown subagent "<x>". Use duckling or general?and stop. - Determine effective subagent: if override parsed in step 4, use that; otherwise default to
duckling. - Determine route execution policy:
- inline-default:
duck-design,duck-teach,duck-debug,duck-debt - delegated-default:
duck-patch,duck-refactor,duck-risk,duck-review,duck-triage,duck-simplify - user override forces delegation regardless of default policy
- inline-default:
- If explicit full skill name in input, resolve that skill and execute route (see step 11).
- Otherwise, load
assets/route-aliases.jsonand attempt case-insensitive match. - Apply keyword-based precedence (when multiple skills match):
- Scan intent for precedence keywords:
- Risk signals (
rollback,breaking,compatibility,compat,failure,impact) -> prioritizeduck-risk - Complexity signals (
overengineered,complexity,simpler,too many,bloated) -> prioritizeduck-simplify - Learning signals (
why,how,what does,explain,teach me) -> prioritizeduck-teachoverduck-debug - Test signals (
test,coverage,should I test,before PR) -> prioritizeduck-triage - Design signals (
choose,tradeoff,approach,option) -> prioritizeduck-design
- Risk signals (
- Reorder matched skills with precedence-matched skill first
- Still present alternatives (precedence aids ranking, doesn't eliminate choice)
- Scan intent for precedence keywords:
- If multiple aliases match after precedence, apply tie-break: exact match > longest alias > ask one disambiguation question.
- Route execution (explicit skill name or alias match):
- Load role instructions from
assets/subagent-runbook.mdfor resolved skill - If inline-default policy AND no user override:
- execute skill inline first
- if execution fails, ask one corrective question and stop
- emit
Routing: <skill>.only after inline execution step completes
- Otherwise (delegated-default OR user override):
- delegate to subagent using harness-native dispatch tool with
subagent=<effective_subagent>(determined in step 6, defaults toduckling) first - pass
skill_name=<resolved_skill>parameter - if dispatch fails, ask one corrective question and stop
- emit
Routing: <skill> via <subagent>.if user override supplied, elseRouting: <skill>.only after dispatch succeeds
- delegate to subagent using harness-native dispatch tool with
- Do not stop at routing text alone when execution path is available.
- Load role instructions from
- Alias miss (disambiguation):
- Detect intent fragment and ask one targeted question:
- debug-ish (error/fail/trace/stack/broken):
Need one detail: is this debug, trace, or review? - rollout/risk (rollout/migration/compat/rollback):
Need one detail: is this risk review or design tradeoff? - code-change (fix/change/refactor/clean up):
Need one detail: do you want review, patch, refactor, or simplify? - tech-debt (todo/defer/fixme/debt):
Need one detail: is this debt audit or simplify? - unknown:
Need one detail: which route fits—review, debug, design, teach, triage, risk, simplify, patch, refactor, or debt?
- debug-ish (error/fail/trace/stack/broken):
- Wait for user clarification, then retry alias resolution.
- Detect intent fragment and ask one targeted question:
Boundaries
- Preserve user decision ownership. {{include: policy-snippets/safety-carveouts.md}}
- No edits/mutating commands/subagent delegation that changes workspace state without explicit bounded approval.