Agent skill

Validate Connector

by simstudioai in simstudioai/sim

Validate an existing knowledge base connector against its service's API docs

Apache-2.0Auto-check passedDevelopment

Install Validate Connector

skills CLI
$ npx skills add simstudioai/sim --skill validate-connector -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install simstudioai/sim validate-connector --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/simstudioai/sim.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/validate-connector .claude/skills/validate-connector && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
validate-connector
GitHub stars
30k
Token cost
~5.7k tokens
SKILL.md length
2,619 words
Files
2
Skills in repo
40
Repo updated
First seen
Licence
Apache-2.0

At a glance

Validate an existing knowledge base connector against its service's API docs

  • Works in 11 steps: Gather All Files → Pull API Documentation → Validate API Endpoints → …
  • Tasks that involve Technical documentation
  • SKILL.md covers Identify the runtime under…, Your Task, Step 1: Gather All Files and Step 2: Pull API Documentation, plus 6 more sections
  • Calls bun

What it does

Validate Connector is an agent skill from simstudioai/sim. Validate an existing knowledge base connector against its service's API docs

Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).

It sits in Development, covering Technical documentation and Knowledge bases. The repository describes itself as: Sim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000+ builders. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Technical documentation
  • Tasks that involve Knowledge bases

Example prompts

  • “/validate-connector”

Workflow steps

11 steps, taken from the step headings in SKILL.md.

  1. Gather All Files
  2. Pull API Documentation
  3. Validate API Endpoints
  4. Validate OAuth Scopes (if OAuth connector)
  5. Validate Pagination
  6. Validate Data Transformation
  7. Validate Tag Definitions and mapTags
  8. Validate Config Fields and Validation
  9. Validate getDocument
  10. Validate General Quality
  11. Report and Fix

What it can do on your machine

Read from SKILL.md and the folder at commit 546d4e7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bun

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Validate Connector loads about 5.7k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 2,619 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~5.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from simstudioai/sim at commit 546d4e7, republished under its Apache-2.0 licence (© simstudioai). 2,619 words, ~5,686 tokens.

Download SKILL.mdSave it as .claude/skills/validate-connector/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
validate-connector
description
Validate an existing knowledge base connector against its service's API docs
argument-hint
<service-name> [api-docs-url]

Validate Connector Skill

Identify the runtime under review

For Sim Search, validate the live provider registration and access pipeline: catalog and metadata parity, both search/read handlers, current member grants, service-source restrictions, safe scoped references, pagination, provenance, and provider failure behavior. Test real localhost setup/search/read with authorized fixtures when available, and distinguish those results from mocked provider tests. Live Search must not enqueue content indexing or background ACL/directory builds; GitLab still computes request-time permissions or uses current CSV grants.

The ingestion-specific checks below apply to ordinary workspace KB connectors only. Do not require a live-only provider to implement content hashes, ingestion cursors, embeddings, or stored ACL snapshots.

You are an expert auditor for Sim knowledge base connectors. Your job is to thoroughly validate that an existing connector is correct, complete, and follows all conventions.

Your Task

When the user asks you to validate a connector:

  1. Read the service's API documentation (via Context7 or WebFetch)
  2. Read the connector implementation, OAuth config, and registry entries
  3. Cross-reference everything against the API docs and Sim conventions
  4. Report all issues found, grouped by severity (critical, warning, suggestion)
  5. Fix all issues after reporting them

Step 1: Gather All Files

Read every file for the connector — do not skip any:

