Add Flutter Docusaurus Locale
matthiasn/lotti
Add, complete, or audit a locale across a Flutter application's ARB catalogs and a localized Docusaurus manual, including generated localization code, locale selectors, native platform declarations…
Fix LRU-bounded Flutter/bloc state classes that silently lose insertion-order updates.
$ npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install divinevideo/divine-mobile equatable-linkedhashmap-lru-reorder --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/equatable-linkedhashmap-lru-reorder .claude/skills/equatable-linkedhashmap-lru-reorder && rm -rf skills-srcUse ~/.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/
Install the "equatable-linkedhashmap-lru-reorder" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/equatable-linkedhashmap-lru-reorder into .claude/skills/equatable-linkedhashmap-lru-reorder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "equatable-linkedhashmap-lru-reorder", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/equatable-linkedhashmap-lru-reorderType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install divinevideo/divine-mobile equatable-linkedhashmap-lru-reorder --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/equatable-linkedhashmap-lru-reorder .agents/skills/equatable-linkedhashmap-lru-reorder && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "equatable-linkedhashmap-lru-reorder" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/equatable-linkedhashmap-lru-reorder into .agents/skills/equatable-linkedhashmap-lru-reorder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "equatable-linkedhashmap-lru-reorder", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install divinevideo/divine-mobile equatable-linkedhashmap-lru-reorder --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/equatable-linkedhashmap-lru-reorder .cursor/skills/equatable-linkedhashmap-lru-reorder && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "equatable-linkedhashmap-lru-reorder" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/equatable-linkedhashmap-lru-reorder into .cursor/skills/equatable-linkedhashmap-lru-reorder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "equatable-linkedhashmap-lru-reorder", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/divinevideo/divine-mobile.git --path .agents/skills/equatable-linkedhashmap-lru-reorder--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install divinevideo/divine-mobile equatable-linkedhashmap-lru-reorder --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/equatable-linkedhashmap-lru-reorder .gemini/skills/equatable-linkedhashmap-lru-reorder && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "equatable-linkedhashmap-lru-reorder" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/equatable-linkedhashmap-lru-reorder into .gemini/skills/equatable-linkedhashmap-lru-reorder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "equatable-linkedhashmap-lru-reorder", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install divinevideo/divine-mobile equatable-linkedhashmap-lru-reorderInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/equatable-linkedhashmap-lru-reorder .github/skills/equatable-linkedhashmap-lru-reorder && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "equatable-linkedhashmap-lru-reorder" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/equatable-linkedhashmap-lru-reorder into .github/skills/equatable-linkedhashmap-lru-reorder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "equatable-linkedhashmap-lru-reorder", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install divinevideo/divine-mobile equatable-linkedhashmap-lru-reorder --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/equatable-linkedhashmap-lru-reorder .opencode/skills/equatable-linkedhashmap-lru-reorder && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "equatable-linkedhashmap-lru-reorder" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/equatable-linkedhashmap-lru-reorder into .opencode/skills/equatable-linkedhashmap-lru-reorder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "equatable-linkedhashmap-lru-reorder", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
equatable-linkedhashmap-lru-reorderFix LRU-bounded Flutter/bloc state classes that silently lose insertion-order updates.
Equatable Linkedhashmap Lru Reorder is an agent skill from divinevideo/divine-mobile. Fix LRU-bounded Flutter/bloc state classes that silently lose insertion-order updates. Use when: (1) a state class uses Equatable with a LinkedHashMap<K, V field to preserve insertion order (LRU, MRU, recent-items caches), (2) Cubit.emit appears to drop emissions when an existing key is re-inserted or moved to most-recent, (3) LRU eviction evicts the "wrong" entry after a refresh, (4) a test that reports the same key twice and then overflows the cap sees the refreshed entry evicted instead of the oldest. Root…
Its SKILL.md is about 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 and Root cause analysis. It works with Flutter. The licence is MPL-2.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6487b05. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are dart).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
pub.devapi.dart.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Equatable Linkedhashmap Lru Reorder loads about 2k tokens when it runs. Until then it costs about 181 tokens; SKILL.md has 555 words of instructions outside code blocks.
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.
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.
The full file from divinevideo/divine-mobile at commit 6487b05, republished under its MPL-2.0 licence (© divinevideo). 555 words, ~2,030 tokens.
.claude/skills/equatable-linkedhashmap-lru-reorder/SKILL.md (or your agent's skills folder).A Flutter bloc/cubit state class uses an insertion-ordered LinkedHashMap<K, V>
to implement LRU semantics (touch-on-access, evict oldest past a cap). The
field is included in props for value equality. When an existing key is
re-inserted to move it to most-recent, Cubit.emit drops the new state as
equal to the previous one, leaving LRU order stale. On the next insert past
the cap, the "touched" entry is evicted instead of the truly oldest one.
This is silent: no errors, no logs. Tests that only check the final status of each key pass. The bug surfaces only when a test specifically asserts that a refreshed key survives a later cap-overflow eviction.
extends Equatable with a LinkedHashMap<K, V> fieldremove(key) + insert to move-to-most-recentprops includes the map directly: List<Object?> get props => [_map, ...]blocTest(..., expect: () => hasLength(N)) reports fewer emissions than expectedBlocListener or context.select don't react to touch-only updatesAdd the keys list to props alongside the map so insertion-order changes
produce a distinct state:
@override
List<Object?> get props {
// Both entries are required.
//
// Equatable's default map comparison is structural (unordered), so
// `_statuses` alone catches value changes but NOT pure LRU reorders
// where the key/value set is unchanged.
// `_statuses.keys.toList()` catches those insertion-order changes.
// Removing either would silently suppress a whole class of state
// updates — do not "simplify" this.
return [_statuses, _statuses.keys.toList(), maxEntries];
}Keep the map in props as well — it catches value-only changes (same key,
different value, no reorder). The keys list catches order-only changes.
Together they cover both dimensions. Removing either re-opens the bug.
While you're here, also:
Defensive-copy in the constructor if it accepts an externally-built
LinkedHashMap. A caller can otherwise retain a reference and mutate
the "immutable" state:
VideoPlaybackStatusState({
this.maxEntries = _defaultMaxEntries,
LinkedHashMap<K, V>? statuses,
}) : _statuses = statuses == null
? LinkedHashMap<K, V>()
: LinkedHashMap<K, V>.from(statuses);Short-circuit redundant writes in the cubit to avoid allocating a new map on every no-op report (e.g. errorBuilder fires every frame during a retry):
void report(K key, V value) {
if (state.valueFor(key) == value) return;
emit(state.withValue(key, value));
}Write an explicit props-inequality test that pins the invariant directly, rather than relying on higher-level LRU tests to transitively catch it:
test('states with same entries but different LRU order are not equal', () {
final a = MyState()
.withStatus(idA, Status.foo)
.withStatus(idB, Status.bar);
final b = MyState()
.withStatus(idB, Status.bar)
.withStatus(idA, Status.foo);
expect(a, isNot(equals(b)));
});Mutation test: temporarily revert to props: [_map, maxEntries] (no keys
list) and run the test. It MUST fail. Restore and confirm pass. This
proves the assertion is load-bearing and guards the invariant.
Full state class shape (Dart):
import 'dart:collection';
import 'package:equatable/equatable.dart';
class VideoPlaybackStatusState extends Equatable {
VideoPlaybackStatusState({
this.maxEntries = _defaultMaxEntries,
LinkedHashMap<String, PlaybackStatus>? statuses,
}) : _statuses = statuses == null
? LinkedHashMap<String, PlaybackStatus>()
: LinkedHashMap<String, PlaybackStatus>.from(statuses);
static const int _defaultMaxEntries = 100;
final int maxEntries;
final LinkedHashMap<String, PlaybackStatus> _statuses;
PlaybackStatus statusFor(String id) =>
_statuses[id] ?? PlaybackStatus.ready;
VideoPlaybackStatusState withStatus(String id, PlaybackStatus status) {
final next = LinkedHashMap<String, PlaybackStatus>.from(_statuses)
..remove(id)
..[id] = status;
while (next.length > maxEntries) {
next.remove(next.keys.first);
}
return VideoPlaybackStatusState(maxEntries: maxEntries, statuses: next);
}
@override
List<Object?> get props => [_statuses, _statuses.keys.toList(), maxEntries];
// ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
// catches catches reorders
// value changes (LRU touches)
}The LRU test that catches the bug:
test('reporting same id twice moves it to most-recent', () {
final cubit = VideoPlaybackStatusCubit(maxEntries: 2);
cubit.report(id1, PlaybackStatus.forbidden);
cubit.report(id2, PlaybackStatus.ageRestricted);
cubit.report(id1, PlaybackStatus.forbidden); // refresh id1
cubit.report(id3, PlaybackStatus.notFound); // overflow
// Without the fix: id1 is evicted (wrong — it was just touched)
// With the fix: id2 is evicted (correct — it's the oldest)
expect(cubit.state.statusFor(id2), PlaybackStatus.ready);
expect(cubit.state.statusFor(id1), PlaybackStatus.forbidden);
});LinkedHashMap<K, V>()
literal trips prefer_collection_literals (the lint wants {}). But
{} types as Map<K, V>, not LinkedHashMap, which loses the
compile-time guarantee that insertion order is preserved across
refactors. Keep the explicit type and suppress the lint locally
(// ignore: prefer_collection_literals) if the constructor path
triggers it.Queue, SplayTreeMap,
or any structure where order is semantic. Anywhere Equatable compares
the structure contents unordered but your code depends on order, you
need a secondary props entry that captures the order.== checks and any equality-based diffing. Same fix applies.LinkedHashMap — insertion-order guaranteefix(video_playback_status): add cubit for per-video playback status tracking (commit fb828df33 on branch fix/moderated-content-filter), where the bug was caught and fixed.© divinevideo, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/equatable-linkedhashmap-lru-reorder of divinevideo/divine-mobile.
Open the folder on GitHubat commit 6487b05
Equatable Linkedhashmap Lru Reorder 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Equatable Linkedhashmap Lru Reorder this skilldivinevideo/divine-mobile | 266 | — | ~2k | Automated safety check: Pass | MPL-2.0 | |
| Add Flutter Docusaurus Localematthiasn/lotti | 1.2k | — | ~1.2k | Automated safety check: Pass | GPL-3.0 | |
| Tm Launcher DesignFar-Se/tabame | 372 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Flutter Initbear2u/my-skills | 933 | — | ~2.5k | Automated safety check: Pass | None | |
| Mobile App UI Designceorkm/mobile-app-ui-design | 403 | — | ~2k | Automated safety check: Pass | None | |
| Marionette Flutter Drive Appleancodepl/marionette_mcp | 482 | — | ~11k | Automated safety check: Pass | Apache-2.0 |
matthiasn/lotti
Add, complete, or audit a locale across a Flutter application's ARB catalogs and a localized Docusaurus manual, including generated localization code, locale selectors, native platform declarations…
Far-Se/tabame
Create or revise Tabame's Flutter launcher designs: frames, search bars, result rows, palettes, typography, and action dialogs.
bear2u/my-skills
A skill your agent uses when user wants to create a new Flutter project (Todo/Habit/Note/Expense/Custom domain) with Clean Architecture, Riverpod 3.0, Drift, and modern Flutter stack
ceorkm/mobile-app-ui-design
Design high-quality mobile app UI/UX screens, flows, and components.
leancodepl/marionette_mcp
Set up and drive a running Flutter app (debug or profile) with Marionette — an AI agent's hands and eyes for the app.
JustLookAtNow/pt_mate
Capture and show two Flutter UI screenshots for this project: one landscape/large-screen preview and one portrait/mobile preview, without using Flutter Web.
divinevideo/divine-mobile
Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y".
divinevideo/divine-mobile
Art direction for any content — reads text, PDF, Word, HTML, PPT, then proposes 2-3 creative directions with photography style, mood, and visual language.
divinevideo/divine-mobile
Fix "Null check operator used on a null value" errors when an object is set to null during an async await.
divinevideo/divine-mobile
Add custom metadata headers (x-amz-meta-) to AWS v4 signed requests for GCS S3-compatible API.
divinevideo/divine-mobile
Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings.
divinevideo/divine-mobile
Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp).
Works with
Categories
Fix LRU-bounded Flutter/bloc state classes that silently lose insertion-order updates. Equatable Linkedhashmap Lru Reorder is an agent skill from divinevideo/divine-mobile. Fix LRU-bounded Flutter/bloc state classes that silently lose insertion-order updates.
Equatable Linkedhashmap Lru Reorder fits situations like: A state class uses Equatable with a LinkedHashMap<K; V field to preserve insertion order (LRU; recent-items caches); cubit.emit appears to drop emissions when an existing key is re-inserted.
Run `npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a claude-code`. Or copy the skill folder (.agents/skills/equatable-linkedhashmap-lru-reorder in divinevideo/divine-mobile) into .claude/skills/equatable-linkedhashmap-lru-reorder in your project. Claude Code loads it when a task matches its description.
Run `npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a codex`. Or copy the skill folder (.agents/skills/equatable-linkedhashmap-lru-reorder in divinevideo/divine-mobile) into .agents/skills/equatable-linkedhashmap-lru-reorder in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add divinevideo/divine-mobile --skill equatable-linkedhashmap-lru-reorder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/equatable-linkedhashmap-lru-reorder, .gemini/skills/equatable-linkedhashmap-lru-reorder, .github/skills/equatable-linkedhashmap-lru-reorder and .opencode/skills/equatable-linkedhashmap-lru-reorder in your project.
SKILL.md names no scripts, command-line tools or credentials: Equatable Linkedhashmap Lru Reorder is instructions for the agent only.
SKILL.md names 2 domains. As links in the text: pub.dev and api.dart.dev. This is read from the text; nothing was executed.
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.
Equatable Linkedhashmap Lru Reorder is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Equatable Linkedhashmap Lru Reorder: Add Flutter Docusaurus Locale (matthiasn/lotti, 1.2k stars), Tm Launcher Design (Far-Se/tabame, 372 stars), Flutter Init (bear2u/my-skills, 933 stars) and Mobile App UI Design (ceorkm/mobile-app-ui-design, 403 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
divinevideo (a GitHub organization) maintains it in divinevideo/divine-mobile, which has 266 GitHub stars. The repository holds 103 skills in this directory. The repository was last updated on October 9, 2026.
Source: divinevideo/divine-mobile on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.