Agent skill

Brs Reference

by lvcabral in lvcabral/brs-engine

Look up Roku's official BrightScript/SceneGraph spec in the external/dev-doc submodule (docs/REFERENCES/) when implementing, fixing, or verifying an interpreter feature — components (roXxx)…

MITAuto-check passedGame Development

Install Brs Reference

skills CLI
$ npx skills add lvcabral/brs-engine --skill brs-reference -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install lvcabral/brs-engine brs-reference --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/lvcabral/brs-engine.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/brs-reference .claude/skills/brs-reference && rm -rf skills-src

Use ~/.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/

Facts

Skill name
brs-reference
GitHub stars
137
Token cost
~1.9k tokens
SKILL.md length
797 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Look up Roku's official BrightScript/SceneGraph spec in the external/dev-doc submodule (docs/REFERENCES/) when implementing, fixing, or verifying an interpreter feature — components (roXxx)…

  • Works in 3 steps: Find the file. Map the BrightScript name… → Read it. A component file lists its… → Grep across the corpus when you don't…
  • Confirm exact method signatures
  • SKILL.md covers When to use, Where things live (and where…, How to look up and Applying it to the code, plus 2 more sections
  • Calls git

What it does

Brs Reference is an agent skill from lvcabral/brs-engine. Look up Roku's official BrightScript/SceneGraph spec in the external/dev-doc submodule (docs/REFERENCES/) when implementing, fixing, or verifying an interpreter feature — components (roXxx), interfaces (ifXxx), events, SceneGraph nodes, global functions, or language behavior. Use it to confirm exact method signatures, node field names/types/defaults/access, and event semantics so simulated behavior matches a real Roku device.

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 Game Development. The repository describes itself as: BrightScript Simulation Engine - Run Roku apps on Browsers and Node.js. The licence is MIT.

When your agent uses it

  • Confirm exact method signatures
  • Node field names/types/defaults/access
  • Event semantics so simulated behavior matches a real Roku device

Example prompts

  • “/brs-reference”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Find the file. Map the BrightScript name to a path with the table above. If unsure
  2. Read it. A component file lists its supported ifXxx interfaces (as ifXxx
  3. Grep across the corpus when you don't know where a method/field is defined

What it can do on your machine

Read from SKILL.md and the folder at commit 5454545. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com
    • developer.roku.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Brs Reference loads about 1.9k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 797 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~111
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from lvcabral/brs-engine at commit 5454545, republished under its MIT licence (© lvcabral). 797 words, ~1,937 tokens.

Download SKILL.mdSave it as .claude/skills/brs-reference/SKILL.md (or your agent's skills folder).
name
brs-reference
description
Look up Roku's official BrightScript/SceneGraph spec in the external/dev-doc submodule (docs/REFERENCES/) when implementing, fixing, or verifying an interpreter feature — components (roXxx), interfaces (ifXxx), events, SceneGraph nodes, global functions, or language behavior. Use it to confirm exact method signatures, node field names/types/defaults/access, and event semantics so simulated behavior matches a real Roku device.

brs-reference

Roku's official, open-sourced BrightScript + SceneGraph reference docs are vendored as a git submodule (rokudev/dev-doc, branch v2.0) at external/dev-doc. The reference pages live under external/dev-doc/docs/REFERENCES/ (Markdown with YAML frontmatter). They are the authoritative spec for what the behavior should be — the brs-engine code is how we simulate it. Reach for this skill whenever a task involves a missing, incomplete, or wrong-looking BrightScript/SceneGraph feature, and before claiming a feature "matches Roku."

In this skill $REF means external/dev-doc/docs/REFERENCES.

The submodule must be initialized: if $REF is empty/missing, run git submodule update --init external/dev-doc. It is reference only — never make build/runtime code depend on it. If it still can't be fetched, say so and fall back to https://developer.roku.com/docs/references/ (or skip the lookup).

When to use

  • Implementing or fixing a roXxx component / ifXxx interface method.
  • Adding or correcting a SceneGraph node (fields, defaults, behavior).
  • Implementing a global function (Math/String/Utility/Runtime) or language feature.
  • Verifying argument counts, types, return values, defaults, or event semantics.
  • Checking whether an API is deprecated.

Where things live (and where to implement them)

All paths below are relative to $REF (= external/dev-doc/docs/REFERENCES).

Reference globTopicSource to edit
$REF/brightscript/components/roXxx.mdComponent overview + supported interfaces/eventssrc/core/brsTypes/components/RoXxx.ts (register in BrsObjects.ts)
$REF/brightscript/interfaces/ifXxx.mdMethod signatures, args, returns, defaultsmethods on the component, grouped under the ifXxx key in registerMethods — not a standalone type (see "Interfaces are method grouping" below)
$REF/brightscript/events/roXxxEvent.mdEvent objects from roMessagePortthe matching event component
$REF/brightscript/language/*.mdStatements, types, errors, #if, format strings, reserved words, global functionssrc/core/lexer/, parser/, preprocessor/, stdlib/
$REF/scenegraph/**/<node>.mdSceneGraph node fields + behavior (by category)src/extensions/scenegraph/nodes/<Node>.ts
$REF/scenegraph/xml-elements/*.md, component-functions/*.mdComponent XML + init/onKeyEventsrc/extensions/scenegraph/parser/, factory/
$REF/deprecated-apis.mdDeprecated APIs — check before relying on onen/a

Filenames are lowercase, no spaces (e.g. rovideoplayer.md, ifsgnodefield.md, renderable-nodes/rectangle.md). Files are Markdown: a YAML frontmatter block (title, excerpt, …) at the top, ## headings, GitHub-style pipe tables for fields/ methods, fenced or double-backtick code samples, and cross-links written as [label](doc:slug) (the slug is the target file's basename without .md).

How to look up

  1. Find the file. Map the BrightScript name to a path with the table above. If unsure of the category for a SceneGraph node, search by filename:
    bash
    REF=external/dev-doc/docs/REFERENCES
    find "$REF/scenegraph" -iname '*<node>*'
    find "$REF" -iname '*<name>*'
  2. Read it. A component file lists its supported ifXxx interfaces (as [ifXxx](doc:ifxxx) links) — follow those to the interfaces/ files for the actual method signatures. A node file's Fields table (Field / Type / Default / Access Permission / Description) is the spec for the node's fields; note that base-class fields are inherited and documented separately (the file says "Fields derived from the … base class can also be used").
  3. Grep across the corpus when you don't know where a method/field is defined:
    bash
    grep -rin "getmessageport" "$REF/brightscript/interfaces/"
    grep -rl "itemComponentName" "$REF/scenegraph/"
Show full SKILL.md (396 more words)Show less

Applying it to the code

  • Match names/types/defaults/access exactly. A node's defaultFields entries should mirror the reference Fields table (e.g. Rectangle's width/height are float default 0.0, color is color default 0xFFFFFFFF). Field type strings and default values in code should equal the doc's Type/Default columns.
  • Respect inheritance. If the doc says a node Extends Group, the TS class should extend the matching base and setExtendsType(name, SGNodeType.Group) — only declare fields the doc adds beyond the base.
  • Interfaces drive method surfaces, but don't become types. Use ifXxx.md to get the correct method names, arg order, optional args, and return types — then implement those methods on the component and register them under the ifXxx key in registerMethods({ ifXxx: [...] }). Do not create a new ifXxx class just because the docs list one. See "Interfaces are method grouping" below.
  • Cross-check before saying "done." When verifying a fix, re-read the relevant reference and confirm signatures, defaults, and edge cases (and that the API isn't in deprecated-apis.md) actually agree with the implementation.

Interfaces are method grouping, not separate types

The reference's ifXxx files describe Roku's interfaces, but this codebase does not implement one type per interface. Follow the existing pattern:

  • A component implements its methods (mostly inline on the class) and registers them with registerMethods({ ifXxx: [callable, ...] }). The ifXxx key is just a label that mirrors the docs — there is no ifXxx contract being satisfied.
    ts
    // RoVideoPlayer.ts — methods defined inline, grouped under interface-name keys
    this.registerMethods({
        ifVideoPlayer: [this.play, this.stop, this.setContentList, /* ... */],
        ifHttpAgent: [ifHttpAgent.addHeader, ifHttpAgent.setHeaders, /* ... */],
    });
  • src/core/brsTypes/interfaces/ holds only a small, deliberate set of shared helper classes (IfArray, IfEnum, IfHttpAgent, IfList, IfMessagePort, IfSocket, IfToStr, IfDraw2D, …) — abstract/shared method bundles that exist purely to reduce duplication when several components expose the same interface. Instantiate one with the owning component and spread its callables into registerMethods:
    ts
    const ifArray = new IfArray(this);
    this.registerMethods({ ifArray: [ifArray.peek, ifArray.pop, /* ... */] });
  • Decision rule when adding a method/interface to a component:
    • Shared by multiple components → add it to (or reuse) a helper in interfaces/.
    • Specific to one component → define it inline on that component class.
    • Either way, register it under the matching ifXxx key. Do not add a new file in interfaces/ just to mirror a documented interface that only one component uses.

