Engine Whats New
flutter/flutter
Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).
Generates value-moment-first onboarding flows for iOS/macOS apps — the default architecture races a new user to the first felt experience of the app's promised outcome, branching on whether they can…
$ npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rshankras/claude-code-apple-skills onboarding-generator --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/generators/onboarding-generator .claude/skills/onboarding-generator && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "onboarding-generator" agent skill from https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/generators/onboarding-generator into .claude/skills/onboarding-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "onboarding-generator", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/generators/onboarding-generatorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rshankras/claude-code-apple-skills onboarding-generator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/generators/onboarding-generator .agents/skills/onboarding-generator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "onboarding-generator" agent skill from https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/generators/onboarding-generator into .agents/skills/onboarding-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "onboarding-generator", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rshankras/claude-code-apple-skills onboarding-generator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/generators/onboarding-generator .cursor/skills/onboarding-generator && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "onboarding-generator" agent skill from https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/generators/onboarding-generator into .cursor/skills/onboarding-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "onboarding-generator", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/rshankras/claude-code-apple-skills.git --path skills/generators/onboarding-generator--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rshankras/claude-code-apple-skills onboarding-generator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/generators/onboarding-generator .gemini/skills/onboarding-generator && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "onboarding-generator" agent skill from https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/generators/onboarding-generator into .gemini/skills/onboarding-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "onboarding-generator", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install rshankras/claude-code-apple-skills onboarding-generatorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/generators/onboarding-generator .github/skills/onboarding-generator && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "onboarding-generator" agent skill from https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/generators/onboarding-generator into .github/skills/onboarding-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "onboarding-generator", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rshankras/claude-code-apple-skills onboarding-generator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/generators/onboarding-generator .opencode/skills/onboarding-generator && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "onboarding-generator" agent skill from https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/generators/onboarding-generator into .opencode/skills/onboarding-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "onboarding-generator", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
onboarding-generatorGenerates value-moment-first onboarding flows for iOS/macOS apps — the default architecture races a new user to the first felt experience of the app's promised outcome, branching on whether they can…
Onboarding Generator is an agent skill from rshankras/claude-code-apple-skills. Generates value-moment-first onboarding flows for iOS/macOS apps — the default architecture races a new user to the first felt experience of the app's promised outcome, branching on whether they can experience it right now or need to plan for later. The classic paged welcome-carousel tour is an explicit fallback for genuinely explain-first apps. Use when user wants to add onboarding, welcome screens, first-launch experience, or improve activation/trial conversion.
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files (for example `onboarding-patterns.md`).
It sits in Mobile. It works with iOS and macOS. The repository describes itself as: Claude Code skills for Apple platform development (iOS, macOS, iPadOS) — product validation, code generation, App Store optimization, and more. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9ffb831. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGlobGrepBashAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Ships script files (Swift), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Onboarding Generator loads about 4.4k tokens when it runs. Until then it costs about 122 tokens; SKILL.md has 1,801 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from rshankras/claude-code-apple-skills at commit 9ffb831, republished under its MIT licence (© rshankras). 1,801 words, ~4,412 tokens.
.claude/skills/onboarding-generator/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Generate onboarding whose job is to get a new user to the value moment — the first time they experience (never just read about) the outcome the app promises — as fast as their situation allows.
Default architecture: value-moment-first, branching on readiness. The user answers one question ("can you do this right now?"), and the path is either the shortest possible route to the value moment, or a captured plan to reach it later. Fallback architecture: the classic paged welcome carousel — generate it only when Step 0 below confirms the app is genuinely explain-first.
Read onboarding-patterns.md for the full philosophy, the nine implementation lessons (each with a code sketch), and a worked case study.
Use this skill when the user:
This is the question that decides every downstream choice — ask it before any configuration question. If the requester can't answer it, help them find it: it's the first specific instant a user feels the outcome, not a feature list. "Sees a demo of X" is not a value moment; "actually did X and saw the result" is.
Onboarding that ends before the user felt the value moment didn't finish — it just stopped.
@Observable needs iOS 17+/macOS 14+; fall back to ObservableObject below that)onboarding-patterns.md Lesson 3)Glob: **/*Paywall*.swift, **/*StoreKit*.swift, or an installed generators/paywall-generator output) — determines free-first vs paywalled-first in Configuration Question 2UNUserNotificationCenter usage already in the project — reuse the existing permission seam if one exists rather than creating a secondGlob: **/*Onboarding*.swift, **/*Welcome*.swift
Grep: "hasCompletedOnboarding" or "isFirstLaunch" or "onboardingCompleted"If found, ask the user:
generators/quick-win-sessionIf the project already has a quick-win-session installation, don't generate a second guided-first-action system. Ask whether the existing quick-win session already is the ready-now path (often it is — fold this flow's branch question and later-path in around it) or whether the two should stay separate stages.
Ask user via AskUserQuestion:
What's the value moment? (free text) — the first specific instant the user experiences the app's promise. Push back on feature descriptions ("a calendar sync feature") until you get an outcome ("saw their two calendars merged into one").
Free-first or paywalled-first?
What's the ready-now action? — the shortest real path to the value moment when the user can experience it immediately. Must name an existing feature/screen to reuse, never a new one built just for onboarding.
What does "later" capture? — the concrete implementation intention (a specific when, e.g. "Tuesday 6pm," never "someday"), and what happens with it: a local reminder, a home-surface chip, both?
Architecture override — is this genuinely explain-first? Default is no (value-moment-first). Only say yes if Step 0's test below is met. This is the one question that routes to the carousel fallback instead.
Run this test:
Would skipping straight to the value moment leave the user unable to understand what they're looking at, in a way no amount of contextual UI (tooltips, empty-state copy, a single explainer inline) could fix — because the domain itself requires orientation (e.g., a professional tool with domain-specific jargon, a multi-role enterprise workflow)?
Read templates/value-moment/ for production Swift code, then generate:
OnboardingPhase.swift — the phase/branch state model (one enum case per screen; every case maps to exactly one decision)OnboardingStore.swift — @Observable coordinator (plain object, not a View — see onboarding-patterns.md Lesson 1's testability point). Owns phase transitions, the branch, the captured "when," and calls into instrumentation. No navigation/routing types inside it — the app's existing router/state owns side effects, this store owns only business state.OnboardingRootView.swift — the phase switch. No NavigationStack of its own (this view is a root, never a pushed destination — see the global SwiftUI-patterns rule against nesting nav containers).OnboardingBranchView.swift — screen 1: value-moment framing + the ready-now/later fork. This is the only screen every user sees.OnboardingReadyNowBridgeView.swift — the ready-now hand-off into the real feature, with resume-callback wiring (Lesson 3 + Lesson 4)OnboardingIntentionView.swift — later path: capture the concrete "when" via chips, resolved through a pure, injectable-clock function (Lesson 7)OnboardingReminderView.swift + OnboardingReminderService.swift — later path: the contextual local-notification permission ask (Lesson 6)OnboardingInstrumentation.swift — value-moment reach-rate markers (Lesson 8)Onboarding replaces the app's root view; it is never a .fullScreenCover/.sheet over the real content. Show the requester this shape and adapt it to their app's actual root:
struct ContentView: View {
@State private var onboardingStore = OnboardingStore()
private var showOnboarding: Bool {
// Phase-first (Lesson 2): check the in-memory state machine FIRST;
// the durable flag is only the survives-relaunch fallback.
if appState.onboardingCompleted { return false }
return onboardingStore.phase != .completed && onboardingStore.phase != .awaitingHandoffReturn
}
var body: some View {
Group {
if showOnboarding {
OnboardingRootView(store: onboardingStore)
} else {
RealAppRootView() // whatever the app's true root already is
}
}
.onChange(of: onboardingStore.phase) { _, newPhase in
guard newPhase == .completed else { return }
appState.onboardingCompleted = true // durable fallback catches up
}
}
}Arm a one-shot completion callback before the hand-off, plus a wander-off safety net that completes onboarding silently if the user backs out without resolving:
func beginReadyNowHandoff() {
store.beginHandoff()
router.presetPathIntoRealFeature(...) // land straight on the feature, never Home
router.onRealFeatureFinished = { outcome in
store.handoffReturned(valueMomentReached: outcome.reachedValueMoment)
}
}
// Safety net — user backed all the way out without the callback firing.
.onChange(of: router.path) { _, newPath in
guard store.phase == .awaitingHandoffReturn, newPath.isEmpty else { return }
store.abandonToHome() // NEVER re-interrupts; completes quietly
}Adding this flow will break the first screen of every existing UI test that assumes it lands on the app's real home screen. Before finishing generation:
ProcessInfo.processInfo.arguments), usually in a UITestSupport-style file.static var showOnboardingOverride: Bool {
ProcessInfo.processInfo.arguments.contains("-uiTestShowOnboarding")
}
// At app launch, under the existing test-mode gate:
appState.onboardingCompleted = !UITestSupport.showOnboardingOverride-uiTestShowOnboarding to exercise the real flow.After the plan lands, surface it on the app's home surface — a small chip/badge carrying the planned date/action that reopens the flow when tapped — and prune it once the date passes:
if let plannedAt = appState.plannedIntentionDate {
PlannedIntentionChip(date: plannedAt) { /* reopen the ready-now path directly */ }
}
// Called from wherever the home surface is revisited:
func prunePlannedIntentionIfExpired(now: Date = .now) {
guard let plannedIntentionDate, plannedIntentionDate <= now else { return }
self.plannedIntentionDate = nil
}Read templates/carousel-fallback/ and the "Carousel Fallback" section of onboarding-patterns.md. Generate:
OnboardingView.swift — main paged/stepped containerOnboardingPageView.swift — individual page templateOnboardingPage.swift — page data modelOnboardingStorage.swift — persistenceOnboardingModifier.swift — view modifier for integrationAsk the same navigation-style/skip/presentation configuration questions as before (paged vs stepped, 2–5 screens, skip option, full-screen cover vs inline). Even here: still apply the root-swap and UI-test-suppression steps above — the presentation mechanics change, the anti-flash and anti-broken-test requirements don't.
Check project structure:
Sources/ exists → Sources/Onboarding/App/ exists → App/Onboarding/Onboarding/Run this before calling generation done — on a fresh flow, and again any time onboarding is later touched. If any answer is "no," the flow needs work before it ships:
After generation, provide:
Onboarding/
├── OnboardingPhase.swift # Phase/branch state model
├── OnboardingStore.swift # @Observable coordinator (business state only)
├── OnboardingRootView.swift # Phase switch — the root-swap target
├── OnboardingBranchView.swift # Screen 1: value-moment framing + fork
├── OnboardingReadyNowBridgeView.swift # Ready-now hand-off + resume wiring
├── OnboardingIntentionView.swift # Later: concrete "when" capture
├── OnboardingReminderView.swift # Later: contextual permission ask
├── OnboardingReminderService.swift # Local-notification seam (protocol + live impl)
└── OnboardingInstrumentation.swift # Value-moment reach-rate markersOnboarding/
├── OnboardingView.swift # Main container
├── OnboardingPageView.swift # Page template
├── OnboardingPage.swift # Data model
├── OnboardingStorage.swift # @AppStorage persistence
└── OnboardingModifier.swift # .onboarding() modifierRoot swap (both architectures):
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView() // ContentView itself performs the root swap — see Step 2
}
}
}Value-moment: define the app's own phases and hand-offs in OnboardingPhase.swift/OnboardingStore.swift — the template ships a two-phase (ready-now / later) skeleton; add or remove phases to match the actual value moment, keeping one decision per phase.
Carousel fallback: add pages as before —
static let pages: [OnboardingPage] = [
OnboardingPage(title: "Welcome", description: "...", imageName: "hand.wave", accentColor: .blue),
]Value-moment flow:
UserDefaults)Carousel fallback: unchanged from the classic flow — delete app, confirm it shows once, confirm it doesn't reappear after completion.
// Add to Settings or debug menu
Button("Reset Onboarding") {
UserDefaults.standard.removeObject(forKey: "hasCompletedOnboarding")
OnboardingInstrumentation.resetForTesting(defaults: .standard) // value-moment flow only
}Track value-moment reach rate — percentage of new users who reach the value moment in their first session, time-to-reach, and per-screen drop-off — not flow completion. A user who reached the value moment and closed the app is a win; a user who tapped through every screen and never felt it is not.
This works even in apps with no analytics SDK: local-only markers (UserDefaults timestamps for startedAt/branch/valueMomentAt/completedAt) plus os.Logger, every write idempotent (first stamp wins) so re-entrant paths never overwrite a real timestamp with a later, less meaningful one. See onboarding-patterns.md Lesson 8 for the full pattern; wire into a real analytics provider (e.g. an installed generators/analytics-setup output) when one exists.
generators/quick-win-session — guided first-action UI; check for overlap before generating both (see Pre-Generation Check 3)generators/permission-priming — deeper priming patterns if the reminder step needs more than a single contextual askgenerators/paywall-generator — the pre-purchase half of the flow for paywalled-first appsgenerators/push-notifications — remote push infrastructure, distinct from this skill's local-only reminder (no server involved)© rshankras, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files in skills/generators/onboarding-generator of rshankras/claude-code-apple-skills.
Open the folder on GitHubat commit 9ffb831
Onboarding Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Onboarding Generator this skillrshankras/claude-code-apple-skills | 787 | — | ~4.4k | Automated safety check: Notes | MIT | |
| Engine Whats Newflutter/flutter | 179k | — | ~978 | Automated safety check: Pass | BSD-3-Clause | |
| Orca iOS Simulator Controlstablyai/orca | 89k | 1 repos | ~584 | Automated safety check: Pass | Apache-2.0 | |
| App Store Screenshots GeneratorParthJadhav/app-store-screenshots | 7.2k | — | ~16k | Automated safety check: Pass | MIT | |
| Apple Crash Log .NET Symbolicationdotnet/skills | 5.6k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Swiftui Expert Skillomarshahine/HomeClaw | 175 | 4 repos | ~2.8k | Automated safety check: Pass | MIT |
flutter/flutter
Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).
stablyai/orca
iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…
ParthJadhav/app-store-screenshots
Scaffolds a Next.js editor for designing App Store and Google Play screenshots as ads and exporting them at every required size, for iOS, Mac and Android.
dotnet/skills
Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.
omarshahine/HomeClaw
A skill your agent uses when writing, reviewing, or refactoring SwiftUI code for iOS or macOS, including state management, view composition, performance, Liquid Glass adoption, or Instruments .trace…
truongduy2611/app-store-preflight-skills
Scan an iOS/macOS Xcode project for common App Store rejection patterns before submission.
rshankras/claude-code-apple-skills
Generate accessibility infrastructure for VoiceOver, Dynamic Type, and accessibility features.
rshankras/claude-code-apple-skills
SwiftUI animation patterns including springs, transitions, PhaseAnimator, KeyframeAnimator, SF Symbol effects, scroll-driven effects, mesh gradients, text renderers, and shader effects.
rshankras/claude-code-apple-skills
Generate compelling App Store descriptions that convert browsers into users.
rshankras/claude-code-apple-skills
Generates an app icon for macOS or iOS — a fast CoreGraphics placeholder and/or flat layered source art to finish in Icon Composer (the Liquid Glass / iOS 26+ standard).
rshankras/claude-code-apple-skills
Turn an app idea into validated, App-Store-ready name candidates.
rshankras/claude-code-apple-skills
Revenue beyond the single-app price tag — own-app bundles, Family Sharing as a conversion lever, cross-developer bundles & suites, and institutional licensing via Group Purchases / Apple School &…
Categories
Generates value-moment-first onboarding flows for iOS/macOS apps — the default architecture races a new user to the first felt experience of the app's promised outcome, branching on whether they can…. Onboarding Generator is an agent skill from rshankras/claude-code-apple-skills. Generates value-moment-first onboarding flows for iOS/macOS apps — the default architecture races a new user to the first felt experience of the app's promised outcome, branching on whether they can experience it right now or need to plan for later.
Onboarding Generator fits situations like: user wants to add onboarding; welcome screens; first-launch experience; improve activation/trial conversion.
Run `npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a claude-code`. Or copy the skill folder (skills/generators/onboarding-generator in rshankras/claude-code-apple-skills) into .claude/skills/onboarding-generator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a codex`. Or copy the skill folder (skills/generators/onboarding-generator in rshankras/claude-code-apple-skills) into .agents/skills/onboarding-generator in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rshankras/claude-code-apple-skills --skill onboarding-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/onboarding-generator, .gemini/skills/onboarding-generator, .github/skills/onboarding-generator and .opencode/skills/onboarding-generator in your project.
Going by SKILL.md and its folder, Onboarding Generator needs Swift for the scripts in its folder. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Onboarding Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Onboarding Generator: Engine Whats New (flutter/flutter, 179k stars), Orca iOS Simulator Control (stablyai/orca, 89k stars), App Store Screenshots Generator (ParthJadhav/app-store-screenshots, 7.2k stars) and Apple Crash Log .NET Symbolication (dotnet/skills, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rshankras (a GitHub user) maintains it in rshankras/claude-code-apple-skills, which has 787 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on July 24, 2026.
Source: rshankras/claude-code-apple-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.