Token导航 LogoToken导航TokenDH.com
研究检索敏感数据clawhub未标认证来源可访问clear审计通过

native-ui原生用户界面

Agent Skill

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

总安装

30,576

周安装

1,259

GitHub Stars

公开资料未说明

下载量

10,712
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:native-ui(原生用户界面)
来源仓库:https://github.com/wpank/native-ui
安装命令:
openclaw skills install native-ui
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install native-ui

简介

使用 Expo Router 和 React Native 构建本机移动 UI。涵盖遵循 Apple 人机界面指南的路由、导航、样式、本机控件、动画和平台约定。

SKILL.md

name
native-ui
model
standard
version
1.0.0
description
>
tags
[expo, react-native, ios, mobile, navigation, native-ui]

Native UI with Expo Router

Patterns and conventions for building native mobile applications with Expo Router and React Native.

References

Consult these as needed:

  • ./references/route-structure.md — Route conventions, dynamic routes, groups, folder organization
  • ./references/tabs.md — Native tab bar with NativeTabs, iOS 26 features
  • ./references/icons.md — SF Symbols with expo-symbols, icon names, animations, weights
  • ./references/controls.md — Native iOS controls: Switch, Slider, SegmentedControl, DateTimePicker
  • ./references/visual-effects.md — Blur effects (expo-blur) and liquid glass (expo-glass-effect)
  • ./references/animations.md — Reanimated: entering, exiting, layout, scroll-driven, gestures
  • ./references/search.md — Search bar with headers, useSearch hook, filtering patterns
  • ./references/gradients.md — CSS gradients via experimental_backgroundImage (New Architecture only)
  • ./references/media.md — Camera, audio, video, file saving
  • ./references/storage.md — SQLite, AsyncStorage, SecureStore
  • ./references/webgpu-three.md — 3D graphics and GPU visualizations with WebGPU/Three.js
  • ./references/toolbar-and-headers.md — Stack headers and toolbar with buttons, menus, search bars (iOS)
  • ./references/form-sheet.md — Form sheet presentation patterns

Running the App

Always try Expo Go first before creating custom builds.

  1. Start with npx expo start and scan the QR code
  2. Test features in Expo Go
  3. Only create custom builds when required

When Custom Builds Are Required

Use npx expo run:ios/android or eas build only for:

  • Local Expo modules (custom native code in modules/)
  • Apple targets (widgets, app clips via @bacons/apple-targets)
  • Third-party native modules not in Expo Go
  • Custom native configuration beyond app.json

Expo Go supports all expo-* packages, Expo Router, Reanimated, Gesture Handler, push notifications, and deep links out of the box.

Installation

OpenClaw / Moltbot / Clawbot

npx clawhub@latest install native-ui

Code Style

  • Escape nested backticks and quotes correctly
  • Always use import statements at the top of the file
  • Use kebab-case for file names: comment-card.tsx
  • Remove old route files when restructuring navigation
  • No special characters in file names
  • Configure tsconfig.json path aliases; prefer aliases over relative imports

Routes

See ./references/route-structure.md for detailed conventions.

  • Routes belong in the app directory
  • Never co-locate components, types, or utilities in app/ — this is an anti-pattern
  • Always have a route matching /, possibly inside a group route

Library Preferences

UseInstead of
expo-audioexpo-av
expo-videoexpo-av
expo-symbols@expo/vector-icons
react-native-safe-area-contextRN SafeAreaView
process.env.EXPO_OSPlatform.OS
React.useReact.useContext
expo-imageIntrinsic img element
expo-glass-effectCustom glass backdrops

Never use deprecated modules: Picker, WebView, SafeAreaView, AsyncStorage (from RN core), or legacy expo-permissions.


Responsiveness

  • Wrap root components in a scroll view
  • Use <ScrollView contentInsetAdjustmentBehavior="automatic" /> instead of <SafeAreaView>
  • Apply contentInsetAdjustmentBehavior="automatic" to FlatList and SectionList too
  • Use flexbox instead of Dimensions API
  • Prefer useWindowDimensions over Dimensions.get() for screen measurement

Behavior

  • Use expo-haptics conditionally on iOS for delightful interactions
  • Use views with built-in haptics (<Switch />, @react-native-community/datetimepicker)
  • First child of a Stack route should almost always be a ScrollView with contentInsetAdjustmentBehavior="automatic"
  • Prefer headerSearchBarOptions in Stack.Screen options for search bars
  • Use <Text selectable /> on data that users may want to copy
  • Format large numbers: 1.4M, 38k
  • Never use intrinsic elements (img, div) outside webviews or Expo DOM components

Styling

Follow Apple Human Interface Guidelines.

