Skip to content

Commit 8f4222b

Browse files
committed
docs(skills): objectstack-ai says guardrails is enforced per turn and output validation lives on action.ai.outputSchema
The ToolSchema paragraph no longer says a tool's outputSchema keys are folded into the model-facing description; it says nothing reads the key on a tool record and steers the author to ai.outputSchema on the action, which the AI runtime enforces by withholding a non-conforming result. Common Pitfalls 1 no longer lists guardrails as declared-only: it is enforced per user turn (token and time limits, blocked tool names and categories refused) but is a limit, not an approval. memory stays described as declared-only. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FNKm1SmPpuJASnbjxWGtsJ
1 parent 4e6dc23 commit 8f4222b

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

‎skills/objectstack-ai/SKILL.md‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,9 @@ no framework executor loads a metadata-authored tool.
277277
`ToolSchema` is **strict** — an unknown key (a typo, or a retired one) is a parse
278278
error, not a silent strip. Required `name` / `label` / `description` and a JSON
279279
Schema `parameters` object; optional `objectName` and `outputSchema` (⚠️
280-
experimental — its top-level keys are folded into the tool description shown to
281-
the model, and outputs are **not** validated). Retired in protocol 17:
280+
experimental — nothing reads it on a tool record; declare the schema as
281+
`ai.outputSchema` on the **action** instead, which the AI runtime ☁️ enforces
282+
by withholding a result that does not conform). Retired in protocol 17:
282283
`category`, `permissions`, `active`, `builtIn` — all authorable and inert —
283284
joining `requiresConfirmation`; each rejection carries its replacement.
284285

@@ -306,9 +307,10 @@ there is **no top-level `temperature` / `maxTokens`** on an agent
306307

307308
## Common Pitfalls
308309

309-
1. **Mistaking `guardrails` for a gate.** `guardrails` / `memory` /
310-
`structuredOutput` are declared only — no runtime reads them, and real limits
311-
come from the quota service. For a gate that is **enforced**, use
310+
1. **Mistaking `guardrails` for a gate.** `guardrails` is enforced per user turn
311+
by the AI runtime ☁️ — token and time limits, blocked tool names and categories
312+
refused — but it is a limit, not an approval; `memory` is declared only — no
313+
runtime reads it. For a gate that is **enforced**, use
312314
`enableActionApproval: true` (approval queue ☁️), `ai.requiresConfirmation` on
313315
the **action**, or `approval: 'always'` on an MCP tool binding. AI metadata
314316
edits are already gated: they land as drafts a human must publish (ADR-0033).

0 commit comments

Comments
 (0)