Official agent skill

Evaluating SDK Internal Updates

by bitwarden in 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…

OfficialGPL-3.0Auto-check passedMobile

Install Evaluating SDK Internal Updates

skills CLI
$ npx skills add bitwarden/ios --skill evaluating-sdk-internal-updates -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install bitwarden/ios evaluating-sdk-internal-updates --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/bitwarden/ios.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/evaluating-sdk-internal-updates .claude/skills/evaluating-sdk-internal-updates && rm -rf skills-src

Use ~/.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/

Facts

Skill name
evaluating-sdk-internal-updates
GitHub stars
694
Token cost
~2.6k tokens
SKILL.md length
1,341 words
Files
2
Skills in repo
11
Repo updated
First seen
Licence
GPL-3.0

At a glance

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…

  • Works in 8 steps: gh pr diff -R bitwarden/ios → the old… → Locate the sdk-swift clone in a sibling… → Get a build of both apps. In CI the… → …
  • Reviewing an SDK bump PR
  • SKILL.md covers Identify and Resolve
  • Runs Shell scripts from its folder; calls git, xcrun and gh

What it does

Evaluating SDK Internal Updates is an agent skill from bitwarden/ios, published by the product's own GitHub organization. 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 clear in-scope fixes. Use when reviewing an SDK bump PR, a BitwardenSdk revision change in project-common.yml, or triaging sdk-internal breaking changes.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `sdk-surface-diff.sh`).

It sits in Mobile, covering iOS development. It works with iOS. The repository describes itself as: Bitwarden mobile apps (Password Manager and Authenticator) for iOS. The licence is GPL-3.0.

When your agent uses it

  • Reviewing an SDK bump PR
  • A BitwardenSdk revision change in project-common.yml
  • Triaging sdk-internal breaking changes

Example prompts

  • “Update SDK to”
  • “Use the evaluating-sdk-internal-updates skill to evaluate a bitwarden/ios "Update SDK to" PR against the sdk-swift commit range for compile-time…”
  • “/evaluating-sdk-internal-updates”

Requirements

  • A Bash shell
  • Pre-approved tools (allowed-tools): Bash(gh pr diff:*), Bash(xcrun xcodebuild *), Bash(bash .claude/skills/evaluating-sdk-internal-updates/sdk-surface-diff.sh *), Bash(git -C * diff *), Bash(git grep:*), Bash(grep:*), Bash(git add:*), Bash(git commit:*), Read, Grep, Glob, Edit, Write, Skill(implementing-ios-code), Skill(bitwarden-delivery-tools:committing-changes)

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. gh pr diff -R bitwarden/ios → the old and new revision: lines in project-common.yml. The SHA is an sdk-swift revision; the trailing…
  2. Locate the sdk-swift clone in a sibling directory — ../sdk-swift alongside this repo, which is where CI places it. If there is none, stop…
  3. Get a build of both apps. In CI the build has already run and the prompt names its log; grep that log with the filter below and treat the…
  4. From the repo root, bash .claude/skills/evaluating-sdk-internal-updates/sdk-surface-diff.sh prints RANGE, REMOVED, ADDED and MUTATED…
  5. git -C diff .. -- '*/uniffi.toml'. Only bitwarden-core and bitwarden-crypto set generate_codable_conformance, so a type moving to any…
  6. For each symbol from steps 4-5, git grep -n '' -- '*.swift' from the repo root. No module list and no import-prefix filter: everything…
  7. Two gates a green build passes through. grep -A3 'BitwardenSdk:' project-common.yml: SDKVersionInfoTests asserts the trailing comment…
  8. Report under these headings, which are the same across every repo running this evaluation: ## SDK bump evaluated, ## Compile-time breaks…

What it can do on your machine

