Skip to content
Mobile
Skill

/axiom-health-check

Use when the user wants a comprehensive project-wide audit, full health check, or scan across all domains.

From plugin
axiom
1.3k71 skills44 agents18 commands1 MCP

Claude Code

$ npx -y skills add charleswiltgen/axiom --skill axiom-health-check --agent claude-code

SKILL.md

axiom-health-check.SKILL.md
name: axiom-health-check
description: Use when the user wants a comprehensive project-wide audit, full health check, or scan across all domains.
license: MIT

Health Check Meta-Audit Agent

Run specialized Axiom auditor procedures using the execution mode below, collect their findings, deduplicate by file:line, and produce a unified health report.

Codex does not provide the command launcher that constructs diff scope. If the user requests a diff audit, obtain a verified `DIFF SCOPE` block before auditing; do not fall back to a full audit because the block is missing. The caller must supply the base ref, merge-base SHA, and complete changed Swift-file list. Full audits require no scope block.

Files to Exclude

Skip: `*Tests.swift`, `*Previews.swift`, `*/Pods/*`, `*/Carthage/*`, `*/.build/*`, `*/DerivedData/*`, `*/scratch/*`, `*/docs/*`, `*/.claude/*`, `*/.claude-plugin/*`

Phase 0: Determine Audit Scope and User Intent

Before anything else, parse the launch prompt for three optional blocks emitted by the `axiom-health-check` command:

`DIFF SCOPE` block

DIFF SCOPE
Base ref: <base>
Merge-base: <full-SHA>
Changed Swift files (N):
<paths>

Determines the audit's file universe:

  • **Full audit (default).** No `DIFF SCOPE` block. Phase 1 globs the whole project; Phase 2 lets each auditor scan freely; Phase 4 reports "Scope: full project audit."
  • **Diff-scoped audit.** A `DIFF SCOPE` block is present. The provided file list is the universe — Phase 1 uses it directly (no Glob), Phase 2 forwards it to every auditor as a hard constraint, and Phase 4 declares the scope in the report header.

`EXCLUSIONS` line

`EXCLUSIONS: skip <auditor>, skip <auditor>` — drop the listed auditors from Phase 1's run list. Acknowledge them in the user-facing summary.

`USER EMPHASIS` line

`USER EMPHASIS: <freeform text>` — the user told you what they care about most (e.g., "focus on memory leaks", "worried about Core Data migrations", "prioritize accessibility").

Emphasis affects **ordering and highlighting, never inclusion or exclusion**:

  • It does NOT change which auditors run. Always-run auditors still run. Conditional auditors still trigger by signal. Exclusions still apply.
  • It DOES change Phase 4's executive summary — surface findings that match the emphasis first, even if their severity is lower than other findings.
  • It DOES affect the summary table's ordering — emphasized domains appear at the top.

If no `USER EMPHASIS` block is present, fall back to severity-only ordering.

Record the mode (full vs diff-scoped), scope metadata (base ref, merge-base SHA, file list, count), exclusions, and emphasis text. Subsequent phases reference this.

Phase 1: Detect Which Auditors to Run

Gather the Swift-file universe according to Phase 0 mode:

  • Full audit: Glob `**/*.swift`.
  • Diff-scoped audit: Use the file list from the `DIFF SCOPE` block. Do NOT Glob — the launcher already enumerated the relevant files.

Then use Grep over that file set to detect framework signals.

Always Run

These auditors apply to every iOS project:

| Auditor | Reason | |---------|--------| | memory-auditor | Memory leaks affect all apps | | security-privacy-scanner | Privacy compliance is mandatory | | accessibility-auditor | Accessibility is required for App Store | | swift-performance-analyzer | Performance affects all apps | | modernization-helper | Deprecated API detection | | codable-auditor | Serialization issues are universal |

Conditional (grep for signals)

Run these only when their framework signals are present in the codebase:

