Agent skill

Mg Connector

by modelguide in modelguide/modelguide

A skill your agent uses when the user asks to add a connector, create a connector, implement a connector for a service, add a tool to a connector, update a connector tool, or asks about connector…

MITAuto-check passed

Install Mg Connector

skills CLI
$ npx skills add modelguide/modelguide --skill mg-connector -a claude-code

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

GitHub CLI
$ gh skill install modelguide/modelguide mg-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/modelguide/modelguide.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/mg-connector .claude/skills/mg-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
mg-connector
GitHub stars
108
Token cost
~4.5k tokens
SKILL.md length
932 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when the user asks to add a connector, create a connector, implement a connector for a service, add a tool to a connector, update a connector tool, or asks about connector…

  • Works in 8 steps: Gather Requirements → Create client.ts → Create handlers.ts → …
  • The user asks to add a connector
  • SKILL.md covers When NOT to use this skill, Architecture Overview, Creating a New Connector and Adding Tools to an Existing…, plus 3 more sections
  • Calls make and bun; reaches api.test-service.com

What it does

Mg Connector is an agent skill from modelguide/modelguide. Use when the user asks to add a connector, create a connector, implement a connector for a service, add a tool to a connector, update a connector tool, or asks about connector architecture. Trigger phrases include "add connector", "create connector", "new connector", "implement connector", "add tool to connector", "update connector tool", "connector architecture".

Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Open-source voice agent orchestration framework - build production voice AI pipelines without vendor lock-in. The licence is MIT.

When your agent uses it

  • The user asks to add a connector
  • Create a connector
  • Implement a connector for a service
  • Add a tool to a connector

Example prompts

  • “add connector”
  • “create connector”
  • “new connector”
  • “/mg-connector”

Workflow steps

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

  1. Gather Requirements
  2. Create client.ts
  3. Create handlers.ts
  4. Create index.ts
  5. Register in Registry
  6. Create Unit Tests
  7. Verify
  8. Sync to Database

What it can do on your machine

Read from SKILL.md and the folder at commit 554caa0. 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:

    • make
    • bun

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.test-service.com

    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

Mg Connector loads about 4.5k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 932 words of instructions outside code blocks.

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

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 modelguide/modelguide at commit 554caa0, republished under its MIT licence (© modelguide). 932 words, ~4,458 tokens.

Download SKILL.mdSave it as .claude/skills/mg-connector/SKILL.md (or your agent's skills folder).
name
mg-connector
description
Use when the user asks to add a connector, create a connector, implement a connector for a service, add a tool to a connector, update a connector tool, or asks about connector architecture. Trigger phrases include "add connector", "create connector", "new connector", "implement connector", "add tool to connector", "update connector tool", "connector architecture".

Connector Development Skill

Guide for creating, extending, and maintaining connector modules in the ModelGuide platform. Connectors integrate external services (e-commerce, helpdesk, calendars) into the platform, exposing their capabilities as tools that AI agents invoke via MCP.

When NOT to use this skill

Before designing a full TypeScript connector module, check whether a mocked connector (ADR-013) is enough. Use the mocked path instead when:

  • The backend doesn't exist (demo, sales deck, POC, dry-run call).
  • Tool responses can be static fixtures — no conditional logic, no response trimming, no network call.
  • The connector is only meant to drive an agent evaluation / simulation flow with coherent fake data.

In those cases, skip this skill entirely. Go straight to connectors.yaml with isMocked: true and inline tool definitions (see the mg-cli or build-agent skills — both have templates). The CLI upserts a connectors_catalog entry and inserts connector_tools rows with mock_response populated; executeTool() falls back to those payloads at runtime. No code, no deploy.

Use this skill when the connector must call a real backend at runtime.

Architecture Overview

The 3-File Module Pattern

Every connector lives at modelguide-api/src/features/connectors/catalog/{slug}/ and consists of exactly three files:

FilePurpose
client.tsHTTP client factory bound to connector config. Custom error class + typed fetcher.
handlers.tsTool execution functions. Each handler is wrapped in an error-handling HOF.
index.tsManifest: connector metadata + tool definitions array. Default export is ConnectorManifest.
System Flow
code manifest → registry.ts → sync.ts → DB connectors_catalog
                                          ↓
                              org creates connector instance (with config/secrets)
                                          ↓
                              AI agent calls tool via MCP → handler executes with resolved config
Key Type Contracts

All types are in modelguide-api/src/features/connectors/catalog/types.ts:

ts
interface ToolExecutionContext {
  config: Record<string, string>;   // resolved config (secrets decrypted)
  input: Record<string, unknown>;   // validated tool input from MCP call
  organizationId: string;
  connectorId: string;
}

interface ToolExecutionResult {
  success: boolean;
  data?: Record<string, unknown>;
  error?: string;
}

interface ConnectorToolDefinition {
  catalog: CatalogTool;             // metadata stored in DB
  handler: (ctx: ToolExecutionContext) => Promise<ToolExecutionResult>;
}

interface ConfigFieldSchema {
  type: "string" | "secret" | "number" | "boolean";
  required: boolean;
  description: string;
  default?: string | number | boolean;
}

type ConnectorType = "api" | "webhook" | "database" | "messaging";

interface ConnectorManifest {
  name: string;                     // Human-readable, e.g. "Medusa"
  slug: string;                     // URL-safe unique ID, e.g. "medusa"
  description: string;
  connectorType: ConnectorType;
  configSchema: Record<string, ConfigFieldSchema>;
  authMethods: string[];            // e.g. ["api_key"], ["oauth2"], ["bearer_token"]
  iconUrl: string;
  tools: ConnectorToolDefinition[];
}

CatalogTool (from @db/schema/core):

ts
interface CatalogTool {
  name: string;                        // Human-readable, e.g. "List Products"
  description: string;
  inputSchema: Record<string, unknown>; // JSON Schema
  defaultRequiresConfirmation: boolean;
  defaultTimeoutSeconds: number;
}

Creating a New Connector

Step 0: Gather Requirements

If .modelguide/CONNECTOR_HANDOFF.md exists, read it first and use it as the source of truth for the requested service, auth, operations, and requested org connector slug. Only ask follow-up questions for missing details.

Ask the user for:

  • Service name and slug (lowercase, alphanumeric + hyphens)
  • Description of what the connector does
  • Connector type: api | webhook | database | messaging
  • Config fields: what the connector needs (base URL, API key, etc.)
  • Auth method: api_key, oauth2, bearer_token, etc.
  • Initial tools: list of operations to expose
Build-Agent Handoff Contract

When this skill is invoked from /build-agent, update .modelguide/CONNECTOR_HANDOFF.md in place instead of returning the result only in prose.

Do not delete the original request fields. Preserve serviceName, serviceSlug, requestedConnectorSlug, authModel, baseUrl, and operations so build-agent can resume without losing the builder's API summary.

Minimum required fields on completion:

  • status: completed or status: blocked
  • catalogSlug — the new catalog connector slug
  • connectorSlug — the org connector instance slug to use in agents.yaml and sops.yaml
  • toolSlugs — exact tool slugs exposed by the connector
  • configFields — objects with name, description, and required for each non-secret field that connectors.yaml must provide
  • secretFields — objects with field, name, and type for each secret that mg setup will prompt for
  • changedFiles — exact repo file paths you modified
  • verification — commands run, or (pending) if verification was skipped
  • blocker — only when status: blocked

Important: catalogSlug and connectorSlug are different. catalogSlug identifies the connector type in the global catalog. connectorSlug is the org instance slug that becomes the MCP prefix at runtime. serviceSlug is only the interview-time service identifier and must not be used as either of those final slugs.

Step 1: Create client.ts
ts
// modelguide-api/src/features/connectors/catalog/{slug}/client.ts

interface {Name}FetchOptions {
  method?: string;
  body?: Record<string, unknown>;
  params?: Record<string, string | number | undefined>;
}

export class {Name}ApiError extends Error {
  constructor(
    public status: number,
    public body: string,
  ) {
    super(`{Name} API error ${status}: ${body}`);
    this.name = "{Name}ApiError";
  }
}

export type {Name}Fetcher = <T = unknown>(
  path: string,
  options?: {Name}FetchOptions,
) => Promise<T>;

export function create{Name}Fetcher(
  config: Record<string, string>,
): {Name}Fetcher {
  const baseUrl = config.baseUrl?.replace(/\/+$/, "");
  if (!baseUrl) {
    throw new Error("{Name} baseUrl is required");
  }

  const headers: Record<string, string> = {
    "Content-Type": "application/json",
    Accept: "application/json",
  };

  // Add auth headers based on the service's auth method
  if (config.apiKey) {
    headers["Authorization"] = `Bearer ${config.apiKey}`;
  }

  return async function fetch<T = unknown>(
    path: string,
    options?: {Name}FetchOptions,
  ): Promise<T> {
    const { method = "GET", body, params } = options ?? {};

    let url = `${baseUrl}${path}`;
    if (params) {
      const entries = Object.entries(params).filter(([, v]) => v !== undefined);
      if (entries.length > 0) {
        const qs = new URLSearchParams(entries.map(([k, v]) => [k, String(v)]));
        url += `?${qs}`;
      }
    }

    const response = await fetch(url, {
      method,
      headers,
      body: body ? JSON.stringify(body) : undefined,
    });

    if (!response.ok) {
      const text = await response.text();
      throw new {Name}ApiError(response.status, text);
    }

    return response.json() as Promise<T>;
  };
}

Important: The inner function name must NOT shadow globalThis.fetch. Use a distinct name like {slug}Fetch (e.g. medusaFetch).

Step 2: Create handlers.ts
ts
// modelguide-api/src/features/connectors/catalog/{slug}/handlers.ts

import type { ToolExecutionContext, ToolExecutionResult } from "../types";
import {
  {Name}ApiError,
  type {Name}Fetcher,
  create{Name}Fetcher,
} from "./client";

function errorResult(err: unknown): ToolExecutionResult {
  if (err instanceof {Name}ApiError) {
    return { success: false, error: `{Name} API ${err.status}: ${err.body}` };
  }
  const message = err instanceof Error ? err.message : String(err);
  return { success: false, error: message };
}

/**
 * Wraps a handler so every tool gets a fetcher and consistent error handling.
 */
function with{Name}(
  fn: (
    fetcher: {Name}Fetcher,
    ctx: ToolExecutionContext,
  ) => Promise<ToolExecutionResult>,
): (ctx: ToolExecutionContext) => Promise<ToolExecutionResult> {
  return async function handler(ctx) {
    try {
      const fetcher = create{Name}Fetcher(ctx.config);
      return await fn(fetcher, ctx);
    } catch (err) {
      return errorResult(err);
    }
  };
}

// Export one handler per tool:
export const listSomething = with{Name}(async (fetcher, ctx) => {
  const input = ctx.input as { /* typed input */ };
  const data = await fetcher<Record<string, unknown>>("/api/endpoint", {
    params: { /* query params */ },
  });
  return { success: true, data };
});

Rules:

  • Never throw from handlers — always return { success: false, error } via the wrapper
  • Type-cast ctx.input to the expected shape matching the tool's inputSchema
  • Use the with{Name}() wrapper for every exported handler
Show full SKILL.md (371 more words)Show less
Step 3: Create index.ts
ts
// modelguide-api/src/features/connectors/catalog/{slug}/index.ts

import type { ConnectorManifest, ConnectorToolDefinition } from "../types";
import { listSomething } from "./handlers";

const tools: ConnectorToolDefinition[] = [
  {
    catalog: {
      name: "List Something",                    // Human-readable
      description: "Description of what this tool does",
      inputSchema: {
        type: "object",
        properties: {
          query: { type: "string", description: "Search query" },
          limit: { type: "integer", description: "Max results", minimum: 1, maximum: 100 },
        },
        required: [],
      },
      defaultRequiresConfirmation: false,       // true for side effects
      defaultTimeoutSeconds: 30,                // 30 for reads, 60 for writes
    },
    handler: listSomething,
  },
];

const {slug}Manifest: ConnectorManifest = {
  name: "{Display Name}",
  slug: "{slug}",
  description: "...",
  connectorType: "api",
  configSchema: {
    baseUrl: {
      type: "string",
      required: true,
      description: "API base URL",
    },
    apiKey: {
      type: "secret",                           // encrypted in secrets table
      required: true,
      description: "API key for authentication",
    },
  },
  authMethods: ["api_key"],
  iconUrl: "https://example.com/icon.svg",
  tools,
};

export default {slug}Manifest;
Step 4: Register in Registry

Add the new connector import to modelguide-api/src/features/connectors/catalog/registry.ts:

ts
export async function loadAllManifests(): Promise<ConnectorManifest[]> {
  const modules = await Promise.all([
    import("./medusa/index"),
    import("./{slug}/index"),     // ← add new import here
  ]);
  // ...
}
Step 5: Create Unit Tests

Create modelguide-api/tests/unit/connectors/{slug}-handlers.test.ts:

ts
import { afterAll, describe, expect, mock, test } from "bun:test";
import {
  listSomething,
} from "@features/connectors/catalog/{slug}/handlers";
import type { ToolExecutionContext } from "@features/connectors/catalog/types";

const BASE_CONFIG: Record<string, string> = {
  baseUrl: "https://api.test-service.com",
  apiKey: "test_key_123",
};

function makeCtx(
  input: Record<string, unknown> = {},
  config = BASE_CONFIG,
): ToolExecutionContext {
  return {
    config,
    input,
    organizationId: "org-1",
    connectorId: "conn-1",
  };
}

const originalFetch = globalThis.fetch;
let fetchMock: ReturnType<typeof mock>;

function mockFetchSuccess(responseData: Record<string, unknown>) {
  fetchMock = mock(() =>
    Promise.resolve(
      new Response(JSON.stringify(responseData), {
        status: 200,
        headers: { "Content-Type": "application/json" },
      }),
    ),
  );
  globalThis.fetch = fetchMock as typeof fetch;
}

function mockFetchError(status: number, body: string) {
  fetchMock = mock(() => Promise.resolve(new Response(body, { status })));
  globalThis.fetch = fetchMock as typeof fetch;
}

afterAll(() => {
  globalThis.fetch = originalFetch;
});

describe("{Name} handlers", () => {
  describe("listSomething", () => {
    test("calls GET /api/endpoint", async () => {
      mockFetchSuccess({ items: [] });
      const result = await listSomething(makeCtx());
      expect(result.success).toBe(true);
      expect(fetchMock).toHaveBeenCalledTimes(1);

      const [url, opts] = fetchMock.mock.calls[0];
      expect(url).toContain("/api/endpoint");
      expect(opts.method).toBe("GET");
    });
  });

  describe("error handling", () => {
    test("returns error on API 404", async () => {
      mockFetchError(404, '{"message":"Not found"}');
      const result = await listSomething(makeCtx({ id: "bad" }));
      expect(result.success).toBe(false);
      expect(result.error).toContain("404");
    });

    test("returns error when baseUrl is missing", async () => {
      const result = await listSomething(makeCtx({}, { apiKey: "key" }));
      expect(result.success).toBe(false);
      expect(result.error).toContain("baseUrl");
    });

    test("returns error on network failure", async () => {
      fetchMock = mock(() => Promise.reject(new Error("Network error")));
      globalThis.fetch = fetchMock as typeof fetch;
      const result = await listSomething(makeCtx());
      expect(result.success).toBe(false);
      expect(result.error).toContain("Network error");
    });
  });
});
Step 6: Verify
bash
make api-typecheck     # must pass
make api-test-unit     # must pass
Step 7: Sync to Database
bash
cd modelguide-api && bun run src/features/connectors/catalog/sync.ts

Adding Tools to an Existing Connector

  1. Read the existing manifest (index.ts) and handlers (handlers.ts) to understand current tools
  2. Add handler in handlers.ts using the existing with{Name}() wrapper
  3. Add tool definition to the tools array in index.ts with full catalog metadata
  4. Add tests for the new handler in the existing test file
  5. Run make api-typecheck && make api-test-unit
  6. Sync to update the DB catalog

Modifying Existing Tools

  1. Read the current tool definition in index.ts and its handler in handlers.ts
  2. Update inputSchema if changing inputs (JSON Schema format)
  3. Update handler logic in handlers.ts
  4. Update defaultRequiresConfirmation / defaultTimeoutSeconds if behavior changed
  5. Update tests in the corresponding test file
  6. Run make api-typecheck && make api-test-unit
  7. Sync to push changes to the DB

Standards & Conventions

Naming
  • Tool names: Human-readable in catalog.name (e.g. "List Products")
  • Tool slugs: Auto-derived from name as snake_case (e.g. "list_products")
  • MCP tool names: {connectorSlug}_{toolSlug} (e.g. "glowbox_store_list_products")
Error Handling
  • Always use the with{Name}() HOF wrapper — never throw from handlers
  • Return { success: false, error: "message" } on failure
  • The wrapper catches exceptions from the client and formats them consistently
Input Schemas
  • JSON Schema format with type, properties, required
  • Add description on every property
  • Use minimum/maximum for numeric bounds
  • Nested objects are supported (see Medusa's setDeliveryAddress)
Config Schema
  • type: "string" — plain text config (base URLs, region codes)
  • type: "secret" — encrypted in the secrets table, resolved at runtime
  • type: "number" — numeric config
  • type: "boolean" — feature flags
Confirmation & Timeouts
  • defaultRequiresConfirmation: true for side effects: orders, payments, deletions, state mutations
  • defaultRequiresConfirmation: false for read-only operations
  • defaultTimeoutSeconds: 30 for reads
  • defaultTimeoutSeconds: 60 for writes and complex operations
Client Pattern
  • Factory function scoped to config: create{Name}Fetcher(config)
  • Custom error class: {Name}ApiError with status and body
  • Consistent headers (Content-Type, Accept, auth)
  • Strip trailing slashes from base URL
  • Inner fetch function name must NOT shadow globalThis.fetch

Key Reference Files

PurposePath
Type contractsmodelguide-api/src/features/connectors/catalog/types.ts
Registrymodelguide-api/src/features/connectors/catalog/registry.ts
Sync scriptmodelguide-api/src/features/connectors/catalog/sync.ts
DB schema (CatalogTool)modelguide-api/src/db/schema/core.ts
Medusa manifestmodelguide-api/src/features/connectors/catalog/medusa/index.ts
Medusa handlersmodelguide-api/src/features/connectors/catalog/medusa/handlers.ts
Medusa clientmodelguide-api/src/features/connectors/catalog/medusa/client.ts
Medusa testsmodelguide-api/tests/unit/connectors/medusa-handlers.test.ts
Connector servicemodelguide-api/src/features/connectors/connectors.service.ts
MCP handlermodelguide-api/src/features/mcp/mcp.handler.ts
MCP servicemodelguide-api/src/features/mcp/mcp.service.ts

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

Files

Just SKILL.md in .claude/skills/mg-connector of modelguide/modelguide.

Open the folder on GitHubat commit 554caa0

Compare with similar skills

Mg 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.

Mg Connector compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mg Connector this skillmodelguide/modelguide108—~4.5kAutomated safety check: PassMIT
API Connector Builderaffaan-m/ECC274k2 repos~666Automated safety check: PassMIT
Validate Connectorsimstudioai/sim30k—~5.7kAutomated safety check: PassApache-2.0
Add Connectorsimstudioai/sim30k—~7.8kAutomated safety check: PassApache-2.0
API Connector Builderaffaan-m/ECC274k—~463Automated safety check: PassMIT
API Connector Builderaffaan-m/ECC274k—~328Automated safety check: PassMIT

Similar skills

  • Build a new API connector or provider by matching the target repo's existing integration pattern exactly.

    274k GitHub starsUsed in 2 repos~666 tokens
    Backend & APIsAuto-check passed
  • Validate Connector

    simstudioai/sim

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

    30k GitHub stars~5.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Add Connector

    simstudioai/sim

    Add or update a Sim knowledge base connector for syncing documents from an external source, including auth mode, config fields, pagination, document mapping, tags, and registry wiring.

    30k GitHub stars~7.8k tokensUpdated today
    Knowledge ManagementAuto-check passed
  • ターゲット リポジトリの既存統合パターンに正確に一致する新しい API コネクターまたはプロバイダーを構築します。2 番目のアーキテクチャを発明せずに、1 つ以上の統合を追加するときに使用します。

    274k GitHub stars~463 tokensUpdated 2 days ago
    Auto-check passed
  • 通过匹配目标仓库现有的集成模式,构建一个新的API连接器或提供者。适用于在不发明第二种架构的情况下添加一个集成. An agent skill from affaan-m/ECC.

    274k GitHub stars~328 tokensUpdated 2 days ago
    Auto-check passed
  • Chat Connectors

    garrytan/gbrain

    Connect a ChatGPT or Claude account and sync its conversation history into the brain automatically.

    31k GitHub stars~2.8k tokensUpdated today
    Productivity & AutomationAuto-check passed

More from modelguide/modelguide

  • Mg CLI

    modelguide/modelguide

    Generate YAML configuration files and run CLI commands to onboard organizations into ModelGuide.

    108 GitHub stars~3.5k tokensUpdated 3 mo ago
    Auto-check passed
  • Mg Integrity Check

    modelguide/modelguide

    Use before committing significant code changes to verify project integrity.

    108 GitHub stars~2.4k tokensUpdated 3 mo ago
    Auto-check: notes
  • Mg Local DB Restore

    modelguide/modelguide

    Trigger phrases - "reset local db", "recreate local postgres", "restore dump to local", "reset local database", "load backup locally"

    108 GitHub stars~645 tokensUpdated 3 mo ago
    Auto-check passed
  • Mg Railway DB Backup

    modelguide/modelguide

    Backup a PostgreSQL database from a Railway environment. An agent skill from modelguide/modelguide.

    108 GitHub stars~534 tokensUpdated 3 mo ago
    Auto-check passed
  • Mg Railway DB Restore

    modelguide/modelguide

    Restore a PostgreSQL database backup to a Railway environment.

    108 GitHub stars~562 tokensUpdated 3 mo ago
    Auto-check passed
  • Mg Railway Deploy All

    modelguide/modelguide

    Deploy all ModelGuide services (API, UI, LB) to a Railway environment.

    108 GitHub stars~667 tokensUpdated 3 mo ago
    Auto-check passed

Questions about Mg Connector

What does Mg Connector do?

A skill your agent uses when the user asks to add a connector, create a connector, implement a connector for a service, add a tool to a connector, update a connector tool, or asks about connector…. Mg Connector is an agent skill from modelguide/modelguide. Use when the user asks to add a connector, create a connector, implement a connector for a service, add a tool to a connector, update a connector tool, or asks about connector architecture.

When should I use Mg Connector?

Mg Connector fits situations like: the user asks to add a connector; create a connector; implement a connector for a service; add a tool to a connector.

How do I install Mg Connector in Claude Code?

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

How do I install Mg Connector in Codex?

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

Can I use Mg 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 modelguide/modelguide --skill mg-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/mg-connector, .gemini/skills/mg-connector, .github/skills/mg-connector and .opencode/skills/mg-connector in your project.

What does Mg Connector need to run?

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

Does Mg Connector access the network?

SKILL.md names 1 domain. In commands or code: api.test-service.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Mg 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 Mg Connector use?

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

How many tokens does Mg Connector use?

About 4.5k tokens (SKILL.md is roughly 18k 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 Mg Connector?

Skills that share tags, products or a category with Mg Connector: API Connector Builder (affaan-m/ECC, 274k stars), Validate Connector (simstudioai/sim, 30k stars), Add Connector (simstudioai/sim, 30k stars) and API Connector Builder (affaan-m/ECC, 274k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mg Connector?

modelguide (a GitHub organization) maintains it in modelguide/modelguide, which has 108 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on June 20, 2026.

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