iOS Accessibility Testing
conorluddy/xclaude-plugin
Guides WCAG 2.1 and VoiceOver accessibility testing for iOS apps, working from the accessibility tree and not from screenshots.
Measure VivaDicta test code coverage from the terminal. An agent skill from n0an/VivaDicta.
$ npx skills add n0an/VivaDicta --skill coverage-report -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install n0an/VivaDicta coverage-report --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/n0an/VivaDicta.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/coverage-report .claude/skills/coverage-report && 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 "coverage-report" agent skill from https://github.com/n0an/VivaDicta/tree/main/.agents/skills/coverage-report into .claude/skills/coverage-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-report", 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/n0an/VivaDicta/tree/main/.agents/skills/coverage-reportType 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 n0an/VivaDicta --skill coverage-report -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install n0an/VivaDicta coverage-report --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/n0an/VivaDicta.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/coverage-report .agents/skills/coverage-report && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "coverage-report" agent skill from https://github.com/n0an/VivaDicta/tree/main/.agents/skills/coverage-report into .agents/skills/coverage-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-report", 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 n0an/VivaDicta --skill coverage-report -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install n0an/VivaDicta coverage-report --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/n0an/VivaDicta.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/coverage-report .cursor/skills/coverage-report && 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 "coverage-report" agent skill from https://github.com/n0an/VivaDicta/tree/main/.agents/skills/coverage-report into .cursor/skills/coverage-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-report", 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/n0an/VivaDicta.git --path .agents/skills/coverage-report--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 n0an/VivaDicta --skill coverage-report -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install n0an/VivaDicta coverage-report --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/n0an/VivaDicta.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/coverage-report .gemini/skills/coverage-report && 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 "coverage-report" agent skill from https://github.com/n0an/VivaDicta/tree/main/.agents/skills/coverage-report into .gemini/skills/coverage-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-report", 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 n0an/VivaDicta coverage-reportInstalls 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 n0an/VivaDicta --skill coverage-report -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/n0an/VivaDicta.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/coverage-report .github/skills/coverage-report && 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 "coverage-report" agent skill from https://github.com/n0an/VivaDicta/tree/main/.agents/skills/coverage-report into .github/skills/coverage-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-report", 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 n0an/VivaDicta --skill coverage-report -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install n0an/VivaDicta coverage-report --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/n0an/VivaDicta.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/coverage-report .opencode/skills/coverage-report && 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 "coverage-report" agent skill from https://github.com/n0an/VivaDicta/tree/main/.agents/skills/coverage-report into .opencode/skills/coverage-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-report", 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.
coverage-reportMeasure VivaDicta test code coverage from the terminal. An agent skill from n0an/VivaDicta.
Coverage Report is an agent skill from n0an/VivaDicta. Measure VivaDicta test code coverage from the terminal. Use when asked what the test coverage is, a module's or the whole-app coverage %, which lines/files are covered, to get coverage without opening Xcode, or to see coverage after writing tests. Covers both the fast per-SPM-module path (swift test + llvm-cov) and the canonical whole-app path (xcodebuild + xccov), and which first-party targets count.
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Testing & QA, covering Test coverage and iOS development. It works with Xcode and iOS. The repository describes itself as: iOS & watchOS speech-to-text app with AI voice keyboard, on-device RAG, and chat with your notes - powered by Apple Foundation Models, WhisperKit, NVIDIA Parakeet, and 20+ AI…. The licence is MIT.
Read from SKILL.md and the folder at commit b141304. 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.
Shell commands in SKILL.md call:
swiftFrom 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.
Coverage Report loads about 1.2k tokens when it runs. Until then it costs about 105 tokens; SKILL.md has 538 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 n0an/VivaDicta at commit b141304, republished under its MIT licence (© n0an). 538 words, ~1,211 tokens.
.claude/skills/coverage-report/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.One script, scripts/coverage/coverage.sh, measures code coverage two ways. Coverage is a runtime metric - you must run the tests to get it (it records which executable lines actually ran). It is not the same as the test/prod LOC ratio, which is a static count - that lives in the loc-report skill.
# Canonical: full test plan in the simulator. Overall + per-target.
scripts/coverage/coverage.sh app
# ...plus per-file rows for specific files (e.g. after writing ViewModel tests):
scripts/coverage/coverage.sh app ChatViewModel.swift SmartSearchChatViewModel.swift
# Fast: one SPM module via swift test on the macOS host (no simulator).
scripts/coverage/coverage.sh module CloudTranscription
# Most complete: clean DerivedData -> full plan -> auto-fill any dropped module
# row from the module path -> one merged 16-module table. Slow (~10-15 min).
scripts/coverage/coverage.sh fullEnv overrides: DESTINATION (simulator, default iPhone 17 Pro Max), RESULT (.xcresult path).
app (xcodebuild + xccov) | module (swift test + llvm-cov) | |
|---|---|---|
| Scope | whole app + extensions + all modules | one SPM module |
| Runs on | iOS Simulator (slow) | macOS host (fast - seconds) |
| Reads from | a .xcresult bundle | the test binary + default.profdata under .build |
| Use for | the canonical number, the app target | tight iteration on one module while writing its tests |
The app target itself (VivaDicta.app) can only be measured the app way - swift test cannot build an iOS app.
full is app + a clean rebuild + auto-fill. It deletes DerivedData first (a clean relink recovers most dropped per-target rows - see the wobble caveat below), runs the full plan, then for any module whose row still dropped or came back 0/0 it runs the module path and splices the number in. Result: a number for every module in one command. Filled rows are labeled module-floor (own-tests-only - a floor for app-exercised modules like TextProcessing). Use full when you want the complete, reliable per-module table; use app for a fast warm-build check.
module-path total differs slightly from its Xcode/xccov number (e.g. CloudTranscription reads ~2,231 lines via swift test vs ~3,073 in Xcode). Use module for relative per-file progress; trust app/xccov for the canonical total.0/0) - and which modules drop shifts run to run. The code is still tested. A clean build recovers most rows (~18/21 vs ~13/21 incremental) - that's what full does, filling any still-dropped row from the module path. For a deterministic single-module number, use the module path.VivaDicta.app target (~9%) - it is ~80% of the code, so module-level test work barely moves the global %. Judge progress by per-logic-module coverage and per-file ViewModel rows, not the headline.rm -rf Modules/<Module>/.build once before the module path (stale .swiftmodule import error).VivaDicta/VivaDictaTestPlan.xctestplan has no defaultOptions.codeCoverage pin (it was removed 2026-06-20), so Xcode gathers coverage for all targets - Firebase/Google/GUL/KeyboardKit/etc. (FirebaseCrashlytics alone is ~10k lines) are in the bundle. So the raw bundle % is meaningless (~25%). coverage.sh filters to first-party at report time (first_party_overall): the 16 production modules + VivaDicta app + the 4 extensions, with TestUtilities / *Mocks / *Tests excluded → first-party overall ~14%. This is why the script, not the test plan, owns the filtering - adding/removing a module no longer requires editing the test plan. If you ever call xccov by hand, filter to first-party yourself or you'll report the polluted number. The full terminal-coverage reference also lives in AGENTS.md under "Test Coverage".
© n0an, MIT. 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 .agents/skills/coverage-report of n0an/VivaDicta.
Open the folder on GitHubat commit b141304
Coverage Report 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 |
|---|---|---|---|---|---|---|
| Coverage Report this skilln0an/VivaDicta | 131 | — | ~1.2k | Automated safety check: Pass | MIT | |
| iOS Accessibility Testingconorluddy/xclaude-plugin | 183 | — | ~5k | Automated safety check: Pass | MIT | |
| Orca iOS Simulator Controlstablyai/orca | 87k | 1 repos | ~584 | Automated safety check: Pass | Apache-2.0 | |
| Testing iOS Codebitwarden/ios | 695 | — | ~1.8k | Automated safety check: Pass | GPL-3.0 | |
| iOS Audio E2Ehyochan/react-native-nitro-sound | 961 | — | ~907 | Automated safety check: Pass | MIT | |
| Limrun iOS Simulatorsuperset-sh/superset | 15k | — | ~5.2k | Automated safety check: Notes | Custom licence |
conorluddy/xclaude-plugin
Guides WCAG 2.1 and VoiceOver accessibility testing for iOS apps, working from the accessibility tree and not from screenshots.
stablyai/orca
iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…
bitwarden/ios
Write tests, add test coverage, unit test, or add missing tests for Bitwarden iOS.
hyochan/react-native-nitro-sound
Build and run device-backed iOS end-to-end checks for react-native-nitro-sound recording, playback, listeners, pause/resume, seek, speed, interruption, audio-session behavior, and rapid switching.
superset-sh/superset
Drives an app on a Limrun cloud iOS simulator from any OS: launch, tap, type, read the accessibility tree and logs, take screenshots, record video and reach local services.
EveryInc/compound-engineering-plugin
Builds an iOS app, exercises it on a simulator with XcodeBuildMCP and reports PASS, FAIL or PARTIAL with screenshots, logs and per-screen evidence.
n0an/VivaDicta
Writes, reviews, and improves SwiftData code using modern APIs and best practices.
n0an/VivaDicta
21 production-ready scripts for iOS app testing, building, and automation.
n0an/VivaDicta
Sync and validate App Store metadata and localizations with asc, including legacy metadata format migration.
n0an/VivaDicta
Pull current keyword rankings from Astro MCP, compare against the previous rankings check, and save a new rankings file to the vault.
n0an/VivaDicta
Count Swift lines of code across the VivaDicta codebase and refresh the production-vs-test history chart.
n0an/VivaDicta
Determine whether an app is ready to submit, then drive the App Store release flow with asc, including first-time submission fixes for availability, in-app purchases, subscriptions, Game Center, and…
Categories
Measure VivaDicta test code coverage from the terminal. An agent skill from n0an/VivaDicta. Coverage Report is an agent skill from n0an/VivaDicta. Measure VivaDicta test code coverage from the terminal.
Coverage Report fits situations like: asked what the test coverage is; the whole-app coverage %; which lines/files are covered; get coverage without opening Xcode.
Run `npx skills add n0an/VivaDicta --skill coverage-report -a claude-code`. Or copy the skill folder (.agents/skills/coverage-report in n0an/VivaDicta) into .claude/skills/coverage-report in your project. Claude Code loads it when a task matches its description.
Run `npx skills add n0an/VivaDicta --skill coverage-report -a codex`. Or copy the skill folder (.agents/skills/coverage-report in n0an/VivaDicta) into .agents/skills/coverage-report 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 n0an/VivaDicta --skill coverage-report -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/coverage-report, .gemini/skills/coverage-report, .github/skills/coverage-report and .opencode/skills/coverage-report in your project.
Going by SKILL.md and its folder, Coverage Report needs the command-line tools its instructions call (swift).
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.
Coverage Report 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.2k tokens (SKILL.md is roughly 4.8k 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 Coverage Report: iOS Accessibility Testing (conorluddy/xclaude-plugin, 183 stars), Orca iOS Simulator Control (stablyai/orca, 87k stars), Testing iOS Code (bitwarden/ios, 695 stars) and iOS Audio E2E (hyochan/react-native-nitro-sound, 961 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
n0an (a GitHub user) maintains it in n0an/VivaDicta, which has 131 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 5, 2026.
Source: n0an/VivaDicta on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.