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.zipInstalls 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.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
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:verborcategory: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
loggerfrom@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--streamflag 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
serverinstance. - 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
optionscontainingmanager(process manager) andprojectRoot. - Schema: MUST use
getCommonSchema(options.explicitProjectRoot, ...)to ensure the tool can accept aprojectRootargument 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
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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| developing-genkit-tooling (this skill) | 2 | 6mo | No flags | Intermediate |
| mcporter | 7 | 2mo | No flags | Intermediate |
| calcom-api | 2 | 3mo | No flags | Intermediate |
| vercel-sdk-patterns | 1 | 25d | Review | Intermediate |
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.
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.
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".
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".
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".
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".