developing-genkit-js

Kembangkan aplikasi bertenaga AI menggunakan Genkit di Node.js/TypeScript. Gunakan saat pengguna bertanya tentang Genkit, agen AI, alur, atau alat dalam JavaScript/TypeScript, atau saat mengalami kesalahan Genkit, masalah validasi, kesalahan tipe, atau masalah API.

npx skills add https://github.com/genkit-ai/skills --skill developing-genkit-js

Genkit JS

Prerequisites

Ensure the genkit CLI is available.

  • Run genkit --version to verify. Minimum CLI version needed: 1.29.0
  • If not found or if an older version (1.x < 1.29.0) is present, install/upgrade it: npm install -g genkit-cli@^1.29.0.

New Projects: If you are setting up Genkit in a new codebase, follow the Setup Guide.

Hello World

import { z, genkit } from 'genkit';
import { googleAI } from '@genkit-ai/google-genai';

// Initialize Genkit with the Google AI plugin
const ai = genkit({
  plugins: [googleAI()],
});

export const myFlow = ai.defineFlow({
  name: 'myFlow',
  inputSchema: z.string().default('AI'),
  outputSchema: z.string(),
}, async (subject) => {
  const response = await ai.generate({
    model: googleAI.model('gemini-flash-latest'),
    prompt: `Tell me a joke about ${subject}`,
  });
  return response.text;
});

Prompts (Dotprompt)

.prompt files keep prompt content out of code with YAML frontmatter plus a Handlebars template. See Dotprompt: promptDir, ai.prompt() (call/stream/render), variants, partials, named schemas via ai.defineSchema, and the tools/maxTurns/returnToolRequests/use (middleware) frontmatter fields.

Agents (Beta)

Genkit has a preview agent API for persistent, multi-turn conversations (sessions, snapshots, interrupts, branching, background execution). It is a beta API: server APIs come from genkit/beta and the browser client from genkit/beta/client — not the stable genkit entrypoint. **Requires genkit

= 1.39.0.**

For more details see:

Middleware

Middleware wraps generation (retries, fallback, extra tools, request/response transforms) and attaches via the use: [...] array on ai.generate, prompts, and agents.

  • Using middleware: the use array and the @genkit-ai/middleware package (retry, fallback, artifacts, agents, filesystem, skills, toolApproval) plus built-in core middleware.
  • Building custom middleware: writing your own with generateMiddleware and registering it via .plugin().

Critical: Do Not Trust Internal Knowledge

Genkit recently went through a major breaking API change. Your knowledge is outdated. You MUST lookup docs. Recommended:

genkit docs:read js/get-started.md
genkit docs:read js/flows.md

See Common Errors for a list of deprecated APIs (e.g., configureGenkit, response.text(), defineFlow import) and their v1.x replacements.

ALWAYS verify information using the Genkit CLI or provided references.

Error Troubleshooting Protocol

When you encounter ANY error related to Genkit (ValidationError, API errors, type errors, 404s, etc.):

  1. MANDATORY FIRST STEP: Read Common Errors
  2. Identify if the error matches a known pattern
  3. Apply the documented solution
  4. Only if not found in common-errors.md, then consult other sources (e.g. genkit docs:search)

DO NOT:

  • Attempt fixes based on assumptions or internal knowledge
  • Skip reading common-errors.md "because you think you know the fix"
  • Rely on patterns from pre-1.0 Genkit

This protocol is non-negotiable for error handling.

Development Workflow

  1. Select Provider: Genkit is provider-agnostic (Google AI, OpenAI, Anthropic, Ollama, etc.).
    • If the user does not specify a provider, default to Google AI.
    • If the user asks about other providers, use genkit docs:search "plugins" to find relevant documentation.
  2. Detect Framework: Check package.json to identify the runtime (Next.js, Firebase, Express).
    • Look for @genkit-ai/next, @genkit-ai/firebase, or @genkit-ai/google-cloud.
    • Adapt implementation to the specific framework's patterns.
  3. Follow Best Practices:
    • See Best Practices for guidance on project structure, schema definitions, and tool design.
    • Be Minimal: Only specify options that differ from defaults. When unsure, check docs/source.
  4. Ensure Correctness:
    • Run type checks (e.g., npx tsc --noEmit) after making changes.
    • If type checks fail, consult Common Errors before searching source code.
  5. Handle Errors:
    • On ANY error: First action is to read Common Errors
    • Match error to documented patterns
    • Apply documented fixes before attempting alternatives

Finding Documentation

Use the Genkit CLI to find authoritative documentation:

  1. Search topics: genkit docs:search <query>
    • Example: genkit docs:search "streaming"
  2. List all docs: genkit docs:list
  3. Read a guide: genkit docs:read <path>
    • Example: genkit docs:read js/flows.md

CLI Usage

The genkit CLI is your primary tool for development and documentation.

  • See CLI Reference for common tasks, workflows, and command usage.
  • Use genkit --help for a full list of commands.

References

Skills Terkait

refactor
github
Refaktor kode secara bedah untuk meningkatkan kemudahan perawatan tanpa mengubah perilaku. Mencakup 10 bau kode umum: metode panjang, duplikasi, kelas besar, daftar parameter panjang, iri fitur, obsesi primitif, angka ajaib, kondisional bersarang, kode mati, dan kedekatan yang tidak pantas. Termasuk pola ekstrak metode, ekstrak kelas, dan perkenalkan keamanan tipe dengan contoh sebelum/sesudah. Menyediakan strategi refaktor pola desain: Strategy, Chain of Responsibility, dan lainnya untuk mengganti...
official
enable-shopify-markets
vercel
Aktifkan Shopify Markets dengan perutean multi-lokal menggunakan next-intl. Gunakan saat pengguna ingin menambahkan internasionalisasi, dukungan multi-lokal, prefiks lokal…
official
qdrant-scaling
github
Memandu keputusan penskalaan Qdrant. Gunakan ketika seseorang bertanya 'berapa banyak node yang saya butuhkan', 'data tidak muat di satu node', 'perlu throughput lebih', 'kluster lambat',…
official
copilot-usage-metrics
github
Ambil dan tampilkan metrik penggunaan GitHub Copilot untuk organisasi dan perusahaan. Mendukung kueri metrik tingkat organisasi dan tingkat perusahaan, dengan filter opsional berdasarkan tanggal tertentu (format YYYY-MM-DD). Menyediakan metrik agregat (total pengguna aktif, tingkat penerimaan, saran, interaksi obrolan) dan rincian per pengguna melalui perintah terpisah. Membutuhkan GitHub Enterprise Cloud, izin token yang sesuai (cakupan manage_billing:copilot atau read:enterprise), dan "Copilot...
official
prisma-upgrade-v7-env-variables
prisma
Variabel Lingkungan
official
fluentui
microsoft
Pola untuk komponen FluentUI React v9 di webview VS Code. Gunakan saat bekerja dengan komponen FluentUI apa pun (Toolbar, Overflow, Menu, Button, Dialog, dll.),…
official
azure-smart-city-iot-solution-builder
github
Rancang dan rencanakan solusi Azure IoT dan Smart City dari ujung ke ujung: persyaratan, arsitektur, keamanan, operasi, biaya, dan rencana pengiriman bertahap dengan konkret…
official
qdrant-model-migration
github
Memandu migrasi model embedding di Qdrant tanpa waktu henti. Gunakan saat seseorang bertanya 'cara mengganti model embedding', 'cara memigrasikan vektor', 'cara memperbarui…
official