Agent SkillsDenisovAV/flutter_gemma › upgrade-genkit

upgrade-genkit

GitHub

在 monorepo 中同步升级 Genkit Flutter 包以适配 flutter_gemma 核心 API 变更,涵盖差异分析、编译修复、新功能集成及测试更新。

.claude/skills/upgrade-genkit/SKILL.md DenisovAV/flutter_gemma

Trigger Scenarios

flutter_gemma 核心 API 发生公共接口变更 PR 修改了 InferenceModel 等核心表面接口

Install

npx skills add DenisovAV/flutter_gemma --skill upgrade-genkit -g -y
More Options

Non-standard path

npx skills add https://github.com/DenisovAV/flutter_gemma/tree/main/.claude/skills/upgrade-genkit -g -y

Use without installing

npx skills use DenisovAV/flutter_gemma@upgrade-genkit

指定 Agent (Claude Code)

npx skills add DenisovAV/flutter_gemma --skill upgrade-genkit -a claude-code -g -y

安装 repo 全部 skill

npx skills add DenisovAV/flutter_gemma --all -g -y

预览 repo 内 skill

npx skills add DenisovAV/flutter_gemma --list

SKILL.md

Frontmatter
{
    "name": "upgrade-genkit",
    "description": "Realign the genkit_flutter_gemma \/ genkit_hybrid packages when flutter_gemma's core API changes — discover changes, fix compilation, support new features, update fakes\/tests, bump version. Monorepo-aware.",
    "user_invocable": true
}

Upgrade Genkit packages to the current flutter_gemma API

The Genkit integration packages (packages/genkit_flutter_gemma, packages/genkit_hybrid) wrap flutter_gemma's public API. When that API changes, they must be realigned or they break. In the monorepo they consume flutter_gemma as an in-workspace path dependency, so a core change can break them in the same commit — run this whenever a PR changes the public InferenceModel / InferenceChat / EmbeddingModel / Message / ModelResponse / enum surface.

Follow these 5 phases sequentially. Ask the user before deciding which new features to support (Phase 3).

Paths below are relative to the repo root. Core package = packages/flutter_gemma; genkit package = packages/genkit_flutter_gemma (mirror for genkit_hybrid). REPO_ROOT = monorepo root, PKG_DIR=packages/genkit_flutter_gemma, EXAMPLE_DIR=$PKG_DIR/example.

Phase 1: Reconnaissance

  1. Identify what changed in the core public API. In the monorepo flutter_gemma is a path dep (not pub), so don't rely on dart pub outdated — instead read the diff / CHANGELOG of packages/flutter_gemma:
    • git log --oneline -- packages/flutter_gemma/lib/flutter_gemma_interface.dart packages/flutter_gemma/lib/core
    • packages/flutter_gemma/CHANGELOG.md (top entry)
  2. Summarize for the user:
    • Breaking changes (removed/renamed APIs, changed signatures)
    • New APIs (new parameters, methods, enums, classes)
    • Bug fixes / Deprecations
  3. melos bootstrap (or dart pub get in PKG_DIR + EXAMPLE_DIR).

Phase 2: Fix Compilation

  1. cd packages/genkit_flutter_gemma && dart analyze (repeat for genkit_hybrid).
  2. Fix all compilation errors. Files that depend on flutter_gemma's API:
    • lib/src/flutter_gemma_runtime.dartFlutterGemma.getActiveModel(), getActiveEmbedder() signatures
    • lib/src/flutter_gemma_model.dartInferenceModel.createChat() signature, ModelResponse pattern matching, InferenceChat methods
    • lib/src/flutter_gemma_embedder.dartEmbeddingModel.generateEmbeddings(), PreferredBackend enum
    • lib/src/converters/request_converter.dartMessage constructors (.withImage, .withAudio, .toolCall, .toolResponse)
    • lib/src/converters/response_converter.dartModelResponse subtypes (TextResponse, FunctionCallResponse, ParallelFunctionCallResponse, ThinkingResponse)
    • lib/src/converters/tool_converter.dartTool constructor
    • lib/src/flutter_gemma_plugin.dartModelType, ModelFileType enums
    • test/src/fake_runtime.dartFakeInferenceModel, FakeInferenceChat, FakeEmbeddingModel must match upstream abstract-class signatures (see genkit CLAUDE.md)
  3. Repeat dart analyze until clean (0 issues).

Phase 3: Support New Features

Based on Phase 1, decide with the user which new APIs to support. Typical integration points:

New parameter in createChat() / createSession()

  1. Add field to $FlutterGemmaModelOptions in lib/src/flutter_gemma_options.dart
  2. Manually update lib/src/flutter_gemma_options.g.dart (constructor param, field with @override, fromJson, toJson, jsonSchema() entry)
  3. Extract from config + pass in lib/src/flutter_gemma_model.dart (_executeGeneration)
  4. Update FakeInferenceModel.createChat() in test/src/fake_runtime.dart (add param, store in last* field for assertions)

New enum value (e.g. ModelFileType)

  • Update comments in lib/src/flutter_gemma_plugin.dart (FlutterGemmaModelConfig.fileType)

New method on InferenceChat / InferenceModel

  • Add override in FakeInferenceChat / FakeInferenceModel in test/src/fake_runtime.dart

Changed model capabilities

  • Update supports map in lib/src/flutter_gemma_plugin.dart (list() method)

Changed message handling

  • Update converters in lib/src/converters/; update extractSystemInstruction() if system-message handling changed

IMPORTANT: *.g.dart here is manually maintained (build_runner not used by default). Always hand-update it when changing the schema.

Phase 4: Tests and Review

  1. Update existing tests that verify changed behavior.
  2. Add tests for each new feature from Phase 3.
  3. flutter test (in PKG_DIR) — all must pass.
  4. Run /review-pr for comprehensive review; fix what it surfaces.

Phase 5: Finalize

  1. Bump version in PKG_DIR/pubspec.yaml (minor for breaking behavior, patch for fixes/non-breaking additions).
  2. Update PKG_DIR/CHANGELOG.md (new section at top: breaking **Breaking**: / new features / fixes).
  3. Update PKG_DIR/README.md (options table, known limitations, quick-start if usage changed).
  4. Verify: dart analyze && flutter test && dart pub publish --dry-run (all clean).
  5. The release itself goes through the release skill (genkit packages release in lockstep with the monorepo) — do not publish standalone.

Version History

  • 451fc69 Current 2026-08-20 14:01

Same Skill Collection

.claude/skills/build-native/SKILL.md
.claude/skills/ci-status/SKILL.md
.claude/skills/release/SKILL.md
.claude/skills/review-pr/SKILL.md
packages/flutter_gemma_agent/assets/skills/get-current-time/SKILL.md
packages/flutter_gemma_agent/assets/skills/interactive-map/SKILL.md
packages/flutter_gemma_agent/assets/skills/kitchen-adventure/SKILL.md
packages/flutter_gemma_agent/test/fixtures/skills/interactive-map.SKILL.md
packages/flutter_gemma_agent/test/fixtures/skills/kitchen-adventure.SKILL.md
packages/flutter_gemma_agent/assets/skills/calculate-hash/SKILL.md
packages/flutter_gemma_agent/assets/skills/create-calendar-event/SKILL.md
packages/flutter_gemma_agent/assets/skills/query-wikipedia/SKILL.md
packages/flutter_gemma_agent/assets/skills/send-email/SKILL.md
packages/flutter_gemma_agent/test/fixtures/skills/calculate-hash.SKILL.md
packages/flutter_gemma_agent/test/fixtures/skills/send-email.SKILL.md
packages/flutter_gemma_agent/assets/skills/qr-code/SKILL.md

Metadata

Files
0
Version
451fc69
Hash
cd77cbf6
Indexed
2026-08-20 14:01

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-25 08:46
浙ICP备14020137号-1 $방문자$