Frontend UI Standards
MaxHan7/frontend-ui-standards-skill
A skill your agent uses when implementing, refactoring, or reviewing frontend UI across SwiftUI, React, React Native, Flutter, web, or mobile apps.
Create or revise Tabame's Flutter launcher designs: frames, search bars, result rows, palettes, typography, and action dialogs.
$ npx skills add Far-Se/tabame --skill tm-launcher-design -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Far-Se/tabame tm-launcher-design --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/Far-Se/tabame.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/tm-launcher-design .claude/skills/tm-launcher-design && 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 "tm-launcher-design" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tm-launcher-design into .claude/skills/tm-launcher-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tm-launcher-design", 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/Far-Se/tabame/tree/main/.agents/skills/tm-launcher-designType 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 Far-Se/tabame --skill tm-launcher-design -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Far-Se/tabame tm-launcher-design --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Far-Se/tabame.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/tm-launcher-design .agents/skills/tm-launcher-design && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tm-launcher-design" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tm-launcher-design into .agents/skills/tm-launcher-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tm-launcher-design", 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 Far-Se/tabame --skill tm-launcher-design -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Far-Se/tabame tm-launcher-design --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Far-Se/tabame.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/tm-launcher-design .cursor/skills/tm-launcher-design && 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 "tm-launcher-design" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tm-launcher-design into .cursor/skills/tm-launcher-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tm-launcher-design", 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/Far-Se/tabame.git --path .agents/skills/tm-launcher-design--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 Far-Se/tabame --skill tm-launcher-design -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Far-Se/tabame tm-launcher-design --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Far-Se/tabame.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/tm-launcher-design .gemini/skills/tm-launcher-design && 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 "tm-launcher-design" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tm-launcher-design into .gemini/skills/tm-launcher-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tm-launcher-design", 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 Far-Se/tabame tm-launcher-designInstalls 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 Far-Se/tabame --skill tm-launcher-design -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Far-Se/tabame.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/tm-launcher-design .github/skills/tm-launcher-design && 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 "tm-launcher-design" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tm-launcher-design into .github/skills/tm-launcher-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tm-launcher-design", 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 Far-Se/tabame --skill tm-launcher-design -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Far-Se/tabame tm-launcher-design --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Far-Se/tabame.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/tm-launcher-design .opencode/skills/tm-launcher-design && 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 "tm-launcher-design" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tm-launcher-design into .opencode/skills/tm-launcher-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tm-launcher-design", 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.
tm-launcher-designCreate or revise Tabame's Flutter launcher designs: frames, search bars, result rows, palettes, typography, and action dialogs.
Tm Launcher Design is an agent skill from Far-Se/tabame. Create or revise Tabame's Flutter launcher designs: frames, search bars, result rows, palettes, typography, and action dialogs. Use when adding a LauncherDesign or restyling the launcher, with a compact integration guide instead of reading every existing design. Does not cover launcher script plugins or quick-menu button panels.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `agents/openai.yaml`, `references/material-effects.md` and `references/starter.md`).
It sits in Mobile, covering Cross-platform mobile apps and Typography. It works with Flutter. The repository describes itself as: Tabame is an alternative to Windows Taskbar. It's Raycast and Powertoys combined. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5b2281a. 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.
Shell commands in SKILL.md call:
flutterrgFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Tm Launcher Design loads about 3.1k tokens when it runs, and up to ~5.7k if it reads all its reference files. Until then it costs about 87 tokens; SKILL.md has 1,492 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 Far-Se/tabame at commit 5b2281a, republished under its MIT licence (© Far-Se). 1,492 words, ~3,095 tokens.
.claude/skills/tm-launcher-design/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Build a complete launcher appearance while retaining the shared search, selection, execution, preview, and plugin behavior. The user can choose any visual direction; existing designs establish integration contracts, not one mandatory aesthetic.
AGENTS.md and inspect the working tree before editing.rg -n and bounded reads; avoid dumping launcher.dart, the token catalog, or every design.classic_launcher_design.dart for a simple frame/search, strata_launcher_design.dart for a results panel/footer, or satin_result_row.dart for a compact row. Resolve their directories from the map. Some older examples hardcode colors or geometry; follow the current shared helpers below.All paths are relative to the project root. In the table, L/ means lib/pages/launcher/. Use a snake_case file slug, a lowerCamelCase enum value, and PascalCase classes, for example paper_signal, paperSignal, and PaperSignalLauncherFrame.
For a revision, change only the relevant parts of this map. For a new design, account for every row; default branches can silently leave parts of the UI in the wrong style.
| File | Integration |
|---|---|
lib/models/design_settings.dart | Append to LauncherDesign; never reorder existing entries, because preferences store design.index. Give multiword names an explicit displayName. Add a LauncherDesignThemeSet to DesignSettings.createDefaultLauncherDesignThemes(), keyed by that display name, with light and dark defaultThemeColors(...) presets. Include intended fonts, weights, radius, and base size. Existing display names are saved theme-map keys; renaming needs a migration. |
L/launcher_design.dart | Put shared <Name>Tokens here when the design needs them across frame, rows, and dialogs. Use getters for live palette values and wrap custom type styles in launcherTextStyle(...). Add LauncherThemeData.is<Name> only if something actually consumes it. |
L/launcher_design_config.dart | Add a LauncherDesignConfig.forDesign case: search icon/size/font/hint, frame/control radii, list padding, and relevant flags (usesDesignFont, outlinedControls). This is a part of launcher_design.dart. |
L/launcher_palette.dart | Add a LauncherPalette.resolve case. Supply surface, onSurface, accent, and dim, optionally highlightColor, primary, modalSurface, or modalAccent. This part of launcher_design.dart is the shared palette for the launcher and dialogs. |
L/launcher_designs/<slug>_launcher_design.dart | Start with part of '../launcher_design_builder.dart';. Define _slugOuterDecoration(...), _<Name>SearchBar, and public <Name>LauncherFrame. Add imports to the owning library, not this part. Keep private visual helpers here. |
L/launcher_design_builder.dart | Add the part directive and cases in both LauncherDesignBuilder.outerDecoration and buildSearchBar. The outer decoration is also used by action dialogs. |
L/state/launcher_layout_mixin.dart | Add the frame in _buildLauncherFrame, normally <Name>LauncherFrame(child: buildBody()); pass resultCount only if used. Preserve shared content and the resize overlay. Change buildBody only if the new geometry requires it. |
L/result/designs/<slug>_result_row.dart and L/result/result_row.dart | Start the new file with part of '../result_row.dart';; implement a private extension on LauncherResultRow. Add its part directive and renderer case in LauncherResultRow.build. Reuse an existing renderer only when its appearance actually fits. |
L/widgets/launcher_section_header.dart | Add the design's case in _LauncherSectionHeader.build. Use the supplied label and resolved accent; this header is also called from dialogs. An intentionally omitted header must still have an explicit case. |
L/state/launcher_theme_mixin.dart | Set the design's text theme in _buildDesignTheme when it has a specific font. Keep palette.applyTo(...) and the existing user font override flow. |
L/launcher_modal_theme.dart | Match dialog typography in LauncherModalTokens.text. Inspect LauncherModalFrame and its surface/header/footer styling; add only the treatments the design needs. A new enum case can compile while falling back to unrelated modal styling. |
The picker in lib/widgets/itzy/quickmenu/button_menu_design.dart and design search in L/state/search_mixin.dart enumerate LauncherDesign.values; they normally need no extra per-design registration. Persistence is already handled by lib/models/classes/boxes/boxes_base.dart and lib/models/settings.dart.
Ordinary designs need no new search logic in lib/pages/launcher.dart. If special preview chrome is required, use L/widgets/launcher_file_preview_panel.dart and L/widgets/launcher_window_preview_panel.dart; their shared behavior and default palette support should remain reusable. Shared material widgets belong in L/widgets/, shaders in resources/shaders/, and registered visual assets in resources/ with the appropriate pubspec.yaml entry.
_LauncherSearchBarContent supplies dragHandle, textField, nullable trailingBadge, and isSearching. Present all four appropriately. Prefer Expanded(child: _LauncherSearchField(content)) for the field plus its badge overlay. If laying out the badge yourself, retain the original content.textField and handle a null badge. Preserve the supplied drag handle, or an equivalent real drag region.
The search controller, focus, keyboard shortcuts, query callbacks, and results belong to the shared launcher. Do not create a replacement TextField, controller, result list, or execution path inside a design. Frames decorate the supplied child; they do not duplicate it. Keep result scrolling, plugin views, preview resizing, and height resizing reachable. For a footer use a bounded flexible body, and hide or wrap low-priority hints at narrow widths.
Use the existing LauncherResultRow fields and helpers:
_interactive(...); it supplies tap, selected semantics, cursor, and hover selection only when the pointer moves. An onEnter selection handler makes keyboard navigation jump under a stationary mouse.icon and optional badge. Prefer content when non-null; it is a real custom widget, not a string to discard or reconstruct._titleText(style) and _subtitleText(style). They retain plugin inline markup, ellipsis, and subtitleMaxLines.isSelected for the selection treatment. Keep feedback immediate; if adding transitions, respect isRepeating so held arrow keys do not queue animations.onTap/onHover, ranking, launch behavior, and action construction in the shared code.user.launcherThemeColors.background, .text, and .accent; derive panels, borders, dim text, and selection washes from them. In widgets use the resolved Theme or LauncherTheme.accentOf(context). Avoid scattering unrelated fixed colors or quick-menu palette reads through the implementation.launcherTextStyle(...) for explicitly constructed design text styles, and retain launcherTextTheme(...) integration. Apply the same type voice in LauncherModalTokens.text: dialogs may live outside LauncherTheme, so use its fallback palette resolver rather than requiring LauncherTheme.of(context) there.LauncherSurface(decoration: boxDecoration, child: ...) for the outer frame. Use .withLauncherCorners() on rectangular BoxDecorations and LauncherClip when descendants need clipping. Keep outerDecoration returning BoxDecoration; consumers apply the shared corner policy. Hardcoded ClipRRect or a separate frame border can bypass the user's round/squircle/bevel and radius settings.IgnorePointer/ExcludeSemantics where appropriate.L/state/keyboard_navigation_mixin.dart; do not invent decorative controls, statuses, or keyboard hints that promise unavailable behavior.Before running the one allowed analysis pass, review the integration map and search targeted branches for the new enum and any copied design name. Confirm all exhaustive switches are covered and default branches are intentional. Review these acceptance cases against the implementation; use an already available preview only when permitted:
Follow the current AGENTS.md. After changing Dart, from the project root use dart resolved from PATH, one command at a time:
dart format <only Dart files changed in this task>
dart analyze <only Dart files changed in this task>Run format once and analyze once. Do not use absolute Dart paths, .bat launchers, PATH changes, Dart MCP formatting, full-project analysis, flutter build, or flutter run. Do not run tests as part of this design workflow; consult AGENTS.md if its narrow existing _test.dart exception is relevant. On failure report the exact command, failure, and output as-is; report any later fixes without claiming an unperformed rerun. Do not build just to obtain a visual preview.
Finish with the design name, integration completed, actual checks and results, and any unverified runtime appearance or shader behavior. Static analysis does not establish visual quality or compile GLSL.
© Far-Se, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .agents/skills/tm-launcher-design of Far-Se/tabame.
Open the folder on GitHubat commit 5b2281a
Tm Launcher Design 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 |
|---|---|---|---|---|---|---|
| Tm Launcher Design this skillFar-Se/tabame | 372 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Frontend UI StandardsMaxHan7/frontend-ui-standards-skill | 106 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Frontend Designavibebuilder/claude-prime | 120 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Flutter Theming Appsbtwld/superdeck | 130 | — | ~1.9k | Automated safety check: Pass | BSD-3-Clause | |
| UI UX Pro Maxsaoudi-h/solar-icons | 190 | 18 repos | ~11k | Automated safety check: Notes | Custom licence | |
| Add Flutter Docusaurus Localematthiasn/lotti | 1.2k | — | ~1.2k | Automated safety check: Pass | GPL-3.0 |
MaxHan7/frontend-ui-standards-skill
A skill your agent uses when implementing, refactoring, or reviewing frontend UI across SwiftUI, React, React Native, Flutter, web, or mobile apps.
avibebuilder/claude-prime
Builds distinctive, production-grade UIs that avoid generic AI aesthetics.
btwld/superdeck
Customizes the visual appearance of a Flutter app using the theming system.
saoudi-h/solar-icons
UI/UX design intelligence for web and mobile. An agent skill from saoudi-h/solar-icons.
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…
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
Far-Se/tabame
Author a Tabame launcher plugin – an external Python/Node/Bun script that extends the app launcher, talking newline-delimited JSON over stdin/stdout.
Far-Se/tabame
Build or revise Tabame quick menu top-bar buttons in lib/widgets/itzy/quickmenu/button.dart.
Works with
Categories
Create or revise Tabame's Flutter launcher designs: frames, search bars, result rows, palettes, typography, and action dialogs. Tm Launcher Design is an agent skill from Far-Se/tabame. Create or revise Tabame's Flutter launcher designs: frames, search bars, result rows, palettes, typography, and action dialogs.
Tm Launcher Design fits situations like: adding a LauncherDesign; restyling the launcher; with a compact integration guide instead of reading every existing design.
Run `npx skills add Far-Se/tabame --skill tm-launcher-design -a claude-code`. Or copy the skill folder (.agents/skills/tm-launcher-design in Far-Se/tabame) into .claude/skills/tm-launcher-design in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Far-Se/tabame --skill tm-launcher-design -a codex`. Or copy the skill folder (.agents/skills/tm-launcher-design in Far-Se/tabame) into .agents/skills/tm-launcher-design 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 Far-Se/tabame --skill tm-launcher-design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tm-launcher-design, .gemini/skills/tm-launcher-design, .github/skills/tm-launcher-design and .opencode/skills/tm-launcher-design in your project.
Going by SKILL.md and its folder, Tm Launcher Design needs the command-line tools its instructions call (flutter and rg).
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.
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.
Tm Launcher Design is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Tm Launcher Design: Frontend UI Standards (MaxHan7/frontend-ui-standards-skill, 106 stars), Frontend Design (avibebuilder/claude-prime, 120 stars), Flutter Theming Apps (btwld/superdeck, 130 stars) and UI UX Pro Max (saoudi-h/solar-icons, 190 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Far-Se (a GitHub user) maintains it in Far-Se/tabame, which has 372 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 10, 2026.
Source: Far-Se/tabame on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.