Install
$ agentstack add skill-skiptools-skills-skip-frameworks ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Skip Frameworks
Use this skill when adding optional frameworks to a Skip project.
Adding a Framework
- Add package dependency to
Package.swift - Add product to target dependencies
- Configure
Skip/skip.ymlif Android-specific Gradle dependencies are needed - Import the module in Swift code
Package.swift is the source of truth for both iOS and Android builds — never use Xcode's "Add Package…" menu, which only updates Xcode's tracking and not Skip's Gradle generation. For the broader project layout (which target gets which product, where view code vs. model code lives, when to split into two modules), see [skip-project-creation](../skip-project-creation/SKILL.md).
Skip frameworks vs. pure-Swift SwiftPM packages
There are two kinds of dependency a Skip project can pull in, and they behave differently on Android.
Skip frameworks. A SwiftPM package that contains a Sources//Skip/skip.yml file is Skip-aware. The build plugin sees the skip.yml, generates the corresponding Gradle module, and builds it for Android automatically. All the frameworks listed in this skill (SkipSQL, SkipFirebase, etc.) are Skip frameworks.
Pure-Swift SwiftPM packages. A package without a skip.yml is not Skip-aware. Skip Lite modules cannot consume pure-Swift packages on Android — the transpiler has nothing to transpile against. On iOS the package compiles normally; on Android it's excluded from the build.
If you want a pure-Swift package only on iOS, gate it with the condition: argument:
.target(name: "MyApp", dependencies: [
.product(
name: "Lottie",
package: "lottie-ios",
condition: .when(platforms: [.macOS, .iOS]) // iOS-only
),
])
Without the condition:, the Lite build fails on Android with "no such Gradle dependency." With it, the Android build excludes the dependency and any code that references Lottie must be guarded with #if !SKIP.
Skip Fuse modules can consume pure-Swift packages directly because the Swift Android SDK compiles them natively — no transpilation needed. Be aware that the pure-Swift package's own dependencies and platform support must extend to Android, which most don't.
Framework Reference
Consult the detailed reference files:
- ./references/firebase.md -- Firebase setup, auth, Firestore, messaging, crashlytics
- ./references/data-storage.md -- SkipSQL, SkipKeychain, UserDefaults
- ./references/media-web.md -- SkipWeb, SkipAV, SkipMotion
Quick Reference
SkipSQL — SQLite
// Package.swift
.package(url: "https://source.skip.tools/skip-sql.git", from: "1.0.0"),
.product(name: "SkipSQL", package: "skip-sql"),
import SkipSQL
let db = try SQLContext(path: dbPath)
try db.execute(sql: "CREATE TABLE items (id INTEGER PRIMARY KEY, name TEXT)")
try db.execute(sql: "INSERT INTO items (name) VALUES (?)", parameters: [.text("Widget")])
SkipKeychain — Secure Storage
// Package.swift
.package(url: "https://source.skip.tools/skip-keychain.git", "0.0.0"../Skip/skip.yml` via the `build:` block. The syntax mirrors the structure of a Gradle build script.
```yaml
skip:
mode: 'transpiled'
build:
contents:
- block: 'dependencies'
contents:
- 'implementation("io.livekit:livekit-android:2.24.0")'
- 'implementation("com.google.android.gms:play-services-location:21.3.0")'
Each entry under the dependencies block is a literal Gradle declaration. implementation(...), api(...), testImplementation(...) all work.
To add a Maven repository or override the default plugin set, use settings: (parallel structure):
settings:
contents:
- block: 'dependencyResolutionManagement'
contents:
- block: 'repositories'
contents:
- 'maven("https://maven.example.com/releases")'
Useful when a library is hosted outside Maven Central / Google's Maven repo.
Full skip.yml schema
| Key | Purpose | |---|---| | skip.mode | 'transpiled' (Lite), 'native' (Fuse), or 'automatic' | | skip.bridging | Fuse-only. true for auto-bridging; or {auto: true, options: 'kotlincompat'} | | skip.kotlinPackage | Override the Kotlin package name derived from the Swift module name | | skip.resources | Custom resource paths and processing mode | | skip.dynamicroot | Fuse-only. Magic namespace prefix for AnyDynamicObject (see [skip-fuse](../skip-fuse/SKILL.md)) | | build.contents | Gradle build-script additions (dependencies, plugins, etc.) | | settings.contents | Gradle settings-script additions (repositories, plugin management) |
Cross-references
- [skip-project-creation](../skip-project-creation/SKILL.md) —
Package.swiftlayout, when to split into UI and Model modules, where each framework's setup code typically lands. - [skip-lite-transpilation](../skip-lite-transpilation/SKILL.md) — rules to follow when the framework's example code goes into a transpiled module.
- [building-skip-ui](../building-skip-ui/SKILL.md) — when a framework ships UI components (SkipWeb, SkipMotion, SkipAV), how to integrate them in a SwiftUI view.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: skiptools
- Source: skiptools/skills
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.