К основному содержанию
скилл CX Codex

axiom-testing — скилл для Claude Code: тесты на Swift Testing и XCTest

Скилл для написания и отладки тестов в Swift: подсказывает, когда брать Swift Testing, а когда XCTest, и разбирает причины падающих тестов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add CharlesWiltgen/Axiom --skill axiom-testing -a claude-code
Открыть на GitHub

Что делает axiom-testing

axiom-testing — это роутер по тестированию в Swift. Он не даёт один готовый ответ, а разводит задачу по узким справочникам: юнит-тесты и макросы @Test/#expect — в skills/swift-testing.md, асинхронный код и confirmation — в skills/testing-async.md, UI-тесты и борьба с флейки — в skills/ui-testing.md, запросы XCUIElement и тест-планы — в skills/xctest-automation.md. Отдельная ветка — запись UI-автоматизации в Xcode 26 (skills/ui-recording.md).

Внутри есть таблица «Swift Testing против XCTest»: юнит-тесты и параметризованные тесты идут в Swift Testing, UI-тесты и замеры производительности через XCTMetric — в XCTest, тесты App Intents через систему требуют UI Testing Bundle с XCTest. Ещё скилл описывает быструю архитектуру тестов без симулятора, withMainSerialExecutor и TestClock для надёжного async, .timeLimit и .serialized.

В сборке для Codex аудиторы вызываются как скиллы: axiom-analyze-test-failures и axiom-audit-testing. Тем, что запускает сборки, тесты и симуляторы, нужен доступ к шеллу — без него эти шаги не отработают. На Claude встроенные инструменты лежат в <plugin-root>/tools/<tool>, если command -v <tool> ничего не находит.

Какие задачи решает

  • выбрать между Swift Testing и XCTest для конкретного теста
  • убрать флейки и гонки в асинхронных тестах
  • заменить sleep() на ожидание по условию в UI-тестах
  • ускорить прогон тестов, вынеся логику в пакет без симулятора
  • перевести существующие тесты с XCTest на Swift Testing

Примеры запросов агенту

  • напиши юнит-тесты на Swift Testing для этой модели
  • этот UI-тест падает через раз — разберись, почему он флейки
  • переведи эти XCTest-тесты на Swift Testing

Как установить axiom-testing

1Через Skills CLI (Vercel)

npx skills add CharlesWiltgen/Axiom --skill axiom-testing -a claude-code

2Вручную: положить файлы

~/.claude/skills/axiom-testing/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/axiom-testing/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о axiom-testing

Как установить axiom-testing в Claude?

Выполните npx skills add CharlesWiltgen/Axiom --skill axiom-testing -a claude-code. После этого скилл окажется в ~/.claude/skills/axiom-testing/SKILL.md.

Что делает axiom-testing?

Разводит задачи по тестированию в Swift по отдельным справочникам: юнит-тесты, async, UI-тесты, автоматизация XCUITest, запись UI в Xcode 26. Помогает выбрать между Swift Testing и XCTest и объясняет, как чинить флейки.

Можно ли использовать axiom-testing в Codex?

Да. Установка: npx skills add CharlesWiltgen/Axiom --skill axiom-testing -a codex, файл появится в .agents/skills/axiom-testing/SKILL.md. Аудиторы там вызываются как скиллы: axiom-analyze-test-failures и axiom-audit-testing.

Исходный текст

SKILL.md · MIT
---
name: axiom-testing
description: Use when writing ANY test, debugging flaky tests, making tests faster, or choosing Swift Testing vs XCTest. Covers unit tests, UI tests, async testing, test architecture.
license: MIT
---

# Testing

**You MUST use this skill for ANY testing-related question, including writing tests, debugging test failures, making tests faster, or choosing between testing approaches.**

**Bundled tools on Claude Code:** if `command -v <tool>` finds nothing (hooks off or `--bare`), use `<plugin-root>/tools/<tool>` in place of the bare name; `<plugin-root>` is two levels above this skill's `Base directory for this skill:` path.

