AI Agent - Aug 3, 2026

Genkit Agent Skills: TypeScript, Python, and Dart

Quick answer

Google says Genkit supports runtime Agent Skills in TypeScript, Go, Python, and Dart. All four follow the same open SKILL.md format and progressive-disclosure sequence, but their package names and APIs are not interchangeable.

SDKCurrent runtime entryFramework maturity in current Genkit repositoryPackage version observed Aug. 3, 2026
TypeScriptskills({ skillPaths: ['./skills'] }) from @genkit-ai/middlewareProduction-ready0.8.1
Go&middleware.Skills{SkillPaths: []string{"./skills"}}Production-readyGo SDK v1.11.0
PythonSkills(skill_paths=['skills']) from genkit_middlewareBeta0.9.0
Dartskills(skillPaths: ['skills']) plus SkillsPlugin() from genkit_middlewarePreview0.5.1

Versions are registry snapshots, not recommended pins. Review the release notes, select a compatible version, lock it in the language’s dependency file, and test the exact artifact you deploy.

Use the Go setup guide for Google’s complete documented middleware flow. Use the Genkit Agent Skills overview for the architecture and governance decision.

TypeScript setup

Install the current middleware package with the project’s approved package manager, then import skills:

import { genkit } from 'genkit';
import { skills } from '@genkit-ai/middleware';

const ai = genkit({ /* reviewed model plugins */ });

const response = await ai.generate({
  prompt: 'How do I run tests in this repo?',
  use: [skills({ skillPaths: ['./skills'] })],
});

The current implementation scans direct subdirectories, injects the folder name and frontmatter description into the system prompt, and provides a use_skill tool that reads the selected SKILL.md. It defaults to skills when no path is provided.

Python setup

The Python package exposes a Skills class and snake-case option names:

from genkit import Genkit
from genkit_middleware import Middleware, Skills

ai = Genkit(plugins=[Middleware()])

response = await ai.generate(
    prompt='Help me with Python',
    use=[Skills(skill_paths=['skills'])],
)

Genkit currently labels its Python SDK Beta. That does not make every workflow unsuitable for production, but it does require explicit compatibility tests, release monitoring, rollback, and owners who can absorb API changes.

Dart setup

The current Dart middleware package registers a plugin during Genkit initialization and uses camel-case named arguments:

import 'package:genkit/genkit.dart';
import 'package:genkit_middleware/genkit_middleware.dart';

final ai = Genkit(
  plugins: [SkillsPlugin()],
);

final response = await ai.generate(
  prompt: 'Help me debug this issue.',
  use: [skills(skillPaths: ['skills'])],
);

Genkit currently labels Dart Preview. Keep experimental or internal workloads bounded until the exact SDK, middleware package, deployment target, tracing, and failure behavior meet the organization’s release bar.

What is portable—and what is not

Portable across the implementations:

  • a folder containing required SKILL.md instructions;
  • a concise name and description in YAML frontmatter;
  • initial discovery from the skill inventory;
  • on-demand activation through use_skill;
  • full instructions loaded only for the selected skill.

Not automatically portable:

  • import and package names;
  • option casing and plugin initialization;
  • middleware composition and tracing APIs;
  • error behavior for unreadable paths or malformed files;
  • filesystem, shell, network, approval, or deployment tools;
  • lifecycle and compatibility guarantees.

Do not translate one SDK snippet by changing punctuation. Read the current implementation or package documentation for the chosen language and run an activation test suite against the locked dependency.

Runtime Skills versus coding-assistant Skills

The runtime middleware described here gives an agent in your Genkit application access to your own skill library. A separate genkit-ai/skills repository contains Agent Skills that teach coding assistants how to build Genkit applications in JavaScript, Go, Python, and Dart.

Those are two different uses of the same open format. Installing a developer-assistant skill does not add runtime middleware to an application, and enabling runtime middleware does not automatically teach an external coding assistant the current Genkit APIs.

Shared production boundary

Across all SDKs, the Skills middleware loads instructions. It does not make those instructions correct and should not silently grant file, script, network, or production authority. Treat skills as reviewed code:

  1. version each skill with its test cases;
  2. test positive, negative, and ambiguous activation prompts;
  3. restrict skill directories to trusted, reviewed content;
  4. give downstream tools separate least-privilege permissions;
  5. record the skill and dependency versions in traces;
  6. require human approval for consequential actions.

Progressive disclosure reduces persistent prompt load. It does not prevent prompt injection, guarantee the correct skill is selected, or verify the final answer.

Frequently asked questions

Does Genkit support Agent Skills in TypeScript, Python, and Dart?

Yes. Google’s July 31, 2026 announcement names TypeScript, Go, Dart, and Python. The current implementations use @genkit-ai/middleware in TypeScript, genkit-middleware in Python, and genkit_middleware in Dart, with different method and plugin syntax.

Are the Genkit Agent Skills APIs identical across SDKs?

No. The SKILL.md folder format and discovery-activation sequence are shared, but package names, option casing, initialization, and SDK maturity differ. Verify the implementation for the selected language instead of translating a snippet mechanically.

Which Genkit language should I choose for Agent Skills?

Prefer the language already owned by the service team, then account for current maturity: Genkit describes JavaScript/TypeScript and Go as production-ready, Python as Beta, and Dart as Preview. Validate the exact Skills middleware package and required controls before release.

Official sources

Source check: August 3, 2026. Recheck package versions, SDK maturity, method names, path behavior, and security controls before implementation.