Glasses App
brilliantlabsAR/brilliant_sdk
Build an app for Brilliant Labs smart glasses (Halo or Frame) with this SDK, in Python, Flutter or WebBluetooth/TypeScript.
Author a Tabame launcher plugin – an external Python/Node/Bun script that extends the app launcher, talking newline-delimited JSON over stdin/stdout.
$ npx skills add Far-Se/tabame --skill tbm-plugin -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Far-Se/tabame tbm-plugin --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/tbm-plugin .claude/skills/tbm-plugin && 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 "tbm-plugin" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tbm-plugin into .claude/skills/tbm-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tbm-plugin", 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/tbm-pluginType 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 tbm-plugin -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Far-Se/tabame tbm-plugin --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/tbm-plugin .agents/skills/tbm-plugin && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tbm-plugin" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tbm-plugin into .agents/skills/tbm-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tbm-plugin", 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 tbm-plugin -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Far-Se/tabame tbm-plugin --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/tbm-plugin .cursor/skills/tbm-plugin && 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 "tbm-plugin" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tbm-plugin into .cursor/skills/tbm-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tbm-plugin", 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/tbm-plugin--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 tbm-plugin -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Far-Se/tabame tbm-plugin --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/tbm-plugin .gemini/skills/tbm-plugin && 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 "tbm-plugin" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tbm-plugin into .gemini/skills/tbm-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tbm-plugin", 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 tbm-pluginInstalls 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 tbm-plugin -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/tbm-plugin .github/skills/tbm-plugin && 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 "tbm-plugin" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tbm-plugin into .github/skills/tbm-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tbm-plugin", 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 tbm-plugin -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 tbm-plugin --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/tbm-plugin .opencode/skills/tbm-plugin && 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 "tbm-plugin" agent skill from https://github.com/Far-Se/tabame/tree/main/.agents/skills/tbm-plugin into .opencode/skills/tbm-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tbm-plugin", 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.
tbm-pluginAuthor a Tabame launcher plugin – an external Python/Node/Bun script that extends the app launcher, talking newline-delimited JSON over stdin/stdout.
Tbm Plugin is an agent skill from 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. Use when the user wants to build, scaffold, debug, or install a Tabame launcher plugin, add a new launcher keyword backed by a script, or asks about the plugin render-frame protocol.
Its SKILL.md is about 1.9k 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. It works with Python, Flutter and Node.js. 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 d3b2b4d. 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:
nodeFrom 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.
Tbm Plugin loads about 1.9k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 831 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 d3b2b4d, republished under its MIT licence (© Far-Se). 831 words, ~1,949 tokens.
.claude/skills/tbm-plugin/SKILL.md (or your agent's skills folder).Tabame's launcher is extensible with plugins: standalone scripts (Python, Node.js, or Bun) that Tabame runs as a long-lived child process when the user types the plugin's keyword. Communication is newline-delimited JSON over stdin/stdout – no SDK, no dependencies.
init, query, select, action, close).The script is the source of truth for the UI: every time you want the launcher to display something different, you print a new render frame.
The complete, authoritative protocol spec lives in the repo. Read it before writing non-trivial plugins – do not invent fields or message types not documented there:
plugins/echo/ – Python demo exercising list/grid/detail/preview + actions.plugins/linear/ – Node.js plugin with an HTTP API and config.json secrets.plugins/caniuse/ – Node.js plugin with fetched data and detail views.When a detail isn't covered below, consult the full spec rather than guessing.
PATH: python, node (18+), or bun. Tabame bundles none.plugin.json + entry script. Start from the matching template in §15 of the full spec, or copy the closest plugins/ plugin.%localappdata%\Tabame\plugins\<id>\, reopen the launcher (it rescans on every open – no restart), and type the keyword.plugin.json (manifest){
"keyword": "weather", // required – what the user types; short & unique
"category": "Weather", // required – one canonical discovery category
"runtime": "python", // required – "python" | "node" | "bun" (on PATH)
"entry": "main.py", // required – script filename in the plugin folder
"id": "weather", // optional – defaults to folder name
"name": "Weather", // optional – shown in the discovery hint
"description": "", // optional
"icon": "cloud", // optional – icon name (see spec §11)
"args": [], // optional – CLI args inserted BEFORE entry
"enabled": true // optional – defaults to true; set false (or toggle
// from the Launcher Plugins manager) to hide the
// plugin without deleting it
}category is mandatory in every manifest. Choose exactly one current registry
value: AI Tools, Communication, Developer Tools, Entertainment,
Finance, Fun & Casual, Language & Writing, Media & Design,
Network Tools, Productivity, Shopping, System Tools, Utilities, Weather, or
Web & Browser. Match the plugin's primary user-facing purpose and preserve
the exact spelling/capitalization; do not invent variants or multiple values.
Launch is effectively <runtime> <args...> <entry>, started without a shell, with the working directory set to the plugin folder (so config.json/assets resolve relatively). Activation: the query equals the keyword or starts with keyword + " "; the keyword prefix is stripped before your script sees the text.
One JSON object per line, both directions. Flush stdout after every frame.
Messages you receive on stdin:
| Message | When | Key fields |
|---|---|---|
init | Once at startup | query (initial text) |
query | Every keystroke | text, rev (generation counter) |
select | Highlighted item changed | id, rev |
action | Enter (action:"default") or a Ctrl+K pick | id, action (no rev) |
close | Shutting down | – |
Minimal render frame you print to stdout:
{
"type": "render",
"rev": 1,
"view": "list",
"items": [
{ "id": "1", "title": "Hello", "subtitle": "world", "icon": "star" }
]
}Full frame/item fields (views list/grid/detail, loading, emptyText, grid, detail.markdown, preview, item accessories/actions/preview) are documented in spec §6–§8.
rev on frames responding to a query/select; use rev: 0 for unsolicited pushes (action results, async/background refreshes). Tabame drops frames with a stale rev, so a slow response to "rom" can't overwrite fresh results for "rome".id – it's echoed back in select/action.close and on stdin EOF. After close, ~2s grace then the process is killed.screen state and add a "◀ Back" item or a Ctrl+K back action.loading:true frame (echoing the rev) first, then the result frame.detail frame.data:image/... URI (up to 2 MB), or a file:///https:// raster or SVG image.PYTHONIOENCODING=utf-8 / PYTHONUTF8=1 for Python; Node/Bun are UTF-8 already.The plugin is an ordinary process: HTTP (requests/urllib, or global fetch in Node 18+/Bun), filesystem, spawning tools. Read secrets from a config.json in the plugin folder (the CWD) or env vars – see plugins/linear/config.example.json. To open a URL or copy to the clipboard on Windows, shell out via cmd /c start/cmd /c clip (recipes in spec §12). Markdown links in detail render but are not clickable – expose URLs as item actions and open them yourself.
When registering a new plugin in resources/plugins.json, include addedDate
with the current local calendar day in YYYY-MM-DD format. Running
node add-plugin.js <PluginFolder> (or node add-plugin.js missing) adds it
automatically. Preserve the original date on updates; leave existing undated
entries unchanged. The plugin manager uses a fallback date for those entries.
When done, hand the user both plugin.json and the script, the exact install path (%localappdata%\Tabame\plugins\<id>\), and the reminder to reopen the launcher to load it.
© 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
Just SKILL.md in .agents/skills/tbm-plugin of Far-Se/tabame.
Open the folder on GitHubat commit d3b2b4d
Tbm Plugin 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 |
|---|---|---|---|---|---|---|
| Tbm Plugin this skillFar-Se/tabame | 372 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Glasses AppbrilliantlabsAR/brilliant_sdk | 115 | — | ~1.2k | Automated safety check: Pass | BSD-3-Clause | |
| Vicoa CLIvicoa-ai/vicoa | 499 | — | ~5.8k | Automated safety check: Pass | AGPL-3.0 | |
| Flutter UI Probelibnativeapi/nativeapi | 162 | — | ~988 | Automated safety check: Pass | MIT | |
| Implement Flet Extensionflet-dev/flet | 17k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Test Flet Apps Devflet-dev/flet | 17k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
brilliantlabsAR/brilliant_sdk
Build an app for Brilliant Labs smart glasses (Halo or Frame) with this SDK, in Python, Flutter or WebBluetooth/TypeScript.
vicoa-ai/vicoa
Operate Vicoa from the terminal with the vicoa CLI — list and inspect agent sessions (and their transcripts) across machines, start/resume/stop sessions, manage the task backlog with projects and…
libnativeapi/nativeapi
Find where widgets are on screen in a running debug Flutter desktop app (macOS, Windows, Linux) by reading its render tree through the VM service — no hard-coded coordinates, no screenshots, works…
flet-dev/flet
Implement a new Flet extension/control that wraps a third-party Flutter package end-to-end, including dependency selection, version pinning, compatibility checks, Python/Flutter integration, docs…
flet-dev/flet
A skill your agent uses when testing or debugging Flet apps in maintainer/contributor development mode with local Python package sources and the local Flutter client, including web, desktop…
askie/grix
Select and run the smallest sufficient validation set for Grix changes before push, review handoff, or completion.
Far-Se/tabame
Create or revise Tabame's Flutter launcher designs: frames, search bars, result rows, palettes, typography, and action dialogs.
Far-Se/tabame
Build or revise Tabame quick menu top-bar buttons in lib/widgets/itzy/quickmenu/button.dart.
Categories
Author a Tabame launcher plugin – an external Python/Node/Bun script that extends the app launcher, talking newline-delimited JSON over stdin/stdout. Tbm Plugin is an agent skill from 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.
Tbm Plugin fits situations like: the user wants to build; install a Tabame launcher plugin; add a new launcher keyword backed by a script; asks about the plugin render-frame protocol.
Run `npx skills add Far-Se/tabame --skill tbm-plugin -a claude-code`. Or copy the skill folder (.agents/skills/tbm-plugin in Far-Se/tabame) into .claude/skills/tbm-plugin in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Far-Se/tabame --skill tbm-plugin -a codex`. Or copy the skill folder (.agents/skills/tbm-plugin in Far-Se/tabame) into .agents/skills/tbm-plugin 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 tbm-plugin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tbm-plugin, .gemini/skills/tbm-plugin, .github/skills/tbm-plugin and .opencode/skills/tbm-plugin in your project.
Going by SKILL.md and its folder, Tbm Plugin needs the command-line tools its instructions call (node). Our summary lists: Python 3; Node.js.
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.
Tbm Plugin is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.8k 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 Tbm Plugin: Glasses App (brilliantlabsAR/brilliant_sdk, 115 stars), Vicoa CLI (vicoa-ai/vicoa, 499 stars), Flutter UI Probe (libnativeapi/nativeapi, 162 stars) and Implement Flet Extension (flet-dev/flet, 17k 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 7, 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.