К основному содержанию
скилл CX Codex

capacitor-plugin-upgrade-v5-to-v6 — скилл для Claude Code: миграция

Ведёт плагин Capacitor с версии 5 на 6: запускает официальный мигратор, потом добивает ручной чек-лист по Gradle, Kotlin и TypeScript.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Cap-go/capgo-skills --skill capacitor-plugin-upgrade-v5-to-v6 -a claude-code
Открыть на GitHub

Что делает capacitor-plugin-upgrade-v5-to-v6

Скилл нужен, когда библиотека плагина ещё сидит на @capacitor/core 5.x, а работать ей придётся в приложениях на Capacitor 6. Сначала он прогоняет из корня плагина npx @capacitor/plugin-migration-v5-to-v6@latest и просит посмотреть git diff. Дальше начинается ручная часть: dev-зависимости @capacitor/* до latest-6, peer-зависимость @capacitor/core до ^6.0.0, в android/build.gradle вместо compileSdkVersion ставится compileSdk со значением 34, target SDK тоже 34, AGP 8.2.1, Gradle 8.2.1, Kotlin 1.9.10.

Правки в коде ломают совместимость для тех, кто уже пользуется плагином. В definitions.ts каждый addListener теперь возвращает только Promise<PluginListenerHandle> — синхронный handle из типа убирается, и это breaking change для потребителей. Заодно правятся web.ts и вывод docgen. Из iOS-файла .m удаляется строка CAP_PLUGIN_METHOD(removeAllListeners, CAPPluginReturnPromise);: метод теперь встроен во все плагины. Опционально можно добавить экспериментальную поддержку SPM через Package.swift и CAPBridgedPlugin в Swift — скилл спросит, нужно ли это сейчас.

Перед запуском проверьте окружение: Node.js 18+, Xcode 15.0+, Java 17. Если в package.json peer-диапазон @capacitor/core остался ^5, пример-приложение упадёт с ERESOLVE — это повод проверить поле сразу после миграции. Для приложений, плагинов на 4.x или 6.x и не-Capacitor библиотек скилл не подходит, там свои шаги.

Какие задачи решает

  • перевести библиотеку плагина с Capacitor 5 на 6
  • убрать синхронный handle из типа addListener
  • почистить removeAllListeners из iOS-файла .m
  • поднять AGP, Gradle и Kotlin до нужных версий
  • добавить экспериментальную поддержку SPM в плагин

Примеры запросов агенту

  • прогони миграцию плагина с Capacitor 5 на 6
  • обнови definitions.ts, чтобы addListener возвращал только Promise<PluginListenerHandle>
  • проверь, что в android/build.gradle стоит compileSdk, а не compileSdkVersion

Как установить capacitor-plugin-upgrade-v5-to-v6

1Через Skills CLI (Vercel)

npx skills add Cap-go/capgo-skills --skill capacitor-plugin-upgrade-v5-to-v6 -a claude-code

2Вручную: положить файлы

~/.claude/skills/capacitor-plugin-upgrade-v5-to-v6/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/capacitor-plugin-upgrade-v5-to-v6/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора29

capgo-release-management Скилл ведёт релизы Capgo из CLI: загрузка бандлов, каналы, постепенный выкат, откат и шифрование. Пригодится, когда релиз ломается на загрузке или нужно откатить бандл. CX Codex +1 705установок capacitor-app-upgrade-v7-to-v8 Ведёт приложение на Capacitor 7 к восьмой версии: сначала npx cap migrate, потом ручной чек-лист по iOS и Android. CX Codex +1 704установок webapp-to-capacitor Планирует и выполняет превращение веб-приложения, PWA или SPA в приложение под iOS и Android на Capacitor, которое проходит ревью магазинов. CX Codex +1 665установок ionic-appflow-migration Переводит Ionic или Capacitor проект с Ionic Appflow на Capgo: живые обновления, сборки и публикация в стор. CX Codex +1 653установок capacitor-app-upgrade-v6-to-v7 Ведёт приложение на Capacitor с версии 6 на 7: сначала автоматическая миграция, потом ручной чек-лист по iOS, Android и плагинам. CX Codex +1 643установок capacitor-app-upgrade-v5-to-v6 Ведёт приложение на Capacitor с версии 5 на 6: запускает npx cap migrate, потом добивает ручной чеклист по Android и iOS. CX Codex +1 639установок capacitor-app-upgrade-v4-to-v5 Скилл ведёт приложение на Capacitor 4 к версии 5: запускает npx cap migrate, добивает пропущенное вручную и проверяет сборку. CX Codex +1 639установок capacitor-plugin-upgrade-v4-to-v5 Ведёт плагин Capacitor с версии 4 на 5: запускает официальный мигратор, потом добивает Gradle, Java 17 и правки в коде. CX Codex +1 634установок

Похожие

capacitor-plugin-upgrades capawesome-team Проведёт плагин Capacitor через мажорные версии 4–8, включая прыжки через несколько версий сразу. Пригодится, когда плагин отстал от текущего Capacitor. CX Codex +1 811установок capacitor-plugin-development capawesome-team Ведёт агента через создание и поддержку плагинов Capacitor: скаффолдинг, нативные мосты iOS и Android, веб-слой, публикация в npm. CX Codex +1 745установок play-billing-library-version-upgrade Google LLC Скилл ведёт Android-проект с устаревшей Google Play Billing Library до актуальной стабильной версии. Он сам находит зависимость в Gradle и проверяет сборку после каждого шага. CX Codex +1 1 900установок agp-9-upgrade Google LLC Ведёт Android-проект с AGP 8 на Android Gradle Plugin 9: поднимает зависимости, переводит сборку на встроенный Kotlin и новый DSL. CX Codex +1 1 200установок upgrade-react-native react-native-community Обновляет проекты React Native Community CLI на заданную версию через diff-файлы React Native Upgrade Helper. CX Codex +1 1 300установок kotlin-multiplatform vitorpamplona Скилл подсказывает агенту, в какой модуль и source set положить код в Amethyst, и не даёт сломать сборку на гейте чистоты KMP. CX Codex +1 1 600установок

Рядом в теме «Мобильная разработка»

Всё по теме «Мобильная разработка» →

Вопросы о capacitor-plugin-upgrade-v5-to-v6

Как установить capacitor-plugin-upgrade-v5-to-v6 в Claude?

Выполните npx skills add Cap-go/capgo-skills --skill capacitor-plugin-upgrade-v5-to-v6 -a claude-code. Скилл окажется в ~/.claude/skills/capacitor-plugin-upgrade-v5-to-v6/SKILL.md.

Что делает capacitor-plugin-upgrade-v5-to-v6?

Запускает npx @capacitor/plugin-migration-v5-to-v6@latest, а затем проводит по ручному чек-листу: зависимости, Gradle, Kotlin, правки в definitions.ts и iOS-файле .m.

Подойдёт ли скилл для обновления приложения, а не плагина?

Нет. Для приложений есть отдельный скилл capacitor-app-upgrade-v5-to-v6, а плагины на 4.x сначала проходят миграцию на 5.

Исходный текст

SKILL.md · MIT
---
name: capacitor-plugin-upgrade-v5-to-v6
description: Upgrades a Capacitor plugin library from v5 to v6 using `npx @capacitor/plugin-migration-v5-to-v6@latest`, then the manual checklist - `@capacitor/*` dev deps to `latest-6`, `compileSdkVersion` replaced by `compileSdk`, compile/target SDK 34 defaults, AGP 8.2.1, Gradle 8.2.1, Kotlin 1.9.10, plus code changes - `addListener` in `definitions.ts` returns only `Promise<PluginListenerHandle>` (drop `& PluginListenerHandle`), remove `CAP_PLUGIN_METHOD(removeAllListeners, ...)` from the `.m` file, and optional experimental SPM support via `Package.swift`. Use when a plugin targets Capacitor 5 and must support 6. Do not use for app upgrades, other major versions, or non-Capacitor libraries.
allowed-tools:
  - Bash(node -e *)
  - Bash(find *)
---

# Capacitor Plugin Upgrade v5 to v6

Move a plugin library to Capacitor 6. Source of truth: https://capacitorjs.com/docs/updating/plugins/6-0

## When to Use

- Snapshot shows `@capacitor/core` 5.x and the plugin must work in Capacitor 6 apps.
- `definitions.ts` still declares `Promise<PluginListenerHandle> & PluginListenerHandle`.
- The user wants to add SPM support while moving to 6.

Do not use:

- Upgrading an app -> `capacitor-app-upgrade-v5-to-v6`.
- Plugin on 4.x -> `capacitor-plugin-upgrade-v4-to-v5` first; on 6.x -> `capacitor-plugin-upgrade-v6-to-v7`. Multi-hop -> `capacitor-plugin-upgrades`.
- Full SPM conversion details -> `capacitor-plugin-spm-support`.

## Live Project Snapshot

Plugin and Capacitor package snapshot:
!`node -e "const fs=require('fs');if(!fs.existsSync('package.json'))process.exit(0);const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));const out=['package.name='+(pkg.name||''),'package.version='+(pkg.version||'')];for(const section of ['peerDependencies','dependencies','devDependencies']){for(const [name,version] of Object.entries(pkg[section]||{})){if(name.startsWith('@capacitor/'))out.push(section+'.'+name+'='+version)}}console.log(out.join('\n'))"`

Example and native project paths:
!`find . -maxdepth 3 \( -path './example-app' -o -path './ios' -o -path './android' \)`

## References

| File | Load when |
| --- | --- |
| `references/android.md` | Applying Gradle or Kotlin changes by hand |

## Preflight

| Tool | Minimum |
| --- | --- |
| Node.js | 18+ |
| Xcode | 15.0+ |
| Java | 17 |
| AGP / Gradle | 8.2.1 / 8.2.1 |
| Android SDK defaults | compileSdk 34, targetSdk 34, minSdk 22 |
| iOS deployment target | 13.0 (unchanged) |

## Procedure

1. Confirm 5.x and a clean tree.
2. From the plugin root:

   ```bash
   npx @capacitor/plugin-migration-v5-to-v6@latest
   ```

   Review `git diff`.
3. Finish manually (`references/android.md`): dev deps to `latest-6`, peer `@capacitor/core` to `^6.0.0`, `compileSdk` (not `compileSdkVersion`) default 34, `targetSdkVersion` default 34, AGP 8.2.1, Gradle 8.2.1, Kotlin 1.9.10.
4. **definitions.ts**: every `addListener` overload must return only `Promise<PluginListenerHandle>`:

   ```diff
     addListener(
       eventName: 'resume',
       listenerFunc: () => void,
   - ): Promise<PluginListenerHandle> & PluginListenerHandle;
   + ): Promise<PluginListenerHandle>;
   ```

   Update `web.ts` and README/docgen output to match. This is a breaking change for consumers who used the sync handle.
5. **iOS**: delete `CAP_PLUGIN_METHOD(removeAllListeners, CAPPluginReturnPromise);` from the plugin `.m` file. It is now built in for all plugins.
6. **Optional SPM**: Capacitor 6 adds experimental SPM. Ask the user if they want it now; if yes follow `capacitor-plugin-spm-support` (adds `Package.swift`, `CAPBridgedPlugin` conformance in Swift).
7. Upgrade the example app via `capacitor-app-upgrade-v5-to-v6`, bump the plugin major, note "Requires Capacitor 6".

## Verification

```bash
grep -n "\"@capacitor/" package.json                               # 6.x
grep -rn "& PluginListenerHandle" src/                             # expect none
grep -rn "removeAllListeners" ios/ --include=*.m 2>/dev/null       # expect none
grep -n "compileSdkVersion project\|gradle:8.2.1" android/build.gradle   # compileSdk + 8.2.1
grep -n "distributionUrl" android/gradle/wrapper/gradle-wrapper.properties   # gradle-8.2.1
npm run build
npm run verify        # if the repo has the template verify scripts
```

Run the example app on both platforms; add and remove each listener.

## Error Handling

| Error | Fix |
| --- | --- |
| TS: `Property 'remove' does not exist on type 'Promise<PluginListenerHandle>'` in example/tests | `await` the `addListener` call. |
| AGP deprecation warning on `compileSdkVersion` | Use `compileSdk`. |
| `removeAllListeners` still listed in the `.m` file | Remove the `CAP_PLUGIN_METHOD` line (step 5); the method is built in. |
| Example app `ERESOLVE` on `@capacitor/core` | Peer range still `^5`; set `^6.0.0`. |

© Cap-go · MIT · Cap-go/capgo-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой