agentleFS
Cap-goCap-go/capgo-skills/skills/capacitor-plugins/SKILL.md

capacitor-plugins

Skill75 starsChanged 32 days agoMITView on GitHub

Pick, install, and wire up Capacitor plugins for native features (camera, filesystem, geolocation, biometrics, in-app purchases, social login, SQLite, calendar, contacts, health, BLE, NFC, etc.). Covers official @capacitor/* packages (Capacitor 8.5 stable, 9 alpha on next) plus the 145-package @capgo/* index, native permission keys (Info.plist, AndroidManifest, variables.gradle minSdk), npx cap sync / cap ls verification, and errors like '"Camera" plugin is not implemented on ios', 'unable to find plugin', UNIMPLEMENTED, and OS-PLUG-* codes. Use for "which plugin should I use for X", adding a plugin, or a plugin call failing after install. Do not use for push setup (capacitor-push-notifications), splash assets (capacitor-splash-screen), keyboard layout (capacitor-keyboard), deep links (capacitor-deep-linking), OTA updates (capgo-live-updates), upgrading plugin source code (capacitor-plugin-upgrades), or adding SPM to a plugin (capacitor-plugin-spm-support).

  • Reads credentials
  • Installs packages

3 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 3 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do not use (load the sibling skill instead):

    line 19
  2. Very specific:

    Inspect first: Read package.json (@capacitor/core version), capacitor.config.*, and check whether iOS uses SPM …

    line 42
  3. Very specific:

    No official package, or it lacks a required feature: load references/capgo-plugin-index.md and pick the exact @capgo/* name.

    line 45
  4. Very specific:

    Never recommend a package name that is not in a reference file without checking npm view <pkg> version first.

    line 46
  5. Very specific:

    Ask the user: before raising minSdkVersion, adding entitlements (HealthKit, Push), or enabling exact alarms: these affect store review and …

    line 55
  6. Distinctive:

    Only load a reference when its plugin is in play.

    line 96
  7. Distinctive:

    Do not install two plugins that own the same native surface (e.g.

    line 164

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Capacitor Plugins

Choose the right plugin, install it correctly, and prove it is linked natively.

When to Use

TRIGGER when:

  • User asks "which plugin should I use for X?" or compares plugin options.
  • User needs a native capability (camera, files, location, biometrics, payments, auth, sensors, storage, media, calendar, contacts, health, on-device LLM).
  • A plugin call fails after install: "X" plugin is not implemented on ios|android|web, UNIMPLEMENTED, unable to find plugin, or an OS-PLUG-* code.
  • User needs the right Info.plist / AndroidManifest.xml / variables.gradle entries for a plugin.

Do not use (load the sibling skill instead):

  • Push notification setup, FCM/APNs keys: capacitor-push-notifications
  • Splash screen assets and timing: capacitor-splash-screen
  • Keyboard overlap, accessory bar, resize: capacitor-keyboard
  • Universal Links / App Links: capacitor-deep-linking
  • OTA live updates: capgo-live-updates
  • Migrating plugin source code across Capacitor majors: capacitor-plugin-upgrades (and capacitor-plugin-upgrade-v8-to-v9)
  • Adding Swift Package Manager support to a plugin: capacitor-plugin-spm-support; moving an app to SPM: cocoapods-to-spm
  • AppDelegate/SceneDelegate lifecycle changes: capacitor-uiscene-migration
  • Upgrading the app's Capacitor major: capacitor-app-upgrades
  • SQL storage migrations: sqlite-to-fast-sql

Version Facts (October 2026)

  • Capacitor stable: 8.5.x (latest). Capacitor 9 is 9.0.0-alpha on the next dist-tag. Official plugins follow: most v8 plugins are 8.x on latest and 9.0.0-alpha on next.
  • Plugin major must match the app's Capacitor major. Plugins for older majors use latest-<major> tags, e.g. npm install @capacitor/camera@latest-7.
  • Some official plugins have independent versions (file-transfer 2.x, file-viewer 2.x, inappbrowser 4.x, privacy-screen 2.x, barcode-scanner 3.x, background-runner 3.x, calendar/contacts/health-fitness 1.x). Check npm view <pkg> peerDependencies instead of matching the number.
  • @capgo/* plugins use the Capacitor major as their own major (8.x for Capacitor 8). LTS tags such as lts-v7 exist on some packages.
  • Capacitor 9: iOS 16 min, Android minSdk 26. Plugins that previously needed minSdkVersion = 26 (inappbrowser, barcode-scanner) stop needing a bump.

Procedure

  1. Inspect first. Read package.json (@capacitor/core version), capacitor.config.*, and check whether iOS uses SPM (ios/App/CapApp-SPM/Package.swift) or CocoaPods (ios/App/Podfile). Run npx cap ls to see what is already linked.
  2. Pick the package.
    • An official @capacitor/* package exists and covers the need: default to it. Load its reference from the index below.
    • No official package, or it lacks a required feature: load references/capgo-plugin-index.md and pick the exact @capgo/* name. State why it fits better.
    • Never recommend a package name that is not in a reference file without checking npm view <pkg> version first.
  3. Install with the matching major:

    npm install @capacitor/<name>        # or @capgo/<name>
    npx cap sync
  4. Add native config from the reference: usage-description keys, manifest permissions, variables.gradle minSdk/library versions, capabilities/entitlements, AppDelegate hooks. Missing iOS usage strings crash the app on first access.
  5. Ask the user before raising minSdkVersion, adding entitlements (HealthKit, Push), or enabling exact alarms: these affect store review and device reach.
  6. Verify (next section), then run on a real device for anything involving camera, health, LLM, BLE, or push.

Capgo Plugin Index

references/capgo-plugin-index.md is the complete Capgo plugin source, generated from Cap-go GitHub package.json and src/definitions.ts: npm name, purpose, install command, platforms, key API methods, docs and repo links for every public non-archived package. references/capgo-plugin-catalog.md is the compact table of the same set. Load the index before recommending any @capgo/* package and use the exact name from it.

Regenerate both after Cap-go org changes (repository maintainers only):

GITHUB_TOKEN=$(gh auth token) node scripts/generate-capgo-plugin-index.mjs

Verification

npx cap sync              # must finish without "[error]" lines
npx cap ls                # lists "Found N Capacitor plugins for ios/android"; plugin must appear for each platform
  • Android: android/app/capacitor.build.gradle contains implementation project(':capacitor-<name>') and android/capacitor.settings.gradle has the matching include. Then cd android && ./gradlew assembleDebug.
  • iOS SPM: ios/App/CapApp-SPM/Package.swift lists the plugin package. iOS CocoaPods: ios/App/Podfile has the pod and pod install succeeded. Build in Xcode or npx cap run ios.
  • Grep for leftovers when replacing a plugin: grep -rn "<old-package>" src android ios package.json.
  • Feature-detect at runtime: Capacitor.isPluginAvailable('Camera') and Capacitor.getPlatform().

Error Handling

ErrorCauseFix
"Camera" plugin is not implemented on ios (or android/web)Native side not linked, or no web implementationnpx cap sync, rebuild the native app (live reload does not pick up new native code), check npx cap ls. On web, guard with Capacitor.isNativePlatform().
"Camera.takePhoto()" is not implemented on iosPlugin linked but JS and native versions differ, or method is platform-specificAlign JS and native versions, npx cap sync, clean build. Check the reference for platform-only methods.
UNIMPLEMENTED error codeMethod not available on this platform/OS versionBranch on platform; see reference "Notes".
Android log unable to find plugin : XPlugin class not registered/includedConfirm capacitor.build.gradle entry, re-sync, Gradle sync in Android Studio.
iOS log Error loading plugin X for call. Check that the pluginId is correctPlugin not in the iOS buildRe-sync; check Package.swift (SPM) or Podfile; clean build folder.
App crashes on first camera/contacts/calendar/location access (iOS)Missing NS*UsageDescription keyAdd the key listed in the reference to Info.plist.
Manifest merger failed : uses-sdk:minSdkVersion 24 cannot be smaller than version 26 declared in library [...]Plugin needs higher minSdkRaise minSdkVersion in android/variables.gradle (ask the user first).
OS-PLUG-* codes (e.g. OS-PLUG-CAMR-0003)Structured native errors in OutSystems-based official pluginsLook up the code in the plugin reference (camera, file-transfer, calendar, contacts list the common ones).
npm ERESOLVE peer @capacitor/core conflictPlugin major does not match app majorInstall the matching tag (@latest-7, @next for v9 alpha) or upgrade the app with capacitor-app-upgrades.

Reference Index

Only load a reference when its plugin is in play.

Official @capacitor/* packages (install, native config, usage, gotchas):

NeedReference
Action sheetreferences/capacitor-action-sheet.md
Open other apps / check installedreferences/capacitor-app-launcher.md
App state, back button, URL open eventsreferences/capacitor-app.md
JS tasks in backgroundreferences/capacitor-background-runner.md
Barcode / QR scanreferences/capacitor-barcode-scanner.md
OAuth-safe in-app browser (SFSafariViewController / Custom Tabs)references/capacitor-browser.md
Calendar eventsreferences/capacitor-calendar.md
Camera, gallery, video (8.1+ API, getPhoto migration)references/capacitor-camera.md
Clipboardreferences/capacitor-clipboard.md
Contactsreferences/capacitor-contacts.md
Native cookies (core)references/capacitor-cookies.md
Device info / id / batteryreferences/capacitor-device.md
Native alert/confirm/promptreferences/capacitor-dialog.md
Upload/download with progressreferences/capacitor-file-transfer.md
Open/preview documentsreferences/capacitor-file-viewer.md
File read/writereferences/capacitor-filesystem.md
Location (foreground)references/capacitor-geolocation.md
Google Mapsreferences/capacitor-google-maps.md
HealthKit / Health Connectreferences/capacitor-health-fitness.md
Hapticsreferences/capacitor-haptics.md
Native HTTP (core, CORS bypass)references/capacitor-http.md
WebView / system / external browserreferences/capacitor-inappbrowser.md
Keyboard API basicsreferences/capacitor-keyboard.md
On-device LLM (experimental)references/capacitor-local-llm.md
Local notificationsreferences/capacitor-local-notifications.md
Accelerometer / orientationreferences/capacitor-motion.md
Connectivityreferences/capacitor-network.md
Key/value storagereferences/capacitor-preferences.md
Hide app switcher snapshot / block screenshotsreferences/capacitor-privacy-screen.md
Push API summaryreferences/capacitor-push-notifications.md
Orientation lockreferences/capacitor-screen-orientation.md
TalkBack / VoiceOver state, TTSreferences/capacitor-screen-reader.md
Share sheetreferences/capacitor-share.md
Splash API summaryreferences/capacitor-splash-screen.md
Status bar (legacy)references/capacitor-status-bar.md
Edge-to-edge system bars (core, preferred on Android 16+)references/capacitor-system-bars.md
WebView text zoomreferences/capacitor-text-zoom.md
Toastreferences/capacitor-toast.md
Apple Watch UI (experimental)references/capacitor-watch.md

Capgo plugins: references/capgo-plugin-index.md (145 packages: install, platforms, key APIs, docs) and references/capgo-plugin-catalog.md (compact table).

Capgo Quick Picks

NeedPackage
Background geolocation, geofencing@capgo/background-geolocation
Custom camera preview / overlays@capgo/camera-preview
Biometric login + secure credentials@capgo/capacitor-native-biometric
Apple/Google/Facebook sign-in@capgo/capacitor-social-login
Subscriptions / IAP@capgo/native-purchases (revenue strategy: subscription-app-revenue)
Apple Pay / Google Pay@capgo/capacitor-pay
Fast native SQLite@capgo/capacitor-fast-sql
Native file ops / picking@capgo/capacitor-file, @capgo/capacitor-file-picker
In-app browser with JS injection, postMessage, screenshots@capgo/capacitor-inappbrowser
WebView killed in background, relaunch@capgo/capacitor-webview-guardian
App Attest / Play Integrity@capgo/capacitor-app-attest
OTA live updates@capgo/capacitor-updater (setup: capgo-live-updates)
Dev live reload@capgo/capacitor-live-reload

Traps:

  • Do not install two plugins that own the same native surface (e.g. two in-app browsers or two biometric plugins) without a reason; they can conflict on delegates and manifest entries.
  • Firebase: install the individual @capgo/capacitor-firebase-* packages; there is no umbrella @capgo/capacitor-firebase package on npm.
  • Cordova plugins still work but on Capacitor 9 they pull in the Cordova runtime; prefer a Capacitor-native equivalent (cordova-to-capacitor).

Resources

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.