Skip to content
Development
Skill

/developing-genkit-dart

Generates code and provides documentation for the Genkit Dart SDK. Use when the user asks to build AI agents in Dart, use Genkit flows, or integrate LLMs into Dart/Flutter applications.

From plugin
google-skills
20k137 skills1 MCP
Install
$ npx -y skills add google/skills --skill developing-genkit-dart --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/developing-genkit-dart

Context preview

The summary Claude sees to decide when to auto-load this skill.

Generates code and provides documentation for the Genkit Dart SDK. Use when the user asks to build AI agents in Dart, use Genkit flows, or integrate LLMs into Dart/Flutter applications.

SKILL.md

developing-genkit-dart.SKILL.md
name: developing-genkit-dart
description: Generates code and provides documentation for the Genkit Dart SDK. Use when the user asks to build AI agents in Dart, use Genkit flows, or integrate LLMs into Dart/Flutter applications.
metadata:
  category: AiAndMachineLearning

Genkit Dart

Genkit Dart is an AI SDK for Dart that provides a unified interface for code generation, structured outputs, tools, flows, and AI agents.

Core Features and Usage

If you need help with initializing Genkit (`Genkit()`), Generation (`ai.generate`), Tooling (`ai.defineTool`), Flows (`ai.defineFlow`), Embeddings (`ai.embedMany`), streaming, or calling remote flow endpoints, please load the core framework reference: [references/genkit.md](references/genkit.md)

Prompts (Dotprompt)

`.prompt` files keep prompt content out of Dart code with YAML frontmatter plus a Handlebars template. See [references/dotprompt.md](references/dotprompt.md): `promptDir`, `ai.prompt()` (call/stream/render), variants, partials, named schemas via `defineSchema`, and the `tools`/`maxTurns`/`returnToolRequests`/`use` (middleware) frontmatter fields. A `.prompt` file can also back an agent directly via `definePromptAgent`.

Agents

Genkit Dart has an **agent** API for persistent, multi-turn conversations (sessions, snapshots, interrupts, branching, background execution, custom state, artifacts, and multi-agent delegation). Server APIs come from `package:genkit/genkit.dart` and the browser/HTTP client from `package:genkit/client.dart`. The `remoteAgent` client works from any Dart app, including **Flutter**, and the backend is fully interchangeable — it can talk to a Genkit agent implemented in Dart, JS/TypeScript, or Go over the same HTTP protocol. A few Dart specifics: interrupts are modeled as tools that return `.interrupt(...)` (there is no `defineInterrupt`), sub-agent delegation uses the `agents()` middleware from `package:genkit_middleware`, and there is no `artifacts()` middleware yet (define artifact tools directly).

For more details see:

  • [Agents](references/agents.md): defining/serving an agent and client-managed state (start here).
  • [Sessions & persistence](references/agents-sessions.md): session stores (`InMemorySessionStore`/`FileSessionStore`/`FirestoreSessionStore`).
  • [Human-in-the-loop / interrupts](references/agents-human-in-the-loop.md): pausing for approval/input via `.interrupt(...)` and resuming.
  • [Branching](references/agents-branching.md): forking a conversation from a snapshot.
  • [Background agents](references/agents-background.md): detaching long-running turns and polling.
  • [Working with state](references/agents-state.md): typed custom session state, auto-synced to the client.
  • [Artifacts](references/agents-artifacts.md): producing and reading named deliverables.
  • [Multi-agent orchestration](references/agents-multi-agent.md): delegating to sub-agents with the `agents()` middleware.
  • [Advanced custom agents](references/agents-custom.md): `defineCustomAgent` for full turn control.
  • [Deploying agents](references/agents-deployment.md): serving agents over HTTP with `genkit_shelf` (multiple agents, CORS).

Generative UI (A2UI)

Genkit Dart has an **A2UI** (Agent-to-UI) plugin (`genkit_a2ui`) that lets an agent stream interactive UI **surfaces** (cards, lists, forms, buttons), not just prose. The whole server-side integration is the `a2ui()` model middleware in an agent's (or `ai.generate`'s) `use` list; the Flutter client renders surfaces with the [`genui`](https://pub.dev/packages/genui) package plus the helpers in `package:genkit_a2ui/client.dart`. Dart specific: you must register `A2uiPlugin()` in `Genkit(plugins: [...])` (unlike JS, middleware is resolved by name from the registry).

  • [A2UI](references/a2ui.md): server middleware, options, Flutter/genui client rendering, user actions/forms, custom catalogs, and the security/trust boundary.

Genkit CLI (recommended)

`genkit start` unintrusively wraps any Dart program that uses the Genkit library, running it unchanged while capturing traces from every Genkit action so you can prove tools were actually called and inspect model I/O from the terminal, even for headless checks. It forwards stdio, so interactive CLI tools that rely on stdin/stdout work without issues. Running the app directly (`dart run`) skips trace capture, so you're debugging blind. Check install with `genkit --version`.

**Installation:**

curl -sL cli.genkit.dev | bash # Native CLI
# OR
npm install -g genkit-cli # Via npm
# OR run commands directly with npx without a global install (prefix every genkit command):
# npx genkit-cli start -- dart run main.dart

**Primary pattern (default):** prefix `genkit start --` to your normal run command. This collects telemetry from any Genkit code your program runs, whether triggered from the dev UI, your own web server/web UI, or a plain script. Starts the Developer UI (usually http://localhost:4000) for running flows, model and agent playground, and browsing traces:

genkit start -- dart run main.dart
genkit start --noui -- dart run main.dart   # same, without the Dev UI (still a persistent server)

`genkit start` runs until you stop it with Ctrl+C. That is expected and correct for the common cases: a server your web/mobile app calls, or an interactive CLI you exit yourself. `--noui` only drops the Dev UI; it is **not** a one-shot command and will not exit on its own. Do **not** use `genkit start` as a blocking step in automated/non-interactive contexts; use `flow:run` (below) for that.

**Non-interactive use (agents/CI):** add the global `--non-interactive` flag before `--` so the CLI uses defaults and never blocks on a prompt (e.g. the first-run analytics notice): `genkit start --non-interactive -- dart run main.dart` (works with `flow:run` too).

**Run a flow (`flow:run`):** invoke a specific flow by name from the CLI. Append your run command after `--` to spin up the runtime jus

Read more
Ships withgoogle-skills

This repository contains Agent Skills for Google products and technologies, including Google Cloud.

Get the whole plugin

Other skills on google-skills.