Apple Crash Log .NET Symbolication
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.
Implement, write code, add a new screen, create a feature, new view, new processor, or wire up a new service in Bitwarden iOS.
$ npx skills add bitwarden/ios --skill implementing-ios-code -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bitwarden/ios implementing-ios-code --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/bitwarden/ios.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/implementing-ios-code .claude/skills/implementing-ios-code && 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 "implementing-ios-code" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/implementing-ios-code into .claude/skills/implementing-ios-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implementing-ios-code", 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/bitwarden/ios/tree/main/.claude/skills/implementing-ios-codeType 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 bitwarden/ios --skill implementing-ios-code -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bitwarden/ios implementing-ios-code --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bitwarden/ios.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/implementing-ios-code .agents/skills/implementing-ios-code && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "implementing-ios-code" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/implementing-ios-code into .agents/skills/implementing-ios-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implementing-ios-code", 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 bitwarden/ios --skill implementing-ios-code -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bitwarden/ios implementing-ios-code --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bitwarden/ios.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/implementing-ios-code .cursor/skills/implementing-ios-code && 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 "implementing-ios-code" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/implementing-ios-code into .cursor/skills/implementing-ios-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implementing-ios-code", 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/bitwarden/ios.git --path .claude/skills/implementing-ios-code--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 bitwarden/ios --skill implementing-ios-code -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bitwarden/ios implementing-ios-code --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bitwarden/ios.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/implementing-ios-code .gemini/skills/implementing-ios-code && 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 "implementing-ios-code" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/implementing-ios-code into .gemini/skills/implementing-ios-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implementing-ios-code", 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 bitwarden/ios implementing-ios-codeInstalls 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 bitwarden/ios --skill implementing-ios-code -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/bitwarden/ios.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/implementing-ios-code .github/skills/implementing-ios-code && 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 "implementing-ios-code" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/implementing-ios-code into .github/skills/implementing-ios-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implementing-ios-code", 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 bitwarden/ios --skill implementing-ios-code -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bitwarden/ios implementing-ios-code --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bitwarden/ios.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/implementing-ios-code .opencode/skills/implementing-ios-code && 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 "implementing-ios-code" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/implementing-ios-code into .opencode/skills/implementing-ios-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implementing-ios-code", 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.
implementing-ios-codeImplement, write code, add a new screen, create a feature, new view, new processor, or wire up a new service in Bitwarden iOS.
Implementing iOS Code is an agent skill from bitwarden/ios, published by the product's own GitHub organization. Implement, write code, add a new screen, create a feature, new view, new processor, or wire up a new service in Bitwarden iOS. Use when asked to "implement", "write code", "add screen", "create feature", "new view", "new processor", "add service", or when translating a design doc into actual Swift code.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `templates.md`).
It sits in Mobile, covering iOS development, Architecture decision records and Translation. It works with iOS. The repository describes itself as: Bitwarden mobile apps (Password Manager and Authenticator) for iOS. The licence is GPL-3.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 59bbfb3. 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 bash).
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.
Implementing iOS Code loads about 1.9k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 893 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 bitwarden/ios at commit 59bbfb3, republished under its GPL-3.0 licence (© bitwarden). 893 words, ~1,900 tokens.
.claude/skills/implementing-ios-code/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this skill to implement Bitwarden iOS features following established patterns.
.claude/outputs/plans/<ticket-id>.md. If not, invoke planning-ios-implementation first.Docs/Architecture.md — it is the authoritative source for all patterns. This skill references it, not replaces it.From the plan, identify:
BitwardenShared, AuthenticatorShared, or BitwardenKit?Auth/, Autofill/, Platform/, Tools/, Vault/?See templates.md for file-set skeletons.
Implement from the bottom up:
Data Models (if needed)
Core/<Domain>/Models/Request/ and Response/Core/<Domain>/Models/Enum/switch over that enum (across all layers) rather than appending it — match the surrounding order.Persistence (if needed)
DataStore (add entities to Bitwarden.xcdatamodeld)AppSettingsStore (backed by UserDefaults)KeychainRepositoryStateService. Prefer adding a separate protocol over extending StateService, AppSettingsStore, or KeychainRepository directly, to maintain interface segregation.Services / Repositories
// sourcery: AutoMockableDefault<Name>Service / Default<Name>RepositoryHas<Name> protocoltemplates.md for service skeletonFor new screens, create all required files together (see templates.md):
Services typealiasstruct) holding all view-observable datareceive(_:)perform(_:)StateProcessor subclass, business logic onlystore.binding, store.perform, @ObservedObjectSwiftUI previews:
#Preview macros for new views — the modern default across the codebase. Do not add new PreviewProvider structs. Because the snapshot harness cannot enumerate #Preview macros, such a view's snapshot coverage comes from a test that instantiates the view directly; see the testing-ios-code skill for how to choose between that and iterating PreviewProvider._allPreviews when a view exposes both.New localization keys (BitwardenResources/.../Localizable.strings):
Archive for "Archive", not MoveToArchive or ArchiveTitle.DescriptionLong suffix on a shortened opening phrase. Example: PassphrasesAreOftenEasierToRememberDescriptionLong./* … */ comments describe meaning, placement, or constraints that affect translation — translators are the audience, not internal engineers.After creating a new service/repository:
Has<Name> conformance to ServiceContainer via extensionHas<Name> to the Services typealias of any processor that needs itBefore finishing:
BitwardenSdk for all encryption/decryptionKeychainRepository, not AppSettingsStoreInputValidatorNonLoggableErrorAll new public types and methods require DocC (///) documentation.
Exceptions: protocol property/function implementations (docs live in the protocol), mock classes.
Use pragma marks to organize code. // MARK: - is used to denote different objects in the same file; // MARK: is used to denote different sections within an object.
Run these checks after all code and tests are written, before handing back. Fix every violation found — do not leave warnings for the commit phase.
If new localization strings were added, regenerate first so SwiftGen picks them up:
mint run swiftgen config run --config swiftgen-bwr.yml # BitwardenResources (most common)
# Run the appropriate swiftgen-*.yml if strings landed in a different targetThen run the pre-commit checks:
./Scripts/pre-commitThis runs spell-check, SwiftFormat, and SwiftLint on changed files — the same checks that run at commit time. If violations are reported, fix them and re-run until it passes cleanly.
For SwiftLint violations that require manual fixes, prefer fixing the root cause over suppressing with // swiftlint:disable comments. Suppression is appropriate when the violation is structural and fixing it would require an artificial or non-idiomatic refactor. Common cases:
line_length — wrap long lines using Xcode's ⌃M style (each argument on its own indented line); fix rather than suppressfile_length — if a #if DEBUG preview section pushed a file over the limit, add // swiftlint:disable file_length at the top of the file (this is the established pattern — do NOT move previews to a separate file)type_body_length — split large types using // MARK: extensions in separate files if needed; suppress only if the type is inherently large and splitting would hurt readabilityOnly hand back once ./Scripts/pre-commit passes cleanly for files touched in this session.
// MARK: section, keep members in a single alphabetical order (stored properties, computed properties, methods, and static members share that order), and alphabetize function and initializer parameters the same way (default-valued, variadic, then trailing-closure parameters last). Insert new members and parameters at their alphabetical position rather than appending. Exceptions: UI objects (views, view modifiers) follow visual layout order, not alphabetical; and protocol conformance ordering is not enforced.static member on the relevant type or extension over a file-scope global function or property, even a private one.Date, etc.) rather than raw strings, unless deliberately mirroring an external contract (e.g. an SDK model that stores ISO date strings) where typed conversion is intentionally deferred.© bitwarden, GPL-3.0. 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 1 other file in .claude/skills/implementing-ios-code of bitwarden/ios.
Open the folder on GitHubat commit 59bbfb3
Implementing iOS Code 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 |
|---|---|---|---|---|---|---|
| Implementing iOS Code this skillbitwarden/ios | 694 | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Apple Crash Log .NET Symbolicationdotnet/skills | 5.6k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| iOS Memgraph Analysisdpearson2699/swift-ios-skills | 1.2k | — | ~2.4k | Automated safety check: Pass | Custom licence | |
| iOS Reviewplayer-ui/player | 101 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Releasevaayne/mori | 303 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Anishelf Releasesamuelhe52/AniShelf | 140 | — | ~2k | Automated safety check: Pass | Apache-2.0 |
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.
dpearson2699/swift-ios-skills
A skill your agent uses when capturing or analyzing an iOS .memgraph, especially when the task mentions a memory leak, heap growth, persistent memory increase, ownership path, or matched-capture…
player-ui/player
Review Swift/iOS code against team conventions. An agent skill from player-ui/player.
vaayne/mori
Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.
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.
bitwarden/ios
Write tests, add test coverage, unit test, or add missing tests for Bitwarden iOS.
bitwarden/ios
Build the Bitwarden iOS app, capture all compiler and lint warnings, categorize them into Swift 6 concurrency vs actionable, and interactively fix the actionable ones.
bitwarden/ios
Build the project, run tests, lint, format, spell check, generate mocks, or verify the build passes for Bitwarden iOS.
bitwarden/ios
Convert a hand-written bespoke mock to a Sourcery AutoMockable-generated mock.
bitwarden/ios
Evaluates a bitwarden/ios "Update SDK to" PR against the sdk-swift commit range for compile-time, runtime and serialization breaking changes, maps affected symbols to iOS call sites, and applies…
bitwarden/ios
Diagnose and fix flaky (intermittently failing) tests in Bitwarden iOS.
Works with
Categories
Implement, write code, add a new screen, create a feature, new view, new processor, or wire up a new service in Bitwarden iOS. Implementing iOS Code is an agent skill from bitwarden/ios, published by the product's own GitHub organization. Implement, write code, add a new screen, create a feature, new view, new processor, or wire up a new service in Bitwarden iOS.
Implementing iOS Code fits situations like: asked to implement; translating a design doc into actual Swift code.
Run `npx skills add bitwarden/ios --skill implementing-ios-code -a claude-code`. Or copy the skill folder (.claude/skills/implementing-ios-code in bitwarden/ios) into .claude/skills/implementing-ios-code in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bitwarden/ios --skill implementing-ios-code -a codex`. Or copy the skill folder (.claude/skills/implementing-ios-code in bitwarden/ios) into .agents/skills/implementing-ios-code 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 bitwarden/ios --skill implementing-ios-code -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/implementing-ios-code, .gemini/skills/implementing-ios-code, .github/skills/implementing-ios-code and .opencode/skills/implementing-ios-code in your project.
SKILL.md names no scripts, command-line tools or credentials: Implementing iOS Code is instructions for the agent only.
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 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.
Implementing iOS Code is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.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 Implementing iOS Code: Apple Crash Log .NET Symbolication (dotnet/skills, 5.6k stars), iOS Memgraph Analysis (dpearson2699/swift-ios-skills, 1.2k stars), iOS Review (player-ui/player, 101 stars) and Release (vaayne/mori, 303 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bitwarden (a GitHub organization, an official publisher) maintains it in bitwarden/ios, which has 694 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 6, 2026.
Source: bitwarden/ios on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.