Agent skill

Flutter Building Plugins

by btwld in btwld/superdeck

Builds Flutter plugins that provide native interop for other apps to use.

BSD-3-ClauseAuto-check passedMobile

Install Flutter Building Plugins

skills CLI
$ npx skills add btwld/superdeck --skill flutter-building-plugins -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install btwld/superdeck flutter-building-plugins --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/btwld/superdeck.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/flutter-building-plugins .claude/skills/flutter-building-plugins && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
flutter-building-plugins
GitHub stars
129
Token cost
~2.2k tokens
SKILL.md length
666 words
Files
1
Skills in repo
23
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Builds Flutter plugins that provide native interop for other apps to use.

  • Works in 3 steps: App-facing interface: The primary… → Platform interface: The package defining… → Platform implementations: Independent…
  • Creating reusable packages that bridge Flutter with platform-specific functionality
  • SKILL.md covers Contents, Architecture & Design Patterns, Workflow: Creating a New Plugin and Workflow: Implementing Android…, plus 3 more sections
  • Calls flutter

What it does

Flutter Building Plugins is an agent skill from btwld/superdeck. Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile, covering Cross-platform mobile apps. It works with Flutter and Android. The repository describes itself as: Presentation slides for Flutter with Flutter. The licence is BSD-3-Clause.

When your agent uses it

  • Creating reusable packages that bridge Flutter with platform-specific functionality
  • Tasks that involve Cross-platform mobile apps

Example prompts

  • “Use the flutter-building-plugins skill to build Flutter plugins that provide native interop for other apps to use”
  • “/flutter-building-plugins”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. App-facing interface: The primary package users depend on. It exports the public API.
  2. Platform interface: The package defining the common interface that all platform implementations must implement.
  3. Platform implementations: Independent packages containing platform-specific code (e.g., my_plugin_android, my_plugin_windows).

What it can do on your machine

Read from SKILL.md and the folder at commit 815a746. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • flutter

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Flutter Building Plugins loads about 2.2k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 666 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~48
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from btwld/superdeck at commit 815a746, republished under its BSD-3-Clause licence (© btwld). 666 words, ~2,168 tokens.

Download SKILL.mdSave it as .claude/skills/flutter-building-plugins/SKILL.md (or your agent's skills folder).
name
flutter-building-plugins
description
Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.
metadata.model
models/gemini-3.1-pro-preview
metadata.last_modified
Thu, 12 Mar 2026 22:21:35 GMT

Developing Flutter Plugins

Contents

Architecture & Design Patterns

Federated Plugins

Implement federated plugins to split a plugin's API across multiple packages, allowing independent teams to build platform-specific implementations. Structure federated plugins into three distinct components:

  1. App-facing interface: The primary package users depend on. It exports the public API.
  2. Platform interface: The package defining the common interface that all platform implementations must implement.
  3. Platform implementations: Independent packages containing platform-specific code (e.g., my_plugin_android, my_plugin_windows).
FFI vs. Standard Plugins

Choose the correct plugin template based on your native interoperability requirements:

  • Standard Plugins (--template=plugin): Use for accessing platform-specific APIs (e.g., Android SDK, iOS frameworks) via Method Channels.
  • FFI Plugins (--template=plugin_ffi): Use for accessing C/C++ native libraries, configuring Google Play services on Android, or using static linking on iOS/macOS.
    • Constraint: FFI plugin packages support bundling native code and method channel registration code, but not method channels themselves. If you require both method channels and FFI, use the standard non-FFI plugin template.

Workflow: Creating a New Plugin

Follow this workflow to initialize a new plugin package.

Task Progress:

  • Determine if the plugin requires FFI or standard Method Channels.
  • Execute the appropriate flutter create command.
  • Verify the generated directory structure.

Conditional Initialization:

  • If creating a STANDARD plugin: Run the following command, specifying your supported platforms, organization, and preferred languages (defaults are Swift and Kotlin):
    bash
    flutter create --template=plugin \
      --platforms=android,ios,web,linux,macos,windows \
      --org com.example.organization \
      -i objc -a java \
      my_plugin
  • If creating an FFI plugin: Run the following command to generate a project with Dart code in lib (using dart:ffi) and native source code in src (with a CMakeLists.txt):
    bash
    flutter create --template=plugin_ffi my_ffi_plugin

Workflow: Implementing Android Platform Code

Always edit Android platform code using Android Studio to ensure proper code completion and Gradle synchronization.

Task Progress:

  • Run initial build to generate necessary Gradle files.
  • Open the Android module in Android Studio.
  • Implement FlutterPlugin and lifecycle-aware interfaces.
  • Refactor legacy registerWith logic.
  • Run validator -> review errors -> fix.
  1. Generate Build Files: Build the code at least once before editing to resolve dependencies.
    bash
    cd example
    flutter build apk --config-only
  2. Open in IDE: Launch Android Studio and open the example/android/build.gradle or example/android/build.gradle.kts file.
  3. Locate Source: Navigate to your plugin's source code at java/<organization-path>/<PluginName>.
  4. Implement V2 Embedding:
    • Implement the FlutterPlugin interface.
    • Ensure your plugin class has a public constructor.
    • Extract shared initialization logic from the legacy registerWith() method and the new onAttachedToEngine() method into a single private method. Both entry points must call this private method to maintain backward compatibility without duplicating logic.
  5. Implement Lifecycle Interfaces:
    • If your plugin requires an Activity reference: Implement the ActivityAware interface and handle the onAttachedToActivity, onDetachedFromActivityForConfigChanges, onReattachedToActivityForConfigChanges, and onDetachedFromActivity callbacks.
    • If your plugin runs in a background Service: Implement the ServiceAware interface.
  6. Update Example App: Ensure the example app's MainActivity.java extends the v2 embedding io.flutter.embedding.android.FlutterActivity.
  7. Document API: Document all non-overridden public members in your Android implementation.
Show full SKILL.md (199 more words)Show less

Workflow: Implementing Windows Platform Code

Always edit Windows platform code using Visual Studio.

Task Progress:

  • Run initial build to generate the Visual Studio solution.
  • Open the solution in Visual Studio.
  • Implement C++ logic.
  • Rebuild the solution.
  1. Generate Build Files:
    bash
    cd example
    flutter build windows
  2. Open in IDE: Launch Visual Studio and open the example/build/windows/hello_example.sln file.
  3. Locate Source: Navigate to hello_plugin/Source Files and hello_plugin/Header Files in the Solution Explorer.
  4. Rebuild: After making changes to the C++ plugin code, you must rebuild the solution in Visual Studio before running the app, or the outdated plugin binary will be used.

Workflow: Adding Platforms to an Existing Plugin

Use this workflow to retrofit an existing plugin with support for additional platforms.

Task Progress:

  • Run the platform addition command.
  • Update iOS/macOS podspecs (if applicable).
  • Implement the platform-specific code.
  1. Run Create Command: Navigate to the root directory of your existing plugin and run:
    bash
    flutter create --template=plugin --platforms=web,macos .
  2. Update Podspecs: If adding iOS or macOS support, open the generated .podspec file and configure the required dependencies and deployment targets.

Examples

Android V2 Embedding Implementation

High-fidelity example of an Android plugin implementing FlutterPlugin and ActivityAware while maintaining legacy compatibility.

java
package com.example.myplugin;

import androidx.annotation.NonNull;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;

/** MyPlugin */
public class MyPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware {
  private MethodChannel channel;

  // Public constructor required for v2 embedding
  public MyPlugin() {}

  @Override
  public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
    setupChannel(flutterPluginBinding.getBinaryMessenger());
  }

  // Legacy v1 embedding support
  public static void registerWith(Registrar registrar) {
    MyPlugin plugin = new MyPlugin();
    plugin.setupChannel(registrar.messenger());
  }

  // Shared initialization logic
  private void setupChannel(BinaryMessenger messenger) {
    channel = new MethodChannel(messenger, "my_plugin");
    channel.setMethodCallHandler(this);
  }

  @Override
  public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
    if (call.method.equals("getPlatformVersion")) {
      result.success("Android " + android.os.Build.VERSION.RELEASE);
    } else {
      result.notImplemented();
    }
  }

  @Override
  public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
    channel.setMethodCallHandler(null);
  }

  @Override
  public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
    // Handle Activity attachment
  }

  @Override
  public void onDetachedFromActivityForConfigChanges() {
    // Handle config changes
  }

  @Override
  public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
    // Handle reattachment
  }

  @Override
  public void onDetachedFromActivity() {
    // Clean up Activity references
  }
}

© btwld, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/flutter-building-plugins of btwld/superdeck.

Open the folder on GitHubat commit 815a746

Compare with similar skills

Flutter Building Plugins next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Flutter Building Plugins compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Flutter Building Plugins this skillbtwld/superdeck129—~2.2kAutomated safety check: PassBSD-3-Clause
Frb Android Emulator Preparefzyzcjy/flutter_rust_bridge5.4k—~2.1kAutomated safety check: NotesMIT
Claude Android NinjaDrjacky/claude-android-ninja124—~5.2kAutomated safety check: PassApache-2.0
SimdeckNativeScript/SimDeck152—~3.6kAutomated safety check: PassMIT
Detour Onboardingsoftware-mansion-labs/skills291—~2.8kAutomated safety check: PassNone
Aaalice Dev SessionsAaalice233/Aaalice_NAI_Launcher187—~902Automated safety check: PassMIT

