mcpField
Q
quack

quack

github.com/sprngrAgent workflows857 installsUpdated 2w ago
Repository

About quack

quack is a skill for explicit routing of workflow-like requests, intended for users invoking its named routes. It resolves aliases, applies keyword precedence, and either runs a route inline or delegates it under stated approval constraints.

Key features

  1. 01Explicit invocation only
  2. 02Alias-based route resolution
  3. 03Keyword precedence for matching routes
  4. 04Inline or delegated execution policies
  5. 05Clarification for ambiguous or unknown routes
  6. 06Approval and safety boundaries

Use cases

  1. 01Routing a request to a named workflow
  2. 02Resolving multiple matching route aliases
  3. 03Clarifying an unrecognized request
  4. 04Enforcing approval before workspace changes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/sprngr/rubber-duck --skill quack

After installing, type/quackin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/
heartbeat.md
quick-help.md
route-aliases.json
subagent-runbook.md
references/
Examples.md
GUARDRAILS.md

Details

From the project README

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

  1. Verify explicit quack invocation.
  2. Normalize intent: strip separator after quack (:, -, —), strip outer matching quotes, strip trailing punctuation (?!.;:).
  3. 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)
  4. Parse optional override: use <subagent> or with <subagent> or via <subagent>.
  5. 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.
  6. Determine effective subagent: if override parsed in step 4, use that; otherwise default to duckling.
  7. 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
  8. If explicit full skill name in input, resolve that skill and execute route (see step 11).
  9. Otherwise, load assets/route-aliases.json and attempt case-insensitive match.
  10. 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)
  11. If multiple aliases match after precedence, apply tie-break: exact match > longest alias > ask one disambiguation question.
  12. 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=<effective_subagent> (determined in step 6, defaults to duckling) 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, else Routing: <skill>. only after dispatch succeeds
    • Do not stop at routing text alone when execution path is available.
  13. 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.

Comments

Markdown supported