apps/sim/connectors/{service}/meta.ts        # ConnectorMeta — client-safe metadata (icon, name, auth, configFields, tagDefinitions)
apps/sim/connectors/{service}/{service}.ts   # Connector implementation — spreads the meta + runtime functions
apps/sim/connectors/{service}/index.ts       # Barrel export
apps/sim/connectors/registry.server.ts       # Server-only full registry entry (CONNECTOR_REGISTRY; full connector)
apps/sim/connectors/registry.ts              # Client-safe meta registry entry (CONNECTOR_META_REGISTRY)
apps/sim/connectors/types.ts                 # ConnectorMeta / ConnectorConfig interfaces, ExternalDocument, etc.
apps/sim/connectors/utils.ts                 # Shared utilities (computeContentHash, htmlToPlainText, etc.)
apps/sim/lib/oauth/oauth.ts                  # OAUTH_PROVIDERS — single source of truth for scopes
apps/sim/lib/oauth/utils.ts                  # getCanonicalScopesForProvider, getScopesForService, SCOPE_DESCRIPTIONS
apps/sim/lib/oauth/types.ts                  # OAuthService union type
apps/sim/components/icons.tsx                 # Icon definition for the service

If the connector uses selectors, also read:

apps/sim/lib/selectors/manifest.ts            # Browser-safe exhaustive metadata
apps/sim/lib/selectors/types.ts               # Selector context and option types
apps/sim/lib/selectors/context.ts             # Active canonical context projection
apps/sim/lib/selectors/server/registry.ts     # Exhaustive server attachments
apps/sim/lib/selectors/server/providers/*     # Matching provider attachment

Apply the validate-selector skill to the matching key and provider primitive. There is no client provider selector registry.

Step 2: Pull API Documentation

Fetch the official API docs for the service. This is the source of truth for:

  • Endpoint URLs, HTTP methods, and auth headers
  • Required vs optional parameters
  • Parameter types and allowed values
  • Response shapes and field names
  • Pagination patterns (cursor, offset, next token)
  • Rate limits and error formats
  • OAuth scopes and their meanings

Use Context7 (resolve-library-id → query-docs) or WebFetch to retrieve documentation. If both fail, note which claims are based on training knowledge vs verified docs.

Hard Rule: No Guessed Source Schemas

If the service docs do not clearly show document list responses, document fetch responses, metadata fields, or pagination shapes, you MUST tell the user instead of guessing.

  • Do NOT infer document fields from unrelated endpoints
  • Do NOT guess pagination cursors or response wrappers
  • Do NOT assume metadata keys that are not documented
  • Do NOT treat probable shapes as validated

If a schema is unknown, validation must explicitly recommend:

  1. sample API responses,
  2. live test credentials, or
  3. trimming the connector to only documented fields.

Step 3: Validate API Endpoints

For every API call in the connector (listDocuments, getDocument, validateConfig, and any helper functions), verify against the API docs:

URLs and Methods
  • Base URL is correct for the service's API version
  • Endpoint paths match the API docs exactly
  • HTTP method is correct (GET, POST, PUT, PATCH, DELETE)
  • Path parameters are correctly interpolated and URI-encoded where needed
  • Query parameters use correct names and formats per the API docs
Headers
  • Authorization header uses the correct format:
    • OAuth: Authorization: Bearer ${accessToken}
    • API Key: correct header name per the service's docs
  • Content-Type is set for POST/PUT/PATCH requests
  • Any service-specific headers are present (e.g., Notion-Version, Dropbox-API-Arg)
  • No headers are sent that the API doesn't support or silently ignores
Request Bodies
  • POST/PUT body fields match API parameter names exactly
  • Required fields are always sent
  • Optional fields are conditionally included (not sent as null or empty unless the API expects that)
  • Field value types match API expectations (string vs number vs boolean)
Input Sanitization
  • User-controlled values interpolated into query strings are properly escaped:
    • OData $filter: single quotes escaped with '' (e.g., externalId.replace(/'/g, "''"))
    • SOQL: single quotes escaped with \'
    • GraphQL variables: passed as variables, not interpolated into query strings
    • URL path segments: encodeURIComponent() applied
  • URL-type config fields (e.g., siteUrl, instanceUrl) are normalized:
    • Strip https:// / http:// prefix if the API expects bare domains
    • Strip trailing /
    • Apply .trim() before validation
Response Parsing
  • Response structure is correctly traversed (e.g., data.results vs data.items vs data)
  • Field names extracted match what the API actually returns
  • Nullable fields are handled with ?? null or || undefined
  • Error responses are checked before accessing data fields
  • Every extracted field and pagination value is backed by official docs or live-verified sample payloads

Step 4: Validate OAuth Scopes (if OAuth connector)

Scopes must be correctly declared and sufficient for all API calls the connector makes.

Connector requiredScopes
  • requiredScopes in the connector's auth config lists all scopes needed by the connector
  • Each scope in requiredScopes is a real, valid scope recognized by the service's API
  • No invalid, deprecated, or made-up scopes are listed
  • No unnecessary excess scopes beyond what the connector actually needs
Scope Subset Validation (CRITICAL)
  • Every scope in requiredScopes exists in the OAuth provider's scopes array in lib/oauth/oauth.ts
  • Find the provider in OAUTH_PROVIDERS[providerGroup].services[serviceId].scopes
  • Verify: requiredScopes ⊆ OAUTH_PROVIDERS scopes (every required scope is present in the provider config)
  • If a required scope is NOT in the provider config, flag as critical — the connector will fail at runtime
Scope Sufficiency

For each API endpoint the connector calls:

  • Identify which scopes are required per the API docs
  • Verify those scopes are included in the connector's requiredScopes
  • If the connector calls endpoints requiring scopes not in requiredScopes, flag as warning
Token Refresh Config
  • Check the provider's entry in getProviderAuthConfig (lib/oauth/oauth.ts)
  • useBasicAuth matches the service's token exchange requirements
  • supportsRefreshTokenRotation matches whether the service issues rotating refresh tokens
  • Token endpoint URL is correct

Step 5: Validate Pagination

listDocuments Pagination
  • Cursor/pagination parameter name matches the API docs
  • Response pagination field is correctly extracted (e.g., next_cursor, nextPageToken, @odata.nextLink, offset)
  • hasMore is correctly determined from the response
  • nextCursor is correctly passed back for the next page
  • maxItems / maxRecords cap is correctly applied across pages using syncContext.totalDocsFetched
  • Page size is within the API's allowed range (not exceeding max page size)
  • Last page precision: when a maxItems cap exists, the final page request uses Math.min(PAGE_SIZE, remaining) to avoid fetching more records than needed
  • No off-by-one errors in pagination tracking
  • The connector does NOT hit known API pagination limits silently (e.g., HubSpot search 10k cap)
Deletion-Reconciliation Safety (listingCapped) — CRITICAL

The sync engine tombstones, then hard-deletes, any stored document absent from a full listing. Audit every path where listDocuments can return less than the full source set:

  • syncContext.listingCapped = true is set when a maxItems-style cap truncates the listing while more documents exist
  • listingCapped is set when a transient per-item error drops a still-existing document from the listing
  • listingCapped is NOT set when the source is genuinely exhausted (deleted documents must reconcile) or for intentional scope filters (date cutoffs) Verify it against the checkpoint.unsafe computation in lib/knowledge/connectors/listing-checkpoint.ts.
Pagination State Across Pages
  • syncContext is used to cache state across pages (user names, field maps, instance URLs, portal IDs, etc.)
  • Cached state in syncContext is correctly initialized on first page and reused on subsequent pages

Step 6: Validate Data Transformation

Content Deferral (CRITICAL)

Connectors that require per-document API calls to fetch content (file download, export, blocks fetch) MUST use contentDeferred: true. This is the standard pattern for reliability — without it, content downloads during listing can exhaust the sync task's time budget before any documents are saved.

  • If the connector downloads content per-doc during listDocuments, it MUST use contentDeferred: true instead
  • listDocuments returns lightweight stubs with content: '' and contentDeferred: true
  • getDocument fetches actual content and returns the full document with contentDeferred: false
  • A shared stub function (e.g., fileToStub) is used by both listDocuments and getDocument to guarantee contentHash consistency
  • contentHash is metadata-based (e.g., service:{id}:{modifiedTime}), NOT content-based — it must be derivable from list metadata alone
  • The contentHash is identical whether produced by listDocuments or getDocument

Connectors where the list API already returns content inline (e.g., Slack messages, Reddit posts) do NOT need contentDeferred.

ExternalDocument Construction
  • externalId is a stable, unique identifier from the source API
  • title is extracted from the correct field and has a sensible fallback (e.g., 'Untitled')
  • content is plain text — HTML content is stripped using htmlToPlainText from @/connectors/utils
  • mimeType is 'text/plain' for extracted text, or the document hands over sourceFile for a format the KB pipeline parses
  • contentHash uses a metadata-based format (e.g., service:{id}:{modifiedTime}) for connectors with contentDeferred: true, or computeContentHash from @/connectors/utils for inline-content connectors
  • sourceUrl is a valid, complete URL back to the original resource (not relative)
  • metadata contains all fields referenced by mapTags and tagDefinitions
Content Extraction
  • Rich text / HTML fields are converted to plain text before indexing
  • Important content is not silently dropped (e.g., nested blocks, table cells, code blocks)
  • Content is not silently truncated without logging a warning
  • Empty/blank documents are properly filtered out
  • Size checks use Buffer.byteLength(text, 'utf8') not text.length when comparing against byte-based limits (e.g., MAX_FILE_SIZE in bytes)

Step 7: Validate Tag Definitions and mapTags

tagDefinitions
  • Each tagDefinition has an id, displayName, and fieldType
  • fieldType matches the actual data type: 'text' for strings, 'number' for numbers, 'date' for dates, 'boolean' for booleans
  • Every id in tagDefinitions is returned by mapTags
  • No tagDefinition references a field that mapTags never produces
mapTags
  • Return keys match tagDefinition id values exactly
  • Date values are properly parsed using parseTagDate from @/connectors/utils
  • Array values are properly joined using joinTagArray from @/connectors/utils
  • Number values are validated (not NaN)
  • Metadata field names accessed in mapTags match what listDocuments/getDocument store in metadata

Step 8: Validate Config Fields and Validation

configFields
  • Every field has id, title, type
  • required is set explicitly (not omitted)
  • Dropdown fields have options with label and id for each option
  • Selector fields follow the canonical pair pattern:
    • A type: 'selector' field with selectorKey, canonicalParamId, mode: 'basic'
    • A type: 'short-input' field with the same canonicalParamId, mode: 'advanced'
    • required is identical on both fields in the pair
  • dependsOn references selector field id values, not canonicalParamId
  • Each selector key passes the validate-selector skill
Show full SKILL.md (1,037 more words)Show less
validateConfig
  • Validates all required fields are present before making API calls
  • Validates optional numeric fields (checks Number.isNaN, positive values)
  • Makes a lightweight API call to verify access (e.g., fetch 1 record, get profile)
  • Uses VALIDATE_RETRY_OPTIONS for retry budget
  • Returns { valid: true } on success
  • Returns { valid: false, error: 'descriptive message' } on failure
  • Catches exceptions and returns user-friendly error messages
  • Does NOT make expensive calls (full data listing, large queries)

Step 9: Validate getDocument

  • Fetches a single document by externalId
  • Returns null for 404 / not found (does not throw)
  • Returns the same ExternalDocument shape as listDocuments
  • If listDocuments uses contentDeferred: true, getDocument MUST fetch actual content and return contentDeferred: false
  • If listDocuments uses contentDeferred: true, getDocument MUST use the same stub function to ensure contentHash is identical
  • Handles all content types that listDocuments can produce (e.g., if listDocuments returns both pages and blogposts, getDocument must handle both — not hardcode one endpoint)
  • Forwards syncContext if it needs cached state (user names, field maps, etc.)
  • Error handling is graceful (catches, logs, returns null or throws with context)
  • Does not redundantly re-fetch data already included in the initial API response (e.g., if comments come back with the post, don't fetch them again separately)

Step 10: Validate General Quality

fetchWithRetry Usage
  • All external API calls use fetchWithRetry (or secureFetchWithRetry for user-controlled hosts) from @/lib/knowledge/documents/secure-fetch.server
  • No raw fetch() calls to external APIs
  • VALIDATE_RETRY_OPTIONS used in validateConfig
  • If validateConfig calls a shared helper (e.g., linearGraphQL, resolveId), that helper must accept and forward retryOptions to fetchWithRetry
  • Default retry options used in listDocuments/getDocument
API Efficiency
  • APIs that support field selection (e.g., $select, sysparm_fields, fields) should request only the fields the connector needs — in both listDocuments AND getDocument
  • No redundant API calls: if a helper already fetches data (e.g., site metadata), callers should reuse the result instead of making a second call for the same information
  • Sequential per-item API calls (fetching details for each document in a loop) should be batched with Promise.all and a concurrency limit of 3-5
Error Handling
  • Individual document failures are caught and logged without aborting the sync
  • API error responses include status codes in error messages
  • No unhandled promise rejections in concurrent operations
Concurrency
  • Concurrent API calls use reasonable batch sizes (3-5 is typical)
  • No unbounded Promise.all over large arrays
Logging
  • Uses createLogger from @sim/logger (not console.log)
  • Logs sync progress at info level
  • Logs errors at warn or error level with context
Meta / Runtime Split
  • connectors/{service}/meta.ts exports {service}ConnectorMeta: ConnectorMeta (id, name, description, version, icon, auth, configFields, and any tagDefinitions / supportsIncrementalSync)
  • meta.ts imports ONLY the icon from @/components/icons, ConnectorMeta (type-only), and pure-data constants — NO server/runtime imports (@/lib/knowledge/..., input-validation.server, fetchWithRetry, etc.); any such import in meta.ts is critical (breaks the client bundle)
  • connectors/{service}/{service}.ts spreads ...{service}ConnectorMeta as the first property and adds the runtime functions (listDocuments, getDocument, validateConfig, mapTags?)
  • Metadata fields (id, name, auth, configFields, etc.) live ONLY in meta.ts, not duplicated in {service}.ts
Registry
  • Connector is exported from connectors/{service}/index.ts
  • Full connector is registered in connectors/registry.server.ts (server-only registry, CONNECTOR_REGISTRY)
  • Meta is registered in connectors/registry.ts (client-safe registry, CONNECTOR_META_REGISTRY), importing @/connectors/{service}/meta
  • Both registries use the same key and it matches the connector's id field
  • Both registries keep the same alphabetical-by-id ordering

Step 11: Report and Fix

Report Format

Group findings by severity:

Critical (will cause runtime errors, data loss, or auth failures):

  • Wrong API endpoint URL or HTTP method
  • Invalid or missing OAuth scopes (not in provider config)
  • Incorrect response field mapping (accessing wrong path)
  • SOQL/query fields that don't exist on the target object
  • Pagination that silently hits undocumented API limits
  • Missing syncContext.listingCapped = true when a cap or transient error truncates the listing — the sync engine tombstones and later hard-deletes the documents absent from the partial listing
  • Missing error handling that would crash the sync
  • requiredScopes not a subset of OAuth provider scopes
  • Query/filter injection: user-controlled values interpolated into OData $filter, SOQL, or query strings without escaping
  • Per-document content download in listDocuments without contentDeferred: true — causes sync timeouts for large document sets
  • contentHash mismatch between listDocuments stub and getDocument return — causes unnecessary re-processing every sync
  • Server/runtime import in meta.ts (e.g. @/lib/knowledge/..., input-validation.server, fetchWithRetry) — pulls server-only code into the client bundle and breaks the build
  • Connector missing from connectors/registry.ts (the client-safe meta registry) — or its entry there imports the runtime module instead of meta.ts — the knowledge UI can't render it
  • A connector selector resolves shared secrets in the browser, lacks scope or credential provider binding, combines hidden authentication with an unsafe user-controlled destination, or forwards protected/provider payload data to the client

Warning (incorrect behavior, data quality issues, or convention violations):

  • HTML content not stripped via htmlToPlainText
  • getDocument not forwarding syncContext
  • getDocument hardcoded to one content type when listDocuments returns multiple (e.g., only pages but not blogposts)
  • Missing tagDefinition for metadata fields returned by mapTags
  • Incorrect useBasicAuth or supportsRefreshTokenRotation in token refresh config
  • Invalid scope names that the API doesn't recognize (even if silently ignored)
  • Private resources excluded from name-based lookup despite scopes being available
  • Silent data truncation without logging
  • Size checks using text.length (character count) instead of Buffer.byteLength (byte count) for byte-based limits
  • URL-type config fields not normalized (protocol prefix, trailing slashes cause API failures)
  • VALIDATE_RETRY_OPTIONS not threaded through helper functions called by validateConfig

Suggestion (minor improvements):

  • Missing incremental sync support despite API supporting it
  • Overly broad scopes that could be narrowed (not wrong, but could be tighter)
  • Source URL format could be more specific
  • Missing orderBy for deterministic pagination
  • Redundant API calls that could be cached in syncContext
  • Sequential per-item API calls that could be batched with Promise.all (concurrency 3-5)
  • API supports field selection but connector fetches all fields (e.g., missing $select, sysparm_fields, fields)
  • getDocument re-fetches data already included in the initial API response (e.g., comments returned with post)
  • Last page of pagination requests full PAGE_SIZE when fewer records remain (Math.min(PAGE_SIZE, remaining))
Fix All Issues

After reporting, fix every critical and warning issue. Apply suggestions where they don't add unnecessary complexity.

Validation Output

After fixing, confirm:

  1. bun run lint passes
  2. TypeScript compiles clean
  3. Re-read all modified files to verify fixes are correct
  4. Any remaining unknown source schemas were explicitly reported to the user instead of guessed

Checklist Summary

Before reporting, confirm every step above was checked, issues are grouped by severity, critical and warning fixes are applied, and bun run lint plus type-check pass.

© simstudioai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .agents/skills/validate-connector of simstudioai/sim.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit 546d4e7

Compare with similar skills

Validate Connector next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Validate Connector compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Validate Connector this skillsimstudioai/sim30k—~5.7kAutomated safety check: PassApache-2.0
Capture Knowledgeadamayoung/TMDb178—~2.3kAutomated safety check: PassApache-2.0
New LoopAI-Builder-Club/skills1.3k—~1.2kAutomated safety check: NotesNone
Codebase Docsespennilsen/pi122—~1.8kAutomated safety check: PassMIT
Tech Distilleryaofeino1/tech-distiller144—~1.2kAutomated safety check: PassNone
Obsidian WriterAtmosphere/atmosphere3.8k—~2.6kAutomated safety check: PassApache-2.0

Similar skills

  • Capture Knowledge

    adamayoung/TMDb

    Records non-obvious lessons from a finished task, such as gotchas, API quirks and design decisions, into a project's knowledge folder before a pull request opens.

    178 GitHub stars~2.3k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • New Loop

    AI-Builder-Club/skills

    Spin up a new loop (domain) in a file-based knowledge base — bootstrap the substrate if it's missing, gather the loop's charter, scaffold domains/<loop/README.md, then do ONE real test run and…

    1.3k GitHub stars~1.2k tokensUpdated 21 days ago
    Knowledge ManagementAuto-check: notes
  • Codebase Docs

    espennilsen/pi

    Generate and maintain AI-readable markdown documentation for a codebase in docs/.

    122 GitHub stars~1.8k tokensUpdated 15 days ago
    DevelopmentAuto-check passed
  • Tech Distiller

    yaofeino1/tech-distiller

    Collects technical documents from URLs, files, wikis or APIs, filters them by role or technical direction, and writes a structured report on architecture, algorithms and design decisions.

    144 GitHub stars~1.2k tokensUpdated 6 mo ago
    Knowledge ManagementAuto-check passed
  • Obsidian Writer

    Atmosphere/atmosphere

    Write well-formatted notes to the atmosphere-vault Obsidian knowledge base.

    3.8k GitHub stars~2.6k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Writes an onboarding guide for new team members from a project's existing knowledge graph, after checking that the graph still matches the current commit.

    85k GitHub stars~1.2k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from simstudioai/sim

All 40 skills in this repo
  • Sim Helm

    simstudioai/sim

    Install, upgrade, and operate the Sim Helm chart on Kubernetes.

    30k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Add Column Type

    simstudioai/sim

    Add a new table column type to Sim — registry entry, icon, storage shape, coercion, and the behavioral hooks the grid and API read.

    30k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Add Enrichment

    simstudioai/sim

    Add a code-defined table enrichment (registry entry) under apps/sim/enrichments/ backed by an ordered provider cascade, ensuring every provider tool it calls has hosted-key support.

    30k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Add Hosted Key

    simstudioai/sim

    Add hosted API key support to a tool so Sim provides the key (metered and billed to the workspace) when a user has not brought their own.

    30k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Add Managed CLI

    simstudioai/sim

    Add or upgrade a curated, immutable managed CLI for Sim Function sandboxes, including client-safe catalog metadata, a pinned server-only installation recipe, checksum and executable verification…

    30k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Add Selector

    simstudioai/sim

    Add or update a Sim dynamic selector using the shared manifest, server attachment, and selectors.execute path.

    30k GitHub stars~1.7k tokensUpdated today
    Auto-check passed

Questions about Validate Connector

What does Validate Connector do?

Validate an existing knowledge base connector against its service's API docs. Validate Connector is an agent skill from simstudioai/sim.

When should I use Validate Connector?

Validate Connector fits situations like: tasks that involve Technical documentation; tasks that involve Knowledge bases.

How do I install Validate Connector in Claude Code?

Run `npx skills add simstudioai/sim --skill validate-connector -a claude-code`. Or copy the skill folder (.agents/skills/validate-connector in simstudioai/sim) into .claude/skills/validate-connector in your project. Claude Code loads it when a task matches its description.

How do I install Validate Connector in Codex?

Run `npx skills add simstudioai/sim --skill validate-connector -a codex`. Or copy the skill folder (.agents/skills/validate-connector in simstudioai/sim) into .agents/skills/validate-connector in your project. Codex loads it when a task matches its description.

Can I use Validate Connector in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add simstudioai/sim --skill validate-connector -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/validate-connector, .gemini/skills/validate-connector, .github/skills/validate-connector and .opencode/skills/validate-connector in your project.

What does Validate Connector need to run?

Going by SKILL.md and its folder, Validate Connector needs the command-line tools its instructions call (bun).

Does Validate Connector access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Validate Connector safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Validate Connector use?

Validate Connector is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Validate Connector use?

About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Validate Connector?

Skills that share tags, products or a category with Validate Connector: Capture Knowledge (adamayoung/TMDb, 178 stars), New Loop (AI-Builder-Club/skills, 1.3k stars), Codebase Docs (espennilsen/pi, 122 stars) and Tech Distiller (yaofeino1/tech-distiller, 144 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Validate Connector?

simstudioai (a GitHub organization) maintains it in simstudioai/sim, which has 29,785 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 7, 2026.

Source: simstudioai/sim on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.