From ae60198b6508eb84ae9fc3e26bbf89c0b1f2a767 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 23 Aug 2026 07:56:36 +0000 Subject: [PATCH] docs: add s.record and s.int(desc) to schema conversion table Add missing s.record(X) row for JSON Schema additionalProperties: X patterns -- common in real Claude dynamic workflows that output count maps, label->value maps, and similar open-ended string-keyed objects. Also add s.int("d") to match the s.string("d") and s.number("d") pattern already in the table; omitting it was inconsistent. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- skills/rig/references/claude-workflow-conversion.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/skills/rig/references/claude-workflow-conversion.md b/skills/rig/references/claude-workflow-conversion.md index 433a3df..e0ae301 100644 --- a/skills/rig/references/claude-workflow-conversion.md +++ b/skills/rig/references/claude-workflow-conversion.md @@ -75,16 +75,19 @@ Dynamic workflows pass OpenAI-strict JSON Schema literals. rig schemas are | `{ type: "number" }` | `s.number` | | `{ type: "number", description: "d" }` | `s.number("d")` | | `{ type: "integer" }` | `s.int` | +| `{ type: "integer", description: "d" }` | `s.int("d")` | | `{ type: "boolean" }` | `s.boolean` | | `{ type: "string", enum: [...] }` | `s.enum("a", "b")` | | `{ type: "string", const: "done" }` | `s.literal("done")` | | `{ type: "array", items: X }` | `s.array(X)` | | `{ type: "object", properties, required, additionalProperties: false }` | `s.object({ ... })` | +| `{ type: "object", additionalProperties: X }` | `s.record(X)` — string-keyed maps, e.g. `s.record(s.int)` for count maps | | `{ anyOf: [X, { type: "null" }] }` | `s.nullable(X)` | | omitted from `required` | `s.optional(X)` | `additionalProperties: false` and a full `required` list are implicit in -`s.object`, so drop them. Use `s.path` for file paths and `s.url` for URIs. +`s.object`, so drop them. Use `s.record(X)` for open-ended string-keyed maps +(e.g. extension→count, label→value). Use `s.path` for file paths and `s.url` for URIs. ## Worked conversion