Read from SKILL.md and the folder at commit 59bbfb3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(gh pr diff:*)
    • Bash(xcrun xcodebuild *)
    • Bash(bash .claude/skills/evaluating-sdk-internal-updates/sdk-surface-diff.sh *)
    • Bash(git -C * diff *)
    • Bash(git grep:*)
    • Bash(grep:*)
    • Bash(git add:*)
    • Bash(git commit:*)
    • Read
    • Grep

    …and 5 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • xcrun
    • gh
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Evaluating SDK Internal Updates loads about 2.6k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 1,341 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~95
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from bitwarden/ios at commit 59bbfb3, republished under its GPL-3.0 licence (© bitwarden). 1,341 words, ~2,600 tokens.

Download SKILL.mdSave it as .claude/skills/evaluating-sdk-internal-updates/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
evaluating-sdk-internal-updates
description
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 clear in-scope fixes. Use when reviewing an SDK bump PR, a BitwardenSdk revision change in project-common.yml, or triaging sdk-internal breaking changes.
allowed-tools
Bash(gh pr diff:*), Bash(xcrun xcodebuild *), Bash(bash .claude/skills/evaluating-sdk-internal-updates/sdk-surface-diff.sh *), Bash(git -C * diff *), Bash(git grep:*), Bash(grep:*), Bash(git add:*), Bash(git commit:*), Read, Grep, Glob, Edit, Write, Skill(implementing-ios-code), Skill(bitwarden-delivery-tools:committing-changes)

Evaluating sdk-internal Updates

Read the build before crawling, and survey the whole range before fixing anything. A failing build locates a compile break more precisely than any diff; the binding diff finds what compiles clean and breaks at runtime. Steps 3-8 complete before step 9 starts.

Identify

