Creator · simstudioai
Last updated · Sep 3, 2026
Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`.
Creator · simstudioai
Last updated · Sep 3, 2026
Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`.
Creator · simstudioai
Last updated · Sep 3, 2026
Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`.
Creator · simstudioai
Last updated · Sep 3, 2026
Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`.
Sandbox only
Install targets
Codex install prompt
Install the "add-integration" agent skill from https://github.com/simstudioai/sim/tree/main/.agents/skills/add-integration. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"simstudioai-add-integration","task":"Install add-integration","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add simstudioai/sim --skill add-integration
Maintenance
fresh
2d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
30K
91/100 Quality · 80/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
ExcellentHigh-confidence pick with strong adoption and healthy maintenance signals.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
30K GitHub stars
Repo activity
30K stars, 3.8K forks
Maintenance
2d since push
License
Apache-2.0
Install
npx skills add simstudioai/sim --skill add-integration
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add simstudioai/sim --skill add-integrationDo not use when
Agent safety v2
Sparse or mixed signals. Useful for discovery, but not for autonomous installation.
Test manually in an isolated workspace and compare against safer alternatives.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/simstudioai-add-integration/install
Agent should check
Copy prompt
Task: Use add-integration in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/simstudioai-add-integration/install
Install command: npx skills add simstudioai/sim --skill add-integration
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/simstudioai-add-integration/install
LLM text format
/api/skills/simstudioai-add-integration/install?format=text
Find alternatives
/api/skills/search?q=add-integration&limit=3
Agent prompt
Use add-integration for this task. Review https://www.openagentskill.com/api/skills/simstudioai-add-integration/install, then install with: npx skills add simstudioai/sim --skill add-integrationRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/simstudioai-add-integration
LLM text
/api/registry/manifest/simstudioai-add-integration?format=text
Install alias
/api/registry/install/simstudioai-add-integration
Recommend
/api/registry/recommend?task=Use%20add-integration%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
PASS30K GitHub stars
Stars/forks activity
PASS30K stars, 3.8K forks; issue activity unavailable in current metadata
Recent maintenance
PASS2d since push
License clarity
PASSApache-2.0
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
High-confidence pick with strong adoption and healthy maintenance signals.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Search private knowledge
I need my agent to build a RAG workflow over documents and retrieve reliable context.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: add-integration description: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. argument-hint: <service-name> [api-docs-url] ---
# Add Integration Skill
You are an expert at adding complete integrations to Sim. This skill orchestrates the full process of adding a new service integration.
## Overview
Adding an integration involves these steps in order: 1. **Research** - Read the service's API documentation 2. **Create Tools** - Build tool configurations for each API operation 3. **Create Block** - Build the block UI configuration 4. **Add Icon** - Add the service's brand icon 5. **Create Triggers** (optional) - If the service supports webhooks 6. **Register** - Register tools, block, and triggers in their registries 7. **Configure Deployment Availability** - Wire OAuth client and service-account metadata 8. **Generate and Validate the Catalog** - Regenerate docs/catalog artifacts and run drift checks
## Step 1: Research the API
Before writing any code: 1. Use Context7 to find official documentation: `mcp__context7__resolve-library-id`, then fetch with `mcp__context7__query-docs` 2. Or use WebFetch to read API docs directly 3. Identify: - Authentication method (OAuth, API Key, both) - Available operations (CRUD, search, etc.) - Required vs optional parameters - Response structures
### Hard Rule: No Guessed Response Schemas
If the official docs do not clearly show the response JSON shape for an endpoint, you MUST stop and tell the user exactly which outputs are unknown.
- Do NOT guess response field names - Do NOT infer nested JSON paths from related endpoints - Do NOT invent output properties just because they seem likely - Do NOT implement `transformResponse` against unverified payload shapes
If response schemas are missing or incomplete, do one of the following before proceeding: 1. Ask the user for sample responses 2. Ask the user for test credentials so you can verify the live payload 3. Reduce the scope to only endpoints whose response shapes are documented 4. Leave the tool unimplemented and explicitly report why
## Step 2: Create Tools
### Directory Structure ``` apps/sim/tools/{service}/ ├── index.ts # Barrel exports ├── types.ts # TypeScript interfaces ├── {action1}.ts # Tool for action 1 ├── {action2}.ts # Tool for action 2 └── ... ```
### Key Patterns
Choose the tool boundary before writing the declaration:
- Use `InternalToolConfig.operation` for same-process Sim/provider work. Put the handler under `apps/sim/lib/internal/{service}/execute-tool.ts` and register every ID in `apps/sim/lib/internal/tool-operations/registry.server.ts`. - Use `ToolConfig.request` only for an absolute external HTTP(S) provider endpoint.
Never point a tool at `/api/...`, construct an absolute URL back to Sim, declare `request.internal`, add a `directExecution` property (it fails `bun run check:tool-request-boundary`), or add an API route merely to reuse code, normalize files, or authorize resources. A real external/browser route and an in-process tool may share the same operation, but neither calls the other. Follow the full transport and handler rules in the `add-tools` skill.
**types.ts:** ```typescript import type { ToolResponse } from '@/tools/types'
export interface {Service}{Action}Params { accessToken: string // For OAuth services // OR apiKey: string // For API key services
requiredParam: string optionalParam?: string }
export interface {Service}Response extends ToolResponse { output: { // Define output structure } } ```
**Tool file pattern:** an external provider API uses `ToolConfig` with `request` (absolute `https://` URL, headers, body, `transformResponse`); same-process Sim work uses `InternalToolConfig` with `operation`. Both full templates, param visibility rules, and output typing live in `.agents/skills/add-tools/SKILL.md` — read it before writing the first tool.
### Critical Rules - `visibility: 'hidden'` for OAuth tokens - `visibility: 'user-only'` for API keys and user credentials - `visibility: 'user-or-llm'` for operation parameters - Always use `?? null` for nullable API response fields - Always use `?? []` for optional array fields - Set `optional: true` for outputs that may not exist - Never output raw JSON dumps - extract meaningful fields - 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
### Resolved Secrets at Model and Persistence Boundaries
Classify every request field (ordinary provider input / AI-consumed text / opaque model bytes / Sim-durable storage) before implementing the tool and apply the shared projection or provenance mechanism only where a concrete Sim `{{...}}` resolution path reaches a later model or log boundary. Full rules and the required tests are in `.agents/skills/add-tools/SKILL.md` → "Resolved Secrets and Provenance Boundaries".
## Step 3: Create Block
### File Location `apps/sim/blocks/blocks/{service}.ts`
Follow `.agents/skills/add-block/SKILL.md` for the block structure, subBlock types, `condition`/`dependsOn`/`required`/`mode` syntax, outputs, `canvasPresentation` sentences, and the `{Service}BlockMeta` export (minimum 7 templates, plus `url` and `skills`). Every block declares `canvasPresentation`; `bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}` must pass (CI runs `check:canvas-sentences --require-coverage`).
Two rules that are easy to get wrong when copying from existing blocks:
- Every remote `selectorKey` must use the unified server selector path. Apply the `add-selector` skill: add browser-safe metadata to `apps/sim/lib/selectors/manifest.ts`, reuse or extract a server-only provider listing primitive, and add a credential- and destination-bound server attachment. Do not add code under `hooks/selectors/providers`, a provider-specific query key, browser token acquisition, or a selector-only API route. The shared context builder sends only active `dependsOn` values and preserves exact `{{KEY}}` environment references for server-side resolution. - A `canonicalParamId` is a third name that neither member of a basic/advanced pair uses as its `id` (e.g. `channelSelector` + `channelId` → `canonicalParamId: 'channel'`). It is the only key that survives serialization, so `inputs` and `tools.config.params` reference the canonical id, never the subblock ids. It is unique block-wide, and every member of a group shares the same `required` value.
## Step 4: Add Icon
### File Location `apps/sim/components/icons.tsx`
### Pattern ```typescript export function {Service}Icon(props: SVGProps<SVGSVGElement>) { return ( <svg {...props} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" > {/* SVG paths from user-provided SVG */} </svg> ) } ```
### Getting Icons **Do not search for icons yourself.** At the end of implementation, ask the user to paste the service's SVG (usually on its brand/press kit page).
Once the user provides the SVG: 1. Extract the SVG paths/content 2. Create a React component that spreads props 3. Ensure viewBox is preserved from the original SVG
### Theme-safety (bare rendering) — REQUIRED
The icon renders both inside its colored `bgColor` tile AND "bare" (no tile) on a neutral page — e.g. the home **Suggested actions** list — in both light and dark mode. A monochrome logo whose paths hardcode a single near-white or near-black fill is invisible bare on the matching background (white-on-white in light mode, black-on-black in dark mode).
Rules when adding the SVG:
- **Monochrome logos** (a single white or black mark): draw the shape with `fill='currentColor'`, not `fill='#fff'` / `fill='#000000'`. It then inherits white inside dark tiles, near-black inside light tiles (via `getTileIconColorClass`), and the theme-aware `var(--text-icon)` bare — legible everywhere. Do NOT set `iconColor` for these. - **Multi-color brand logos** (their own vivid fills): keep the hardcoded fills. They read on any background. Only set `iconColor` (a vivid brand hex, never a near-black/near-white tile color) if the bare icon should adopt a brand tint. - A large white shape with a tiny vivid accent (e.g. a logo where the body is the white negative space) still vanishes bare — convert the body to `currentColor`.
Verify with `bun run check:bare-icons` (also runs in CI). It flags purely monochrome hazards; for partial-accent logos, eyeball the suggested-actions list in both light and dark mode.
## Step 5: Create Triggers (Optional)
If the service supports webhooks or needs polling, follow `.agents/skills/add-trigger/SKILL.md` (directory layout, `buildTriggerSubBlocks`, provider handler, polling handler); then wire `triggers.enabled` / `triggers.available` into the block and spread each trigger's `getTrigger(id).subBlocks` after the tool subBlocks.
## Step 6: Register Everything
### Tools Registry (`apps/sim/tools/registry.ts`)
```typescript // Add import (alphabetically) import { {service}Action1Tool, {service}Action2Tool, } from '@/tools/{service}'
// Add to tools object (alphabetically) export const tools: Record<string, ToolConfig> = { // ... existing tools ... {service}_action1: {service}Action1Tool, {service}_action2: {service}Action2Tool, } ```
Then regenerate the generated tool metadata and commit it:
```bash bun run tool-metadata:generate ```
Client code reads `params`/`outputs` from these artifacts rather than importing the registry, so a tool you add, change or remove is invisible to the UI until they are regenerated, and CI fails on stale ones. See `.agents/skills/tool-registry-boundary/SKILL.md`.
### Block Registry (`apps/sim/blocks/registry-maps.ts`)
The data maps (`BLOCK_REGISTRY` + `BLOCK_META_REGISTRY`) live in `registry-maps.ts`; `registry.ts` holds only the accessor functions. Add the import and an entry to each map alphabetically:
```typescript // Add import (alphabetically) import { {Service}Block, {Service}BlockMeta } from '@/blocks/blocks/{service}'
// Add to the config map (alphabetically) export const BLOCK_REGISTRY: Record<string, BlockConfig> = { // ... existing blocks ... {service}: {Service}Block, }
// Add to the catalog-meta map (alphabetically) export const BLOCK_META_REGISTRY: Record<string, BlockMeta> = { // ... existing metas ... {service}: {Service}BlockMeta, } ```
### Trigger Registry (`apps/sim/triggers/registry.ts`) - If triggers exist
```typescript // Add import (alphabetically) import { {service}EventATrigger, {service}EventBTrigger, {service}WebhookTrigger, } from '@/triggers/{service}'
// Add to TRIGGER_REGISTRY (alphabetically) export const TRIGGER_REGISTRY: TriggerRegistry = { // ... existing triggers ... {service}_event_a: {service}EventATrigger, {service}_event_b: {service}EventBTrigger, {service}_webhook: {service}WebhookTrigger, } ```
## Step 7: Configure Deployment Availability
Do this for every visible OAuth integration. API-key and unauthenticated integrations do not need an OAuth client capability.
The block's `oauth-input.serviceId` is the canonical link between the generated integration catalog, the OAuth service configuration, deployment availability, and the setup CLI.
1. Ensure the block has exactly one distinct OAuth `serviceId` and that it matches the canonical service entry in `apps/sim/lib/oauth/oauth.ts`. 2. Confirm `resolveOAuthClientCapabilityId(serviceId)` resolves to the intended provider entry in `OAUTH_CLIENT_CAPABILITIES` in `packages/deployment-config/src/env-capabilities.ts`. Google and Microsoft service IDs delibe
Source provenance
Decision snapshot
29,529 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for add-integration, ready for a manual X post.
add-integration: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers,... 29.5K stars https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x
Listing + install path for add-integration: https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x Install: npx skills add simstudioai/sim --skill add-integration
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to simstudioai but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration/audit)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)simstudioai
@simstudioai
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsSandbox only
Install targets
Codex install prompt
Install the "add-integration" agent skill from https://github.com/simstudioai/sim/tree/main/.agents/skills/add-integration. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"simstudioai-add-integration","task":"Install add-integration","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add simstudioai/sim --skill add-integration
Maintenance
fresh
2d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
30K
91/100 Quality · 80/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
ExcellentHigh-confidence pick with strong adoption and healthy maintenance signals.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
30K GitHub stars
Repo activity
30K stars, 3.8K forks
Maintenance
2d since push
License
Apache-2.0
Install
npx skills add simstudioai/sim --skill add-integration
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add simstudioai/sim --skill add-integrationDo not use when
Agent safety v2
Sparse or mixed signals. Useful for discovery, but not for autonomous installation.
Test manually in an isolated workspace and compare against safer alternatives.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/simstudioai-add-integration/install
Agent should check
Copy prompt
Task: Use add-integration in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/simstudioai-add-integration/install
Install command: npx skills add simstudioai/sim --skill add-integration
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/simstudioai-add-integration/install
LLM text format
/api/skills/simstudioai-add-integration/install?format=text
Find alternatives
/api/skills/search?q=add-integration&limit=3
Agent prompt
Use add-integration for this task. Review https://www.openagentskill.com/api/skills/simstudioai-add-integration/install, then install with: npx skills add simstudioai/sim --skill add-integrationRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/simstudioai-add-integration
LLM text
/api/registry/manifest/simstudioai-add-integration?format=text
Install alias
/api/registry/install/simstudioai-add-integration
Recommend
/api/registry/recommend?task=Use%20add-integration%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
PASS30K GitHub stars
Stars/forks activity
PASS30K stars, 3.8K forks; issue activity unavailable in current metadata
Recent maintenance
PASS2d since push
License clarity
PASSApache-2.0
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
High-confidence pick with strong adoption and healthy maintenance signals.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Search private knowledge
I need my agent to build a RAG workflow over documents and retrieve reliable context.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: add-integration description: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. argument-hint: <service-name> [api-docs-url] ---
# Add Integration Skill
You are an expert at adding complete integrations to Sim. This skill orchestrates the full process of adding a new service integration.
## Overview
Adding an integration involves these steps in order: 1. **Research** - Read the service's API documentation 2. **Create Tools** - Build tool configurations for each API operation 3. **Create Block** - Build the block UI configuration 4. **Add Icon** - Add the service's brand icon 5. **Create Triggers** (optional) - If the service supports webhooks 6. **Register** - Register tools, block, and triggers in their registries 7. **Configure Deployment Availability** - Wire OAuth client and service-account metadata 8. **Generate and Validate the Catalog** - Regenerate docs/catalog artifacts and run drift checks
## Step 1: Research the API
Before writing any code: 1. Use Context7 to find official documentation: `mcp__context7__resolve-library-id`, then fetch with `mcp__context7__query-docs` 2. Or use WebFetch to read API docs directly 3. Identify: - Authentication method (OAuth, API Key, both) - Available operations (CRUD, search, etc.) - Required vs optional parameters - Response structures
### Hard Rule: No Guessed Response Schemas
If the official docs do not clearly show the response JSON shape for an endpoint, you MUST stop and tell the user exactly which outputs are unknown.
- Do NOT guess response field names - Do NOT infer nested JSON paths from related endpoints - Do NOT invent output properties just because they seem likely - Do NOT implement `transformResponse` against unverified payload shapes
If response schemas are missing or incomplete, do one of the following before proceeding: 1. Ask the user for sample responses 2. Ask the user for test credentials so you can verify the live payload 3. Reduce the scope to only endpoints whose response shapes are documented 4. Leave the tool unimplemented and explicitly report why
## Step 2: Create Tools
### Directory Structure ``` apps/sim/tools/{service}/ ├── index.ts # Barrel exports ├── types.ts # TypeScript interfaces ├── {action1}.ts # Tool for action 1 ├── {action2}.ts # Tool for action 2 └── ... ```
### Key Patterns
Choose the tool boundary before writing the declaration:
- Use `InternalToolConfig.operation` for same-process Sim/provider work. Put the handler under `apps/sim/lib/internal/{service}/execute-tool.ts` and register every ID in `apps/sim/lib/internal/tool-operations/registry.server.ts`. - Use `ToolConfig.request` only for an absolute external HTTP(S) provider endpoint.
Never point a tool at `/api/...`, construct an absolute URL back to Sim, declare `request.internal`, add a `directExecution` property (it fails `bun run check:tool-request-boundary`), or add an API route merely to reuse code, normalize files, or authorize resources. A real external/browser route and an in-process tool may share the same operation, but neither calls the other. Follow the full transport and handler rules in the `add-tools` skill.
**types.ts:** ```typescript import type { ToolResponse } from '@/tools/types'
export interface {Service}{Action}Params { accessToken: string // For OAuth services // OR apiKey: string // For API key services
requiredParam: string optionalParam?: string }
export interface {Service}Response extends ToolResponse { output: { // Define output structure } } ```
**Tool file pattern:** an external provider API uses `ToolConfig` with `request` (absolute `https://` URL, headers, body, `transformResponse`); same-process Sim work uses `InternalToolConfig` with `operation`. Both full templates, param visibility rules, and output typing live in `.agents/skills/add-tools/SKILL.md` — read it before writing the first tool.
### Critical Rules - `visibility: 'hidden'` for OAuth tokens - `visibility: 'user-only'` for API keys and user credentials - `visibility: 'user-or-llm'` for operation parameters - Always use `?? null` for nullable API response fields - Always use `?? []` for optional array fields - Set `optional: true` for outputs that may not exist - Never output raw JSON dumps - extract meaningful fields - 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
### Resolved Secrets at Model and Persistence Boundaries
Classify every request field (ordinary provider input / AI-consumed text / opaque model bytes / Sim-durable storage) before implementing the tool and apply the shared projection or provenance mechanism only where a concrete Sim `{{...}}` resolution path reaches a later model or log boundary. Full rules and the required tests are in `.agents/skills/add-tools/SKILL.md` → "Resolved Secrets and Provenance Boundaries".
## Step 3: Create Block
### File Location `apps/sim/blocks/blocks/{service}.ts`
Follow `.agents/skills/add-block/SKILL.md` for the block structure, subBlock types, `condition`/`dependsOn`/`required`/`mode` syntax, outputs, `canvasPresentation` sentences, and the `{Service}BlockMeta` export (minimum 7 templates, plus `url` and `skills`). Every block declares `canvasPresentation`; `bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}` must pass (CI runs `check:canvas-sentences --require-coverage`).
Two rules that are easy to get wrong when copying from existing blocks:
- Every remote `selectorKey` must use the unified server selector path. Apply the `add-selector` skill: add browser-safe metadata to `apps/sim/lib/selectors/manifest.ts`, reuse or extract a server-only provider listing primitive, and add a credential- and destination-bound server attachment. Do not add code under `hooks/selectors/providers`, a provider-specific query key, browser token acquisition, or a selector-only API route. The shared context builder sends only active `dependsOn` values and preserves exact `{{KEY}}` environment references for server-side resolution. - A `canonicalParamId` is a third name that neither member of a basic/advanced pair uses as its `id` (e.g. `channelSelector` + `channelId` → `canonicalParamId: 'channel'`). It is the only key that survives serialization, so `inputs` and `tools.config.params` reference the canonical id, never the subblock ids. It is unique block-wide, and every member of a group shares the same `required` value.
## Step 4: Add Icon
### File Location `apps/sim/components/icons.tsx`
### Pattern ```typescript export function {Service}Icon(props: SVGProps<SVGSVGElement>) { return ( <svg {...props} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" > {/* SVG paths from user-provided SVG */} </svg> ) } ```
### Getting Icons **Do not search for icons yourself.** At the end of implementation, ask the user to paste the service's SVG (usually on its brand/press kit page).
Once the user provides the SVG: 1. Extract the SVG paths/content 2. Create a React component that spreads props 3. Ensure viewBox is preserved from the original SVG
### Theme-safety (bare rendering) — REQUIRED
The icon renders both inside its colored `bgColor` tile AND "bare" (no tile) on a neutral page — e.g. the home **Suggested actions** list — in both light and dark mode. A monochrome logo whose paths hardcode a single near-white or near-black fill is invisible bare on the matching background (white-on-white in light mode, black-on-black in dark mode).
Rules when adding the SVG:
- **Monochrome logos** (a single white or black mark): draw the shape with `fill='currentColor'`, not `fill='#fff'` / `fill='#000000'`. It then inherits white inside dark tiles, near-black inside light tiles (via `getTileIconColorClass`), and the theme-aware `var(--text-icon)` bare — legible everywhere. Do NOT set `iconColor` for these. - **Multi-color brand logos** (their own vivid fills): keep the hardcoded fills. They read on any background. Only set `iconColor` (a vivid brand hex, never a near-black/near-white tile color) if the bare icon should adopt a brand tint. - A large white shape with a tiny vivid accent (e.g. a logo where the body is the white negative space) still vanishes bare — convert the body to `currentColor`.
Verify with `bun run check:bare-icons` (also runs in CI). It flags purely monochrome hazards; for partial-accent logos, eyeball the suggested-actions list in both light and dark mode.
## Step 5: Create Triggers (Optional)
If the service supports webhooks or needs polling, follow `.agents/skills/add-trigger/SKILL.md` (directory layout, `buildTriggerSubBlocks`, provider handler, polling handler); then wire `triggers.enabled` / `triggers.available` into the block and spread each trigger's `getTrigger(id).subBlocks` after the tool subBlocks.
## Step 6: Register Everything
### Tools Registry (`apps/sim/tools/registry.ts`)
```typescript // Add import (alphabetically) import { {service}Action1Tool, {service}Action2Tool, } from '@/tools/{service}'
// Add to tools object (alphabetically) export const tools: Record<string, ToolConfig> = { // ... existing tools ... {service}_action1: {service}Action1Tool, {service}_action2: {service}Action2Tool, } ```
Then regenerate the generated tool metadata and commit it:
```bash bun run tool-metadata:generate ```
Client code reads `params`/`outputs` from these artifacts rather than importing the registry, so a tool you add, change or remove is invisible to the UI until they are regenerated, and CI fails on stale ones. See `.agents/skills/tool-registry-boundary/SKILL.md`.
### Block Registry (`apps/sim/blocks/registry-maps.ts`)
The data maps (`BLOCK_REGISTRY` + `BLOCK_META_REGISTRY`) live in `registry-maps.ts`; `registry.ts` holds only the accessor functions. Add the import and an entry to each map alphabetically:
```typescript // Add import (alphabetically) import { {Service}Block, {Service}BlockMeta } from '@/blocks/blocks/{service}'
// Add to the config map (alphabetically) export const BLOCK_REGISTRY: Record<string, BlockConfig> = { // ... existing blocks ... {service}: {Service}Block, }
// Add to the catalog-meta map (alphabetically) export const BLOCK_META_REGISTRY: Record<string, BlockMeta> = { // ... existing metas ... {service}: {Service}BlockMeta, } ```
### Trigger Registry (`apps/sim/triggers/registry.ts`) - If triggers exist
```typescript // Add import (alphabetically) import { {service}EventATrigger, {service}EventBTrigger, {service}WebhookTrigger, } from '@/triggers/{service}'
// Add to TRIGGER_REGISTRY (alphabetically) export const TRIGGER_REGISTRY: TriggerRegistry = { // ... existing triggers ... {service}_event_a: {service}EventATrigger, {service}_event_b: {service}EventBTrigger, {service}_webhook: {service}WebhookTrigger, } ```
## Step 7: Configure Deployment Availability
Do this for every visible OAuth integration. API-key and unauthenticated integrations do not need an OAuth client capability.
The block's `oauth-input.serviceId` is the canonical link between the generated integration catalog, the OAuth service configuration, deployment availability, and the setup CLI.
1. Ensure the block has exactly one distinct OAuth `serviceId` and that it matches the canonical service entry in `apps/sim/lib/oauth/oauth.ts`. 2. Confirm `resolveOAuthClientCapabilityId(serviceId)` resolves to the intended provider entry in `OAUTH_CLIENT_CAPABILITIES` in `packages/deployment-config/src/env-capabilities.ts`. Google and Microsoft service IDs delibe
Source provenance
Decision snapshot
29,529 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for add-integration, ready for a manual X post.
add-integration: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers,... 29.5K stars https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x
Listing + install path for add-integration: https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x Install: npx skills add simstudioai/sim --skill add-integration
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to simstudioai but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration/audit)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)simstudioai
@simstudioai
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsSandbox only
Install targets
Codex install prompt
Install the "add-integration" agent skill from https://github.com/simstudioai/sim/tree/main/.agents/skills/add-integration. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"simstudioai-add-integration","task":"Install add-integration","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add simstudioai/sim --skill add-integration
Maintenance
fresh
2d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
30K
91/100 Quality · 80/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
ExcellentHigh-confidence pick with strong adoption and healthy maintenance signals.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
30K GitHub stars
Repo activity
30K stars, 3.8K forks
Maintenance
2d since push
License
Apache-2.0
Install
npx skills add simstudioai/sim --skill add-integration
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add simstudioai/sim --skill add-integrationDo not use when
Agent safety v2
Sparse or mixed signals. Useful for discovery, but not for autonomous installation.
Test manually in an isolated workspace and compare against safer alternatives.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/simstudioai-add-integration/install
Agent should check
Copy prompt
Task: Use add-integration in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/simstudioai-add-integration/install
Install command: npx skills add simstudioai/sim --skill add-integration
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/simstudioai-add-integration/install
LLM text format
/api/skills/simstudioai-add-integration/install?format=text
Find alternatives
/api/skills/search?q=add-integration&limit=3
Agent prompt
Use add-integration for this task. Review https://www.openagentskill.com/api/skills/simstudioai-add-integration/install, then install with: npx skills add simstudioai/sim --skill add-integrationRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/simstudioai-add-integration
LLM text
/api/registry/manifest/simstudioai-add-integration?format=text
Install alias
/api/registry/install/simstudioai-add-integration
Recommend
/api/registry/recommend?task=Use%20add-integration%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
PASS30K GitHub stars
Stars/forks activity
PASS30K stars, 3.8K forks; issue activity unavailable in current metadata
Recent maintenance
PASS2d since push
License clarity
PASSApache-2.0
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
High-confidence pick with strong adoption and healthy maintenance signals.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Search private knowledge
I need my agent to build a RAG workflow over documents and retrieve reliable context.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: add-integration description: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. argument-hint: <service-name> [api-docs-url] ---
# Add Integration Skill
You are an expert at adding complete integrations to Sim. This skill orchestrates the full process of adding a new service integration.
## Overview
Adding an integration involves these steps in order: 1. **Research** - Read the service's API documentation 2. **Create Tools** - Build tool configurations for each API operation 3. **Create Block** - Build the block UI configuration 4. **Add Icon** - Add the service's brand icon 5. **Create Triggers** (optional) - If the service supports webhooks 6. **Register** - Register tools, block, and triggers in their registries 7. **Configure Deployment Availability** - Wire OAuth client and service-account metadata 8. **Generate and Validate the Catalog** - Regenerate docs/catalog artifacts and run drift checks
## Step 1: Research the API
Before writing any code: 1. Use Context7 to find official documentation: `mcp__context7__resolve-library-id`, then fetch with `mcp__context7__query-docs` 2. Or use WebFetch to read API docs directly 3. Identify: - Authentication method (OAuth, API Key, both) - Available operations (CRUD, search, etc.) - Required vs optional parameters - Response structures
### Hard Rule: No Guessed Response Schemas
If the official docs do not clearly show the response JSON shape for an endpoint, you MUST stop and tell the user exactly which outputs are unknown.
- Do NOT guess response field names - Do NOT infer nested JSON paths from related endpoints - Do NOT invent output properties just because they seem likely - Do NOT implement `transformResponse` against unverified payload shapes
If response schemas are missing or incomplete, do one of the following before proceeding: 1. Ask the user for sample responses 2. Ask the user for test credentials so you can verify the live payload 3. Reduce the scope to only endpoints whose response shapes are documented 4. Leave the tool unimplemented and explicitly report why
## Step 2: Create Tools
### Directory Structure ``` apps/sim/tools/{service}/ ├── index.ts # Barrel exports ├── types.ts # TypeScript interfaces ├── {action1}.ts # Tool for action 1 ├── {action2}.ts # Tool for action 2 └── ... ```
### Key Patterns
Choose the tool boundary before writing the declaration:
- Use `InternalToolConfig.operation` for same-process Sim/provider work. Put the handler under `apps/sim/lib/internal/{service}/execute-tool.ts` and register every ID in `apps/sim/lib/internal/tool-operations/registry.server.ts`. - Use `ToolConfig.request` only for an absolute external HTTP(S) provider endpoint.
Never point a tool at `/api/...`, construct an absolute URL back to Sim, declare `request.internal`, add a `directExecution` property (it fails `bun run check:tool-request-boundary`), or add an API route merely to reuse code, normalize files, or authorize resources. A real external/browser route and an in-process tool may share the same operation, but neither calls the other. Follow the full transport and handler rules in the `add-tools` skill.
**types.ts:** ```typescript import type { ToolResponse } from '@/tools/types'
export interface {Service}{Action}Params { accessToken: string // For OAuth services // OR apiKey: string // For API key services
requiredParam: string optionalParam?: string }
export interface {Service}Response extends ToolResponse { output: { // Define output structure } } ```
**Tool file pattern:** an external provider API uses `ToolConfig` with `request` (absolute `https://` URL, headers, body, `transformResponse`); same-process Sim work uses `InternalToolConfig` with `operation`. Both full templates, param visibility rules, and output typing live in `.agents/skills/add-tools/SKILL.md` — read it before writing the first tool.
### Critical Rules - `visibility: 'hidden'` for OAuth tokens - `visibility: 'user-only'` for API keys and user credentials - `visibility: 'user-or-llm'` for operation parameters - Always use `?? null` for nullable API response fields - Always use `?? []` for optional array fields - Set `optional: true` for outputs that may not exist - Never output raw JSON dumps - extract meaningful fields - 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
### Resolved Secrets at Model and Persistence Boundaries
Classify every request field (ordinary provider input / AI-consumed text / opaque model bytes / Sim-durable storage) before implementing the tool and apply the shared projection or provenance mechanism only where a concrete Sim `{{...}}` resolution path reaches a later model or log boundary. Full rules and the required tests are in `.agents/skills/add-tools/SKILL.md` → "Resolved Secrets and Provenance Boundaries".
## Step 3: Create Block
### File Location `apps/sim/blocks/blocks/{service}.ts`
Follow `.agents/skills/add-block/SKILL.md` for the block structure, subBlock types, `condition`/`dependsOn`/`required`/`mode` syntax, outputs, `canvasPresentation` sentences, and the `{Service}BlockMeta` export (minimum 7 templates, plus `url` and `skills`). Every block declares `canvasPresentation`; `bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}` must pass (CI runs `check:canvas-sentences --require-coverage`).
Two rules that are easy to get wrong when copying from existing blocks:
- Every remote `selectorKey` must use the unified server selector path. Apply the `add-selector` skill: add browser-safe metadata to `apps/sim/lib/selectors/manifest.ts`, reuse or extract a server-only provider listing primitive, and add a credential- and destination-bound server attachment. Do not add code under `hooks/selectors/providers`, a provider-specific query key, browser token acquisition, or a selector-only API route. The shared context builder sends only active `dependsOn` values and preserves exact `{{KEY}}` environment references for server-side resolution. - A `canonicalParamId` is a third name that neither member of a basic/advanced pair uses as its `id` (e.g. `channelSelector` + `channelId` → `canonicalParamId: 'channel'`). It is the only key that survives serialization, so `inputs` and `tools.config.params` reference the canonical id, never the subblock ids. It is unique block-wide, and every member of a group shares the same `required` value.
## Step 4: Add Icon
### File Location `apps/sim/components/icons.tsx`
### Pattern ```typescript export function {Service}Icon(props: SVGProps<SVGSVGElement>) { return ( <svg {...props} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" > {/* SVG paths from user-provided SVG */} </svg> ) } ```
### Getting Icons **Do not search for icons yourself.** At the end of implementation, ask the user to paste the service's SVG (usually on its brand/press kit page).
Once the user provides the SVG: 1. Extract the SVG paths/content 2. Create a React component that spreads props 3. Ensure viewBox is preserved from the original SVG
### Theme-safety (bare rendering) — REQUIRED
The icon renders both inside its colored `bgColor` tile AND "bare" (no tile) on a neutral page — e.g. the home **Suggested actions** list — in both light and dark mode. A monochrome logo whose paths hardcode a single near-white or near-black fill is invisible bare on the matching background (white-on-white in light mode, black-on-black in dark mode).
Rules when adding the SVG:
- **Monochrome logos** (a single white or black mark): draw the shape with `fill='currentColor'`, not `fill='#fff'` / `fill='#000000'`. It then inherits white inside dark tiles, near-black inside light tiles (via `getTileIconColorClass`), and the theme-aware `var(--text-icon)` bare — legible everywhere. Do NOT set `iconColor` for these. - **Multi-color brand logos** (their own vivid fills): keep the hardcoded fills. They read on any background. Only set `iconColor` (a vivid brand hex, never a near-black/near-white tile color) if the bare icon should adopt a brand tint. - A large white shape with a tiny vivid accent (e.g. a logo where the body is the white negative space) still vanishes bare — convert the body to `currentColor`.
Verify with `bun run check:bare-icons` (also runs in CI). It flags purely monochrome hazards; for partial-accent logos, eyeball the suggested-actions list in both light and dark mode.
## Step 5: Create Triggers (Optional)
If the service supports webhooks or needs polling, follow `.agents/skills/add-trigger/SKILL.md` (directory layout, `buildTriggerSubBlocks`, provider handler, polling handler); then wire `triggers.enabled` / `triggers.available` into the block and spread each trigger's `getTrigger(id).subBlocks` after the tool subBlocks.
## Step 6: Register Everything
### Tools Registry (`apps/sim/tools/registry.ts`)
```typescript // Add import (alphabetically) import { {service}Action1Tool, {service}Action2Tool, } from '@/tools/{service}'
// Add to tools object (alphabetically) export const tools: Record<string, ToolConfig> = { // ... existing tools ... {service}_action1: {service}Action1Tool, {service}_action2: {service}Action2Tool, } ```
Then regenerate the generated tool metadata and commit it:
```bash bun run tool-metadata:generate ```
Client code reads `params`/`outputs` from these artifacts rather than importing the registry, so a tool you add, change or remove is invisible to the UI until they are regenerated, and CI fails on stale ones. See `.agents/skills/tool-registry-boundary/SKILL.md`.
### Block Registry (`apps/sim/blocks/registry-maps.ts`)
The data maps (`BLOCK_REGISTRY` + `BLOCK_META_REGISTRY`) live in `registry-maps.ts`; `registry.ts` holds only the accessor functions. Add the import and an entry to each map alphabetically:
```typescript // Add import (alphabetically) import { {Service}Block, {Service}BlockMeta } from '@/blocks/blocks/{service}'
// Add to the config map (alphabetically) export const BLOCK_REGISTRY: Record<string, BlockConfig> = { // ... existing blocks ... {service}: {Service}Block, }
// Add to the catalog-meta map (alphabetically) export const BLOCK_META_REGISTRY: Record<string, BlockMeta> = { // ... existing metas ... {service}: {Service}BlockMeta, } ```
### Trigger Registry (`apps/sim/triggers/registry.ts`) - If triggers exist
```typescript // Add import (alphabetically) import { {service}EventATrigger, {service}EventBTrigger, {service}WebhookTrigger, } from '@/triggers/{service}'
// Add to TRIGGER_REGISTRY (alphabetically) export const TRIGGER_REGISTRY: TriggerRegistry = { // ... existing triggers ... {service}_event_a: {service}EventATrigger, {service}_event_b: {service}EventBTrigger, {service}_webhook: {service}WebhookTrigger, } ```
## Step 7: Configure Deployment Availability
Do this for every visible OAuth integration. API-key and unauthenticated integrations do not need an OAuth client capability.
The block's `oauth-input.serviceId` is the canonical link between the generated integration catalog, the OAuth service configuration, deployment availability, and the setup CLI.
1. Ensure the block has exactly one distinct OAuth `serviceId` and that it matches the canonical service entry in `apps/sim/lib/oauth/oauth.ts`. 2. Confirm `resolveOAuthClientCapabilityId(serviceId)` resolves to the intended provider entry in `OAUTH_CLIENT_CAPABILITIES` in `packages/deployment-config/src/env-capabilities.ts`. Google and Microsoft service IDs delibe
Source provenance
Decision snapshot
29,529 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for add-integration, ready for a manual X post.
add-integration: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers,... 29.5K stars https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x
Listing + install path for add-integration: https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x Install: npx skills add simstudioai/sim --skill add-integration
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to simstudioai but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration/audit)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)simstudioai
@simstudioai
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsSandbox only
Install targets
Codex install prompt
Install the "add-integration" agent skill from https://github.com/simstudioai/sim/tree/main/.agents/skills/add-integration. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"simstudioai-add-integration","task":"Install add-integration","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add simstudioai/sim --skill add-integration
Maintenance
fresh
2d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
30K
91/100 Quality · 80/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
ExcellentHigh-confidence pick with strong adoption and healthy maintenance signals.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
30K GitHub stars
Repo activity
30K stars, 3.8K forks
Maintenance
2d since push
License
Apache-2.0
Install
npx skills add simstudioai/sim --skill add-integration
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add simstudioai/sim --skill add-integrationDo not use when
Agent safety v2
Sparse or mixed signals. Useful for discovery, but not for autonomous installation.
Test manually in an isolated workspace and compare against safer alternatives.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/simstudioai-add-integration/install
Agent should check
Copy prompt
Task: Use add-integration in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20add-integration%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/simstudioai-add-integration/install
Install command: npx skills add simstudioai/sim --skill add-integration
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/simstudioai-add-integration/install
LLM text format
/api/skills/simstudioai-add-integration/install?format=text
Find alternatives
/api/skills/search?q=add-integration&limit=3
Agent prompt
Use add-integration for this task. Review https://www.openagentskill.com/api/skills/simstudioai-add-integration/install, then install with: npx skills add simstudioai/sim --skill add-integrationRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/simstudioai-add-integration
LLM text
/api/registry/manifest/simstudioai-add-integration?format=text
Install alias
/api/registry/install/simstudioai-add-integration
Recommend
/api/registry/recommend?task=Use%20add-integration%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
PASS30K GitHub stars
Stars/forks activity
PASS30K stars, 3.8K forks; issue activity unavailable in current metadata
Recent maintenance
PASS2d since push
License clarity
PASSApache-2.0
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
High-confidence pick with strong adoption and healthy maintenance signals.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Search private knowledge
I need my agent to build a RAG workflow over documents and retrieve reliable context.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: add-integration description: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers, registrations, resolved-secret/model-input safety, and integration conventions. Use when introducing a new service under `apps/sim/tools`, `apps/sim/blocks`, and `apps/sim/triggers`. argument-hint: <service-name> [api-docs-url] ---
# Add Integration Skill
You are an expert at adding complete integrations to Sim. This skill orchestrates the full process of adding a new service integration.
## Overview
Adding an integration involves these steps in order: 1. **Research** - Read the service's API documentation 2. **Create Tools** - Build tool configurations for each API operation 3. **Create Block** - Build the block UI configuration 4. **Add Icon** - Add the service's brand icon 5. **Create Triggers** (optional) - If the service supports webhooks 6. **Register** - Register tools, block, and triggers in their registries 7. **Configure Deployment Availability** - Wire OAuth client and service-account metadata 8. **Generate and Validate the Catalog** - Regenerate docs/catalog artifacts and run drift checks
## Step 1: Research the API
Before writing any code: 1. Use Context7 to find official documentation: `mcp__context7__resolve-library-id`, then fetch with `mcp__context7__query-docs` 2. Or use WebFetch to read API docs directly 3. Identify: - Authentication method (OAuth, API Key, both) - Available operations (CRUD, search, etc.) - Required vs optional parameters - Response structures
### Hard Rule: No Guessed Response Schemas
If the official docs do not clearly show the response JSON shape for an endpoint, you MUST stop and tell the user exactly which outputs are unknown.
- Do NOT guess response field names - Do NOT infer nested JSON paths from related endpoints - Do NOT invent output properties just because they seem likely - Do NOT implement `transformResponse` against unverified payload shapes
If response schemas are missing or incomplete, do one of the following before proceeding: 1. Ask the user for sample responses 2. Ask the user for test credentials so you can verify the live payload 3. Reduce the scope to only endpoints whose response shapes are documented 4. Leave the tool unimplemented and explicitly report why
## Step 2: Create Tools
### Directory Structure ``` apps/sim/tools/{service}/ ├── index.ts # Barrel exports ├── types.ts # TypeScript interfaces ├── {action1}.ts # Tool for action 1 ├── {action2}.ts # Tool for action 2 └── ... ```
### Key Patterns
Choose the tool boundary before writing the declaration:
- Use `InternalToolConfig.operation` for same-process Sim/provider work. Put the handler under `apps/sim/lib/internal/{service}/execute-tool.ts` and register every ID in `apps/sim/lib/internal/tool-operations/registry.server.ts`. - Use `ToolConfig.request` only for an absolute external HTTP(S) provider endpoint.
Never point a tool at `/api/...`, construct an absolute URL back to Sim, declare `request.internal`, add a `directExecution` property (it fails `bun run check:tool-request-boundary`), or add an API route merely to reuse code, normalize files, or authorize resources. A real external/browser route and an in-process tool may share the same operation, but neither calls the other. Follow the full transport and handler rules in the `add-tools` skill.
**types.ts:** ```typescript import type { ToolResponse } from '@/tools/types'
export interface {Service}{Action}Params { accessToken: string // For OAuth services // OR apiKey: string // For API key services
requiredParam: string optionalParam?: string }
export interface {Service}Response extends ToolResponse { output: { // Define output structure } } ```
**Tool file pattern:** an external provider API uses `ToolConfig` with `request` (absolute `https://` URL, headers, body, `transformResponse`); same-process Sim work uses `InternalToolConfig` with `operation`. Both full templates, param visibility rules, and output typing live in `.agents/skills/add-tools/SKILL.md` — read it before writing the first tool.
### Critical Rules - `visibility: 'hidden'` for OAuth tokens - `visibility: 'user-only'` for API keys and user credentials - `visibility: 'user-or-llm'` for operation parameters - Always use `?? null` for nullable API response fields - Always use `?? []` for optional array fields - Set `optional: true` for outputs that may not exist - Never output raw JSON dumps - extract meaningful fields - 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
### Resolved Secrets at Model and Persistence Boundaries
Classify every request field (ordinary provider input / AI-consumed text / opaque model bytes / Sim-durable storage) before implementing the tool and apply the shared projection or provenance mechanism only where a concrete Sim `{{...}}` resolution path reaches a later model or log boundary. Full rules and the required tests are in `.agents/skills/add-tools/SKILL.md` → "Resolved Secrets and Provenance Boundaries".
## Step 3: Create Block
### File Location `apps/sim/blocks/blocks/{service}.ts`
Follow `.agents/skills/add-block/SKILL.md` for the block structure, subBlock types, `condition`/`dependsOn`/`required`/`mode` syntax, outputs, `canvasPresentation` sentences, and the `{Service}BlockMeta` export (minimum 7 templates, plus `url` and `skills`). Every block declares `canvasPresentation`; `bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}` must pass (CI runs `check:canvas-sentences --require-coverage`).
Two rules that are easy to get wrong when copying from existing blocks:
- Every remote `selectorKey` must use the unified server selector path. Apply the `add-selector` skill: add browser-safe metadata to `apps/sim/lib/selectors/manifest.ts`, reuse or extract a server-only provider listing primitive, and add a credential- and destination-bound server attachment. Do not add code under `hooks/selectors/providers`, a provider-specific query key, browser token acquisition, or a selector-only API route. The shared context builder sends only active `dependsOn` values and preserves exact `{{KEY}}` environment references for server-side resolution. - A `canonicalParamId` is a third name that neither member of a basic/advanced pair uses as its `id` (e.g. `channelSelector` + `channelId` → `canonicalParamId: 'channel'`). It is the only key that survives serialization, so `inputs` and `tools.config.params` reference the canonical id, never the subblock ids. It is unique block-wide, and every member of a group shares the same `required` value.
## Step 4: Add Icon
### File Location `apps/sim/components/icons.tsx`
### Pattern ```typescript export function {Service}Icon(props: SVGProps<SVGSVGElement>) { return ( <svg {...props} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" > {/* SVG paths from user-provided SVG */} </svg> ) } ```
### Getting Icons **Do not search for icons yourself.** At the end of implementation, ask the user to paste the service's SVG (usually on its brand/press kit page).
Once the user provides the SVG: 1. Extract the SVG paths/content 2. Create a React component that spreads props 3. Ensure viewBox is preserved from the original SVG
### Theme-safety (bare rendering) — REQUIRED
The icon renders both inside its colored `bgColor` tile AND "bare" (no tile) on a neutral page — e.g. the home **Suggested actions** list — in both light and dark mode. A monochrome logo whose paths hardcode a single near-white or near-black fill is invisible bare on the matching background (white-on-white in light mode, black-on-black in dark mode).
Rules when adding the SVG:
- **Monochrome logos** (a single white or black mark): draw the shape with `fill='currentColor'`, not `fill='#fff'` / `fill='#000000'`. It then inherits white inside dark tiles, near-black inside light tiles (via `getTileIconColorClass`), and the theme-aware `var(--text-icon)` bare — legible everywhere. Do NOT set `iconColor` for these. - **Multi-color brand logos** (their own vivid fills): keep the hardcoded fills. They read on any background. Only set `iconColor` (a vivid brand hex, never a near-black/near-white tile color) if the bare icon should adopt a brand tint. - A large white shape with a tiny vivid accent (e.g. a logo where the body is the white negative space) still vanishes bare — convert the body to `currentColor`.
Verify with `bun run check:bare-icons` (also runs in CI). It flags purely monochrome hazards; for partial-accent logos, eyeball the suggested-actions list in both light and dark mode.
## Step 5: Create Triggers (Optional)
If the service supports webhooks or needs polling, follow `.agents/skills/add-trigger/SKILL.md` (directory layout, `buildTriggerSubBlocks`, provider handler, polling handler); then wire `triggers.enabled` / `triggers.available` into the block and spread each trigger's `getTrigger(id).subBlocks` after the tool subBlocks.
## Step 6: Register Everything
### Tools Registry (`apps/sim/tools/registry.ts`)
```typescript // Add import (alphabetically) import { {service}Action1Tool, {service}Action2Tool, } from '@/tools/{service}'
// Add to tools object (alphabetically) export const tools: Record<string, ToolConfig> = { // ... existing tools ... {service}_action1: {service}Action1Tool, {service}_action2: {service}Action2Tool, } ```
Then regenerate the generated tool metadata and commit it:
```bash bun run tool-metadata:generate ```
Client code reads `params`/`outputs` from these artifacts rather than importing the registry, so a tool you add, change or remove is invisible to the UI until they are regenerated, and CI fails on stale ones. See `.agents/skills/tool-registry-boundary/SKILL.md`.
### Block Registry (`apps/sim/blocks/registry-maps.ts`)
The data maps (`BLOCK_REGISTRY` + `BLOCK_META_REGISTRY`) live in `registry-maps.ts`; `registry.ts` holds only the accessor functions. Add the import and an entry to each map alphabetically:
```typescript // Add import (alphabetically) import { {Service}Block, {Service}BlockMeta } from '@/blocks/blocks/{service}'
// Add to the config map (alphabetically) export const BLOCK_REGISTRY: Record<string, BlockConfig> = { // ... existing blocks ... {service}: {Service}Block, }
// Add to the catalog-meta map (alphabetically) export const BLOCK_META_REGISTRY: Record<string, BlockMeta> = { // ... existing metas ... {service}: {Service}BlockMeta, } ```
### Trigger Registry (`apps/sim/triggers/registry.ts`) - If triggers exist
```typescript // Add import (alphabetically) import { {service}EventATrigger, {service}EventBTrigger, {service}WebhookTrigger, } from '@/triggers/{service}'
// Add to TRIGGER_REGISTRY (alphabetically) export const TRIGGER_REGISTRY: TriggerRegistry = { // ... existing triggers ... {service}_event_a: {service}EventATrigger, {service}_event_b: {service}EventBTrigger, {service}_webhook: {service}WebhookTrigger, } ```
## Step 7: Configure Deployment Availability
Do this for every visible OAuth integration. API-key and unauthenticated integrations do not need an OAuth client capability.
The block's `oauth-input.serviceId` is the canonical link between the generated integration catalog, the OAuth service configuration, deployment availability, and the setup CLI.
1. Ensure the block has exactly one distinct OAuth `serviceId` and that it matches the canonical service entry in `apps/sim/lib/oauth/oauth.ts`. 2. Confirm `resolveOAuthClientCapabilityId(serviceId)` resolves to the intended provider entry in `OAUTH_CLIENT_CAPABILITIES` in `packages/deployment-config/src/env-capabilities.ts`. Google and Microsoft service IDs delibe
Source provenance
Decision snapshot
29,529 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for add-integration, ready for a manual X post.
add-integration: Add a complete Sim integration from API docs, covering tools, block, icon, optional triggers,... 29.5K stars https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x
Listing + install path for add-integration: https://www.openagentskill.com/skills/simstudioai-add-integration?ref=x Install: npx skills add simstudioai/sim --skill add-integration
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to simstudioai but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/simstudioai-add-integration/audit)
[](https://www.openagentskill.com/skills/simstudioai-add-integration?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)simstudioai
@simstudioai
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsPermission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness
Permission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness
Permission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness
Permission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness