Core API Change
libnativeapi/nativeapi
Carry a change to the C++ public API in core/ all the way downstream — design check, header edit, six platform implementations, C ABI + Rust/Dart/C/JS/Python regeneration, per-binding verification…
Build an app for Brilliant Labs smart glasses (Halo or Frame) with this SDK, in Python, Flutter or WebBluetooth/TypeScript.
$ npx skills add brilliantlabsAR/brilliant_sdk --skill glasses-app -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install brilliantlabsAR/brilliant_sdk glasses-app --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/brilliantlabsAR/brilliant_sdk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/glasses-app .claude/skills/glasses-app && 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 "glasses-app" agent skill from https://github.com/brilliantlabsAR/brilliant_sdk/tree/main/.claude/skills/glasses-app into .claude/skills/glasses-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glasses-app", 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/brilliantlabsAR/brilliant_sdk/tree/main/.claude/skills/glasses-appType 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 brilliantlabsAR/brilliant_sdk --skill glasses-app -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install brilliantlabsAR/brilliant_sdk glasses-app --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brilliantlabsAR/brilliant_sdk.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/glasses-app .agents/skills/glasses-app && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "glasses-app" agent skill from https://github.com/brilliantlabsAR/brilliant_sdk/tree/main/.claude/skills/glasses-app into .agents/skills/glasses-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glasses-app", 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 brilliantlabsAR/brilliant_sdk --skill glasses-app -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install brilliantlabsAR/brilliant_sdk glasses-app --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brilliantlabsAR/brilliant_sdk.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/glasses-app .cursor/skills/glasses-app && 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 "glasses-app" agent skill from https://github.com/brilliantlabsAR/brilliant_sdk/tree/main/.claude/skills/glasses-app into .cursor/skills/glasses-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glasses-app", 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/brilliantlabsAR/brilliant_sdk.git --path .claude/skills/glasses-app--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 brilliantlabsAR/brilliant_sdk --skill glasses-app -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install brilliantlabsAR/brilliant_sdk glasses-app --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brilliantlabsAR/brilliant_sdk.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/glasses-app .gemini/skills/glasses-app && 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 "glasses-app" agent skill from https://github.com/brilliantlabsAR/brilliant_sdk/tree/main/.claude/skills/glasses-app into .gemini/skills/glasses-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glasses-app", 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 brilliantlabsAR/brilliant_sdk glasses-appInstalls 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 brilliantlabsAR/brilliant_sdk --skill glasses-app -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/brilliantlabsAR/brilliant_sdk.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/glasses-app .github/skills/glasses-app && 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 "glasses-app" agent skill from https://github.com/brilliantlabsAR/brilliant_sdk/tree/main/.claude/skills/glasses-app into .github/skills/glasses-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glasses-app", 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 brilliantlabsAR/brilliant_sdk --skill glasses-app -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install brilliantlabsAR/brilliant_sdk glasses-app --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brilliantlabsAR/brilliant_sdk.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/glasses-app .opencode/skills/glasses-app && 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 "glasses-app" agent skill from https://github.com/brilliantlabsAR/brilliant_sdk/tree/main/.claude/skills/glasses-app into .opencode/skills/glasses-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glasses-app", 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.
glasses-appBuild an app for Brilliant Labs smart glasses (Halo or Frame) with this SDK, in Python, Flutter or WebBluetooth/TypeScript.
Glasses App is an agent skill from brilliantlabsAR/brilliant_sdk. Build an app for Brilliant Labs smart glasses (Halo or Frame) with this SDK, in Python, Flutter or WebBluetooth/TypeScript. Use when writing, extending or debugging a host program + device-side Lua app pair, or when asked to display something on / read sensors from the glasses.
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/flutter-quickstart.md`, `references/frame-api.md` and `references/python-quickstart.md`).
It sits in Mobile, covering Cross-platform mobile apps. It works with Lua, Python, Flutter and TypeScript. The repository describes itself as: All Brilliant SDKs in one monorepo. The licence is BSD-3-Clause.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2ec3f66. 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:
pipFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.brilliant.xyzFrom 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.
Glasses App loads about 1.2k tokens when it runs, and up to ~3.9k if it reads all its reference files. Until then it costs about 73 tokens; SKILL.md has 469 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 brilliantlabsAR/brilliant_sdk at commit 2ec3f66, republished under its BSD-3-Clause licence (© brilliantlabsAR). 469 words, ~1,220 tokens.
.claude/skills/glasses-app/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Every app is two programs: a host program (Python / Dart / TypeScript) and a device-side Lua app running in the glasses' Lua 5.4 VM. They exchange messages over BLE, identified by a single-byte message code that must match on both sides. Get this pairing right and everything else is bookkeeping.
*_ble layer alone and send raw Lua to the REPL — no Lua app
needed. See python/packages/brilliant_ble/examples/hello_world.py.*_msg
layer and the lifecycle below.python/packages/brilliant_msg/examples/EXAMPLES.md,
flutter/packages/simple_brilliant_app/example/EXAMPLES.md,
webbluetooth/packages/brilliant-msg/example/EXAMPLES.md.Per-SDK minimal working apps with file-by-file explanations:
On-device API: references/frame-api.md (condensed
frame.* reference and Halo/Frame differences).
connect()
upload_stdlua_libs(['data', <per-message-type libs>]) # e.g. 'plain_text', 'camera'
upload_frame_app('lua/<name>_frame_app.lua') # your device-side app
attach_print_response_handler() # see device print()/errors
start_frame_app() # runs it; blocks until it prints ready
send_message(code, msg.pack()) / attach Rx receivers # the app conversation
stop_frame_app(); disconnect()The data Lua lib is always needed: it reassembles BLE-chunked messages into
data.app_data[code] (or raw items) on the device. Each Tx*/Rx* message
class has a same-named Lua lib that parses/renders it — upload the ones you
use. While the frame app runs, the REPL is busy: no more raw send_lua()
without a break signal.
Single byte, chosen per app (examples use e.g. 0x0a text, 0x0d camera,
0x0e control codes). Host send_message(0x0a, TxPlainText(...).pack()) must
match if flag == 0x0a (or data.app_data[0x0a]) in the Lua app. Small
control signals use TxCode; responses stream back via Rx* receivers
attached to the data channel.
Branch on frame.HARDWARE_VERSION in Lua; BrilliantDeviceType on the host.
| Frame | Halo | |
|---|---|---|
| Display | 640×400 rectangular | 256×256 round |
| Draw model | buffered — call frame.display.show() | draws immediately — no show() |
| App start | — | call frame.display.power_save(false) |
| Input | tap | button + tap kinds ('single'/'double'/'triple'), RxClick (Dart/TS) |
| Audio out | — | speaker + frame.sound sfxr presets |
| Text | TxPlainText, TxTextSpriteBlock | same, plus TxTextPage with CircularTextLayout (Dart/TS) |
Full table: https://docs.brilliant.xyz/halo/halo-sdk-lua/
Run the device-side Lua in the emulator first (pip install halo-emulator) —
firmware-faithful, works for the Lua half of Flutter/TS apps too since the Lua
is identical across SDKs:
halo-emulator ./my_app_lua_dir/ # REPL + display windowor drive it from a pytest (inject taps/BLE/mic data, assert on
get_bluetooth_sent() / display state) — test-writing API in
python/packages/halo_emulator/README.md.
tools/check_lua_parity.py); SDK feature changes are
expected to land in all three implementations (see root AGENTS.md for
known asymmetries before assuming an API exists in your language)..lua file the app uploads must be listed under
assets: in pubspec.yaml (including packages/brilliant_msg/lua/*.min.lua).pcall and print(err) —
with the print handler attached, that's your only stderr. A break signal
arrives as an error in that pcall.collectgarbage('collect') after
handling large messages, prefer .min.lua libs and progressive/sliced
sprites (TxImageSpriteBlock) over big ones.© brilliantlabsAR, BSD-3-Clause. 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 4 other files (references) in .claude/skills/glasses-app of brilliantlabsAR/brilliant_sdk.
Open the folder on GitHubat commit 2ec3f66
Glasses App 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 |
|---|---|---|---|---|---|---|
| Glasses App this skillbrilliantlabsAR/brilliant_sdk | 115 | — | ~1.2k | Automated safety check: Pass | BSD-3-Clause | |
| Core API Changelibnativeapi/nativeapi | 164 | — | ~2.5k | Automated safety check: Pass | MIT | |
| MCP Debuggerdebugmcp/mcp-debugger | 173 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Vicoa CLIvicoa-ai/vicoa | 504 | — | ~5.8k | Automated safety check: Pass | AGPL-3.0 | |
| Flutter UI Probelibnativeapi/nativeapi | 164 | — | ~988 | Automated safety check: Pass | MIT | |
| Implement Flet Extensionflet-dev/flet | 17k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 |
libnativeapi/nativeapi
Carry a change to the C++ public API in core/ all the way downstream — design check, header edit, six platform implementations, C ABI + Rust/Dart/C/JS/Python regeneration, per-binding verification…
debugmcp/mcp-debugger
A skill your agent uses when investigating a bug, failing test, or unexpected runtime behavior and the mcp-debugger MCP server is available — drives real step-through debuggers (breakpoints, stack…
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…
Works with
Categories
Build an app for Brilliant Labs smart glasses (Halo or Frame) with this SDK, in Python, Flutter or WebBluetooth/TypeScript. Glasses App is an agent skill from brilliantlabsAR/brilliant_sdk. Build an app for Brilliant Labs smart glasses (Halo or Frame) with this SDK, in Python, Flutter or WebBluetooth/TypeScript.
Glasses App fits situations like: debugging a host program + device-side Lua app pair; asked to display something on / read sensors from the glasses.
Run `npx skills add brilliantlabsAR/brilliant_sdk --skill glasses-app -a claude-code`. Or copy the skill folder (.claude/skills/glasses-app in brilliantlabsAR/brilliant_sdk) into .claude/skills/glasses-app in your project. Claude Code loads it when a task matches its description.
Run `npx skills add brilliantlabsAR/brilliant_sdk --skill glasses-app -a codex`. Or copy the skill folder (.claude/skills/glasses-app in brilliantlabsAR/brilliant_sdk) into .agents/skills/glasses-app 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 brilliantlabsAR/brilliant_sdk --skill glasses-app -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/glasses-app, .gemini/skills/glasses-app, .github/skills/glasses-app and .opencode/skills/glasses-app in your project.
Going by SKILL.md and its folder, Glasses App needs the command-line tools its instructions call (pip). Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: docs.brilliant.xyz. 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.
Glasses App is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 4.9k 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 Glasses App: Core API Change (libnativeapi/nativeapi, 164 stars), MCP Debugger (debugmcp/mcp-debugger, 173 stars), Vicoa CLI (vicoa-ai/vicoa, 504 stars) and Flutter UI Probe (libnativeapi/nativeapi, 164 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
brilliantlabsAR (a GitHub organization) maintains it in brilliantlabsAR/brilliant_sdk, which has 115 GitHub stars. The repository was last updated on October 6, 2026.
Source: brilliantlabsAR/brilliant_sdk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.