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
Two rules that are easy to get wrong when copying from existing blocks:
126
+
Three rules that are easy to get wrong when copying from existing blocks:
127
127
128
128
- Every remote `selectorKey` must use the unified server selector path. Apply the `add-selector` skill:
129
129
add browser-safe metadata to `apps/sim/lib/selectors/manifest.ts`, reuse or extract a server-only
@@ -135,6 +135,12 @@ Two rules that are easy to get wrong when copying from existing blocks:
135
135
(e.g. `channelSelector` + `channelId` → `canonicalParamId: 'channel'`). It is the only key that
136
136
survives serialization, so `inputs` and `tools.config.params` reference the canonical id, never the
137
137
subblock ids. It is unique block-wide, and every member of a group shares the same `required` value.
138
+
- Every text-entry subBlock (`short-input`, `long-input`, `code`) and every selector declares a
139
+
`placeholder`; an empty box tells the user nothing. Secrets read `Enter your {thing}` (e.g.
140
+
`Enter your API key`), free text names what to type (`Enter branch name`), and formatted values
141
+
show the shape (`2023-01-01T00:00:00Z`, `1 to 1000`). An optional field with a server-side default
142
+
names that default (`Defaults to the database region`). Dropdowns, switches, and `oauth-input` do
143
+
not need one.
138
144
139
145
## Step 4: Add Icon
140
146
@@ -309,6 +315,28 @@ bun run docs:check
309
315
310
316
This creates `apps/docs/content/docs/integrations/{service}.mdx` — one page per service carrying the block's Actions and, if it has one, its Triggers section. Never hand-edit generated pages; the only editable region is the `{/* MANUAL-CONTENT */}` block (see `scripts/README.md`).
311
317
318
+
Every generated integration page carries a hand-written intro directly under `<BlockInfoCard />`. The
319
+
generator preserves it across regenerations, so write it once after the first generate:
320
+
321
+
```mdx
322
+
{/* MANUAL-CONTENT-START:intro */}
323
+
[{Service}](https://service.com/) is {onesentenceonwhattheserviceis}.
Copy file name to clipboardExpand all lines: .agents/skills/validate-integration/SKILL.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -218,6 +218,9 @@ For **each tool** in `tools.access`:
218
218
- True/false → `switch` (a Yes/No `dropdown` only when the tool needs a third "unset" state)
219
219
- Credentials → `oauth-input` with correct `serviceId`
220
220
-[ ] Dropdown `value: () => 'default'` is set for dropdowns with a sensible default
221
+
-[ ] Every `short-input`, `long-input`, `code`, and selector subBlock has a `placeholder` — including
222
+
password fields (`Enter your API key`). Formatted values show the shape
223
+
(`2023-01-01T00:00:00Z`); optional fields with a server default name it. See add-integration → Step 3
221
224
222
225
### Advanced Mode
223
226
-[ ] Optional, rarely-used fields are set to `mode: 'advanced'`:
@@ -450,6 +453,10 @@ upstream PR that skipped regeneration), and investigate anything that looks like
450
453
page losing a section usually means its source block moved or a generator input broke, not that the
451
454
hunk should be reverted.
452
455
456
+
The integration's page must carry a `{/* MANUAL-CONTENT-START:intro */}` section directly under
457
+
`<BlockInfoCard />`. If it is missing, write one using the template in add-integration → Step 8, and
458
+
check an existing intro against what the block actually ships (no removed or unshipped operations).
459
+
453
460
If an icon changed, `apps/sim/components/icons.tsx` is the source of truth and `apps/docs/components/icons.tsx` is its generated mirror — they must end up byte-identical for that component.
454
461
455
462
### Validation Output
@@ -473,6 +480,7 @@ After fixing, confirm:
473
480
-[ ] Validated every tool's ID, params, request, response, outputs, and types against API docs
474
481
-[ ] Validated block ↔ tool alignment (every tool param has a subBlock, every condition is correct)
475
482
-[ ] Validated advanced mode on optional/rarely-used fields
483
+
-[ ] Validated every text-entry and selector subBlock has a `placeholder`
476
484
-[ ] Validated wandConfig on timestamps and complex inputs
477
485
-[ ] Validated tools.config mapping, tool selector, and type coercions
478
486
-[ ] Validated block outputs match what tools return, with typed JSON where possible
@@ -496,6 +504,7 @@ After fixing, confirm:
496
504
-[ ] Fixed all critical and warning issues
497
505
-[ ] Ran `bun run tool-metadata:generate` if any tool outputs/params changed, and confirmed `bun run tool-metadata:check` passes
498
506
-[ ] Ran `bun run scripts/generate-docs.ts` if any block metadata changed, and committed the full generated diff — including stale-page catch-up for other integrations (`bun run docs:check` fails CI on reverted generator output)
507
+
-[ ] Validated the docs page has an accurate `MANUAL-CONTENT-START:intro` section
Copy file name to clipboardExpand all lines: apps/docs/content/docs/integrations/bitbucket.mdx
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,23 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
10
10
color="#FFFFFF"
11
11
/>
12
12
13
+
{/* MANUAL-CONTENT-START:intro */}
14
+
[Bitbucket](https://bitbucket.org/) is Atlassian's Git hosting service for code, pull requests, and CI/CD with Bitbucket Pipelines.
15
+
16
+
With the Bitbucket block, you can:
17
+
18
+
-**Browse workspaces and repositories**: List workspaces and repositories, and read repository details
19
+
-**Read source code**: List branches, commits, and directory contents, and read files and file metadata
20
+
-**Manage branches**: Create and delete branches
21
+
-**Work on pull requests**: List, read, create, approve, merge, and decline pull requests, read their diffs, and list or add comments
22
+
-**Run pipelines**: List pipelines and their steps, trigger or stop a pipeline, and read step logs
23
+
24
+
Connect your Bitbucket account with OAuth. The Bitbucket triggers can also start a workflow on pushes, repository changes, build status updates, and pull request events, with the webhook managed for you.
25
+
26
+
In Sim, the Bitbucket block lets your agents take part in your development process: review a pull request when it opens, summarize a failed pipeline from its step logs, or cut a release branch and open the pull request for it.
27
+
{/* MANUAL-CONTENT-END */}
28
+
29
+
13
30
## Usage Instructions
14
31
15
32
Connect Bitbucket Cloud to inspect repositories and source, collaborate on pull requests, diagnose or control pipelines, and start workflows from repository and pull request events. OAuth is used for actions and automatic webhook management.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/integrations/modal.mdx
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,21 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
10
10
color="#000000"
11
11
/>
12
12
13
+
{/* MANUAL-CONTENT-START:intro */}
14
+
[Modal](https://modal.com/) is a serverless platform for running Python code, AI models, and batch jobs on cloud CPUs and GPUs.
15
+
16
+
With the Modal block, you can:
17
+
18
+
-**Call your functions**: Send an HTTPS request to a deployed Modal Web Function or Server and get back its response
19
+
-**Generate completions**: Get chat completions from a model you serve on a Modal Endpoint
20
+
-**List models**: See which models a token can reach
21
+
22
+
To connect, create a proxy auth token in your Modal workspace settings and enter its token ID and secret in the block.
23
+
24
+
In Sim, the Modal block lets your agents use compute you already run on Modal: call a custom inference function, run a GPU job on data from an earlier block, or use your own hosted model inside a workflow.
25
+
{/* MANUAL-CONTENT-END */}
26
+
27
+
13
28
## Usage Instructions
14
29
15
30
Integrate Modal into your workflow to reach the serverless compute you already run there. Invoke a deployed Web Function or Server over HTTPS with proxy-token auth, generate completions from a model served by a Modal Endpoint, and list the models a token can reach.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/integrations/otter.mdx
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,21 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
10
10
color="#FFFFFF"
11
11
/>
12
12
13
+
{/* MANUAL-CONTENT-START:intro */}
14
+
[Otter.ai](https://otter.ai/) is an AI meeting assistant that records, transcribes, and summarizes conversations.
15
+
16
+
With the Otter block, you can:
17
+
18
+
-**Read conversations**: List conversations and read each one's summary, action items, insights, outline, and transcript
19
+
-**Get recordings**: Get audio download links and import recordings for transcription
20
+
-**Browse your workspace**: List channels and their members, read workspace details, and list conversations across the workspace
21
+
22
+
To connect, enter an API key from an Otter Enterprise workspace. The Otter triggers can also start a workflow when a conversation finishes processing or is shared.
23
+
24
+
In Sim, the Otter block lets your agents act on your meetings: send action items to your task tracker, post summaries to Slack, or save transcripts to a knowledge base.
25
+
{/* MANUAL-CONTENT-END */}
26
+
27
+
13
28
## Usage Instructions
14
29
15
30
Integrate Otter.ai into your workflow to list and read meeting conversations with their summaries, action items, insights, outlines, and transcripts, get audio download links, import recordings, and browse channels and workspace details. Otter can also trigger workflows when a conversation finishes processing or is shared. Requires an Otter Enterprise workspace.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/integrations/planetscale.mdx
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,22 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
10
10
color="#111111"
11
11
/>
12
12
13
+
{/* MANUAL-CONTENT-START:intro */}
14
+
[PlanetScale](https://planetscale.com/) is a managed database platform for MySQL (built on Vitess) and PostgreSQL. It uses Git-style branches for schema changes and deploy requests to review and ship those changes safely.
15
+
16
+
With the PlanetScale block, you can:
17
+
18
+
-**Inspect databases and branches**: List the databases in an organization, read database details, and list or read branches
19
+
-**Manage branches**: Create development branches from a parent, restore a backup into a new branch, or delete branches you no longer need
20
+
-**Work with backups**: Create on-demand backups, list backups for a branch, and check a backup's state, size, and expiration
21
+
-**Ship schema changes (Vitess)**: Create deploy requests, review or approve them, queue them for deployment, and close them
22
+
23
+
To connect, create a service token in your PlanetScale organization settings and grant it access to the databases and actions your workflow needs. Enter the service token ID, the service token, and your organization slug in the block.
24
+
25
+
In Sim, the PlanetScale block lets your agents manage database operations as part of a workflow: spin up a branch when a pull request opens, take a backup before a release, report on backup health every day, or open and track a deploy request for a schema change. To run SQL queries against a database, use the MySQL or PostgreSQL block.
26
+
{/* MANUAL-CONTENT-END */}
27
+
28
+
13
29
## Usage Instructions
14
30
15
31
Manage PlanetScale databases and branches, create and inspect backups, and create, review, queue, and close Vitess deploy requests. Authenticate with an organization service token. Deploy-request actions require a Vitess database; SQL queries are available through the MySQL and PostgreSQL integrations.
0 commit comments