Apple work is what exists today, but the methodology skills sitting unversioned in ~/.claude/skills are the same problem and will want the same home. A marketplace name is the key users register it under, so renaming later would mean everyone removing and re-adding it. Cheaper to be right now. Marketplace is `pdat`, repository is claude-plugins, and the install lines carry the real Gitea URL. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
92 lines
3.3 KiB
Markdown
92 lines
3.3 KiB
Markdown
# claude-plugins
|
|
|
|
PDAT's Claude Code plugin marketplace. One plugin so far, covering Apple
|
|
platform work; the marketplace is named `pdat` rather than after a
|
|
platform so the rest can join it later without a second one.
|
|
|
|
## What is here
|
|
|
|
**`pdat-swift-practice`** — two skills.
|
|
|
|
`apple-findings` is a curated file of APIs worth adopting that we found
|
|
elsewhere: what each one is, what it would replace in our code, whether it
|
|
is genuinely a step forward, and where we read about it. Written in our own
|
|
words with sources named — see [Sourcing](#sourcing).
|
|
|
|
`xcode-practice` is the opposite direction: 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.
|
|
|
|
```sh
|
|
bin/export-apple-skills.sh .claude/skills
|
|
```
|
|
|
|
Xcode must be running or the export hangs.
|
|
|
|
## Install
|
|
|
|
```
|
|
/plugin marketplace add ssh://git@git.pda.cz:2222/PDAT/claude-plugins.git
|
|
/plugin install pdat-swift-practice@pdat
|
|
```
|
|
|
|
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`:
|
|
|
|
```json
|
|
{
|
|
"extraKnownMarketplaces": {
|
|
"pdat": {
|
|
"source": { "source": "git", "url": "ssh://git@git.pda.cz:2222/PDAT/claude-plugins.git" }
|
|
}
|
|
},
|
|
"enabledPlugins": { "pdat-swift-practice@pdat": 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.
|
|
|
|
## Sourcing
|
|
|
|
`apple-findings` collects other people's discoveries, so it follows rules
|
|
that keep it honest and lawful:
|
|
|
|
- **Write the entry yourself.** An API signature is a fact and facts are
|
|
free to restate. The paragraph explaining it is the author's work, and
|
|
crediting them does not make copying it acceptable — attribution answers
|
|
plagiarism, not copyright.
|
|
- **Name the source** — author, title, publication, date — and link it.
|
|
Partly courtesy, partly so a stale entry can be checked against the
|
|
original later.
|
|
- **Say what it replaces in our code.** This is the half no external
|
|
article can write, and the reason the file is worth keeping at all.
|
|
- **Prefer the vendor's own material where it exists.** When Apple's
|
|
shipped skills cover the same API, defer to them and keep only the
|
|
"what of ours does this replace" note.
|
|
|
|
## Adding to `xcode-practice`
|
|
|
|
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.
|