Files
claudetools/.claude/memory/feedback_skill_first_routing.md
Howard Enos 5bace24371 sync: auto-sync from HOWARD-HOME at 2026-06-26 11:40:19
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-26 11:40:19
2026-06-26 11:40:52 -07:00

2.4 KiB

name, description, metadata
name description metadata
feedback_skill_first_routing If an installed skill/command covers a request, INVOKE THE SKILL — never hand-roll the API from memory. Syncro billing/invoicing ALWAYS goes through /syncro (or /syncro-emergency-billing). Knowing the API is not a license to bypass the skill.
type
feedback

When a request maps to an installed skill or slash-command, invoke that skill rather than improvising raw curl/API calls. This is a hard rule, now in CORE CLAUDE.md ("Skill-first"). The canonical offender is Syncro billing: every invoice/line-item/ticket-billing request goes through the /syncro skill (or /syncro-emergency-billing for after-hours) — NOT ad-hoc API calls.

Why: I default to "act directly" and, because I "know" the Syncro REST API, I reach for a hand-rolled add_line_item curl from memory. Free-handing the payload gets the structure wrong (attribution/?api_key= owner, taxable:false, line-item shape, priority/type format, blank contact, the preview gate), producing malformed tickets — and Winter has to fix them (already flagged on #32193/#32194 and others). The skill encodes all of that correctly and enforces the preview/confirm gate. The detailed billing rules in feedback_syncro_billing describe what the SKILL does when it bills; they are NOT a license to bypass the skill and do it by hand.

How to apply:

  • Billing/invoicing/ticketing/scheduling in Syncro -> /syncro (after-hours/emergency -> /syncro-emergency-billing). No exceptions, even for a "quick" one-line charge.
  • More generally: before reaching for raw API, ask "is there a skill for this?" Credentials -> vault; RMM actions -> /rmm (find the host with rmm-search); M365 investigation/remediation -> remediation-tool; the per-vendor skills (bitdefender, datto-edr, packetdial, b2, mailprotector, screenconnect...) own their APIs.
  • Use raw API ONLY when no skill fits, or the skill genuinely cannot do the thing — and SAY SO explicitly when you do, so the user can sanity-check.
  • When the user corrects a bypass, log it: bash .claude/scripts/log-skill-error.sh "<skill>" "hand-rolled API instead of using the skill" --correction.

Related: feedback_psa_default_syncro (Syncro is the default PSA), feedback_syncro_preview_mandatory (preview gate the skill enforces), feedback_syncro_priority_type_format (a malformed-ticket case Winter flagged), feedback_syncro_billing, feedback_syncro_workflow.