iOS pins a bitwarden/sdk-swift revision, not sdk-internal, and sdk-swift commits its generated UniFFI Swift. That is both the source iOS compiles against and the diffable record of the API change; use sdk-internal only to explain why something changed. Every crate flattens into one BitwardenSdk target, so a type moving between generated files is a Kotlin import break and an iOS no-op — never report one. The iOS-only hazard is the reverse: a new name colliding with an existing one. sdk-swift's main is months behind; releases live on unstable and v<version> tags.

  1. gh pr diff <PR> -R bitwarden/ios → the old and new revision: lines in project-common.yml. The SHA is an sdk-swift revision; the trailing comment is <semver>-<ci-run>-<sdk-internal-short-sha>. Take the pin from the PR diff or a fresh fetch, not from a local origin/sdlc/sdk-update ref, which is long-lived and force-updated, so a stale copy shows a version no longer on the branch. A pure bump touches only that file and Bitwarden.xcworkspace/xcshareddata/swiftpm/Package.resolved; that file's unchanged originHash and the untracked BitwardenKit.xcodeproj/.../Package.resolved are not findings.
  2. Locate the sdk-swift clone in a sibling directory — ../sdk-swift alongside this repo, which is where CI places it. If there is none, stop and tell the user it is a required prerequisite; do not clone it. sdk-internal (../sdk-internal) is optional, needed only for step 5.
  3. Get a build of both apps. In CI the build has already run and the prompt names its log; grep that log with the filter below and treat the result as this step's output. Do not build. A cold build of both schemes exceeds the ceiling on a single command, so building here is not an option that merely costs time. Everything else in this step is the local path, and step 10 needs the invocation regardless. Every xcodebuild invocation in this skill — here and in step 10 — takes the same destination: CI exports _SIMULATOR_ID for an already-booted simulator, and outside CI there is none, so substitute name=$(tr -d '\n' < .test-simulator-device-name),OS=$(tr -d '\n' < .test-simulator-ios-version) for id=$_SIMULATOR_ID in both blocks. Avoid generic/platform=iOS Simulator, which also builds x86_64 for no extra signal.
    bash
    xcrun xcodebuild build-for-testing -workspace Bitwarden.xcworkspace -scheme Bitwarden \
      -configuration Debug -destination "platform=iOS Simulator,id=$_SIMULATOR_ID" \
      -derivedDataPath build/DerivedData -parallelizeTargets \
      -skipPackagePluginValidation -skipMacroValidation -quiet 2>&1 \
      | grep -E '^=== | error:|BUILD|Undefined symbols|^ld:'
    Repeat with -scheme Authenticator. Use build-for-testing, not build: BitwardenSdkMocks is reachable only from test targets, and a renamed protocol breaks there first. The filter carries Undefined symbols and ^ld: because a link failure is reported by neither error: nor BUILD, and a symbol-level break is exactly what this skill exists to catch; on any BUILD FAILED with no cause above it, read around the failure in the CI log, or re-run unfiltered locally. The CI log holds both schemes, each bracketed by === <scheme> === and === <scheme> exit=<code> ===, which the ^=== alternation above keeps in the filtered view; those markers are how a build that ran clean is distinguished from one that never started, and -quiet prints no success banner, so treat a missing pair as an error rather than as a pass. ./Scripts/bootstrap.sh must have run first: the .xcodeproj files are generated, and a stale one omits sources and reports cannot find 'X' in scope, which mimics an SDK break. Note any failure and continue — a clean build rules out compile breaks only.
  4. From the repo root, bash .claude/skills/evaluating-sdk-internal-updates/sdk-surface-diff.sh <sdk-swift-path> <old> <new> prints RANGE, REMOVED, ADDED and MUTATED. MUTATED compares type declaration lines only, so --decls is the only view of a signature change on any function or method, and --type <TypeName> the only view of a type's members or its initializer. A reordered record field appears in no section, since initializers are excluded and both sides of --decls are sorted; step 3's build is the only gate for it. Enum cases and protocol requirements take no access modifier, so they reach no section and no --decls hunk either: a case added to an enum that already existed is visible only through --type, and a default: clause at the call site hides it from step 3 as well, so run --type against every enum and protocol the RANGE commits touch. ADDED lists <kind> <name>, so an added field can hide behind the same field name on another type, and only a pre-existing owner is a break. RANGE is oldest-first, and its base: line carries the old sdk-internal SHA that OLD..NEW excludes and step 5 needs.
  5. git -C <sdk-internal> diff <old-sha>..<new-sha> -- '*/uniffi.toml'. Only bitwarden-core and bitwarden-crypto set generate_codable_conformance, so a type moving to any other crate silently loses Codable, which is a serialization break with no compile signal. Error enums come from #[bitwarden_error(flat)] rather than derive(uniffi::Error), so grepping for uniffi:: misses the entire error surface.
  6. For each symbol from steps 4-5, git grep -n '<Symbol>' -- '*.swift' from the repo root. No module list and no import-prefix filter: everything arrives via plain import BitwardenSdk, and both apps consume it, so AuthenticatorShared is not optional. Use git grep rather than grep -r, which also searches the SDK checkout step 3 left under gitignored build/ and reports its own bindings as call sites. A surface change stays a candidate until a call site makes it a finding. A new protocol requirement has no symbol to grep yet, so grep the concept and check the hand-written with_foreign conformers: Fido2CredentialStore, ClientManagedTokens, ServerCommunicationConfigRepository, Fido2UserInterface.
  7. Two gates a green build passes through. grep -A3 'BitwardenSdk:' project-common.yml: SDKVersionInfoTests asserts the trailing comment against ^\d+\.\d+\.\d+-\d+-[a-f0-9]+$, and a leading v fails it, meaning the bump was dispatched with the tag name instead of the release name. Then grep -n 'extension ' BitwardenSdkMocks/BitwardenSdkMocks.swift: Sourcery cannot annotate external-module types, so that hand-maintained list is the only diff evidence of a protocol rename. Add an entry for a new client protocol iOS actually consumes, and never edit the generated mocks.
  8. Report under these headings, which are the same across every repo running this evaluation: ## SDK bump evaluated, ## Compile-time breaks, ## Runtime considerations (serialization findings go here; omit the heading when there are none), ## Everything else in range — confirmed safe, ## Commit. Give each finding its commit, symbol and call sites, and state whether the build passed inside ## Compile-time breaks rather than as its own section. Cite sdk-internal commits and PRs as bitwarden/sdk-internal#<N> or a full URL; a bare #<N> copied from a commit subject auto-links into bitwarden/ios and tags an unrelated PR.
Show full SKILL.md (269 more words)Show less

