Install
openclaw skills install @zhenyangze/perryts-skillPerry TypeScript-to-native compiler skill. Use when working with the Perry compiler, Perry projects, or TypeScript code that compiles to native executables. Covers: compile/run/dev commands, cross-compilation targets (macOS/iOS/Android/HarmonyOS/Windows/Linux/Web), perry.toml configuration, Standard Library (npm packages compiled natively), Multi-Threading (parallelMap/spawn), Native UI widgets (VStack/HStack/State), System APIs, Widgets (home screen), Internationalization, Auto-Update, Plugins, and CLI reference. Triggers on: "perry compile", "perry run", perry.toml, perry/ui, perry/system, perry/thread, perry/i18n, perry/media, perry/updater, perry/tui, native UI, cross-compilation, HarmonyOS target, ArkUI codegen.
openclaw skills install @zhenyangze/perryts-skillPerry compiles TypeScript directly to native executables via HIR → LLVM codegen. No VM, no runtime interpreter.
perry init my-app && cd my-app
perry run src/main.ts # Compile + run
perry compile src/main.ts -o app # Build native binary
perry dev src/main.ts # Watch mode
perry compile src/main.ts --target ios-simulator -o app
perry compile src/main.ts --target android -o app.apk
perry compile src/main.ts --target harmonyos
perry compile src/main.ts --target web -o dist/
import { VStack, HStack, Text, Button, state } from "perry/ui"
import { parallelMap, spawn } from "perry/thread"
import { openURL, isDarkMode, keychainSave } from "perry/system"
import { i18n } from "perry/i18n"
import { createPlayer, play, setNowPlaying } from "perry/media"
import { Box, Text, render } from "perry/tui"
import { checkForUpdate, installUpdate } from "perry/updater"
Load these as needed for detailed API docs, configuration, and examples:
import { App, VStack, Text, Button, state } from "perry/ui"
const count = state(0)
App({
body: VStack([
count.text(),
Button("+", () => count.set(count.get() + 1))
])
})
import Fastify from "fastify"
const server = Fastify()
server.get("/", async () => ({ hello: "perry" }))
server.listen({ port: 3000 })
import { parallelMap } from "perry/thread"
const results = parallelMap([1, 2, 3, 4], (n) => n * 2)
// [2, 4, 6, 8]