Borrowing it
Nothing to install: this file belongs to Far-Se/tabame. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Far-Se/tabame/main/.agents/skills/tm-launcher-design/SKILL.mdgit clone --depth 1 https://github.com/Far-Se/tabameWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/far-se/tabame/tm-launcher-design)<a href="https://agentmods.dev/skills/far-se/tabame/tm-launcher-design"><img src="https://agentmods.dev/badge/skills/far-se/tabame/tm-launcher-design/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/far-se/tabame/tm-launcher-design"><img src="https://agentmods.dev/badge/skills/far-se/tabame/tm-launcher-design.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00068 | $0.02574 |
| Opus 5.5 | $0.00027 | $0.01030 |
| Sonnet 5.5 | $0.00014 | $0.00515 |
| Haiku 4.5 | $0.00007 | $0.00257 |
Grade A, and why
tm-launcher-design scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 93 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Tabame Launcher Design
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.
Read only what the task needs
- Read the repository's
AGENTS.mdand inspect the working tree before editing. - Use the registration map below to inspect the specific declarations and switch cases being changed. Use
rg -nand bounded reads; avoid dumpinglauncher.dart, the token catalog, or every design. - For a new design, use starter.md if a frame/search/row example would help. It captures the shared contracts without copying a large existing design.
- Read material-effects.md only for shaders, animated surfaces, or elaborate painted materials.
- If an example is still needed, open one relevant source:
classic_launcher_design.dartfor a simple frame/search,strata_launcher_design.dartfor a results panel/footer, orsatin_result_row.dartfor 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.
Register a new design
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. |
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 93 lines · 68 tokens per session scan A 387856c1bb39
tm-launcher-design is a skill published in the GitHub repository Far-Se/tabame (373 stars, last pushed 3d ago), licensed MIT. It adds 68 tokens to every session and 2,574 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-24.
Other skills, from other repositories
android-edge-to-edge
Migrate a Jetpack Compose app to edge-to-edge display and fix system bar inset issues. Use when UI components are obscured by navigation/status bars, fixing IME insets, or enabling edge-to-edge for SDK 35+.
common-mobile-animation
Apply motion design principles for mobile apps covering timing curves, transitions, gestures, and performance-conscious animations. Use when implementing screen transitions, gesture-driven interactions, shared-element animations, or optimizing animation frame rates on iOS, Android, or Flutter.
common-mobile-ux-core
Enforce universal mobile UX principles for touch-first interfaces including touch targets, safe areas, and mobile-specific interaction patterns. Use when building mobile screens, handling touch interactions, or validating safe area compliance.
android-design-system
Enforce Material Design 3 theming and design token usage in Jetpack Compose. Use when implementing M3 components, color schemes, typography, or design tokens.
building-shadcn-flutter-ui
Build beautiful, accessible, and highly customizable user interfaces in Flutter using the Shadcn UI design system. This skill ensures proper framework integration (Pure, Material, or Cupertino), consistent theming, and effective use of the 30+ responsive components available in the library.
flutter
Flutter 3.44 — widget catalog, layouts, interactivity, animations, navigation, assets, adaptive/responsive design, accessibility, i18n, state management, data & backend (networking, serialization, Firebase, persistence), app architecture (MVVM, DI), platform integration (Android, iOS, web, Windows, macOS, Linux…