Hig Project Context
raintree-technology/hig-doctor
Create or update a shared Apple design context document that other HIG skills use to tailor guidance.
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…
$ npx skills add bitwarden/ios --skill evaluating-sdk-internal-updates -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bitwarden/ios evaluating-sdk-internal-updates --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/evaluating-sdk-internal-updates .claude/skills/evaluating-sdk-internal-updates && 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 "evaluating-sdk-internal-updates" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/evaluating-sdk-internal-updates into .claude/skills/evaluating-sdk-internal-updates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "evaluating-sdk-internal-updates", 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/evaluating-sdk-internal-updatesType 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 evaluating-sdk-internal-updates -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bitwarden/ios evaluating-sdk-internal-updates --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/evaluating-sdk-internal-updates .agents/skills/evaluating-sdk-internal-updates && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "evaluating-sdk-internal-updates" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/evaluating-sdk-internal-updates into .agents/skills/evaluating-sdk-internal-updates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "evaluating-sdk-internal-updates", 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 evaluating-sdk-internal-updates -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bitwarden/ios evaluating-sdk-internal-updates --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/evaluating-sdk-internal-updates .cursor/skills/evaluating-sdk-internal-updates && 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 "evaluating-sdk-internal-updates" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/evaluating-sdk-internal-updates into .cursor/skills/evaluating-sdk-internal-updates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "evaluating-sdk-internal-updates", 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/evaluating-sdk-internal-updates--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 evaluating-sdk-internal-updates -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bitwarden/ios evaluating-sdk-internal-updates --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/evaluating-sdk-internal-updates .gemini/skills/evaluating-sdk-internal-updates && 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 "evaluating-sdk-internal-updates" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/evaluating-sdk-internal-updates into .gemini/skills/evaluating-sdk-internal-updates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "evaluating-sdk-internal-updates", 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 evaluating-sdk-internal-updatesInstalls 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 evaluating-sdk-internal-updates -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/evaluating-sdk-internal-updates .github/skills/evaluating-sdk-internal-updates && 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 "evaluating-sdk-internal-updates" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/evaluating-sdk-internal-updates into .github/skills/evaluating-sdk-internal-updates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "evaluating-sdk-internal-updates", 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 evaluating-sdk-internal-updates -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 evaluating-sdk-internal-updates --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/evaluating-sdk-internal-updates .opencode/skills/evaluating-sdk-internal-updates && 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 "evaluating-sdk-internal-updates" agent skill from https://github.com/bitwarden/ios/tree/main/.claude/skills/evaluating-sdk-internal-updates into .opencode/skills/evaluating-sdk-internal-updates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "evaluating-sdk-internal-updates", 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.
evaluating-sdk-internal-updatesEvaluates 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. 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.
8 steps, taken from the first numbered list 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 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:*)ReadGrep…and 5 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitxcrunghbashFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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). 1,341 words, ~2,600 tokens.
.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.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.
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.
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.../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.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.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:'-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.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.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.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.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.## 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.// 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).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.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:'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
SKILL.md and 1 other file in .claude/skills/evaluating-sdk-internal-updates of bitwarden/ios.
Open the folder on GitHubat commit 59bbfb3
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Evaluating SDK Internal Updates this skillbitwarden/ios | 694 | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Hig Project Contextraintree-technology/hig-doctor | 142 | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Hig Components Contentraintree-technology/hig-doctor | 142 | 5 repos | ~1.3k | Automated safety check: Pass | MIT | |
| iOS Simulator Skilln0an/VivaDicta | 126 | 1 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Inspector Implementationipedro/Inspector | 170 | — | ~729 | Automated safety check: Pass | MIT | |
| Device InteractionInfomaniak/desktop-kDrive | 120 | 1 repos | ~1.9k | Automated safety check: Pass | GPL-3.0 |
raintree-technology/hig-doctor
Create or update a shared Apple design context document that other HIG skills use to tailor guidance.
raintree-technology/hig-doctor
Apple Human Interface Guidelines for content display components.
n0an/VivaDicta
21 production-ready scripts for iOS app testing, building, and automation.
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.
Infomaniak/desktop-kDrive
Verify iOS app behavior on device or simulator via screenshots, UI hierarchy, and touch interactions.
iPlug2/iPlug2OOS
Build and run an iPlug2 iOS app in the iOS Simulator. An agent skill from iPlug2/iPlug2OOS.
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
Diagnose and fix flaky (intermittently failing) tests in Bitwarden iOS.
bitwarden/ios
Implement, write code, add a new screen, create a feature, new view, new processor, or wire up a new service in Bitwarden iOS.
Works with
Categories
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.