From bridge-js
Generates type-safe Swift–JavaScript bindings via BridgeJS: export Swift APIs to JS or import JS/TS APIs into Swift using @JS macros or bridge-js.d.ts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bridge-js:bridge-jsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
BridgeJS is a code-generation layer in JavaScriptKit that makes Swift–JavaScript interop faster and easier than raw `JSObject`/`JSValue`: you declare the API shape in Swift (or TypeScript), and the tool generates glue code. Two directions: **export Swift to JavaScript** and **import JavaScript into Swift**.
BridgeJS is a code-generation layer in JavaScriptKit that makes Swift–JavaScript interop faster and easier than raw JSObject/JSValue: you declare the API shape in Swift (or TypeScript), and the tool generates glue code. Two directions: export Swift to JavaScript and import JavaScript into Swift.
When you need details, read DocC from the checked-out JavaScriptKit repository: Sources/JavaScriptKit/Documentation.docc/ when inside the JavaScriptKit repo, or .build/checkouts/JavaScriptKit/Sources/JavaScriptKit/Documentation.docc/ when in a project that depends on JavaScriptKit.
@JS (and @JS(namespace:enumStyle:identityMode:)) on functions, classes, structs, enums, closures, protocols, etc. JavaScript then calls into your Swift code. See references/exporting.md.@JSFunction, @JSClass, @JSGetter, @JSSetter; use @JSGetter(from: .global) for globals like document/console; inject other implementations via getImports(). See references/importing.md. (2) Or use bridge-js.d.ts to generate the same Swift bindings. See references/importing-ts.md.Optional ↔ null, JSUndefinedOr ↔ undefined, arrays, Record<string, V> ↔ [String: V], JSTypedArray<T> ↔ TypedArray (by reference), unbridged → JSObject/JSValue. See references/types.md if present.JSTypedArray, and closures cross by reference; structs, enums, and plain arrays cross by copy.throws(JSException) is supported at the bridge; plain throws is not.async functions/methods/closures become Promise-returning JS functions (require JavaScriptEventLoop.installGlobalExecutor()). Imported standalone @JSFunction cannot be async, but imported async callbacks (closure parameters) are supported.node .build/checkouts/JavaScriptKit/Plugins/BridgeJS/Sources/TS2Swift/JavaScript/bin/ts2swift.js <input.d.ts> [options]; Run with --help for usage.release() when the closure is no longer needed by JS. Plain Swift closure types also work as parameters/returns, released automatically via FinalizationRegistry. Closure signatures may be throws(JSException) and/or async. When receiving callbacks from JS (e.g. imported APIs), use regular closure types in Swift ((Args) -> Return).npx claudepluginhub swiftwasm/swift-wasm-agent-skill --plugin portingCreates and updates slim native iOS bindings for .NET MAUI and .NET for iOS using the Native Library Interop (NLI) approach. Guides through Swift/Objective-C wrappers, Xcode project config, C# API generation, and xcframework integration.
Decides when and how to bridge SwiftUI into AppKit for macOS apps. Provides patterns for NSViewRepresentable, NSViewControllerRepresentable, window access, responder chain, panels, and menus.
Ports React/React Native features to idiomatic native iOS/Swift code. Analyzes behavior, components, state, logic from React source; implements matching target codebase patterns. For migrations or native web alternatives.