brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Build Zalo Mini Apps - lightweight React web apps running inside the Zalo super-app. Use for Zalo Mini App setup, zmp-cli/devtools, ZaUI 1.11.x components, zmp-sdk APIs, permissions, token-based phone number flow, user info, storage, local file storage, camera/media, document
Claude Code
$ npx -y skills add neddtu/zalo-mini-app-skills --skill zalo-mini-app --agent claude-code
Codex
$ npx skills add neddtu/zalo-mini-app-skills --skill zalo-mini-app -a codex -y
Cursor
$ npx skills add neddtu/zalo-mini-app-skills --skill zalo-mini-app -a cursor -y
Gemini CLI
$ npx skills add neddtu/zalo-mini-app-skills --skill zalo-mini-app -a gemini-cli -y
GitHub Copilot
$ npx skills add neddtu/zalo-mini-app-skills --skill zalo-mini-app -a github-copilot -y
OpenCode
$ npx skills add neddtu/zalo-mini-app-skills --skill zalo-mini-app -a opencode -y
Windsurf
$ npx skills add neddtu/zalo-mini-app-skills --skill zalo-mini-app -a windsurf -y
name: zalo-mini-app description: Build Zalo Mini Apps - lightweight React web apps running inside the Zalo super-app. Use for Zalo Mini App setup, zmp-cli/devtools, ZaUI 1.11.x components, zmp-sdk APIs, permissions, token-based phone number flow, user info, storage, local file storage, camera/media, document preview, payment/Checkout, Open APIs, partner APIs, KYB/eKYC, publication, testing, and Zalo design guidelines.
Build Mini Apps for the Zalo platform using React, ZaUI, zmp-sdk, Zalo Mini App CLI/Extension, and platform Open APIs.
Docs baseline: official Zalo Mini App docs checked on **2026-06-24**.
npm install -g zmp-cli zmp create my-app cd my-app zmp start
Core packages:
npm install zmp-ui zmp-sdk
import { App, Page, Button, Input, Modal } from "zmp-ui";
import "zmp-ui/zaui.css";
import { getUserInfo, authorize } from "zmp-sdk/apis";Current package versions observed on 2026-06-24:
Always verify package types in the installed project when implementing exact props or SDK return types.
import { getPhoneNumber } from "zmp-sdk/apis";
const { token } = await getPhoneNumber({});
// Send token to backend immediately.
// Backend exchanges token with Zalo Open API to get the actual phone number.
// Token is single-use and short-lived.Do **not** expect `getPhoneNumber` to return `{ number }` in current docs.
import { getLocation } from "zmp-sdk/apis";
const { token } = await getLocation();
// Send token to backend for Zalo Open API exchange.Do **not** expect `getLocation` to return direct `{ latitude, longitude }` in current docs.
import { LFSStorage } from "zmp-sdk/apis";
const { support } = await LFSStorage.isSupportLFS();
const { savedPath } = await LFSStorage.saveFile({ filePath: "local-temp-path" });Use `filePath` / `savedPath`, not old `tempFilePath` helpers.
import { openMediaPicker } from "zmp-sdk/apis";
const { data } = await openMediaPicker({
type: "photo",
maxSelectItem: 5,
serverUploadUrl: "https://example.com/upload"
});Use `maxSelectItem`, not `maxSelection`.
import { App, Page, Header, List, Icon, BottomNavigation } from "zmp-ui";
export default function Root() {
return (
<App>
<Page>
<Header title="Home" />
<List>
<List.Item title="Item" suffix={<Icon icon="zi-chevron-right" />} />
</List>
</Page>
<BottomNavigation fixed>
<BottomNavigation.Item key="home" label="Home" icon={<Icon icon="zi-home" />} />
</BottomNavigation>
</App>
);
}Build Zalo Mini Apps - lightweight web apps running inside the Zalo super-app platform.
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.