Resolve

  1. Fix anything found, compile-time or runtime, whenever the correct behavior is clear and in scope. For a new required method with no existing consumer, stub it: an empty body with a // no-op comment, or a nil/default return. Never fatalError(), preconditionFailure(), try! or a force-unwrap, which turn a stub into a crash. A sibling's structure is a template; its behavior is not evidence for yours. If unsure, report it instead of guessing, along with anything needing a product decision. Invoke Skill(implementing-ios-code) first if the fix is not mechanical, then commit with Skill(bitwarden-delivery-tools:committing-changes).
  2. Build both schemes yourself with step 3's command, then spot-test the test targets of the modules you edited, mapped with the table in fixing-flaky-tests step 2. Unlike step 3, run this one even in CI: it is incremental against the derived data the baseline left warm, so it finishes well inside the timeout.
    bash
    xcrun xcodebuild test-without-building -workspace Bitwarden.xcworkspace -scheme Bitwarden \
      -configuration Debug -destination "platform=iOS Simulator,id=$_SIMULATOR_ID" \
      -derivedDataPath build/DerivedData -only-testing:BitwardenSharedTests 2>&1 \
      | grep -E 'Executed|Suite .* (passed|failed)| error:'
    Filter at target level; the XCTest Target/Class form matches no Swift Testing suite. xcodebuild exits 0 when a filter matches nothing, so confirm the run happened rather than trusting the exit code: XCTest prints Executed <N> tests, which must be non-zero, while Swift Testing prints no such line, so for a Swift Testing target look for its Suite ... passed line instead. Two targets override the table: BitwardenKitTests and NetworkingTests are test targets of the Bitwarden scheme and appear in TestPlans/Bitwarden-Default.xctestplan, its default plan, so run them from Bitwarden with the command above rather than the BitwardenKit scheme the table names.

© 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

Files

SKILL.md and 1 other file in .claude/skills/evaluating-sdk-internal-updates of bitwarden/ios.

  • SKILL.md
  • sdk-surface-diff.sh

Open the folder on GitHubat commit 59bbfb3

Compare with similar skills

Evaluating SDK Internal Updates 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.

Evaluating SDK Internal Updates compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Evaluating SDK Internal Updates this skillbitwarden/ios694—~2.6kAutomated safety check: PassGPL-3.0
Hig Project Contextraintree-technology/hig-doctor1425 repos~1.2kAutomated safety check: PassMIT
Hig Components Contentraintree-technology/hig-doctor1425 repos~1.3kAutomated safety check: PassMIT
iOS Simulator Skilln0an/VivaDicta1261 repos~2.5kAutomated safety check: PassMIT
Inspector Implementationipedro/Inspector170—~729Automated safety check: PassMIT
Device InteractionInfomaniak/desktop-kDrive1201 repos~1.9kAutomated safety check: PassGPL-3.0

Similar skills

  • Hig Project Context

    raintree-technology/hig-doctor

    Create or update a shared Apple design context document that other HIG skills use to tailor guidance.

    142 GitHub starsUsed in 5 repos~1.2k tokens
    MobileAuto-check passed
  • Hig Components Content

    raintree-technology/hig-doctor

    Apple Human Interface Guidelines for content display components.

    142 GitHub starsUsed in 5 repos~1.3k tokens
    MobileAuto-check passed
  • iOS Simulator Skill

    n0an/VivaDicta

    21 production-ready scripts for iOS app testing, building, and automation.

    126 GitHub starsUsed in 1 repo~2.5k tokens
    MobileAuto-check passed
  • Inspector Implementation

    ipedro/Inspector

    A skill your agent uses when an agent needs to implement or modify the Inspector library itself — panel UI, hierarchy/runtime behavior, custom property models, macros, or Example-app dogfooding.

    170 GitHub stars~729 tokensUpdated 5 mo ago
    MobileAuto-check passed
  • Device Interaction

    Infomaniak/desktop-kDrive

    Verify iOS app behavior on device or simulator via screenshots, UI hierarchy, and touch interactions.

    120 GitHub starsUsed in 1 repo~1.9k tokens
    MobileAuto-check passed
  • Run iOS Simulator

    iPlug2/iPlug2OOS

    Build and run an iPlug2 iOS app in the iOS Simulator. An agent skill from iPlug2/iPlug2OOS.

    158 GitHub stars~711 tokensUpdated 22 days ago
    MobileAuto-check passed

