Skip to content

Commit fce28d3

Browse files
committed
chore(skills): clarify validate-integration block vs tool outputs
1 parent 7524e46 commit fce28d3

3 files changed

Lines changed: 12 additions & 15 deletions

File tree

.agents/skills/validate-integration/SKILL.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ For **every** tool file, check:
102102
- [ ] No fields are missing that the API provides and users would commonly need
103103
- [ ] No phantom fields defined that the API doesn't return
104104
- [ ] `optional: true` is set on fields that may not exist in all responses
105-
- [ ] When using `type: 'json'` and the shape is known, `properties` defines the inner fields
106-
- [ ] When using `type: 'array'`, `items` defines the item structure with `properties`
105+
- [ ] When using `type: 'json'` and the shape is known, `properties` defines the inner fields (tool outputs only — block outputs do not support `properties`)
106+
- [ ] When using `type: 'array'`, `items` defines the item structure with `properties` (tool outputs only)
107107
- [ ] Field descriptions are accurate and helpful
108108

109109
### Types (types.ts)
@@ -190,9 +190,8 @@ For **each tool** in `tools.access`:
190190
### Block Outputs
191191
- [ ] Outputs cover the key fields returned by ALL tools (not just one operation)
192192
- [ ] Output types are correct (`'string'`, `'number'`, `'boolean'`, `'json'`)
193-
- [ ] `type: 'json'` outputs either:
194-
- Describe inner fields in the description string (GOOD): `'User profile (id, name, username, bio)'`
195-
- Use nested output definitions (BEST): `{ id: { type: 'string' }, name: { type: 'string' } }`
193+
- [ ] `type: 'json'` outputs describe inner fields in the description string: `'User profile (id, name, username, bio)'` or `'[{address, status, type}]'` for arrays
194+
- [ ] **Do NOT add a `properties: {...}` field on block outputs.** Block-level `OutputFieldDefinition` (from `@sim/workflow-types/blocks`) only accepts `{ type, description?, condition?, hiddenFromDisplay? }`. Nested `properties` is a tool-level construct (`OutputProperty`) — adding it to a block output will fail TypeScript at build time
196195
- [ ] No opaque `type: 'json'` with vague descriptions like `'Response data'`
197196
- [ ] Outputs that only appear for certain operations use `condition` if supported, or document which operations return them
198197

.claude/commands/validate-integration.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ For **every** tool file, check:
8787
- [ ] No fields are missing that the API provides and users would commonly need
8888
- [ ] No phantom fields defined that the API doesn't return
8989
- [ ] `optional: true` is set on fields that may not exist in all responses
90-
- [ ] When using `type: 'json'` and the shape is known, `properties` defines the inner fields
91-
- [ ] When using `type: 'array'`, `items` defines the item structure with `properties`
90+
- [ ] When using `type: 'json'` and the shape is known, `properties` defines the inner fields (tool outputs only — block outputs do not support `properties`)
91+
- [ ] When using `type: 'array'`, `items` defines the item structure with `properties` (tool outputs only)
9292
- [ ] Field descriptions are accurate and helpful
9393

9494
### Types (types.ts)
@@ -175,9 +175,8 @@ For **each tool** in `tools.access`:
175175
### Block Outputs
176176
- [ ] Outputs cover the key fields returned by ALL tools (not just one operation)
177177
- [ ] Output types are correct (`'string'`, `'number'`, `'boolean'`, `'json'`)
178-
- [ ] `type: 'json'` outputs either:
179-
- Describe inner fields in the description string (GOOD): `'User profile (id, name, username, bio)'`
180-
- Use nested output definitions (BEST): `{ id: { type: 'string' }, name: { type: 'string' } }`
178+
- [ ] `type: 'json'` outputs describe inner fields in the description string: `'User profile (id, name, username, bio)'` or `'[{address, status, type}]'` for arrays
179+
- [ ] **Do NOT add a `properties: {...}` field on block outputs.** Block-level `OutputFieldDefinition` (from `@sim/workflow-types/blocks`) only accepts `{ type, description?, condition?, hiddenFromDisplay? }`. Nested `properties` is a tool-level construct (`OutputProperty`) — adding it to a block output will fail TypeScript at build time
181180
- [ ] No opaque `type: 'json'` with vague descriptions like `'Response data'`
182181
- [ ] Outputs that only appear for certain operations use `condition` if supported, or document which operations return them
183182

.cursor/commands/validate-integration.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ For **every** tool file, check:
8282
- [ ] No fields are missing that the API provides and users would commonly need
8383
- [ ] No phantom fields defined that the API doesn't return
8484
- [ ] `optional: true` is set on fields that may not exist in all responses
85-
- [ ] When using `type: 'json'` and the shape is known, `properties` defines the inner fields
86-
- [ ] When using `type: 'array'`, `items` defines the item structure with `properties`
85+
- [ ] When using `type: 'json'` and the shape is known, `properties` defines the inner fields (tool outputs only — block outputs do not support `properties`)
86+
- [ ] When using `type: 'array'`, `items` defines the item structure with `properties` (tool outputs only)
8787
- [ ] Field descriptions are accurate and helpful
8888

8989
### Types (types.ts)
@@ -170,9 +170,8 @@ For **each tool** in `tools.access`:
170170
### Block Outputs
171171
- [ ] Outputs cover the key fields returned by ALL tools (not just one operation)
172172
- [ ] Output types are correct (`'string'`, `'number'`, `'boolean'`, `'json'`)
173-
- [ ] `type: 'json'` outputs either:
174-
- Describe inner fields in the description string (GOOD): `'User profile (id, name, username, bio)'`
175-
- Use nested output definitions (BEST): `{ id: { type: 'string' }, name: { type: 'string' } }`
173+
- [ ] `type: 'json'` outputs describe inner fields in the description string: `'User profile (id, name, username, bio)'` or `'[{address, status, type}]'` for arrays
174+
- [ ] **Do NOT add a `properties: {...}` field on block outputs.** Block-level `OutputFieldDefinition` (from `@sim/workflow-types/blocks`) only accepts `{ type, description?, condition?, hiddenFromDisplay? }`. Nested `properties` is a tool-level construct (`OutputProperty`) — adding it to a block output will fail TypeScript at build time
176175
- [ ] No opaque `type: 'json'` with vague descriptions like `'Response data'`
177176
- [ ] Outputs that only appear for certain operations use `condition` if supported, or document which operations return them
178177

0 commit comments

Comments
 (0)