Skills have been living inside one app's repository, which means the next Xcode project starts without them and a copy is the only way to share. A marketplace makes them installable once at user scope. Two kinds of knowledge, handled differently. What Apple ships with Xcode stays Apple's: this repository carries a script that exports it from the locally installed Xcode rather than a copy, so nobody redistributes pre-release material and everyone's guidance matches their own SDK. What we learned by shipping goes in the skill, and only if it burned us — the file writes hidden in view bodies, the blobs that froze the main thread, the watch target that quietly stopped compiling, the test summary that reads as zero tests when eighty-four passed. Each of those cost real time twice before being written down. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
pdat-xcode
A Claude Code plugin marketplace for Apple platform work.
What is here
pdat-swift-practice — one skill, xcode-practice. Practices for
SwiftUI, Core Data, XcodeGen and Swift Testing that came out of shipping
apps: work that must not happen in a view body, blobs that must stay off
the main thread, derived collections computed once, Keychain access
outside view init, keeping every target of a multi-platform project
building, and reading test output correctly.
It deliberately does not restate Apple's own guidance. Where the two overlap, Apple wins.
bin/export-apple-skills.sh — Xcode ships its own skills, written by
the framework teams. They are Apple's material, so this repository carries
a script to export them rather than a copy of them. Everyone exports from
the Xcode they have, which keeps the guidance matched to their SDK.
bin/export-apple-skills.sh .claude/skills
Xcode must be running or the export hangs.
Install
/plugin marketplace add <url-of-this-repo>
/plugin install pdat-swift-practice@pdat-xcode
Install at user scope and it applies to every project, including ones that do not exist yet.
To hand it to a team through a repository instead, put this in that
project's .claude/settings.json:
{
"extraKnownMarketplaces": {
"pdat-xcode": {
"source": { "source": "git", "url": "<url-of-this-repo>" }
}
},
"enabledPlugins": { "pdat-swift-practice@pdat-xcode": true }
}
Anyone who clones that project gets the skill without installing anything.
Updating
Push a change, bump version in both .claude-plugin/marketplace.json and
pdat-swift-practice/.claude-plugin/plugin.json, then /plugin marketplace update locally. Without the version bump, installs will not notice.
Adding to the skill
The bar is deliberately high: something that actually went wrong, more than once, and whose fix is not obvious from the framework documentation. A rule nobody has been burned by is a rule nobody will follow.