>- Add, fix, audit, and maintain Flutter internationalization with gen-l10n, ARB files, AppLocalizations, flutter_localizations, intl formatting, plural/select messages, RTL support, locale-specific number/date formatting, and localization build errors. Use when asked to add l10n or i18n, translate Flutter UI text, configure l10n.yaml, manage ARB translations, migrate away
npx skills add https://github.com/MADTeacher/mad-agents-skills --skill flutter-internationalization
You are a Flutter localization implementer. Make localized apps build, generate,
and read naturally across target locales.
Generated localization code must match the current Flutter project and SDK. Do
not copy stale package:flutter_gen imports or enable synthetic-package; use
source-generated AppLocalizations imports unless the project proves it is on an
older pinned Flutter workflow.
gen-l10n for new work, most migrations, ARB management, plural/selectmessages, generated AppLocalizations, and Material/Cupertino apps.
intl_translation only when the project already usesIntl.message() plus generated messages_all.dart, or the user explicitly
asks to keep that workflow. Confirm intl_translation is a dependency before
running its generators.
that intentionally avoids code generation. Name this limitation in the final
response.
names, locale list, and generation style before introducing defaults.
pubspec.yaml, l10n.yaml, existing *.arb files, generated imports,MaterialApp/CupertinoApp setup, and current translation usage.
UI text, add placeholders/plurals/selects, format values, fix generation, or
migrate stale imports/config.
gen-l10n, legacy intl_translation, or acustom fallback. Prefer the smallest change that fits the existing project.
flutter_localizations and intl:any when missing;flutter: generate: true;l10n.yaml;AppLocalizations into MaterialApp or CupertinoApp;flutter gen-l10n. Then run the narrowest relevantproject check, usually flutter analyze or affected tests.
translation gaps that remain.
| Task | Read or use | Why |
|---|---|---|
| Configure or debug l10n.yaml, generated output paths, nullable getters, deferred loading, or untranslated tracking | references/l10n-config.md | Current gen-l10n options and safe defaults |
| Create or repair ARB messages, placeholders, plurals, selects, escaping, or metadata | references/arb-format.md | ARB schema patterns and translator context rules |
| Add number, currency, percent, or date/time formatting | references/number-date-formats.md | Supported NumberFormat and DateFormat values |
| Bootstrap a new gen-l10n setup or run a smoke fixture | assets/l10n.yaml, assets/app_en.arb | Reusable minimal templates |
For new gen-l10n setup, the minimum current configuration is:
flutter:
generate: true
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
Use source imports that match the generated location, commonly:
import 'l10n/app_localizations.dart';
Prefer generated lists when possible:
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
If generated files are written to a custom output-dir, update imports to that
directory. Do not import package:flutter_gen/gen_l10n/app_localizations.dart
unless the local project is intentionally pinned to an older Flutter workflow.
When preserving Intl.message():
intl_translation in dev dependencies before extraction/generation;Typical commands:
dart run intl_translation:extract_to_arb --output-dir=lib/l10n lib/main.dart
dart run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/main.dart lib/l10n/intl_*.arb
If this workflow is not already present, explain why gen-l10n is the safer
default.
placeholder translations only when the user approved that, or report the
missing translations.
messages.
gen-l10n placeholder formatting can do it.
synthetic-package: true; current Flutter marks synthetic packagegeneration as deprecated and unavailable.
nullable-getter: false only when the project accepts non-null generatedgetter behavior. Otherwise keep the project default and use the required null
handling in code.
locale-specific widgets.
Always validate a completed localization change:
flutter gen-l10n succeeds with the project's l10n.yaml;other;references/number-date-formats.md;
flutter analyze or tests pass, or blockers are reported.For skill maintenance, also check YAML frontmatter, local markdown links, JSON
validity for ARB assets, YAML validity for l10n.yaml, resource routing, and
layer coherence between SKILL.md, references, and assets.
Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementing any feature or bugfix, before writing implementation code
Use when you have a spec or requirements for a multi-step task, before touching code
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Use when writing or improving README files. Not all READMEs are the same — provides templates and guidance matched to your audience and project type.
| Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Official Opentrons Protocol API for OT-2 and Flex robots. Use when writing protocols specifically for Opentrons hardware with full access to Protocol API v2 features. Best for production Opentrons protocols, official API compatibility. For multi-vendor automation or broader equipment control use pylabrobot.
Take madteacher/flutter-internationalization from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.