From swiftwasm-skills
Guides BridgeJS for type-safe Swift-JavaScript interop: export Swift APIs to JS with @JS macros, import JS/TS into Swift via macros or bridge-js.d.ts. Covers setup, config, types, errors, and debugging.
npx claudepluginhub swiftwasm/swift-wasm-agent-skill --plugin bridge-jsThis skill uses the workspace's default tool permissions.
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**.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
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:)) 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], unbridged → JSObject/JSValue. See references/types.md if present.throws(JSException) is supported at the bridge; plain throws is not.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. When receiving callbacks from JS (e.g. imported APIs), use regular closure types in Swift ((Args) -> Return).