nikitaefimenko/openplatform
Skills for building, publishing and hosting FinamX Open Platform extensions: guided path from an empty folder to a reviewed widget, artifact upload, moderation troubleshooting, host embedding and agent-driven UI, planning a set of extensions (PRD), Claude Code hooks and review agents.
Build or convert a FinamX Open Platform extension (widget, headless topic processor, or MCP tools). Interviews the developer, scaffolds with finamx-ext, pulls a real host domain, writes manifest.json surfaces, wires the extension SDK, sizing, per-user state, topics and host methods, and sets up s2s public keys and Flow Runner completion when needed. Verifies the build with finamx-ext check, check --host, and dev under platform CSP. Use for extension creation, migration, broken embeds, manifest surfaces, host domains, or finamx-ext. For submission and moderation use openplatform-ext-publish; for host embedding use openplatform-host-init.
Turns a loose product idea into a PRD for one extension or a set of extensions on the FinamX Open Platform. Runs rounds of numbered questions with a recommended answer, shows what already exists (catalog extensions with their topics, the chosen hosts' methods and topics, via finamx-ext catalog, hosts and domain pull), splits the work into extensions, topics, host methods and links, and writes docs/prd/<slug>/ (MAP.md, tickets, PRD.md) as decisions are made. Use it when someone wants to plan a product, a set of extensions, several widgets that talk to each other, asks for a PRD, "what should I build", "which extensions already exist", "with which hosts". Each extension is then handed to openplatform-ext-init. For one plain widget go straight to openplatform-ext-init.
Submits a FinamX Open Platform extension to the platform portal with finamx-ext publish and sees it through review: pre-publish checks and review, developer key (finamx-ext login), choosing how the code is delivered (artifact upload of dist/ vs embedBundleUrl vs headless), new versions, moderation status (finamx-ext status), and every error the portal returns (401, 404 NOT_FOUND, 409 EXTENSION_EXISTS / VERSION_NOT_NEWER / DOMAINS_NOT_APPROVED, BUNDLE_IMPORT_FAILED, INVALID_MANIFEST). Use it whenever someone wants to publish, submit, upload, release, update or check the review status of a FinamX / Open Platform extension or widget, asks whether the platform takes the files from their own server, why a version is not live, why moderation fails, or why the host still shows an old version, even if they only say "send it" or "отправь расширение". To build or fix the extension itself use openplatform-ext-init.
Integrate FinamX generative UI into ANY project's chat or agent surface: find the chat (useChat/streamText/ createMCPClient/custom SSE), connect the platform MCP (mcp-catalog :3100/mcp, Bearer host token + X-User-Id), add the model instructions (extension.list/get/schema/install/present, compose, graph.*, get_host_domain), and render tool results in the chat: registry extension via Launch + host-bridge, agent HTML/DivKit iframe, several linked extensions on one shared PubSubBroker, optional MCP Apps (present_*, ui://). Also: expose the host's FinamX extensions to EXTERNAL chat clients (Claude.ai, ChatGPT) as MCP Apps through the host's own MCP server + OAuth 2.1 (relay of the platform MCP). Use when a host wants agent-driven UI in a chat (its own or a third-party one). Not for base embedding (openplatform-host-init) or authoring (openplatform-ext-init).
Initialize a host app to embed FinamX Open Platform extensions: host token, fetchEmbedLaunch, useExtensionEmbed / ExtensionEmbedFrame, uiTokens, CapabilityRouter, PubSubBroker, host domain, optional identity/auth-context grants, MCP catalog tools, MCP Apps for external chat clients (Claude.ai, ChatGPT). Use when adding an extensions surface or debugging bridge traffic. Not for authoring extensions — use openplatform-ext-init.