Token导航 LogoToken导航

Agent Skill · 研究检索

swift-testing(Swift 测试)

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

swift-testing 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证为 MIT,第三方扫描已通过,按安装量在研究检索类的 73,674 个 Skill 里排第 69,971。

总安装 214周安装 9GitHub Stars 1下载 75核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:swift-testing(Swift 测试)
来源仓库:https://github.com/shafran123/skills
仓库路径:skills/swift-testing
安装命令:
npx skills add https://github.com/shafran123/skills --skill swift-testing
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/shafran123/skills --skill swift-testing

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

安装方式:github,安装命令:npx skills add https://github.com/shafran123/skills --skill swift-testing。

来源仓库:https://github.com/shafran123/skills/tree/main/skills/swift-testing。适用宿主:Codex、Claude、Cursor、Gemini CLI。

来源仓库内路径:skills/swift-testing

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/shafran123/skills --skill swift-testing;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

swift-testing 怎么安装?

在终端执行 npx skills add https://github.com/shafran123/skills --skill swift-testing。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

swift-testing 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

swift-testing 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

swift-testing 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

swift-testing 用的人多吗?

公开数据是累计安装 214 次,近一周安装 9 次,下载 75 次,GitHub 1 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

swift-testing 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
swift-testing

Swift 测试 · 本页

2141需要联网MIT通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Swift Testing (XCUITest)

This skill teaches the agent how to turn plain-English iOS UI scenarios into production-grade XCUITest code that is stable, readable, scalable, and CI-friendly.

When to use this skill

Use this skill when the user asks for any of the following:

  • Write or refactor XCUITest UI tests in Swift
  • Convert a scenario / user story into XCUITest
  • Stabilize flaky UI tests (waits, scrolling, selectors, alerts)
  • Create screen/page objects for XCUITest suites

Do not use this skill for:

  • Unit tests, integration tests, snapshot tests
  • Appium/Detox/Espresso (non-XCUITest)
  • Performance tests or Xcode Instruments workflows

Inputs to ask for (only if missing)

Ask ONLY for what’s needed to generate correct tests; do not over-question.

  1. Scenario
  • Steps the user wants to automate
  • Expected outcomes / assertions
  1. Selector availability
  • Do accessibility identifiers exist already?
  • If not, generate the list of identifiers needed
  1. App launch & environment
  • Is login required? Are there feature flags?
  • Should tests start from a deep link or home screen?
  • Any special environment setup (staging, mock server)?
  1. System dialogs
  • Are permission prompts expected (notifications, location, camera, etc.)?

If the user cannot provide identifiers, proceed anyway:

  • Generate test code using *assumed* identifiers (clearly labeled)
  • Output the “Identifiers to add” list as part of the deliverable

Output contract (STRICT)

When you generate a test, you MUST always output:

A) Test plan

  • numbered steps
  • assertions after critical steps

B) Swift XCUITest code

  • clean, compiling, copy/paste ready

C) Screen Objects

  • created or updated (with selectors centralized)

D) Accessibility identifiers required

  • exact strings and where they’re used

E) Stability notes

  • waits, scroll strategy, alert handling, anchors

F) App-side implementation code (REQUIRED)

  • Swift code to add accessibility identifiers to the app
  • Must be copy/paste ready for the ViewController
  • Include viewDidLoad() setup method
  • Include helper extensions if needed (e.g., UIView.allSubviews())

App-Side Implementation (CRITICAL)

Tests WILL FAIL if accessibility identifiers are not implemented in the app. Always generate:

1. ViewController Setup Code

override func viewDidLoad() {
    super.viewDidLoad()
    setupAccessibilityIdentifiers()
}

private func setupAccessibilityIdentifiers() {
    myLabel.accessibilityIdentifier = "screen.label"
    myButton.accessibilityIdentifier = "screen.button"
}

2. For elements without IBOutlets

private func findAndSetAccessibilityIdentifiers() {
    for subview in view.allSubviews() {
        guard let button = subview as? UIButton,
              let title = button.configuration?.title ?? button.title(for: .normal) else {
            continue
        }
        switch title {
        case "Submit":
            button.accessibilityIdentifier = "screen.button.submit"
        default:
            break
        }
    }
}

3. Required UIView Extension

extension UIView {
    func allSubviews() -> [UIView] {
        var result = subviews
        for subview in subviews {
            result.append(contentsOf: subview.allSubviews())
        }
        return result
    }
}

Pre-Flight Verification (REQUIRED)

Before tests can run successfully, verify:

StepActionValidation
1Implement accessibility identifiers in app codeCode compiles
2Build the app target⌘+B succeeds
3Run app in simulator manuallyElements visible
4Run UI tests⌘+U succeeds

Common Failure: "Element not found"

Cause: Accessibility identifiers not set in app code

Fix:

  1. Add setupAccessibilityIdentifiers() to viewDidLoad()
  2. Rebuild app (⌘+B)
  3. Re-run tests (⌘+U)

Non-negotiable engineering rules

Selector rules

  1. Prefer accessibilityIdentifier selectors:

- app.buttons["id"] - app.textFields["id"] - app.staticTexts["id"]

  1. Avoid queries by localized labels, titles, or dynamic text.
  2. Avoid XPath-like approaches (not applicable here) and brittle hierarchy traversal.
  3. If identifiers are missing, output the required list and proceed with assumed IDs.

Waiting/synchronization rules

  • Never use sleep().
  • Use explicit waits:

- waitForExistence - XCTNSPredicateExpectation for exists / hittable

  • Wait on navigation anchors (a stable element that proves the screen is loaded).

Assertions

  • Assert after each meaningful navigation:

- screen loaded anchor visible - error state visible - success state visible

  • Prefer XCTAssertTrue(anchor.exists) only after waitForVisible.

Scrolling

  • Use bounded scrolling with max swipes.
  • If not found after max swipes, fail with diagnostics.

Failure diagnostics (always)

  • Screenshot on failure (keepAlways)
  • Include meaningful failure messages (“Expected Home title to appear…”)

Project conventions the agent must follow

Naming

  • Test classes: FeatureFlowTests (e.g., LoginFlowTests)
  • Test methods: test_<action>_<expectedOutcome>()
  • Screen objects: LoginScreen, HomeScreen, SettingsScreen
  • Identifier style: screen.element (e.g., login.email, home.title)

Structure (recommended)

  • UITests/BaseUITestCase.swift
  • UITests/Helpers/*.swift
  • UITests/Screens/*.swift
  • UITests/Tests/*.swift

Required helper set

When writing any test suite, prefer reusing the helper patterns in templates/:

  • templates/BaseUITestCase.swift
  • templates/XCUIElement+Waits.swift
  • templates/XCUIApplication+Scroll.swift
  • templates/SystemAlerts.swift

What to generate (decision rules)

If user gives a scenario only

Generate:

  • screen objects required for that scenario
  • the test case using those screen objects
  • identifier list to add
  • app-side implementation code for identifiers

If user provides existing test code

Refactor into:

  • screen objects
  • helpers
  • explicit waits
  • stable selectors …and return the improved code.

If user asks to “make tests easier”

Introduce:

  • screen objects
  • small helper APIs (tapWhenHittable, typeAndDismissKeyboard, etc.) but keep it simple and conventional (no heavy DSL unless asked).

References in this skill folder

  • references/authoring-contract.md — how to interpret user input and output format
  • references/locator-strategy.md — detailed selector rules, tables, cells, dynamic content
  • references/flake-playbook.md — flake patterns and fixes
  • references/examples.md — complete end-to-end examples

Minimal example (pattern)

User scenario:

“Open app, login, verify home title.”

Agent output:

  1. Test plan steps + assertions
  2. LoginScreen, HomeScreen
  3. LoginFlowTests
  4. identifier list: login.email, login.password, login.submit, home.title

Enforcement checklist (before final answer)

  • No sleep()
  • Accessibility IDs first
  • Anchors used for screen load
  • Assertions after critical steps
  • Scrolling bounded
  • Failure diagnostics included
  • Output includes A–E sections (contract)
  • App-side identifier implementation code included
  • Pre-flight verification steps communicated to user

Dependency Verification

Before marking test generation complete:

CheckRequiredHow to Verify
Test files created✅Files exist in UITests folder
Screen objects created✅Files exist in Screens folder
App-side identifiers implemented✅ViewController updated
App builds successfully✅⌘+B passes

Failure Prevention

Root Cause of Most Failures: Gap between "identifiers listed" and "identifiers implemented"

Prevention:

  1. Always generate app-side implementation code (Section F)
  2. Always update the ViewController file directly
  3. Always verify app builds before claiming tests are ready

平台分布

Claude Code

27.5%
按下载量换算21

OpenCode

24.35%
按下载量换算18

Antigravity

19.89%
按下载量换算15

Gemini CLI

12.21%
按下载量换算9

Cursor

8.37%
按下载量换算6

windsurf

3.37%
按下载量换算3

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

继续浏览同类 Skills