CtrlK
BlogDocsLog inGet started
Tessl Logo

dart-use-ffigen

Guide agents to use `package:ffigen` to automatically generate FFI bindings instead of writing them manually. Use this skill when a task involves writing new FFI bindings, extending C/Objective-C/Swift integrations, or replacing hand-crafted `dart:ffi` setups.

68

Quality

84%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

81%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A high-quality, highly actionable skill body: the workflow is clearly sequenced with real validation and error-recovery loops, and the example script is executable as written. The main weakness is redundancy — the preamble, analysis, and error-reporting rules each appear in the Constraints, Step 5, and the Verification Checklist — plus an API overview that would fit better in a separate reference file.

Suggestions

State each rule once: fold the Verification Checklist into Step 5 (or vice versa) and remove the near-verbatim repetitions of the preamble/`ignore_for_file` and error-reporting guidance from the Constraints section.

Move the FFIgen Overview (configuration-class API details) and/or the full SQLite worked example into a `references/` file, keeping SKILL.md as a lean overview with clearly signaled links.

Trim the duplicated Step 5 sub-bullets about warnings vs. errors since the identical decision guidance already appears in the checklist.

DimensionReasoningScore

Conciseness

The content is domain-specific and mostly earns its place, but key guidance is restated three times: the Constraints bullets ('Always supply a premium `preamble`...', 'verify the package by running `dart analyze`'), Step 5 ('append the corresponding warning codes to the `ignore_for_file:` list... Report these error details directly to the user'), and the Verification Checklist repeat nearly the same rules verbatim. This is more than the 'minor instances of over-explanation' of anchor 4, but most content is still relevant and non-padded, so it sits above anchor 2.

3 / 5

Actionability

Fully executable end to end: `dart pub add dev:ffigen`, a complete copy-paste-ready `tool/ffigen.dart` script with real `FfiGenerator` configuration and dynamic path resolution, `dart run tool/ffigen.dart`, `dart analyze`, and a concrete anti-pattern example. Matches the fully-executable top anchor.

5 / 5

Workflow Clarity

Clear five-step sequence (dependencies → paths → script → generation → static analysis) with an explicit validation step (`dart analyze`) and error-recovery feedback loops: warnings are fixed by extending `ignore_for_file` in the preamble, errors are reported upstream rather than hand-edited, and a final checklist reinforces verification. Matches the top anchor with explicit validation and feedback loops.

5 / 5

Progressive Disclosure

No bundle files exist and the single SKILL.md is well structured with a Contents TOC and clearly labeled sections, so navigation is easy. However, the FFIgen Overview (API details for a dozen config classes) and the full worked example are inlined and could be split into a references file to slim the overview, keeping this below the well-signaled-external-references anchor 5.

4 / 5

Total

17

/

20

Passed

Description

87%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: it states the concrete capability in third person, gives an explicit 'Use this skill when' clause with multiple natural trigger conditions, and occupies a distinct niche with minimal overlap risk. The only improvement space is broader synonym coverage (e.g., 'native interop', 'C interop').

Suggestions

Add natural synonyms such as 'native interop', 'C interop', or 'bindings generation' to the trigger clause to widen keyword coverage.

Optionally mention the verification side of the workflow (e.g., running `dart analyze` on generated bindings) to make the 'what' more comprehensive.

DimensionReasoningScore

Specificity

Names several concrete actions — 'automatically generate FFI bindings instead of writing them manually', 'replacing hand-crafted `dart:ffi` setups', 'extending C/Objective-C/Swift integrations' — with only minor gaps in coverage. Not a 5 because it does not convey the fuller scope of the skill (e.g., verification/analysis workflow); not a 3 because it lists more than 1-2 concrete actions.

4 / 5

Completeness

Explicitly answers both what ('use `package:ffigen` to automatically generate FFI bindings instead of writing them manually') and when ('Use this skill when a task involves writing new FFI bindings, extending C/Objective-C/Swift integrations, or replacing hand-crafted `dart:ffi` setups') with concrete trigger phrases, matching the top anchor exactly.

5 / 5

Trigger Term Quality

Good coverage of natural terms users would say: 'FFI bindings', 'dart:ffi', 'C/Objective-C/Swift integrations', 'hand-crafted'. A few natural synonyms are missing (e.g., 'native interop', 'C interop', 'bindings generation'), keeping it below the comprehensive-synonym anchor of 5.

4 / 5

Distinctiveness Conflict Risk

Clear niche (Dart FFI code generation via `package:ffigen`) with distinct triggers ('dart:ffi', 'ffigen', FFI bindings) that are unlikely to fire for unrelated skills, matching the minimal-conflict-risk anchor.

5 / 5

Total

18

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository
flutter/agent-plugins
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.