| Signal (grep pattern) | Auditor | |----------------------|---------| | `import SwiftUI` | swiftui-performance-analyzer, swiftui-architecture-auditor, swiftui-layout-auditor, swiftui-nav-auditor | | `import SwiftData` or `@Model` | swiftdata-auditor | | `import CoreData` or `.xcdatamodeld` exists | core-data-auditor | | `async` or `await` or `actor ` (with trailing space) | concurrency-auditor | | `Timer.scheduledTimer` or `CLLocationManager` | energy-auditor | | `AVCaptureSession` | camera-auditor | | `LanguageModelSession` or `@Generable` | foundation-models-auditor | | `import StoreKit` or `Product.products(for:` or `Transaction.updates` | iap-auditor | | `@AppIntent(.tool` or `@AppIntent([.tool` or `ToolIntent`, `@Dependency` in a file that also contains `AppIntent`, or a `.skillsbundle` exists | siri-ai-auditor | | `import SpriteKit` | spritekit-auditor | | `NWConnection` or `NetworkConnection` | networking-auditor | | `NSUbiquitousKeyValueStore` or `CKContainer` or `CloudKit` | icloud-auditor | | `registerMigration` or `DatabaseMigrator` or `ALTER TABLE` | database-schema-auditor | | `import GRDB` or `DatabaseQueue` or `DatabasePool` | grdb-performance-auditor | | `NSTextLayoutManager` or `TextKit` | textkit-auditor | | `UIScreen.main` or `UIApplicationDelegate`, or `UIRequiresFullScreen` present in an Info.plist | resize-auditor | | `override func mouseDown`, `nextEvent(matching:` or `- (void)mouseDown:` in a macOS target | touch-auditor | | `NavigationStack` or `sheet(` or `TabView` | ux-flow-auditor | | `FileManager` or `UserDefaults` or `.documentsDirectory` | storage-auditor | | `XCTestCase` or `@Test` or `@Suite` | testing-auditor | | `.glassEffect(` or `GlassEffectContainer` or `UIBlurEffect` or `UIVisualEffectView` or `NSVisualEffectView`, or `UIDesignRequiresCompatibility` present in an Info.plist | liquid-glass-auditor | | Screenshots folder exists (`Screenshots/` or `marketing/`) | screenshot-validator |

User Exclusions

If the user says "skip X" or "exclude X", remove that auditor from the run list. Acknowledge which auditors were excluded and why.

Phase 2: Run Selected Auditor Procedures

Read each selected auditor's matching local Codex skill below using an available file reader. If using Axiom MCP instead, call `axiom_get_agent` with the canonical auditor name (the left column below), not `axiom_read_skill` with a gener

Read more
@charleswiltgen
Ships withaxiom

Battle-tested skills, agents, and tools for modern Apple OS development — Swift 6, SwiftUI, Liquid Glass, Apple Intelligence, and more. Supports Claude Code, Codex, and all other popular coding harnesses and AI-savvy IDEs.

1.3k71 skills44 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.3k
Star history of charleswiltgen/axiom on GitHub, a chart by star-history.com

Other skills on axiom.

axiom-accessibility

axiom-accessibility

Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance,…

axiom-ai

axiom-ai

Use when implementing, testing, or evaluating ANY Apple Intelligence, on-device AI, or speech-to-text feature. Covers Foundation…

axiom-analyze-crash

axiom-analyze-crash

Use when the user has a crash log (.ips, MetricKit JSON, legacy .crash text, .xccrashpoint bundle, or pasted text) that needs…

More skills from other plugins.

deep-code-review

deep-code-review

In-depth design-focused code review - understands codebase context before evaluating PR changes, posts structured feedback to…

expo5d53k
@expo@expoInstall Skill
modlens

modlens

Plug-in vision for text-only models. Hard rule: when a file path or URL with an image extension (.png, .jpg, .jpeg, .webp, .gif,…

modlens3w4.6k
@liustack@liustackInstall Skill
appllama-app-design-skill

appllama-app-design-sk…

Build native-feeling, benchmark-quality mobile app screens (Expo / React Native). Use when designing or implementing any mobile…

appllama2mo3.9k
@appllama@appllamaInstall Skill

Questions about axiom-health-check.

Which coding agents can use axiom-health-check?
axiom-health-check installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.