SKILL.md
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.
Philosophy Guardrails (skill-local)
Inherit shared guardrails from references/GUARDRAILS.md.
- ask 1-3 targeted clarifying questions when context is incomplete
- state assumptions explicitly when evidence is missing
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.md and select one random heartbeat line from the list - Read and emit full assets/quick-help.md content verbatim (no summarization) - Emit closing prompt: What would you like to route? - Stop (do not generate ad-hoc quips, do not enter disambiguation)
- 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
- 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) -> prioritize duck-risk - Complexity signals (overengineered, complexity, simpler, too many, bloated) -> prioritize duck-simplify - Learning signals (why, how, what does, explain, teach me) -> prioritize duck-teach over duck-debug - Test signals (test, coverage, should I test, before PR) -> prioritize duck-triage - Design signals (choose, tradeoff, approach, option) -> prioritize duck-design - Reorder matched skills with precedence-matched skill first - Still present alternatives (precedence aids ranking, doesn't eliminate choice)
- 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.md for 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=<effectivesubagent> (determined in step 6, defaults to duckling) first - pass skillname=<resolved_skill> parameter - if dispatch fails, ask one corrective question and stop - emit Routing: <skill> via <subagent>. if user override supplied, else Routing: <skill>. only after dispatch succeeds - Do not stop at routing text alone when execution path is available.
- 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? - Wait for user clarification, then retry alias resolution.
Boundaries
- Preserve user decision ownership.
- If a change would weaken trust-boundary validation, security controls, data-loss prevention, accessibility requirements, or explicit user requirements, refuse it and offer only a safe alternative preserving the constraint.
- No edits/mutating commands/subagent delegation that changes workspace state without explicit bounded approval.