Wiring reminders (see AGENTS.md for full detail)

  • New component: implement RoXxx.ts, register it in src/core/brsTypes/components/BrsObjects.ts.
  • New SceneGraph node: add to the SGNodeType enum in src/extensions/scenegraph/nodes/index.ts, create nodes/<Node>.ts, and wire it into SGNodeFactory.createNode's switch in factory/NodeFactory.ts.

© lvcabral, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/brs-reference of lvcabral/brs-engine.

Open the folder on GitHubat commit 5454545

Compare with similar skills

Brs Reference 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.

Brs Reference compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Brs Reference this skilllvcabral/brs-engine137—~1.9kAutomated safety check: PassMIT
Image to Three.js Modelimg2threejs/img2threejs18k1 repos~8.2kAutomated safety check: PassApache-2.0
Web CloneJane-xiaoer/claude-skill-web-clone1k1 repos~2.7kAutomated safety check: PassMIT
Threejs Game Directormajidmanzarpour/threejs-game-skills2.5k—~2.2kAutomated safety check: PassMIT
Game Asset Generatorhtdt/godogen7.1k—~2.8kAutomated safety check: PassMIT
Threejs Gameplay Systemsvalkor-ai/loom1.2k1 repos~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • Image to Three.js Model

    img2threejs/img2threejs

    Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.

    18k GitHub starsUsed in 1 repo~8.2k tokens
    Game DevelopmentAuto-check passed
  • Web Clone

    Jane-xiaoer/claude-skill-web-clone

    网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…

    1k GitHub starsUsed in 1 repo~2.7k tokens
    Game DevelopmentAuto-check passed
  • Threejs Game Director

    majidmanzarpour/threejs-game-skills

    Entrypoint for building, upgrading, and finishing Three.js browser games.

    2.5k GitHub stars~2.2k tokensUpdated 11 days ago
    Game DevelopmentAuto-check passed
  • Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.

    7.1k GitHub stars~2.8k tokensUpdated 8 days ago
    Game DevelopmentAuto-check passed
  • Build and iterate playable Three.js game systems: starter scaffold, architecture, design briefs, core loops, level and encounter design, entities, input, camera, collision and physics, scoring…

    1.2k GitHub starsUsed in 1 repo~1.4k tokens
    Game DevelopmentAuto-check passed
  • Uloop Execute Dynamic Code

    CyberAgentGameEntertainment/NovaShader

    Execute C with Unity APIs when existing uloop tools cannot inspect or edit enough.

    1.6k GitHub starsUsed in 1 repo~1.9k tokens
    Game DevelopmentAuto-check passed

