You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/add-block/SKILL.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,6 +14,20 @@ When the user asks you to create a block:
14
14
2. Configure all subBlocks with proper types, conditions, and dependencies
15
15
3. Wire up tools correctly
16
16
17
+
## Hard Rule: No Guessed Tool Outputs
18
+
19
+
Blocks depend on tool outputs. If the underlying tool response schema is not documented or live-verified, you MUST tell the user instead of guessing block outputs.
20
+
21
+
- Do NOT invent block outputs for undocumented tool responses
22
+
- Do NOT describe unknown JSON shapes as if they were confirmed
23
+
- Do NOT wire fields into the block just because they seem likely to exist
24
+
25
+
If the tool outputs are not known, do one of these instead:
26
+
1. Ask the user for sample tool responses
27
+
2. Ask the user for test credentials so the tool responses can be verified
28
+
3. Limit the block to operations whose outputs are documented
29
+
4. Leave uncertain outputs out and explicitly tell the user what remains unknown
30
+
17
31
## Block Configuration Structure
18
32
19
33
```typescript
@@ -575,6 +589,8 @@ Use `type: 'json'` with a descriptive string when:
575
589
- It represents a list/array of items
576
590
- The shape varies by operation
577
591
592
+
If the output shape is unknown because the underlying tool response is undocumented, you MUST tell the user and stop. Unknown is not the same as variable. Never guess block outputs.
593
+
578
594
## V2 Block Pattern
579
595
580
596
When creating V2 blocks (alongside legacy V1):
@@ -829,3 +845,4 @@ After creating the block, you MUST validate it against every tool it references:
829
845
- Type coercions in `tools.config.params` for any params that need conversion (Number(), Boolean(), JSON.parse())
830
846
3.**Verify block outputs** cover the key fields returned by all tools
831
847
4.**Verify conditions** — each subBlock should only show for the operations that actually use it
848
+
5.**If any tool outputs are still unknown**, explicitly tell the user instead of guessing block outputs
Copy file name to clipboardExpand all lines: .agents/skills/add-connector/SKILL.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,21 @@ When the user asks you to create a connector:
15
15
3. Create the connector directory and config
16
16
4. Register it in the connector registry
17
17
18
+
## Hard Rule: No Guessed Response Or Document Schemas
19
+
20
+
If the service docs do not clearly show the document list response, document fetch response, pagination shape, or metadata fields, you MUST tell the user instead of guessing.
21
+
22
+
- Do NOT invent document fields
23
+
- Do NOT guess pagination cursors or next-page fields
24
+
- Do NOT infer metadata/tag mappings from unrelated endpoints
25
+
- Do NOT fabricate `ExternalDocument` content structure from partial docs
26
+
27
+
If the source schema is unknown, do one of these instead:
28
+
1. Ask the user for sample API responses
29
+
2. Ask the user for test credentials so you can verify live payloads
30
+
3. Implement only the documented parts of the connector
31
+
4. Leave the connector incomplete and explicitly say which fields remain unknown
Only map fields in `listDocuments`, `getDocument`, `validateConfig`, and `mapTags` when the source payload shape is documented or live-verified. If not, tell the user and stop rather than guessing.
- Set `optional: true` for outputs that may not exist
104
119
- Never output raw JSON dumps - extract meaningful fields
105
120
- When using `type: 'json'` and you know the object shape, define `properties` with the inner fields so downstream consumers know the structure. Only use bare `type: 'json'` when the shape is truly dynamic
121
+
- If you do not know the response JSON shape from docs or verified examples, you MUST tell the user and stop. Never guess outputs or response mappings.
106
122
107
123
## Step 3: Create Block
108
124
@@ -450,6 +466,8 @@ If creating V2 versions (API-aligned outputs):
450
466
-[ ] Verified block subBlocks cover all required tool params with correct conditions
451
467
-[ ] Verified block outputs match what the tools actually return
452
468
-[ ] Verified `tools.config.params` correctly maps and coerces all param types
469
+
-[ ] Verified every tool output and `transformResponse` path against documented or live-verified JSON responses
470
+
-[ ] If any response schema remained unknown, explicitly told the user instead of guessing
Copy file name to clipboardExpand all lines: .agents/skills/add-tools/SKILL.md
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,6 +14,21 @@ When the user asks you to create tools for a service:
14
14
2. Create the tools directory structure
15
15
3. Generate properly typed tool configurations
16
16
17
+
## Hard Rule: No Guessed Response Schemas
18
+
19
+
If the docs do not clearly show the response JSON for a tool, you MUST tell the user exactly which outputs are unknown and stop short of guessing.
20
+
21
+
- Do NOT invent response field names
22
+
- Do NOT infer nested paths from nearby endpoints
23
+
- Do NOT guess array item shapes
24
+
- Do NOT write `transformResponse` against unverified payloads
25
+
26
+
If the response shape is unknown, do one of these instead:
27
+
1. Ask the user for sample responses
28
+
2. Ask the user for test credentials so you can verify live responses
29
+
3. Implement only the endpoints whose outputs are documented
30
+
4. Leave the tool unimplemented and explicitly say why
31
+
17
32
## Directory Structure
18
33
19
34
Create files in `apps/sim/tools/{service}/`:
@@ -187,6 +202,8 @@ items: {
187
202
188
203
Only use bare `type: 'json'` without `properties` when the shape is truly dynamic or unknown.
189
204
205
+
If the response shape is unknown because the docs do not provide it, you MUST tell the user and stop. Unknown is not the same as dynamic. Never guess outputs.
206
+
190
207
## Critical Rules for transformResponse
191
208
192
209
### Handle Nullable Fields
@@ -441,7 +458,9 @@ After creating all tools, you MUST validate every tool before finishing:
441
458
- All output fields match what the API actually returns
442
459
- No fields are missing from outputs that the API provides
443
460
- No extra fields are defined in outputs that the API doesn't return
461
+
- Every output field and JSON path is backed by docs or live-verified sample responses
444
462
3.**Verify consistency** across tools:
445
463
- Shared types in `types.ts` match all tools that use them
446
464
- Tool IDs in the barrel export match the tool file definitions
447
465
- Error handling is consistent (error checks, meaningful messages)
466
+
4.**If any response schema is still unknown**, explicitly tell the user instead of guessing
Copy file name to clipboardExpand all lines: .agents/skills/add-trigger/SKILL.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,6 +14,21 @@ You are an expert at creating webhook triggers for Sim. You understand the trigg
14
14
3. Create a provider handler if custom auth, formatting, or subscriptions are needed
15
15
4. Register triggers and connect them to the block
16
16
17
+
## Hard Rule: No Guessed Webhook Payload Schemas
18
+
19
+
If the service docs do not clearly show the webhook payload JSON for an event, you MUST tell the user instead of guessing trigger outputs or `formatInput` mappings.
20
+
21
+
- Do NOT invent payload field names
22
+
- Do NOT guess nested event object paths
23
+
- Do NOT infer output fields from the UI or marketing docs
24
+
- Do NOT write `formatInput` against unverified webhook bodies
25
+
26
+
If the payload shape is unknown, do one of these instead:
27
+
1. Ask the user for sample webhook payloads
28
+
2. Ask the user for a test webhook source so you can inspect a real event
29
+
3. Implement only the event registration/setup portions whose payloads are documented
30
+
4. Leave the trigger unimplemented and explicitly say which payload fields are unknown
Copy file name to clipboardExpand all lines: .agents/skills/validate-connector/SKILL.md
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,6 +52,20 @@ Fetch the official API docs for the service. This is the **source of truth** for
52
52
53
53
Use Context7 (resolve-library-id → query-docs) or WebFetch to retrieve documentation. If both fail, note which claims are based on training knowledge vs verified docs.
54
54
55
+
### Hard Rule: No Guessed Source Schemas
56
+
57
+
If the service docs do not clearly show document list responses, document fetch responses, metadata fields, or pagination shapes, you MUST tell the user instead of guessing.
58
+
59
+
- Do NOT infer document fields from unrelated endpoints
60
+
- Do NOT guess pagination cursors or response wrappers
61
+
- Do NOT assume metadata keys that are not documented
62
+
- Do NOT treat probable shapes as validated
63
+
64
+
If a schema is unknown, validation must explicitly recommend:
65
+
1. sample API responses,
66
+
2. live test credentials, or
67
+
3. trimming the connector to only documented fields.
68
+
55
69
## Step 3: Validate API Endpoints
56
70
57
71
For **every** API call in the connector (`listDocuments`, `getDocument`, `validateConfig`, and any helper functions), verify against the API docs:
@@ -93,6 +107,7 @@ For **every** API call in the connector (`listDocuments`, `getDocument`, `valida
93
107
-[ ] Field names extracted match what the API actually returns
94
108
-[ ] Nullable fields are handled with `?? null` or `|| undefined`
95
109
-[ ] Error responses are checked before accessing data fields
110
+
-[ ] Every extracted field and pagination value is backed by official docs or live-verified sample payloads
0 commit comments