← ClaudeAtlas

vanilla-lynxlisted

Build Rspeedy Vanilla Lynx apps with Element PAPI and Lynx Runtime APIs, never ReactLynx or JSX. Use for project scaffolding, main-thread UI, lifecycle/events, background communication, styling, or external bundles. Do not use for device-side runtime validation or debugging of an already built artifact; use lynx-devtool instead. For general APIs use lynx-api-docs; for ReactLynx use reactlynx-best-practices; for bundle quality use rspeedy-bundle-quality. Excludes Element PAPI JSON mode and output formats outside the Rspeedy Vanilla Lynx workflow.
sehyun0518/agent · ★ 0 · AI & Automation · score 59
Install: claude install-skill sehyun0518/agent
> **⚠️ Vanilla Lynx only (Element PAPI, JSX 없음).** 같은 Lynx라도 ReactLynx면 > `reactlynx-best-practices`, 웹 React/Next면 `react-best-practice`, > React Native(Expo)면 `react-native-skills`를 쓰세요. 네 팩은 혼용하지 않습니다. > 어느 팩인지는 저장소 의존성으로 판별합니다 — `@lynx-js/rspeedy`가 있고 > `@lynx-js/react`가 없음. <!-- vendored:begin --> # Build Vanilla Lynx Apps Use this skill to build Lynx apps directly with Element PAPI and Lynx Runtime APIs, without ReactLynx or JSX. ## Core Rules - Do not use ReactLynx, JSX, virtual DOM, or browser DOM APIs unless explicitly requested. - Always pass all four required arguments to `__AddEventListener(element, eventName, handler, options)`; pass `{}` when no listener options are needed. - Keep Element PAPI tree creation, mutation, lifecycle rendering, and UI updates in `main-thread.ts`. Never call Element PAPI APIs or `__FlushElementTree()` from `background.ts`; the background thread only sends serializable patches for the main thread to apply and flush. - Rely on the SDK flush for initial render; call `__FlushElementTree()` after later UI mutations. - Add `background.ts` only for heavier business logic, async work, timers, native calls, or data processing. Keep cross-thread payloads serializable. - Use `lynx.getEngine()` only for engine-defined lifecycle events such as `__RenderPage`, `__UpdatePage`, and `__DestroyLifetime`; never use it for app-defined thread-local or cross-thread events. Lifecycle handlers may ignore their event payload when the implementation does no