bindings-synchronization
Guidelines and SOP for synchronizing public C++ API changes (methods, enums, options structs) to Java (Android JNI) and JavaScript/TypeScript (Web/WASM Embind).
Skill by googleOfficial
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/google-bindings-synchronization
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/bindings-synchronization
What's inside
- Skill name
bindings-synchronization- Description
- Guidelines and SOP for synchronizing public C++ API changes (methods, enums, options structs) to Java (Android JNI) and JavaScript/TypeScript (Web/WASM Embind).
- License
- Apache-2.0
- Instructions
- 75 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: "bindings-synchronization" does not match folder "bindings_synchronization"
Files (1)
- SKILL.md
SKILL.md (first lines)
# Cross-Platform Language Bindings Synchronization
When making changes to public Filament C++ APIs, AI agents **must** ensure the changes are mirrored in the Java and JavaScript/TypeScript binding layers.
---
## 1. Trigger Conditions
You must check and update the language bindings if your changes touch any public headers under `filament/include/filament/`, specifically:
- **New/Modified/Deleted Methods** on core classes (e.g., `View`, `Engine`, `Camera`, `LightManager`, `RenderableManager`).
- **Options Structs** (e.g., `AmbientOcclusionOptions`, `BloomOptions`, `FogOptions`).
> [!IMPORTANT]
> If you modify options structs defined in `filament/include/filament/Options.h`:
> 1. **Run `apigen`** to regenerate `View.java` and `View.cpp` (which host the Java POJO options structs and JNI bridges):
> ```bash
> python3 tools/apigen/generate_android.py -j
> ```
> 2. **Run `beamsplitter`** to update JavaScript/TypeScript bindings and C++ JSON settings serialization:
> ```bash
> cd tools/beamsplitter && go run .
> ```
- **Enums & Constants** (e.g., `BlendMode`, `QualityLevel`, `AntiAliasing` under `filament/include/filament/` or nested inside classes).
---
## 2. Java & Android JNI Synchronization
All JNI JNI-exported functions use automatic symbol resolution (dynamic mapping), meaning they are mapped by signature rather than a static registration table.
### File Mappings
- **Java Class**: `android/filament-android/src/main/java/com/google/android/filament/<ClassName>.java`
- **JNI C++ Wrapper**: `android/filament-android/src/main/cpp/<ClassName>.cpp`
### Guidelines
1. **API Consistency**: Keep method visibility `public` (unless the API is strictly internal to the Java package). Follow Java naming conventions (camelCase).
2. **Getter/Setter Completeness**: If you add a Setter (e.g., `setFoo`), always add the corresponding Getter (e.g., `isFoo` or `getFoo`).
3. **JNI Signature**:
- Native declarations in Java must be `private static native`.
- The corresponding C++ function in JNI must be decorated with `extern "C" JNIEXPORT <ReturnType> JNICALL Java_com_google_android_filament_<ClassName>_<NativeMethodName>`.
- Return values from native C++ booleans should be cast to `jboolean` using `(jboolean)` or `static_cast<jboolean>()`.
---
## 3. JavaScript & TypeScript Synchronization
Filament uses Emscripten's Embind to export C++ APIs to JS.
### File Mappings
- **Embind Source**: `web/filament-js/jsbindings.cpp`
- **Enums Embind Source**: `web/filament-js/jsenums.cpp`
- **TypeScript Definition**: `web/filament-js/filament.d.ts`
- **JS Extension Wrappers**: `web/filament-js/extensions.js`
### Guidelines
1. **Embind Registration**:
- Register member functions in `jsbindings.cpp` within the corresponding `class_<ClassName>("<JSClassName>")` block using `.function("methodName", &ClassName::methodName)`.
2. **TypeScript Declarations**:
- Always update `filament.d.ts` to match any changes. Every bound C++ method should have a corresponding declaration inside `export class <ClassName>` to avoid IDE type errors.
3. **Complex Option Structs**:
- If you modify or add fields to an options struct (like `BloomOptions`), make sure to:
- Register the new fields in `jsbindings.cpp` using `.field("fieldName", &ClassName::Options::fieldName)`.
- Update the TypeScript interface in `filament.d.ts` to include the new properties.
- Check if `extensions.js` contains a prototype-overrides wrapper for merging the options (e.g., `Filament.View.prototype.setBloomOptions`). Update the default options object if needed.
---
## 4. Verification Check
Before concluding a task:
1. Double-check JNI signature signatures against the Java class.
2. Verify that type bindings and return types match up.
3. Verify that TS definitions in `filament.d.ts` are 100% synchronized.From google/filament, Apache-2.0.
More from google/filament
- 0.690score
cpp-header-inclusion
googleOfficial
Enforce the strict topological header inclusion layering and reordering rules in Filament.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.690score
filament-desktop-testing
googleOfficial
Execute unit tests and performance benchmarks for Filament on desktop platforms.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.690score
cpp-static-thread-safety
googleOfficial
Enforce C++ static thread safety annotations and correct synchronization primitives.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.690score
filament-android-development
googleOfficial
Build, deploy, run, and benchmark Filament binaries on connected Android devices or emulators.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.687score
filament-build-clean
googleOfficial
Clean and build Filament targets for development, debugging, and production.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.687score
code-review
googleOfficial
Adversarial systems, concurrency, memory-model, and architecture code review protocol.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.685score
preprocessor-guard-hygiene
googleOfficial
Enforce preprocessor guard rules and macro-dependent inclusion hygiene in C++.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.685score
verification-protocols
googleOfficial
Standard verification pipeline to execute after modifying C++ source or header files.
SkillAFreshness: A★ 20.6KClaude Code +9 - 0.685score
header-self-containment
googleOfficial
Enforce strict header self-containment so that every header file compiles independently.
SkillAFreshness: A★ 20.6KClaude Code +9
Signals
- Stars
- 20,648
- Forks
- 2,283
- Open issues
- 174
- Last commit (this folder)
- Sep 17, 2026 (1 month ago)
- Last release
- Oct 21, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/google/filament
- Website
- google.github.io/filament/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from google
- 0.699score
retrieving-developer-knowledge
googleOfficial
Searches, retrieves, and synthesizes official Google developer documentation across Google Cloud, AI/Gemini, Android, Chrome, Web, Flutter, Go, Firebase, and…
SkillAFreshness: A★ 21.5KClaude Code +9 - 0.699score
data-manager-api-setup
googleOfficial
Guides developers through client library installation and authentication setup steps for the Data Manager API.
SkillAFreshness: A★ 21.5KClaude Code +9 - 0.699score
agent-platform-migrate-from-ai-studio
googleOfficial
Guides agents and users through migrating from Gemini API in Google AI Studio to Gemini Enterprise Agent Platform (formerly Vertex AI).
SkillAFreshness: A★ 21.5KClaude Code +9 - 0.699score
gcloud
googleOfficial
Provides safety-critical validation, guardrails, and data reduction for gcloud CLI operations across Google Cloud Platform (GCP) services and infrastructure.
SkillAFreshness: A★ 21.5KClaude Code +9 - 0.699score
google-cloud-recipe-onboarding
googleOfficial
Guides a developer's first steps on Google Cloud, covering account creation, billing setup, project management, and deploying a first resource.
SkillAFreshness: A★ 21.5KClaude Code +9 - 0.699score
agent-platform-deploy
googleOfficial
Deploy open models or custom weights from Model Garden to Agent Platform endpoints, check the status of an in-progress deployment operation, or clean up…
SkillAFreshness: A★ 21.5KClaude Code +9
Cite this page
bindings-synchronization skill. Agent Mart. https://agentmart.dev/skills/google-bindings-synchronization (last updated 2026-10-24)