Questions about Brs Reference

What does Brs Reference do?

Look up Roku's official BrightScript/SceneGraph spec in the external/dev-doc submodule (docs/REFERENCES/) when implementing, fixing, or verifying an interpreter feature — components (roXxx)…. Brs Reference is an agent skill from lvcabral/brs-engine. Look up Roku's official BrightScript/SceneGraph spec in the external/dev-doc submodule (docs/REFERENCES/) when implementing, fixing, or verifying an interpreter feature — components (roXxx), interfaces (ifXxx), events, SceneGraph nodes, global functions, or language behavior.

When should I use Brs Reference?

Brs Reference fits situations like: confirm exact method signatures; Node field names/types/defaults/access; event semantics so simulated behavior matches a real Roku device.

How do I install Brs Reference in Claude Code?

Run `npx skills add lvcabral/brs-engine --skill brs-reference -a claude-code`. Or copy the skill folder (.agents/skills/brs-reference in lvcabral/brs-engine) into .claude/skills/brs-reference in your project. Claude Code loads it when a task matches its description.

How do I install Brs Reference in Codex?

Run `npx skills add lvcabral/brs-engine --skill brs-reference -a codex`. Or copy the skill folder (.agents/skills/brs-reference in lvcabral/brs-engine) into .agents/skills/brs-reference in your project. Codex loads it when a task matches its description.

Can I use Brs Reference in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lvcabral/brs-engine --skill brs-reference -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/brs-reference, .gemini/skills/brs-reference, .github/skills/brs-reference and .opencode/skills/brs-reference in your project.

What does Brs Reference need to run?

Going by SKILL.md and its folder, Brs Reference needs the command-line tools its instructions call (git).

Does Brs Reference access the network?

SKILL.md names 2 domains. As links in the text: github.com and developer.roku.com. This is read from the text; nothing was executed.

Is Brs Reference safe to install?

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.

What licence does Brs Reference use?

Brs Reference is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Brs Reference use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Brs Reference?

Skills that share tags, products or a category with Brs Reference: Image to Three.js Model (img2threejs/img2threejs, 18k stars), Web Clone (Jane-xiaoer/claude-skill-web-clone, 1k stars), Threejs Game Director (majidmanzarpour/threejs-game-skills, 2.5k stars) and Game Asset Generator (htdt/godogen, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Brs Reference?

lvcabral (a GitHub user) maintains it in lvcabral/brs-engine, which has 137 GitHub stars. The repository was last updated on October 7, 2026.

Source: lvcabral/brs-engine on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.