Similar skills

  • Frb Android Emulator Prepare

    fzyzcjy/flutter_rust_bridge

    A skill your agent uses when preparing, installing, diagnosing, or explaining the host Android Emulator environment for flutterrustbridge local runtime validation, including Android SDK command-line…

    5.4k GitHub stars~2.1k tokensUpdated yesterday
    MobileAuto-check: notes
  • Claude Android Ninja

    Drjacky/claude-android-ninja

    Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.

    124 GitHub stars~5.2k tokensUpdated 8 days ago
    MobileAuto-check passed
  • Simdeck

    NativeScript/SimDeck

    A skill your agent uses for simulator lifecycle, app install/launch, live viewing, UI inspection, touch/keyboard automation, screenshots, recordings, logs, pasteboard, hardware controls, and…

    152 GitHub stars~3.6k tokensUpdated 26 days ago
    MobileAuto-check passed
  • Detour Onboarding

    software-mansion-labs/skills

    Complete onboarding guide for developers who are new to Detour, the open-source deferred deep linking SDK by Software Mansion.

    291 GitHub stars~2.8k tokensUpdated 9 days ago
    MobileAuto-check passed
  • Aaalice Dev Sessions

    Aaalice233/Aaalice_NAI_Launcher

    管理 Aaalice NAI Launcher 项目专用的 Windows 与 Android Flutter 开发会话。用户提到 PC热重载、安卓热重载、启动/关闭/重建独立命令行窗口、模拟器启动异常或检查双端会话时使用。

    187 GitHub stars~902 tokensUpdated 2 days ago
    MobileAuto-check passed
  • Pangle Ad Integration

    nullptrx/pangle_flutter

    Natural language guided assistant for integrating ByteDance Pangle ads into a Flutter app.

    129 GitHub stars~3.3k tokensUpdated 4 mo ago
    MobileAuto-check passed

More from btwld/superdeck

All 23 skills in this repo
  • Create, review, or edit SuperDeck Markdown presentations and Flutter presentation apps.

    129 GitHub stars~649 tokensUpdated 9 days ago
    Auto-check passed
  • Adds home screen widgets to a Flutter app for Android and iOS.

    129 GitHub stars~2.2k tokensUpdated 9 days ago
    Auto-check passed
  • Flutter Animating Apps

    btwld/superdeck

    Implements animated effects, transitions, and motion in a Flutter app.

    129 GitHub stars~1.9k tokensUpdated 9 days ago
    Auto-check passed
  • Architects a Flutter application using the recommended layered approach (UI, Logic, Data).

    129 GitHub stars~1.8k tokensUpdated 9 days ago
    Auto-check passed
  • Flutter Building Forms

    btwld/superdeck

    Builds Flutter forms with validation and user input handling.

    129 GitHub stars~1.4k tokensUpdated 9 days ago
    Auto-check passed
  • Builds Flutter layouts using the constraint system and layout widgets.

    129 GitHub stars~1.5k tokensUpdated 9 days ago
    Auto-check passed

Works with

Categories

Questions about Flutter Building Plugins

What does Flutter Building Plugins do?

Builds Flutter plugins that provide native interop for other apps to use. Flutter Building Plugins is an agent skill from btwld/superdeck. Builds Flutter plugins that provide native interop for other apps to use.

When should I use Flutter Building Plugins?

Flutter Building Plugins fits situations like: creating reusable packages that bridge Flutter with platform-specific functionality; tasks that involve Cross-platform mobile apps.

How do I install Flutter Building Plugins in Claude Code?

Run `npx skills add btwld/superdeck --skill flutter-building-plugins -a claude-code`. Or copy the skill folder (.agents/skills/flutter-building-plugins in btwld/superdeck) into .claude/skills/flutter-building-plugins in your project. Claude Code loads it when a task matches its description.

How do I install Flutter Building Plugins in Codex?

Run `npx skills add btwld/superdeck --skill flutter-building-plugins -a codex`. Or copy the skill folder (.agents/skills/flutter-building-plugins in btwld/superdeck) into .agents/skills/flutter-building-plugins in your project. Codex loads it when a task matches its description.

Can I use Flutter Building Plugins in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add btwld/superdeck --skill flutter-building-plugins -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/flutter-building-plugins, .gemini/skills/flutter-building-plugins, .github/skills/flutter-building-plugins and .opencode/skills/flutter-building-plugins in your project.

What does Flutter Building Plugins need to run?

Going by SKILL.md and its folder, Flutter Building Plugins needs the command-line tools its instructions call (flutter).

Does Flutter Building Plugins access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Flutter Building Plugins safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Flutter Building Plugins use?

Flutter Building Plugins is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Flutter Building Plugins use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Flutter Building Plugins?

Skills that share tags, products or a category with Flutter Building Plugins: Frb Android Emulator Prepare (fzyzcjy/flutter_rust_bridge, 5.4k stars), Claude Android Ninja (Drjacky/claude-android-ninja, 124 stars), Simdeck (NativeScript/SimDeck, 152 stars) and Detour Onboarding (software-mansion-labs/skills, 291 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Flutter Building Plugins?

btwld (a GitHub organization) maintains it in btwld/superdeck, which has 129 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on September 28, 2026.

Source: btwld/superdeck on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.