DE

developing-genkit-tooling

Defines naming conventions, CLI structures, and MCP patterns for building Genkit-compatible tools.

Install

mkdir -p .claude/skills/developing-genkit-tooling && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/2651" && unzip -o skill.zip -d .claude/skills/developing-genkit-tooling && rm skill.zip

Installs to .claude/skills/developing-genkit-tooling

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Best practices for authoring Genkit tooling, including CLI commands and MCP server tools. Covers naming conventions, architectural patterns, and consistency guidelines.
168 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Implement CLI commands using kebab-case naming conventions
  • Develop MCP server tools using snake_case formatting
  • Manage Genkit project runtime lifecycles via manager utilities
  • Format CLI output for machine readability and streaming
  • Register static and runtime-dependent MCP tools

How it works

The skill provides architectural patterns for CLI and MCP development, enforcing naming standards and using specific utilities to interact with the project runtime.

Inputs & outputs

You give it
Tool definition requirements
You get back
Standardized CLI command or MCP tool implementation

When to use developing-genkit-tooling

  • Develop a new Genkit CLI command
  • Implement an MCP server tool
  • Format Genkit project architecture
  • Apply CLI logging standards

About this skill

Developing Genkit Tooling

Naming Conventions

Consistency in naming helps users and agents navigate the tooling.

CLI Commands

Use kebab-case with colon separators for subcommands.

  • Format: noun:verb or category:action
  • Examples: flow:run, eval:run, init
  • Arguments: Use camelCase in code (flowName) but standard format in help text (<flowName>).

MCP Tools

Use snake_case for tool names to align with MCP standards.

  • Format: verb_noun
  • Examples: list_flows, run_flow, list_genkit_docs, read_genkit_docs

CLI Command Architecture

Commands are implemented in cli/src/commands/ using commander.

Runtime Interaction

Most commands require interacting with the user's project runtime. Use the runWithManager utility to handle the lifecycle of the runtime process.

import { runWithManager } from '../utils/manager-utils';

// ... command definition ...
.action(async (arg, options) => {
  await runWithManager(await findProjectRoot(), async (manager) => {
    // Interact with manager here
    const result = await manager.runAction({ key: arg });
  });
});

Output Formatting

  • Logging: Use logger from @genkit-ai/tools-common/utils.
  • Machine Readable: Provide options for JSON output or file writing when the command produces data.
  • Streaming: If the operation supports streaming (like flow:run), provide a --stream flag and pipe output to stdout.

MCP Tool Architecture

MCP tools in cli/src/mcp/ follow two distinct patterns: Static and Runtime.

Static Tools (e.g., Docs)

These tools do not require a running Genkit project context.

  • Registration: defineDocsTool(server: McpServer)
  • Dependencies: Only the server instance.
  • Use Case: Documentation, usage guides, global configuration.

Runtime Tools (e.g., Flows, Runtime Control)

These tools interact with a specific Genkit project's runtime.

  • Registration: defineRuntimeTools(server: McpServer, options: McpToolOptions)
  • Dependencies: Requires options containing manager (process manager) and projectRoot.
  • Schema: MUST use getCommonSchema(options.explicitProjectRoot, ...) to ensure the tool can accept a projectRoot argument when required (e.g., in multi-project environments).
// Runtime tool definition pattern
server.registerTool(
  'my_runtime_tool',
  {
    inputSchema: getCommonSchema(options.explicitProjectRoot, {
      myArg: z.string(),
    }),
  },
  async (opts) => {
    // Resolve project root before action
    const rootOrError = resolveProjectRoot(
      options.explicitProjectRoot,
      opts,
      options.projectRoot
    );
    if (typeof rootOrError !== 'string') return rootOrError;

    // access manager via options.manager
  }
);

Error Handling

MCP tools should generally catch errors and return them as content blocks with isError: true rather than throwing exceptions, which ensures the client receives a structured error response.

try {
  // operation
} catch (err) {
  const message = err instanceof Error ? err.message : String(err);
  return {
    isError: true,
    content: [{ type: 'text', text: `Error: ${message}` }],
  };
}

When not to use it

  • Projects not using the Genkit framework
  • Simple scripts that do not require CLI or MCP integration

Prerequisites

Genkit project environment

Limitations

  • Requires adherence to specific naming and registration patterns
  • Runtime tools must handle project root resolution

How it compares

It enforces strict naming and architectural patterns specific to the Genkit ecosystem, ensuring consistency across tooling compared to generic implementations.

Compared to similar skills

developing-genkit-tooling side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
developing-genkit-tooling (this skill)26moNo flagsIntermediate
mcporter72moNo flagsIntermediate
calcom-api23moNo flagsIntermediate
vercel-sdk-patterns125dReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

mcporter

openclaw

Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.

726

calcom-api

calcom

Interact with the Cal.com API v2 to manage scheduling, bookings, event types, availability, and calendars. Use this skill when building integrations that need to create or manage bookings, check availability, configure event types, or sync calendars with Cal.com's scheduling infrastructure.

216

vercel-sdk-patterns

jeremylongshore

Execute apply production-ready Vercel SDK patterns for TypeScript and Python. Use when implementing Vercel integrations, refactoring SDK usage, or establishing team coding standards for Vercel. Trigger with phrases like "vercel SDK patterns", "vercel best practices", "vercel code patterns", "idiomatic vercel".

13

deepgram-webhooks-events

jeremylongshore

Implement Deepgram callback and webhook handling for async transcription. Use when implementing callback URLs, processing async transcription results, or handling Deepgram event notifications. Trigger with phrases like "deepgram callback", "deepgram webhook", "async transcription deepgram", "deepgram events", "deepgram notifications".

01

replit-webhooks-events

jeremylongshore

Implement Replit webhook signature validation and event handling. Use when setting up webhook endpoints, implementing signature verification, or handling Replit event notifications securely. Trigger with phrases like "replit webhook", "replit events", "replit webhook signature", "handle replit events", "replit notifications".

01

instantly-core-workflow-b

jeremylongshore

Execute Instantly secondary workflow: Core Workflow B. Use when implementing secondary use case, or complementing primary workflow. Trigger with phrases like "instantly secondary workflow", "secondary task with instantly".

00

Search skills

Search the agent skills registry