Agent skill · Audited from source
kotlin-tooling-cocoapods-spm-migration
skill · kotlin/kotlin-agent-skillsApache-2.0 licenceAudited 22 Oct 2026 · source 25b8117b6cd6
Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit 25b8117b6cd6 and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 2 findings, 0 critical or high. What it does: Migrate KMP projects from CocoaPods (kotlin("native.cocoapods")) to Swift Package Manager (swiftPMDependencies DSL) — replaces pod() with swiftPackage(), transforms cocoapods.* imports to swiftPMImport.*, and…
Cite
Cite this page
ModelsAtlas. “kotlin-tooling-cocoapods-spm-migration (kotlin/kotlin-agent-skills)”. Retrieved 22 Oct 2026. https://modelsatlas.com/skills/kotlin/kotlin-tooling-cocoapods-spm-migration
Trust audit
Audit 0.4.1 · source read 22 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | WARN | 1 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | WARN | 1 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (2)
MEDIUMInventory / provenanceinv.symlink · plugins/kotlin-agent-skills/skills
plugins/kotlin-agent-skills/skills
- Why
- link not followed
- Fix
- —
MEDIUMPrivilege escalation / persistencereview.unsafe_action · SKILL.md
sed -i '' 's/ENABLE_US
- Why
- The instruction directs a bare sed command with a truncated pattern against the Xcode project, which is a privileged in-place mutation that can corrupt or partially rewrite the build file without user confirmation or backup.
- Fix
- rewrite it so the instruction says plainly what it does, and asks the user before it acts
Audit 0.4.1 · source sha 25b8117b6cd6 · 22 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherkotlin GitHub organizationOwner of the repository this skill is read from
- Source folderkotlin/kotlin-agent-skills/skills/kotlin-tooling-cocoapods-spm-migrationThe exact folder we audited
- LicenceApache-2.0As the repository states it
- Commit pinned for this verdict25b8117b6cd6A new audit runs when the source changes
- Repository statusNot archivedLast push 1 day ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Migrate KMP projects from CocoaPods (kotlin("native.cocoapods")) to Swift Package Manager (swiftPMDependencies DSL) — replaces pod() with swiftPackage(), transforms cocoapods.* imports to swiftPMImport.*, and…
---
name: kotlin-tooling-cocoapods-spm-migration
description: Migrate KMP projects from CocoaPods (kotlin("native.cocoapods")) to Swift Package Manager (swiftPMDependencies DSL) — replaces pod() with swiftPackage(), transforms cocoapods.* imports to swiftPMImport.*, and reconfigures the Xcode project.
license: Apache-2.0
metadata:
author: JetBrains
version: "1.0.0"
---
# CocoaPods to SwiftPM Migration for KMP
Migrate Kotlin Multiplatform projects from `kotlin("native.cocoapods")` to `swiftPMDependencies {}` DSL.
## Requirements
- **Kotlin**: 2.4.0-Beta2 or later (first public release with `swiftPMDependencies` support, available on Maven Central)
- **Xcode**: 16.4 or 26.0+
- **iOS Deployment Target**: 16.0+ recommended
## Migration Overview
**IMPORTANT**: Keep the `cocoapods {}` block and plugin active until Phase 6. The migration adds `swiftPMDependencies {}` alongside the existing CocoaPods setup first, reconfigures Xcode, and only then removes CocoaPods.
| Phase | Action |
|-------|--------|
| 1 | Analyze existing CocoaPods configuration |
| 2 | Update Gradle configuration (repos, Kotlin version) |
| 3 | Add `swiftPMDependencies {}` alongside existing `cocoapods {}` |
| 4 | Transform Kotlin imports |
| 5 | Reconfigure iOS project and deintegrate CocoaPods |
| 6 | Remove CocoaPods plugin from Gradle |
| 7 | Verify Gradle build and Xcode project build |
| 8 | Write MIGRATION_REPORT.md |
---
## Phase 1: Pre-Migration Analysis
### 1.0 Verify the project builds
Before starting migration, identify the module to migrate and confirm it compiles successfully.
1. **Find the module that uses CocoaPods** — look for `build.gradle.kts` files containing `cocoapods`:
```bash
grep -rl "cocoapods" --include="build.gradle.kts" .
```
Extract the module name from the path (e.g., `./shared/build.gradle.kts` → module name is `shared`). Note: multiple modules may use CocoaPods — record all of them. Typically only the module that produces the framework linked into the iOS app needs `swiftPMDependencies`; the others only need CocoaPods removed (Phase 6).
2. **Compile Kotlin code** — run the Kotlin compilation task for that module to verify the Kotlin source compiles:
```bash
./gradlew :moduleName:compileKotlinIosSimulatorArm64
```
Replace `moduleName` with the directory name of the module (e.g., `:shared:compileKotlinIosSimulatorArm64`). This is faster than a full `build` (which also runs release linkage) and sufficient to verify Kotlin code correctness.
3. **Build the iOS app (optional)** — try to locate the Xcode project and build it to confirm the full app compiles:
```bash
# Find the Xcode project
find . -name "*.xcworkspace" -not -path "*/Pods/*" -maxdepth 2
# Build (replace scheme name with the actual app scheme)
cd /path/to/iosApp
xcodebuild -workspace *.xcworkspace -scheme "<AppScheme>" -destination 'generic/platform=iOS Simulator' ARCHS=arm64
```
If the user wants to skip the Xcode build or no Xcode project is found, proceed without it — the Kotlin compilation from step 2 is sufficient to continue.
4. **If the Kotlin compilation fails**, ask the user to either:
- Provide the correct Gradle command to verify the module builds, or
- Confirm the module is in a working state and it's safe to proceed
If the user confirms without providing a build command, **record that the pre-migration build could not be verified** and warn about this at the end of migration (Phase 7).
### 1.0a Confirm Kotlin version with Swift Import support
Read the current Kotlin version from `gradle/libs.versions.toml` (or `build.gradle.kts`).
**If the project already uses Kotlin 2.4.0-Beta2 or later** → record the version and skip Phase 2.1 (no version change needed).
**If the project uses an older Kotlin version** → Phase 2.1 will upgrade it to `2.4.0-Beta2` (the first public release with `swiftPMDependencies` support, available on Maven Central — no custom repository needed). Warn the user: "⚠️ Kotlin version jump — upgrading across minor versions can introduce breaking changes unrelated to this migration. Recommended: update first, verify it builds, then re-run this migration." If the user confirms, proceed.
### 1.1 Check for deprecated CocoaPods workaround property
Search `gradle.properties` for the deprecated property:
```properties
kotlin.apple.deprecated.allowUsingEmbedAndSignWithCocoaPodsDependencies=true
```
This property was a workaround (see [KT-64096](https://youtrack.jetbrains.com/issue/KT-64096)) for projects using `embedAndSign` alongside CocoaPods dependencies. It suppresses an error about unsupported configurations that can cause runtime crashes or symbol duplication. After migrating to SwiftPM import, this property is no longer needed and **must be removed** in Phase 6. Record its presence if found.
### 1.2 Check for EmbedAndSign disablers
Search all `build.gradle.kts` files for code that disables `EmbedAndSign` tasks (e.g., `TaskGraph.whenReady` filters, `tasks.matching` blocks). This is a CocoaPods-era workaround that **breaks the migration** because `integrateEmbedAndSign` (needed in Phase 5) gets disabled too. Record any such code — it **must be removed** in Phase 6, and may need to be removed earlier. See [troubleshooting.md](references/troubleshooting.md) § "`integrateEmbedAndSign` Skipped" for patterns.
### 1.3 Check for third-party KMP libraries with bundled cinterop klibs
Some KMP libraries ship pre-built cinterop klibs with `cocoapods.*` package namespaces. After migration, the swiftPMDependencies cinterop generator detects these existing bindings and **skips generating new bindings** for those Clang modules to avoid duplicates. This means `cocoapods.*` imports for those modules must be **kept as-is** — they resolve to the third-party library's bundled klib, not to actual CocoaPods.
**Known libraries with bundled `cocoapods.*` klibs:**
| Library | Maven artifact | Bundled klib namespace | Classes provided |
|--------Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 25b8117
git clone https://github.com/kotlin/kotlin-agent-skills git -C kotlin-agent-skills checkout 25b8117b6cd6
The author documents no install command, so this uses the repository directly. Our verdict covers commit 25b8117b6cd6 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- !CAUTION B 89 / 100
first audit · source
25b8117b6cd6
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/kotlin/kotlin-tooling-cocoapods-spm-migration/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
All coding & review skills →chrisbanes/skills
Use when writing or reviewing Jetpack Compose motion: visibility enter/exit, animating one property toward a target, color or size transitions, multiple properties from one state, switching composable content, or…
chrisbanes/skills
Use when writing or reviewing Jetpack Compose UI for TV, keyboard, desktop, accessibility focus, D-pad navigation, FocusRequester, focusProperties, key events, or initial focus behavior.
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
Add this badge to your README
[](https://modelsatlas.com/skills/kotlin/kotlin-tooling-cocoapods-spm-migration/)
<a href="https://modelsatlas.com/skills/kotlin/kotlin-tooling-cocoapods-spm-migration/"><img src="https://modelsatlas.com/skills/kotlin/kotlin-tooling-cocoapods-spm-migration/badge.svg" alt="ModelsAtlas: CAUTION B"></a>
Questions about kotlin-tooling-cocoapods-spm-migration
What does the kotlin-tooling-cocoapods-spm-migration skill do?
Is kotlin-tooling-cocoapods-spm-migration safe to install?
What can kotlin-tooling-cocoapods-spm-migration access on my machine?
How current is this page?
Sources
- github.com/kotlin/kotlin-agent-skills/tree/main/skills/kotlin-to — the audited source at commit 25b8117b6cd6 and every finding aboveObserved · 22 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the kotlin-tooling-cocoapods-spm-migration skill do?
- Is kotlin-tooling-cocoapods-spm-migration safe to install?
- What can kotlin-tooling-cocoapods-spm-migration access on my machine?