Token导航 LogoToken导航TokenDH.com
开发操作浏览器github未标认证来源可访问许可证需确认审计通过

capacitor-expert电容器专家

Agent Skill

capacitor-expert 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

3,297

周安装

136

GitHub Stars

19

下载量

1,077
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

请帮我安装这个 Agent Skill:capacitor-expert(电容器专家)
来源仓库:https://github.com/capawesome-team/skills
仓库路径:skills/capacitor-expert
安装命令:
npx skills add https://github.com/capawesome-team/skills --skill capacitor-expert
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/capawesome-team/skills --skill capacitor-expert

简介

提供 Capacitor 架构、插件和最佳实践的参考指南。

  • 适合理解 WebView 层、原生桥接和插件机制。capacitor-expert 属于开发类 Skill,可作为该场景下的辅助能力补充。
  • 涵盖 CLI 使用、框架集成和 Capawesome Cloud 集成。
  • 需项目已创建并具备 Node.js 和平台工具链。
  • 安装前建议确认权限范围,避免触发网络请求或文件修改。

SKILL.md

Capacitor Expert

Comprehensive reference for building cross-platform apps with Capacitor. Covers architecture, CLI, plugins, framework integration, best practices, and Capawesome Cloud.

Core Concepts

Capacitor is a cross-platform native runtime for building web apps that run natively on iOS, Android, and the web. The web app runs in a native WebView, and Capacitor provides a bridge to native APIs via plugins.

Architecture

A Capacitor app has three layers:

  1. Web layer -- HTML/CSS/JS app running inside a native WebView (WKWebView on iOS, Android System WebView on Android).
  2. Native bridge -- Serializes JS plugin calls, routes them to native code, and returns results as Promises.
  3. Native layer -- Swift/ObjC (iOS) and Kotlin/Java (Android) code implementing native functionality.

Data passed across the bridge must be JSON-serializable. Pass files as paths, not base64.

Project Structure

my-app/
  android/                  # Native Android project (committed to VCS)
  ios/                      # Native iOS project (committed to VCS)
    App/
      App/                  # iOS app source files
      App.xcodeproj/
  src/                      # Web app source code
  dist/ or www/ or build/   # Built web assets
  capacitor.config.ts       # Capacitor configuration
  package.json

The android/ and ios/ directories are full native projects -- they are committed to version control and can be modified directly.

Capacitor Config

capacitor.config.ts (preferred) or capacitor.config.json controls app behavior:

import type { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.app',
  appName: 'My App',
  webDir: 'dist',
  server: {
    // androidScheme: 'https', // default in Cap 6+
  },
};

export default config;

For details, see App Configuration.

Creating a New App

Quick Start

# 1. Create a web app (React example with Vite)
npm create vite@latest my-app -- --template react-ts
cd my-app && npm install

# 2. Install Capacitor
npm install @capacitor/core
npm install -D @capacitor/cli

# 3. Initialize Capacitor
npx cap init "My App" com.example.myapp --web-dir dist

# 4. Build web assets
npm run build

# 5. Add platforms
npm install @capacitor/android @capacitor/ios
npx cap add android
npx cap add ios

# 6. Sync and run
npx cap sync
npx cap run android
npx cap run ios

Web asset directories by framework:

  • Angular: dist/<project-name>/browser (Angular 17+ with application builder)
  • React (Vite): dist
  • Vue (Vite): dist
  • Vanilla: www

For the full guided creation flow, see capacitor-app-creation.

Capacitor CLI

All commands: npx cap <command>. Most important commands:

CommandPurpose
npx cap init <name> <id>Initialize Capacitor in a project
npx cap add <platform>Add Android or iOS platform
npx cap syncCopy web assets + update native dependencies (run after every plugin install, config change, or web build)
npx cap copyCopy web assets only (faster, no native dependency update)
npx cap run <platform>Build, sync, and deploy to device/emulator
npx cap run <platform> -l --externalRun with live reload
npx cap open <platform>Open native project in IDE
npx cap build <platform>Build native project
npx cap doctorDiagnose configuration issues
npx cap lsList installed plugins

For the full CLI reference, see CLI Reference.

Framework Integration

Capacitor works with any web framework. Framework-specific patterns:

Angular

  • Wrap Capacitor plugins in Angular services for DI and testability.
  • Plugin event listeners run outside NgZone -- always wrap callbacks in NgZone.run().
  • Register listeners in ngOnInit, remove in ngOnDestroy.

For details, see capacitor-angular.

React

  • Create custom hooks (useCamera, useNetwork) that wrap Capacitor plugins.
  • Use useEffect for listener registration with cleanup to prevent memory leaks.
  • React 18 strict mode double-mounts -- ensure cleanup functions work correctly.

For details, see capacitor-react.

Vue

  • Create composables (useCamera, useNetwork) using Vue 3 Composition API.
  • Register listeners in onMounted, remove in onUnmounted.
  • Vue reactivity picks up ref changes automatically (no NgZone equivalent needed).

For details, see capacitor-vue.

Plugins

Plugins are Capacitor's extension mechanism. Each plugin exposes a JS API backed by native implementations.

Plugin Sources

  • Official (@capacitor/*) -- Camera, Filesystem, Geolocation, Preferences, etc.
  • Capawesome (@capawesome/*, @capawesome-team/*) -- SQLite, NFC, Biometrics, Live Update, etc.
  • Community (@capacitor-community/*) -- AdMob, BLE, SQLite, Stripe, etc.
  • Firebase (@capacitor-firebase/*) -- Analytics, Auth, Messaging, Firestore, etc.
  • MLKit (@capacitor-mlkit/*) -- Barcode scanning, face detection, translation.
  • RevenueCat (@revenuecat/purchases-capacitor) -- In-app purchases.

Installing a Plugin

npm install @capacitor/camera
npx cap sync

After installation, apply any required platform configuration (permissions in AndroidManifest.xml, Info.plist entries, etc.) as documented by the plugin.

Using a Plugin

import { Camera, CameraResultType } from '@capacitor/camera';

const photo = await Camera.getPhoto({
  quality: 90,
  resultType: CameraResultType.Uri,
});

For the full plugin index (160+ plugins) and setup guides, see capacitor-plugins.

Plugin Development

Create custom Capacitor plugins with native iOS (Swift) and Android (Java/Kotlin) implementations:

  1. Scaffold with npm init @capacitor/plugin@latest.
  2. Define the TypeScript API in src/definitions.ts.
  3. Implement the web layer in src/web.ts.
  4. Implement iOS plugin in ios/Sources/.
  5. Implement Android plugin in android/src/main/java/.
  6. Verify with npm run verify.

Key rules:

  • The registerPlugin() name in src/index.ts must match jsName on iOS and @CapacitorPlugin(name = "...") on Android.
  • iOS methods need @objc and must be listed in pluginMethods (CAPBridgedPlugin).
  • Android methods need @PluginMethod() annotation and must be public.

For full details, see capacitor-plugin-development.

Cross-Platform Best Practices

Platform Detection

import { Capacitor } from '@capacitor/core';

const platform = Capacitor.getPlatform(); // 'android' | 'ios' | 'web'
if (Capacitor.isNativePlatform()) { /* native-only code */ }
if (Capacitor.isPluginAvailable('Camera')) { /* plugin available */ }

Permissions

Follow the check-then-request pattern:

const status = await Camera.checkPermissions();
if (status.camera !== 'granted') {
  const requested = await Camera.requestPermissions();
  if (requested.camera === 'denied') {
    // Guide user to app settings -- cannot re-request on iOS
    return;
  }
}
const photo = await Camera.getPhoto({ ... });

Performance

  • Minimize bridge calls -- batch operations instead of many individual calls.
  • Use file paths over base64 for binary data.
  • Lazy-load plugins with dynamic imports for code splitting.

Error Handling

Always wrap plugin calls in try-catch:

try {
  const photo = await Camera.getPhoto({ resultType: CameraResultType.Uri });
} catch (error) {
  if (error.message === 'User cancelled photos app') {
    // Not an error
  } else {
    console.error('Camera error:', error);
  }
}

For full details, see Cross-Platform Best Practices.

Deep Links

Deep links open specific content in the app from external URLs.

  • iOS: Universal Links via apple-app-site-association hosted at https://<domain>/.well-known/.
  • Android: App Links via assetlinks.json hosted at https://<domain>/.well-known/.

Listener Setup

import { App } from '@capacitor/app';

App.addListener('appUrlOpen', (event) => {
  const path = new URL(event.url).pathname;
  // Route to the appropriate page
});

Platform Configuration

  • iOS: Add applinks:<domain> to Associated Domains capability in ios/App/App/App.entitlements.
  • Android: Add <intent-filter android:autoVerify="true"> to android/app/src/main/AndroidManifest.xml.

For full setup, see Deep Links.

Storage

RequirementSolution
App settings, preferences@capacitor/preferences (native key-value, persists reliably)
Sensitive data (tokens, credentials)@capawesome-team/capacitor-secure-preferences (Keychain/Keystore)
Relational data, offline-firstSQLite (@capawesome-team/capacitor-sqlite or @capacitor-community/sqlite)
Files, images, documents@capacitor/filesystem

Do NOT use localStorage, IndexedDB, or cookies for persistent data -- the OS can evict them (especially on iOS).

For details, see Storage.

Security

  • Never embed secrets (API keys with write access, OAuth secrets, DB credentials) in client code -- move to a server API.
  • Use secure storage (@capawesome-team/capacitor-secure-preferences) for tokens and credentials, not localStorage or @capacitor/preferences.
  • HTTPS only -- never allow cleartext HTTP in production.
  • Content Security Policy -- add a <meta> CSP tag in index.html.
  • Disable WebView debugging in production: set webContentsDebuggingEnabled: false in capacitor.config.ts.
  • Prefer Universal/App Links over custom URL schemes (verified via HTTPS).
  • iOS Privacy Manifest (PrivacyInfo.xcprivacy) -- required for iOS 17+ when using privacy-sensitive APIs.

For details, see Security.

Testing

Unit Testing

Mock Capacitor plugins in Jest/Vitest since tests run in Node.js, not a WebView:

vi.mock('@capacitor/camera', () => ({
  Camera: {
    getPhoto: vi.fn().mockResolvedValue({
      webPath: 'https://example.com/photo.jpg',
    }),
  },
}));

E2E Testing

  • Web E2E: Cypress or Playwright (tests web layer, plugins must be mocked).
  • Native E2E: Appium (cross-platform) or Detox (iOS-focused).

Debugging

  • Android: Enable webContentsDebuggingEnabled: true, open chrome://inspect in Chrome.
  • iOS: Enable webContentsDebuggingEnabled: true, use Safari > Develop menu > select device.

For details, see Testing.

Troubleshooting

Android

  • npx cap sync fails: Verify @capacitor/core and @capacitor/cli versions match. Run cd android &&./gradlew clean.
  • Build fails after config changes: Clean with cd android &&./gradlew clean, then rebuild.
  • Plugin not found at runtime: Run npx cap sync after plugin installation. Verify Gradle sync completed.
  • SDK errors: Verify ANDROID_HOME is set. Install missing SDK versions via Android Studio SDK Manager.
  • White square notification icon: Push notification icons must be white pixels on transparent background.

iOS

  • Build fails with "no such module": Run npx cap sync ios. For CocoaPods: cd ios/App && pod install --repo-update.
  • Build fails after config changes: Clean build folder (Xcode Product > Clean Build Folder) or delete ios/App/Pods and re-run pod install.
  • Simulator cannot receive push notifications: Use a physical device for push notification testing.
  • Permission denied permanently: Cannot re-request on iOS. Guide user to Settings > App > Permissions.
  • WebView not loading: Verify webDir in capacitor.config.ts matches the actual build output directory.

General

  • Live reload not connecting: Ensure device and dev machine are on the same network. Use --external flag.
  • Plugin not found: Run npx cap sync. Verify plugin is in package.json dependencies.
  • Capacitor is not defined: Install @capacitor/core (npm install @capacitor/core).

For full troubleshooting, see Android Troubleshooting and iOS Troubleshooting.

Upgrading

Capacitor supports upgrades across major versions (4 through 8). Apply each major version jump sequentially -- do not skip intermediate versions.

Current to TargetNode.jsXcodeAndroid Studio
to 516+14.1+Flamingo 2022.2.1+
to 618+15.0+Hedgehog 2023.1.1+
to 720+16.0+Ladybug 2024.2.1+
to 822+26.0+Otter 2025.2.1+

Do not run npx cap migrate. It is an interactive command that cannot be invoked by an agent. Apply all upgrade steps manually using the per-version reference files.

For app upgrades, see capacitor-app-upgrades. For plugin upgrades, see capacitor-plugin-upgrades.

Capawesome Cloud

Capawesome Cloud provides cloud infrastructure for Capacitor apps: native builds, live updates, and automated app store publishing.

Website: capawesome.io | Cloud Services: cloud.capawesome.io

Getting Started

# Install and authenticate
npx @capawesome/cli login

# Create an app
npx @capawesome/cli apps:create

Live Updates

Deploy over-the-air (OTA) web updates to Capacitor apps without going through the app stores. Users receive updates immediately on next app launch.

Setup:

# Install the live update plugin
npm install @capawesome/capacitor-live-update
npx cap sync

Configure in capacitor.config.ts:

const config: CapacitorConfig = {
  plugins: {
    LiveUpdate: {
      appId: '<APP_ID>',
      autoUpdate: true,
    },
  },
};

Deploy an update:

npm run build
npx @capawesome/cli apps:liveupdates:upload --app-id <APP_ID>

Native Builds

Build iOS and Android apps in the cloud without local build environments. Supports signing certificates, environments, and build configuration.

# Trigger a build
npx @capawesome/cli apps:builds:create --app-id <APP_ID> --platform android

# Download the artifact
npx @capawesome/cli apps:builds:download --app-id <APP_ID> --build-id <BUILD_ID>

App Store Publishing

Automate submissions to Apple App Store (TestFlight) and Google Play Store.

# Create a deployment destination
npx @capawesome/cli apps:destinations:create --app-id <APP_ID>

# Deploy a build
npx @capawesome/cli apps:deployments:create --app-id <APP_ID> --build-id <BUILD_ID>

CI/CD Integration

Use token-based auth for CI/CD pipelines:

npx @capawesome/cli login --token <TOKEN>
npx @capawesome/cli apps:builds:create --app-id <APP_ID> --platform ios --detached

For full Capawesome Cloud setup, see capawesome-cloud. For the Capawesome CLI reference, see capawesome-cli.

Push Notifications

Set up push notifications using Firebase Cloud Messaging (FCM) via @capacitor-firebase/messaging:

npm install @capacitor-firebase/messaging firebase
npx cap sync

Requires Firebase project setup, platform-specific configuration (APNs for iOS, google-services.json for Android), and permission handling.

For the full setup guide, see capacitor-push-notifications.

In-App Purchases

Set up in-app purchases and subscriptions with either:

  • Capawesome Purchases (@capawesome-team/capacitor-purchases) -- lightweight, no third-party backend, requires Capawesome Insiders license.
  • RevenueCat (@revenuecat/purchases-capacitor) -- full managed backend with receipt validation, analytics, and integrations.

Both require App Store Connect (iOS) and/or Google Play Console (Android) product configuration.

For the full setup guide, see capacitor-in-app-purchases.

Related Skills

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

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

平台分布

Codex

36.23%
按下载量换算390

Claude

28.6%
按下载量换算308

Cursor

18.82%
按下载量换算203

Gemini CLI

10.37%
按下载量换算112

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

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

来源信息

继续浏览同类 Skills