General Rules

  • Prefer flex gap over margin and padding
  • Prefer padding over margin
  • Always account for safe area via stack headers, tabs, or contentInsetAdjustmentBehavior="automatic"
  • Ensure both top and bottom safe area insets are handled
  • Inline styles preferred over StyleSheet.create unless reusing styles
  • Add entering/exiting animations for state changes
  • Use { borderCurve: 'continuous' } for rounded corners (not capsule shapes)
  • Use navigation stack title instead of custom text headers
  • On ScrollView, use contentContainerStyle for padding/gap (avoids clipping)
  • CSS and Tailwind are not supported — use inline styles

Text Styling

  • Add selectable prop to <Text/> elements showing important data or errors
  • Use { fontVariant: 'tabular-nums' } on counters for alignment

Shadows

Use CSS boxShadow style prop. Never use legacy RN shadow or elevation styles.

<View style={{ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.05)" }} />

Inset shadows are supported.


Navigation

Link

Use <Link href="/path" /> from expo-router for navigation.

import { Link } from 'expo-router';

<Link href="/path" />

<Link href="/path" asChild>
  <Pressable>...</Pressable>
</Link>

Include <Link.Preview> whenever possible to follow iOS conventions. Add context menus and previews frequently.

Stack

  • Always use _layout.tsx files to define stacks
  • Use Stack from expo-router/stack for native navigation stacks
  • Set page titles in Stack.Screen options: options={{ title: "Home" }}

Context Menus

Add long-press context menus to Link components:

<Link href="/settings" asChild>
  <Link.Trigger>
    <Pressable><Card /></Pressable>
  </Link.Trigger>
  <Link.Menu>
    <Link.MenuAction title="Share" icon="square.and.arrow.up" onPress={handleShare} />
    <Link.MenuAction title="Block" icon="nosign" destructive onPress={handleBlock} />
    <Link.Menu title="More" icon="ellipsis">
      <Link.MenuAction title="Copy" icon="doc.on.doc" onPress={() => {}} />
      <Link.MenuAction title="Delete" icon="trash" destructive onPress={() => {}} />
    </Link.Menu>
  </Link.Menu>
</Link>

Link Previews

<Link href="/settings">
  <Link.Trigger>
    <Pressable><Card /></Pressable>
  </Link.Trigger>
  <Link.Preview />
</Link>

Can be combined with context menus.

Modal

Present a screen as a modal:

<Stack.Screen name="modal" options={{ presentation: "modal" }} />

Prefer this over custom modal components.

Sheet

Present as a dynamic form sheet:

<Stack.Screen
  name="sheet"
  options={{
    presentation: "formSheet",
    sheetGrabberVisible: true,
    sheetAllowedDetents: [0.5, 1.0],
    contentStyle: { backgroundColor: "transparent" },
  }}
/>

contentStyle: { backgroundColor: "transparent" } enables liquid glass on iOS 26+.


Common Route Structure

Standard app layout with tabs and stacks:

app/
  _layout.tsx        — <NativeTabs />
  (index,search)/
    _layout.tsx      — <Stack />
    index.tsx        — Main list
    search.tsx       — Search view

Root layout:

// app/_layout.tsx
import { NativeTabs, Icon, Label } from "expo-router/unstable-native-tabs";
import { Theme } from "../components/theme";

export default function Layout() {
  return (
    <Theme>
      <NativeTabs>
        <NativeTabs.Trigger name="(index)">
          <Icon sf="list.dash" />
          <Label>Items</Label>
        </NativeTabs.Trigger>
        <NativeTabs.Trigger name="(search)" role="search" />
      </NativeTabs>
    </Theme>
  );
}

Shared group layout:

// app/(index,search)/_layout.tsx
import { Stack } from "expo-router/stack";
import { PlatformColor } from "react-native";

export default function Layout({ segment }) {
  const screen = segment.match(/\((.*)\)/)?.[1]!;
  const titles: Record<string, string> = { index: "Items", search: "Search" };

  return (
    <Stack
      screenOptions={{
        headerTransparent: true,
        headerShadowVisible: false,
        headerLargeTitleShadowVisible: false,
        headerLargeStyle: { backgroundColor: "transparent" },
        headerTitleStyle: { color: PlatformColor("label") },
        headerLargeTitle: true,
        headerBlurEffect: "none",
        headerBackButtonDisplayMode: "minimal",
      }}
    >
      <Stack.Screen name={screen} options={{ title: titles[screen] }} />
      <Stack.Screen name="i/[id]" options={{ headerLargeTitle: false }} />
    </Stack>
  );
}

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

79.99%
按下载量换算8,569

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

未展示

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills