Anishelf Release
samuelhe52/AniShelf
Prepare and publish AniShelf source-control releases through validation, release commits, annotated tags, and the main-to-release pull request.
Review Swift/iOS code against team conventions. An agent skill from player-ui/player.
$ npx skills add player-ui/player --skill ios-review -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install player-ui/player ios-review --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/player-ui/player.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/ios-review .claude/skills/ios-review && 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 "ios-review" agent skill from https://github.com/player-ui/player/tree/main/.claude/skills/ios-review into .claude/skills/ios-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios-review", 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/player-ui/player/tree/main/.claude/skills/ios-reviewType 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 player-ui/player --skill ios-review -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install player-ui/player ios-review --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/player-ui/player.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/ios-review .agents/skills/ios-review && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ios-review" agent skill from https://github.com/player-ui/player/tree/main/.claude/skills/ios-review into .agents/skills/ios-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios-review", 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 player-ui/player --skill ios-review -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install player-ui/player ios-review --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/player-ui/player.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/ios-review .cursor/skills/ios-review && 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 "ios-review" agent skill from https://github.com/player-ui/player/tree/main/.claude/skills/ios-review into .cursor/skills/ios-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios-review", 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/player-ui/player.git --path .claude/skills/ios-review--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 player-ui/player --skill ios-review -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install player-ui/player ios-review --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/player-ui/player.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/ios-review .gemini/skills/ios-review && 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 "ios-review" agent skill from https://github.com/player-ui/player/tree/main/.claude/skills/ios-review into .gemini/skills/ios-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios-review", 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 player-ui/player ios-reviewInstalls 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 player-ui/player --skill ios-review -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/player-ui/player.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/ios-review .github/skills/ios-review && 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 "ios-review" agent skill from https://github.com/player-ui/player/tree/main/.claude/skills/ios-review into .github/skills/ios-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios-review", 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 player-ui/player --skill ios-review -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install player-ui/player ios-review --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/player-ui/player.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/ios-review .opencode/skills/ios-review && 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 "ios-review" agent skill from https://github.com/player-ui/player/tree/main/.claude/skills/ios-review into .opencode/skills/ios-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios-review", 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.
ios-reviewReview Swift/iOS code against team conventions. An agent skill from player-ui/player.
iOS Review is an agent skill from player-ui/player. Review Swift/iOS code against team conventions. Use when the user asks to review Swift code, runs /ios-review, or when writing or editing Swift files in this repo. Enforces standards that linters cannot catch.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering iOS development and Linting and formatting. It works with iOS and SwiftUI. The repository describes itself as: A Cross Platform Server Driven UI Framework. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f62684f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are swift).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
swift.orggoogle.github.iodeveloper.apple.comFrom 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.
iOS Review loads about 1.6k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 783 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 found no risky patterns in SKILL.md.
Automated 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 player-ui/player at commit f62684f, republished under its MIT licence (© player-ui). 783 words, ~1,645 tokens.
.claude/skills/ios-review/SKILL.md (or your agent's skills folder).Get the diff between this branch and its parent branch (NOT always main). If this has no parent branch, stop.
Review the code (or the diff above if present) against the rules below. Apply General Rules always. Apply UI Rules only if the changes include SwiftUI views (files containing View, body, @ViewBuilder, or SwiftUI imports).
For each violation, report:
If no violations are found, say so clearly.
Apply these guides in full during every review:
/// documentation format.The team rules below are additions or overrides to those guides. Do not re-report violations already covered by the guides unless a rule here applies a stricter standard.
Nested conditionals (if, guard, switch, for, while, repeat) at a depth greater than 2 (more than one conditional inside another) are a bad pattern. Prefer:
guard/else to exit early instead of nestingFlag any conditional nested inside another at a depth greater than 2, OR with unnecessary nesting that could be chained.
Why: Deep nesting hides the happy path, increases cognitive load, and makes it easy to miss edge cases. Early exits keep logic linear and readable.
All async code should use Swift's async/await. Callbacks (completion handlers, closures passed as the last argument to async operations) are the old pattern and should not appear in new code.
Why: Callbacks invert control flow and make error handling inconsistent. async/await reads top-to-bottom, composes cleanly with try, and eliminates callback pyramids.
Function names should describe what the function achieves, not how it works. For example, a function that registers a hook to make an interaction fail should be called failInteraction(), not registerFailureHook().
Also: add comments on functions you cannot rename (e.g. protocol requirements, library callbacks) explaining their intent.
Why: Implementation details change; intent rarely does. Names tied to mechanics rot as the code evolves and obscure the purpose at the call site.
public and open methods should appear near the top of a type, just below init.
Correct order within a type:
initpublic/open methodsinternal methodsprivate methodsWhy: Public APIs are hard to change post-release. Placing them at the top makes the contract immediately visible to reviewers without scrolling past implementation details.
!) in production code — stricter than Google guideForce-unwrap is forbidden in production code. Use guard let, if let, or ?? with an appropriate default. The only acceptable use of ! is in test code (where crashes surface bugs immediately).
This is stricter than the Google Swift Style Guide, which allows force-unwrap with a safety comment. We do not permit that escape hatch in production.
Why: Force-unwrap turns a recoverable nil into an unrecoverable crash. Production code should handle unexpected nils gracefully rather than terminating.
[weak self] in closuresAny closure that captures self must use [weak self], regardless of whether a retain cycle is obvious. This includes completion handlers, notification callbacks, and any escaping closure.
Why: Retain cycles through closures are easy to introduce and hard to spot in review. Requiring [weak self] universally eliminates the need to reason about object lifetimes on a case-by-case basis.
[weak self] explicitly inside Task closuresTask { } creates its own capture scope and does not inherit [weak self] from an enclosing closure. Always re-declare it:
// ❌ Wrong — self is strongly captured inside the Task
doSomething { [weak self] in
Task {
self?.handle() // self is strong here despite outer [weak self]
}
}
// ✅ Correct
doSomething { [weak self] in
Task { [weak self] in
self?.handle()
}
}Why: Forgetting [weak self] inside a Task creates a retain cycle even when the enclosing closure correctly uses [weak self]. The two capture lists are independent.
Only apply these rules if the diff includes SwiftUI view code.
In SwiftUI, views inside if/else branches have different structural identities even if they look identical. Instead of branching on views, branch on properties (color, size, text, etc.):
// ❌ Avoid
if isHighlighted {
Text("Hello").foregroundColor(.red)
} else {
Text("Hello").foregroundColor(.black)
}
// ✅ Prefer
Text("Hello").foregroundColor(isHighlighted ? .red : .black)Use @ViewBuilder when you genuinely need to return different view types from a branch.
Why: Branching on views causes animation glitches, performance regressions, and unexpected state resets because SwiftUI treats each branch as a distinct view identity.
Reference: Demystify SwiftUI — WWDC21
<Content: View>) instead of AnyViewAnyView erases type information and reduces performance. Prefer generics:
// ❌ Avoid
func wrap(_ view: AnyView) -> some View { ... }
// ✅ Prefer
func wrap<Content: View>(_ view: Content) -> some View { ... }Why: Generics preserve type information and let the compiler optimize the view hierarchy.
© player-ui, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/ios-review of player-ui/player.
Open the folder on GitHubat commit f62684f
iOS Review 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 |
|---|---|---|---|---|---|---|
| iOS Review this skillplayer-ui/player | 101 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Anishelf Releasesamuelhe52/AniShelf | 142 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Swift ExpertJeffallan/claude-skills | 12k | — | ~1.5k | Automated safety check: Pass | MIT | |
| View Refactorrobinebers/openusage | 4.3k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Coding Assistantwpsnote/wpsnote-skills | 179 | — | ~1.1k | Automated safety check: Pass | None | |
| Swift Refactorpproenca/dot-skills | 215 | — | ~3k | Automated safety check: Pass | MIT |
samuelhe52/AniShelf
Prepare and publish AniShelf source-control releases through validation, release commits, annotated tags, and the main-to-release pull request.
Jeffallan/claude-skills
Builds Swift apps for Apple platforms with SwiftUI, protocol-oriented design, async/await, actors and Sendable checks, verified with swift build and swift test.
robinebers/openusage
Refactor macOS SwiftUI views and scenes with strong defaults for small dedicated subviews, stable sidebar and selection structure, explicit command and toolbar ownership, scene-aware state, and…
wpsnote/wpsnote-skills
多平台编码助手。遵循各平台官方文档做编码规范、单测与编译/lint;协助将核心技术梳理为完整 WPS 笔记技术文档。生成的笔记必须包含 7 个二级标题(核心技术、核心代码、关键技术点、核心类和职责、调用链、架构概览、注意事项);其中架构、核心技术、调用链的图示优先用 WPS 笔记的 generateimage 根据描述生成图片再用 insertimage…
pproenca/dot-skills
Swift and SwiftUI refactoring patterns aligned with the iOS 26 / Swift 6.2 clinic modular MVVM-C architecture (Airbnb + OLX SPM layout).
AvdLee/SwiftUI-Agent-Skill
Scan Apple's SwiftUI documentation for deprecated APIs and update the SwiftUI Expert Skill with modern replacements.
Categories
Review Swift/iOS code against team conventions. An agent skill from player-ui/player. iOS Review is an agent skill from player-ui/player. Review Swift/iOS code against team conventions.
iOS Review fits situations like: the user asks to review Swift code; runs /ios-review; editing Swift files in this repo.
Run `npx skills add player-ui/player --skill ios-review -a claude-code`. Or copy the skill folder (.claude/skills/ios-review in player-ui/player) into .claude/skills/ios-review in your project. Claude Code loads it when a task matches its description.
Run `npx skills add player-ui/player --skill ios-review -a codex`. Or copy the skill folder (.claude/skills/ios-review in player-ui/player) into .agents/skills/ios-review 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 player-ui/player --skill ios-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ios-review, .gemini/skills/ios-review, .github/skills/ios-review and .opencode/skills/ios-review in your project.
SKILL.md names no scripts, command-line tools or credentials: iOS Review is instructions for the agent only.
SKILL.md names 3 domains. As links in the text: swift.org, google.github.io and developer.apple.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
iOS Review is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.6k 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 iOS Review: Anishelf Release (samuelhe52/AniShelf, 142 stars), Swift Expert (Jeffallan/claude-skills, 12k stars), View Refactor (robinebers/openusage, 4.3k stars) and Coding Assistant (wpsnote/wpsnote-skills, 179 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
player-ui (a GitHub organization) maintains it in player-ui/player, which has 101 GitHub stars. The repository was last updated on October 6, 2026.
Source: player-ui/player on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.