More from bitwarden/ios

All 11 skills in this repo
  • Testing iOS Code

    bitwarden/ios

    Official

    Write tests, add test coverage, unit test, or add missing tests for Bitwarden iOS.

    694 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Official

    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.

    694 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Build Test Verify

    bitwarden/ios

    Official

    Build the project, run tests, lint, format, spell check, generate mocks, or verify the build passes for Bitwarden iOS.

    694 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Official

    Convert a hand-written bespoke mock to a Sourcery AutoMockable-generated mock.

    694 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Fixing Flaky Tests

    bitwarden/ios

    Official

    Diagnose and fix flaky (intermittently failing) tests in Bitwarden iOS.

    694 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Official

    Implement, write code, add a new screen, create a feature, new view, new processor, or wire up a new service in Bitwarden iOS.

    694 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Evaluating SDK Internal Updates

What does Evaluating SDK Internal Updates do?

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…. Evaluating SDK Internal Updates is an agent skill from bitwarden/ios, published by the product's own GitHub organization. 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 clear in-scope fixes.

When should I use Evaluating SDK Internal Updates?

Evaluating SDK Internal Updates fits situations like: reviewing an SDK bump PR; A BitwardenSdk revision change in project-common.yml; triaging sdk-internal breaking changes.

How do I install Evaluating SDK Internal Updates in Claude Code?

Run `npx skills add bitwarden/ios --skill evaluating-sdk-internal-updates -a claude-code`. Or copy the skill folder (.claude/skills/evaluating-sdk-internal-updates in bitwarden/ios) into .claude/skills/evaluating-sdk-internal-updates in your project. Claude Code loads it when a task matches its description.

How do I install Evaluating SDK Internal Updates in Codex?

Run `npx skills add bitwarden/ios --skill evaluating-sdk-internal-updates -a codex`. Or copy the skill folder (.claude/skills/evaluating-sdk-internal-updates in bitwarden/ios) into .agents/skills/evaluating-sdk-internal-updates in your project. Codex loads it when a task matches its description.

Can I use Evaluating SDK Internal Updates in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bitwarden/ios --skill evaluating-sdk-internal-updates -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/evaluating-sdk-internal-updates, .gemini/skills/evaluating-sdk-internal-updates, .github/skills/evaluating-sdk-internal-updates and .opencode/skills/evaluating-sdk-internal-updates in your project.

What does Evaluating SDK Internal Updates need to run?

Going by SKILL.md and its folder, Evaluating SDK Internal Updates needs a shell for the scripts in its folder and the command-line tools its instructions call (git, xcrun, gh and bash). Our summary lists: A Bash shell. Its frontmatter pre-approves these tools: Bash(gh pr diff:*), Bash(xcrun xcodebuild *), Bash(bash .claude/skills/evaluating-sdk-internal-updates/sdk-surface-diff.sh *), Bash(git -C * diff *), Bash(git grep:*), Bash(grep:*), Bash(git add:*), Bash(git commit:*), Read, Grep, Glob, Edit, Write, Skill(implementing-ios-code), Skill(bitwarden-delivery-tools:committing-changes).

Does Evaluating SDK Internal Updates access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Evaluating SDK Internal Updates safe to install?

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.

What licence does Evaluating SDK Internal Updates use?

Evaluating SDK Internal Updates 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.

How many tokens does Evaluating SDK Internal Updates use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Evaluating SDK Internal Updates?

Skills that share tags, products or a category with Evaluating SDK Internal Updates: Hig Project Context (raintree-technology/hig-doctor, 142 stars), Hig Components Content (raintree-technology/hig-doctor, 142 stars), iOS Simulator Skill (n0an/VivaDicta, 126 stars) and Inspector Implementation (ipedro/Inspector, 170 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Evaluating SDK Internal Updates?

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.