Skip to content
Back to skills

Comet Scaffold

ASecurity

React Native 脚手架 comet CLI 命令规范与项目配置。当用户提到"comet"、"脚手架"、"scaffold"、"初始化项目"、"创建应用"、"项目结构"、"comet.yaml"时使用此 skill。

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 8, 2026
developmenttypescriptbashreacttestinggit

Works with

  • vscode
  • cli

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill comet-scaffold --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Comet Scaffold?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Comet Scaffold
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-comet-scaffold/badge)](https://www.skillsdirectory.com/skills/majiayu000-comet-scaffold)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: comet-scaffold
description: React Native 脚手架 comet CLI 命令规范与项目配置。当用户提到"comet"、"脚手架"、"scaffold"、"初始化项目"、"创建应用"、"项目结构"、"comet.yaml"时使用此 skill。
---

# Comet 脚手架命令规范

基于 React Native 通用脚手架设计方案的 CLI 命令与配置约定。

## 核心配置文件

### comet.yaml

脚手架的单一配置源,记录所有工程约定:

```yaml
name: my_app
org: com.example

package_manager: pnpm

build_tool: expo_prebuild # expo_prebuild | bare
architecture: new # new | old
integration: greenfield # greenfield | brownfield

state_management: zustand
server_state: tanstack_query
router: react_navigation

styling_engine: nativewind # nativewind | unistyles | restyle | stylesheet
forms: rhf_zod # rhf_zod | none
permissions: unified # unified | none
deep_linking: true
app_scheme: myapp
universal_links:
  - example.com

envs:
  - name: development
    android_flavor: dev
    ios_scheme: MyApp-Dev
    env_file: .env.development
  - name: staging
    android_flavor: stg
    ios_scheme: MyApp-Stg
    env_file: .env.staging
  - name: production
    android_flavor: prod
    ios_scheme: MyApp
    env_file: .env.production

modules:
  network: true
  storage: true
  i18n: true
  sentry: true
  svg: true
  e2e: false
```

---

## CLI 命令

### 创建应用

```bash
comet create app <app_name> \
  --org com.example \
  --package-manager pnpm \
  --build-tool expo_prebuild \
  --architecture new \
  --integration greenfield \
  --state-management zustand \
  --router react_navigation \
  --enable-network \
  --enable-storage \
  --with-i18n \
  [--with-sentry] \
  [--with-ci]
```

**行为**:

- Expo Prebuild(默认):基于 `npx create-expo-app@latest` 初始化
- Bare RN(可选):基于 `npx @react-native-community/cli init` 初始化
- 生成标准目录结构(`src/app`、`src/core`、`src/features`)
- 初始化多环境配置
- 若指定 `--with-ci`,生成 `.github/workflows/ci.yml`

### 创建 Feature

```bash
comet create feature <feature_name> \
  [--route Counter] \
  [--no-domain] \
  [--no-data]
```

**生成结构**:

```text
src/features/<feature_name>/
  presentation/
    screens/<FeatureName>Screen.tsx
    components/<FeatureName>View.tsx
    stores/use<FeatureName>Store.ts
  domain/
    entities/<featureName>.ts
    repositories/<featureName>Repository.ts
  data/
    datasources/<FeatureName>RemoteDataSource.ts
    repositories/<FeatureName>RepositoryImpl.ts
```

**选项**:

- `--route`:自动在 Root Navigator 注册路由
- `--no-domain`:不生成 domain 层
- `--no-data`:不生成 data 层

### 创建 Service

```bash
comet create service <service_name>
```

在 `src/core/` 下生成服务骨架,如 `analytics`、`crash_reporting` 等。

### 辅助命令

| 命令                 | 说明                          |
| -------------------- | ----------------------------- |
| `comet lint`         | 运行 ESLint + TypeScript 检查 |
| `comet format`       | 运行 Prettier                 |
| `comet test`         | 运行 Jest(可选 Detox)       |
| `comet doctor`       | 检查项目是否符合脚手架约定    |
| `comet upgrade-core` | 统一升级核心依赖版本          |

---

## 项目目录结构

### 顶层目录

```text
project_root/
  app.json or app.config.ts   # Expo 配置
  android/                    # 原生 Android(Prebuild 生成)
  ios/                        # 原生 iOS(Prebuild 生成)
  src/                        # 源代码
  assets/                     # 静态资源
  __tests__/                  # 测试文件
  .vscode/ or .idea/          # IDE 配置
  babel.config.js
  metro.config.js
  tsconfig.json
  package.json
  comet.yaml                  # 脚手架配置
  README.md
```

### src 目录结构

```text
src/
  app/
    App.tsx                   # 根组件:Provider、NavigationContainer
    bootstrap.ts              # 应用引导初始化
    di.ts                     # 可选:跨 feature 核心依赖收口
    navigation/
      routes.ts               # 路由常量/类型(ParamList)
      RootNavigator.tsx       # Root Navigator

  core/                       # 无业务基础设施
    config/
      env.ts                  # 环境抽象
      appConfig.ts            # 配置汇总
    error/
      appError.ts             # 错误模型
      errorMapper.ts          # 错误映射
      errorReporter.ts        # 错误上报
    forms/
      formTypes.ts            # 表单类型
      zodSchemas.ts           # Zod Schema
    network/
      httpClient.ts           # axios/fetch 封装
      interceptors/
        authInterceptor.ts
        loggingInterceptor.ts
    permissions/
      permissions.ts          # 权限类型
      usePermission.ts        # 权限 Hook
    storage/
      keyValueStorage.ts      # KV 存储抽象
      secureStorage.ts        # 安全存储
    theme/
      tokens.ts               # 设计 token
      theme.ts                # 主题对象
    styling/
      styling.ts              # 样式引擎适配
    i18n/
      i18n.ts                 # i18next 初始化
    utils/
      logger.ts
      result.ts               # Result 类型
    components/
      AppScaffold.tsx
      LoadingIndicator.tsx
      ErrorView.tsx
      PrimaryButton.tsx

  features/                   # Feature-first 业务模块
    counter/                  # 示例 feature
      presentation/
        screens/
          CounterScreen.tsx
        components/
          CounterView.tsx
        stores/
          useCounterStore.ts
      domain/
        entities/
          counter.ts
        repositories/
          counterRepository.ts
      data/
        datasources/
          counterLocalDataSource.ts
        repositories/
          counterRepositoryImpl.ts
```

---

## 技术选型(默认)

| 类别     | 技术                                 |
| -------- | ------------------------------------ |
| 构建工具 | Expo(Prebuild / CNG)               |
| 底层架构 | New Architecture                     |
| 语言     | TypeScript(strict)                 |
| 包管理   | pnpm                                 |
| 导航     | React Navigation 7                   |
| 状态管理 | Zustand + TanStack Query             |
| 样式     | NativeWind                           |
| 表单     | React Hook Form + Zod                |
| 网络     | axios                                |
| 存储     | AsyncStorage / MMKV                  |
| 国际化   | i18next                              |
| 监控     | Sentry                               |
| 测试     | Jest + @testing-library/react-native |

---

## 临时初始化(comet 未落地前)

### Expo(推荐)

```bash
npx create-expo-app@latest MyApp
cd MyApp
npx expo start

# 需要原生工程时
npx expo prebuild --clean
```

### Bare React Native

```bash
npx @react-native-community/cli@latest init MyApp
cd MyApp
npx react-native run-android
# 或
npx react-native run-ios
```

---

## 环境切换

### 原生构建维度

- iOS:Scheme/Configuration(Debug/Staging/Release)
- Android:productFlavors(dev/staging/prod)+ buildTypes

### JS 侧读取

- Expo:`app.config.ts` + EAS 环境变量
- Bare RN:`react-native-config` + `.env.*`

### 运行脚本示例

```json
{
  "scripts": {
    "ios:dev": "expo start --ios",
    "ios:stg": "expo start --ios --variant staging",
    "android:dev": "expo start --android",
    "android:stg": "expo start --android --variant staging"
  }
}
```

---

## 依赖版本参考(2025-12)

以模板 `package.json` + lockfile 为准,以下仅供参考:

| 包                       | 版本    |
| ------------------------ | ------- |
| react                    | 19.2.3  |
| react-native             | 0.83.0  |
| @react-navigation/native | 7.1.25  |
| zustand                  | 5.0.9   |
| @tanstack/react-query    | 5.90.12 |
| axios                    | 1.13.2  |
| i18next                  | 25.7.2  |
| @sentry/react-native     | 7.7.0   |

定期运行 `npx expo doctor` 和 `pnpm outdated` 检查兼容性。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.