<!-- AXIOM_AUDITOR_INLINE_BEGIN — rewritten for Codex by scripts/build-codex.ts; do not hand-edit -->
> **Auditors are skills here.** Where this router says "Launch `some-auditor` agent", invoke the
> matching Codex skill instead — same procedure, no Claude Code agent required.
>
> Available: `axiom-analyze-test-failures`, `axiom-audit-testing`.
>
> The ones that shell out — builds, tests, simulators, crash symbolication — need shell access to run.
<!-- AXIOM_AUDITOR_INLINE_END -->

## Quick Reference

| Symptom / Task | Reference |
|----------------|-----------|
| Writing unit tests, Swift Testing (@Test, #expect) | See `skills/swift-testing.md` |
| Making tests run without simulator | See `skills/swift-testing.md` |
| Parameterized tests, tags, traits | See `skills/swift-testing.md` |
| Migrating from XCTest to Swift Testing | See `skills/swift-testing.md` |
| Warning-severity issues / cancelling a test — `Issue.record(severity:)`, `Test.cancel` (`OS27`) | See `skills/swift-testing.md` |
| Testing async/await functions | See `skills/testing-async.md` |
| confirmation for callbacks | See `skills/testing-async.md` |
| @MainActor tests, parallel execution | See `skills/testing-async.md` |
| Writing UI tests, XCUITest | See `skills/ui-testing.md` |
| Driving VoiceOver from a UI test, asserting spoken output (`OS27`) | See `skills/ui-testing.md` Pattern 7 |
| Testing App Intents through the system, AppIntentsTesting (`OS27`) | See `skills/ui-testing.md` Pattern 8, then axiom-integration (`skills/app-intents-ref.md`) |
| Condition-based waiting patterns | See `skills/ui-testing.md` |
| Recording UI Automation (Xcode 26) | See `skills/ui-testing.md` |
| Network conditioning, multi-factor testing | See `skills/ui-testing.md` |
| Testing resizable apps: dimension matrix, RTL/pseudoloc launch args, live-resize passes | See `skills/ui-testing.md` |
| Test Face ID/Touch ID, orientation, or simulator state from CI — devicectl | See `skills/ui-testing.md` |
| XCUIElement queries, waiting strategies | See `skills/xctest-automation.md` |
| Accessibility identifiers, test plans | See `skills/xctest-automation.md` |
| CI/CD test execution | See `skills/xctest-automation.md` |
| Record/Replay/Review workflow (Xcode 26) | See `skills/ui-recording.md` |
| Test plan multi-configuration replay | See `skills/ui-recording.md` |
| Enhancing recorded tests for stability | See `skills/ui-recording.md` |
| Testing a generative AI feature — output isn't deterministic, so `#expect(result == expected)` doesn't hold (`OS27`) | See axiom-ai (`skills/foundation-models-evaluations.md`) for the discipline, then axiom-ai (`skills/foundation-models-evaluations-ref.md`) for the API |

## Decision Tree

```dot
digraph testing {
    start [label="Testing task" shape=ellipse];
    what [label="What kind of test?" shape=diamond];

    start -> what;
    what -> "skills/swift-testing.md" [label="unit tests,\nSwift Testing,\nfast tests"];
    what -> "skills/testing-async.md" [label="testing async code,\ncallbacks,\nconfirmation"];
    what -> "skills/ui-testing.md" [label="UI tests,\nflaky tests,\nrecording"];
    what -> "skills/xctest-automation.md" [label="XCUITest patterns,\nelement queries"];
    what -> "skills/ui-recording.md" [label="Xcode 26\nRecord/Replay/Review"];
    what -> "axiom-ai (skills/foundation-models-evaluations.md)" [label="generative AI feature\n(nondeterministic output)"];
}
```

1. Writing unit tests / Swift Testing? → `skills/swift-testing.md`
2. Testing async/await code? → `skills/testing-async.md`
3. Writing UI tests / XCUITest / flaky tests? → `skills/ui-testing.md`
4. XCUIElement queries, waiting, test plans, CI? → `skills/xctest-automation.md`
5. Record UI interactions (Xcode 26)? → `skills/ui-recording.md`
6. Flaky tests / race conditions (Swift Testing)? → test-failure-analyzer (Agent)
7. Tests crash / environment wrong? → See axiom-build (skills/xcode-debugging.md)
8. Run tests from CLI / parse results? → test-runner (Agent)
9. Fix failing tests automatically? → test-debugger (Agent)
10. Want test quality audit? → testing-auditor (Agent) or `axiom-audit-testing`
11. Automate without XCUITest / AXe CLI? → simulator-tester (Agent) + See axiom-xcode-mcp (skills/axe-ref.md)
12. Testing a Foundation Models / generative feature? → See axiom-ai (`skills/foundation-models-evaluations.md`) for the discipline (dataset design, guardrails vs optimization target, judge calibration), then axiom-ai (`skills/foundation-models-evaluations-ref.md`) for the API. The Evaluations framework (`OS27`) runs *inside* Swift Testing via the `.evaluates` trait — it doesn't replace it. A model isn't a pure function, so you score outputs against a dataset and gate on an aggregate metric instead of asserting on one exact string.

## Swift Testing vs XCTest Quick Guide

| Need | Use |
|------|-----|
| Unit tests (logic, models) | Swift Testing |
| UI tests (tap, swipe, assert screens) | XCUITest (XCTest) |
| App Intents run through the system (AppIntentsTesting) | UI Testing Bundle with XCTest. Swift Testing works there only with an undocumented build-setting override |
| Tests without simulator | Package/Framework (either framework) |
| Parameterized tests | Swift Testing |
| Performance measurements | XCTest (XCTMetric) |
| Objective-C tests | XCTest |

## Critical Patterns

**Swift Testing** (`skills/swift-testing.md`):
- @Test/@Suite macros, #expect/#require assertions
- Parameterized testing for eliminating repetitive tests
- Fast tests architecture: Package extraction, Host Application: None
- Reliable async testing with withMainSerialExecutor and TestClock
- Migration guide from XCTest (comparison table)
- XCTestCase + Swift 6.2 MainActor compatibility fix

**Async Testing** (`skills/testing-async.md`):
- confirmation for single/multiple callbacks
- expectedCount: 0 to verify something never happens
- @MainActor test isolation
- Timeout control with .timeLimit
- Parallel execution gotchas and .serialized

**UI Testing** (`skills/ui-testing.md`):
- Condition-based waiting (replaces sleep())
- Recording UI Automation (Xcode 26)
- Network conditioning for 3G/LTE testing
- Multi-factor testing (device size + network speed)
- Crash debugging from UI test failures

**XCUITest Automation** (`skills/xctest-automation.md`):
- Element identification with accessibilityIdentifier
- Waiting strategies (appear, disappear, hittable)
- Test plans for multi-configuration testing
- CI/CD integration with parallel execution

**UI Recording** (`skills/ui-recording.md`):
- Xcode 26 Record/Replay/Review workflow
- Enhancing recorded code for stability
- Query selection guidelines
- Test plan configuration for multi-language replay

## Automated Scanning

**Test quality audit** → `axiom-audit-testing` (maps test coverage shape against production code, detects flaky patterns and speed issues, identifies untested critical paths, scores overall test health)

**Flaky test analysis** → `axiom-analyze-test-failures` (scans for patterns causing intermittent failures in Swift Testing: missing confirmation, shared mutable state, missing @MainActor)

## Anti-Rationalization

| Thought | Reality |
|---------|---------|
| "Simple test question, I don't need the skill" | Proper patterns prevent test debt. `skills/swift-testing.md` has copy-paste solutions. |
| "I know XCTest well enough" | Swift Testing is significantly better for unit tests. Migration guide included. |
| "Tests are slow but it's fine" | Fast tests enable TDD. `skills/swift-testing.md` shows how to run without simulator. |
| "I'll fix the flaky test with a sleep()" | sleep() makes tests slower AND flakier. `skills/ui-testing.md` has condition-based waiting. |
| "I'll add tests later" | Tests written after implementation miss edge cases. |
| "I'll test the AI feature by asserting the model returns the right string" | A model isn't a pure function — that test fails on a synonym and passes on a fluent lie. Score a dataset and gate on an aggregate metric: axiom-ai (`skills/foundation-models-evaluations.md`). |
| "The AI output looked good when I tried it, so it's tested" | Trying a few prompts by hand measures nothing and catches no regression. That's the exact gap the Evaluations framework exists to close. |

## Example Invocations

User: "How do I write a unit test in Swift?"
→ Read: `skills/swift-testing.md`

User: "My UI tests are flaky in CI"
→ Check codebase: XCUIApplication/XCUIElement? → `skills/ui-testing.md`
→ Check codebase: @Test/#expect? → test-failure-analyzer (Agent)

User: "How do I test async code without flakiness?"
→ Read: `skills/testing-async.md`

User: "What's the Swift Testing equivalent of XCTestExpectation?"
→ Read: `skills/testing-async.md`

User: "I want my tests to run faster"
→ Read: `skills/swift-testing.md` (Strategy 1: Package extraction)

User: "Should I use Swift Testing or XCTest?"
→ Read: `skills/swift-testing.md` (Migration section) + this decision tree

User: "How do I record UI automation in Xcode 26?"
→ Read: `skills/ui-recording.md`

User: "Run my tests and show me what failed"
→ Invoke: test-runner (Agent)

User: "Audit my tests for quality issues"
→ Invoke: testing-auditor (Agent)

© CharlesWiltgen · MIT · CharlesWiltgen/Axiom

Похожие скиллы

Всё по теме «Тесты и QA» →
guide-swift-testing Prisma-Labs-Dev Скилл задаёт паттерны работы с фреймворком Swift Testing. Помогает писать и проверять тесты без ошибок в конкурентном коде. CX Codex +1 427установок test-modernizer superagents-lab Переводит тесты с XCTest на Swift Testing и обновляет старые проверки. Пригодится при рефакторинге тестовых наборов в проектах на Swift. CX Codex +1 696установок swift-testing-pro Paul Hudson Пишет, проверяет и улучшает тесты Swift Testing. Пригодится для ревью тестов, миграции с XCTest и работы с асинхронным кодом. CX Codex +1 10 100установок mobile-app-testing aj-geddes Задаёт правила тестирования приложений для iOS и Android. Помогает писать юнит-, UI- и интеграционные тесты с Jest, Detox, Espresso и XCTest. CX Codex +1 823установок testing rshankras Набор TDD-воркфлоу и тестовой инфраструктуры для приложений на платформах Apple. Пригодится, когда ИИ пишет код, а вам нужны тесты до и после. CX Codex +1 468установок device-interaction superagents-lab Проверяет работу iOS-приложений на устройстве или в симуляторе через снимки экрана, дерево UI и синтез жестов. Запускается субагентом после правок интерфейса. CX Codex +1 740установок

Из того же набора27

axiom-shipping Скилл для публикации iOS-приложений: чек-листы перед отправкой, разбор отказов App Review, метаданные, privacy manifest и триаж крашей. CX Codex +1 1 400установок axiom-concurrency Скилл для работы с конкурентностью в приложениях на платформах Apple: акторы, @MainActor, Sendable, гонки данных. CX Codex +1 1 300установок axiom-integration Маршрутизирует интеграции с системными службами Apple — от Siri, виджетов и StoreKit до фоновых задач и пушей. Помогает подключить нативные функции платформы к коду проекта. CX Codex +1 1 300установок axiom-data Скилл-роутер по хранению данных в Apple-приложениях: SwiftData, Core Data, GRDB, SQLiteData, CloudKit, миграции и Codable. CX Codex +1 1 300установок axiom-build Маршрутизирует сбои сборки iOS и macOS, зависания симулятора и ошибки Xcode до разбора кода приложения. CX Codex +1 1 300установок axiom-macos Скилл для macOS-разработки: окна, меню, песочница, распространение, мосты в AppKit и различия SwiftUI на Mac. CX Codex +1 1 300установок axiom-media Скилл-роутер по медиа в Apple-платформах: камера, фото, звук, хаптики, ShazamKit, CarPlay. Подсказывает, какой справочник открыть под конкретную задачу. CX Codex +1 1 300установок axiom-performance Маршрутизирует поиск утечек памяти, зависаний интерфейса и расхода батареи в приложениях под Apple-платформы. Помогает настроить анализ через Instruments и xctrace. CX Codex +1 1 300установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой