Use when an agent builds tool-call arguments from a user request — encodes the org's call policy beyond the bare schema (money in cents, required idempotency keys, priority/status enums, E.164 phone formatting, caps, and abstain-don't-fabricate on a missing required arg). Template: replace with your tool contracts.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| cents-75 | ·→· | ⚠ Error | 420% | 0% |
| abstain-vague-when | ·→· | ⚠ Error | 416% | 0% |
| control-phone-ok | ·→· | ⚠ Error | 399% | 0% |
| status-done | ·→· | ⚠ Error | 405% | 0% |
| abstain-ticket | ·→· | ⚠ Error | 405% | 0% |
“This skill is a benign template policy that instructs the agent on how to format tool-call arguments (such as converting currency to cents, formatting phone numbers, and mapping priorities). It contains no malicious instructions, external network requests, or credential harvesting.”
> Template skill. The rules below are a worked example (a fictional "Acme"). Fork this skill and replace them with your organization's real rules — the agent then applies your policy instead of guessing. The measured lift demonstrates the shape works.
Apply these rules when producing tool-call arguments; they override naive defaults.
amount is an integer in cents. "$50" -> 5000; "€30" -> 3000.create_charge REQUIRES idempotency_key: if the user gives none, generate a fresh unique string (e.g. a UUID). Never omit it.status enum is {open, pending, resolved, closed}: "in progress"/"working on it" -> "pending"; "done"/"fixed" -> "resolved"; "close" -> "closed".to) must be E.164: a bare US 10-digit number gets a "+1" prefix (4155550199 -> "+14155550199").schedule_call duration_min is capped at 60: if the user asks for more, set 60.idempotency_key is required but auto-generated (above), so never abstain for it. when is required and must be a concrete ISO-8601 datetime; "next week"/"sometime" is not derivable -> abstain.