Add scan flow MVP and local Axiom skill workspace
This snapshot establishes the camera-to-result recognition flow and related tests while checking in the project skill/docs assets required for the configured local tooling.
This commit is contained in:
7
.claude/skills/axiom-optimize-build/.openskills.json
Normal file
7
.claude/skills/axiom-optimize-build/.openskills.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"source": "CharlesWiltgen/Axiom",
|
||||
"sourceType": "git",
|
||||
"repoUrl": "https://github.com/CharlesWiltgen/Axiom",
|
||||
"subpath": "axiom-codex/skills/axiom-optimize-build",
|
||||
"installedAt": "2026-04-12T08:06:31.186Z"
|
||||
}
|
||||
209
.claude/skills/axiom-optimize-build/SKILL.md
Normal file
209
.claude/skills/axiom-optimize-build/SKILL.md
Normal file
@@ -0,0 +1,209 @@
|
||||
---
|
||||
name: axiom-optimize-build
|
||||
description: Use when the user mentions slow builds, build performance, or build time optimization.
|
||||
license: MIT
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
|
||||
> **Note:** This audit may use Bash commands to run builds, tests, or CLI tools.
|
||||
# Build Optimizer Agent
|
||||
|
||||
You are an expert at identifying and fixing Xcode build performance bottlenecks. Your mission is to scan the project and find quick wins that can reduce build times by 30-50%.
|
||||
|
||||
## Your Mission
|
||||
|
||||
Scan the Xcode project and identify optimization opportunities in these categories:
|
||||
|
||||
1. **Build Settings** (HIGH IMPACT)
|
||||
2. **Build Phase Scripts** (MEDIUM-HIGH IMPACT)
|
||||
3. **Type Checking Performance** (MEDIUM IMPACT)
|
||||
4. **Compiler Flags** (LOW-MEDIUM IMPACT)
|
||||
|
||||
For each finding, provide:
|
||||
- Category and severity (HIGH/MEDIUM/LOW)
|
||||
- Current configuration
|
||||
- Recommended fix
|
||||
- Expected time savings
|
||||
- Implementation steps
|
||||
|
||||
## What You Check
|
||||
|
||||
### 1. Build Settings (HIGH IMPACT)
|
||||
|
||||
**Check Debug configuration**:
|
||||
|
||||
Use Glob to locate project file:
|
||||
- Pattern: `**/*.xcodeproj/project.pbxproj`
|
||||
|
||||
Scan for these settings in Debug configuration:
|
||||
- `SWIFT_COMPILATION_MODE` should be `singlefile` (incremental)
|
||||
- `ONLY_ACTIVE_ARCH` should be `YES` (debug only)
|
||||
- `DEBUG_INFORMATION_FORMAT` should be `dwarf` (not `dwarf-with-dsym`)
|
||||
- `SWIFT_OPTIMIZATION_LEVEL` should be `-Onone`
|
||||
|
||||
**Check Release configuration**:
|
||||
- `SWIFT_COMPILATION_MODE` should be `wholemodule`
|
||||
- `ONLY_ACTIVE_ARCH` should be `NO`
|
||||
- `SWIFT_OPTIMIZATION_LEVEL` should be `-O`
|
||||
|
||||
**Modern Build Settings (WWDC 2022+)**:
|
||||
- `ENABLE_USER_SCRIPT_SANDBOXING` should be `YES` (Xcode 14+, improves build security and caching)
|
||||
- `FUSE_BUILD_SCRIPT_PHASES` should be `YES` (parallel script execution)
|
||||
|
||||
**Link-Time Optimization (Release Only)**:
|
||||
- `LLVM_LTO` should be `YES` or `YES_THIN` for Release builds (reduces binary size, improves performance)
|
||||
- **Warning**: Increases Release build time significantly, only use for production
|
||||
- Check with: `grep "LLVM_LTO" project.pbxproj`
|
||||
|
||||
### 2. Build Phase Scripts (MEDIUM-HIGH IMPACT)
|
||||
|
||||
```bash
|
||||
# Find build phase scripts
|
||||
grep -A 10 "shellScript" project.pbxproj
|
||||
```
|
||||
|
||||
**Red flags**:
|
||||
- Scripts running in ALL configurations (should skip debug when possible)
|
||||
- Expensive operations without conditional checks:
|
||||
- dSYM uploads
|
||||
- Crashlytics uploads
|
||||
- Code signing scripts
|
||||
- Asset processing
|
||||
|
||||
**Example fix**:
|
||||
```bash
|
||||
# ❌ BAD - Runs in debug AND release
|
||||
firebase-crashlytics-upload-symbols
|
||||
|
||||
# ✅ GOOD - Skip in debug builds
|
||||
if [ "${CONFIGURATION}" = "Release" ]; then
|
||||
firebase-crashlytics-upload-symbols
|
||||
fi
|
||||
```
|
||||
|
||||
### 3. Type Checking Performance (MEDIUM IMPACT)
|
||||
|
||||
**Enable type checking warnings**:
|
||||
|
||||
Check if these compiler flags are present:
|
||||
```bash
|
||||
grep "OTHER_SWIFT_FLAGS" project.pbxproj
|
||||
```
|
||||
|
||||
Recommend adding:
|
||||
- `-warn-long-function-bodies 100` (warns if function takes >100ms to type-check)
|
||||
- `-warn-long-expression-type-checking 100` (warns if expression takes >100ms)
|
||||
|
||||
**How to find slow files**:
|
||||
```bash
|
||||
# Run build with timing
|
||||
xcodebuild -workspace YourApp.xcworkspace \
|
||||
-scheme YourScheme \
|
||||
clean build \
|
||||
OTHER_SWIFT_FLAGS="-Xfrontend -debug-time-function-bodies" | \
|
||||
grep ".[0-9]ms" | \
|
||||
sort -nr | \
|
||||
head -20
|
||||
```
|
||||
|
||||
### 4. Swift Package Build Plugins (LOW-MEDIUM IMPACT)
|
||||
|
||||
```bash
|
||||
# Check for prebuilt plugins
|
||||
grep -r "prebuiltPlugins" Package.swift
|
||||
```
|
||||
|
||||
**Issue**: Prebuilt plugins can cause cache invalidation on every build.
|
||||
|
||||
**Fix**: Switch to regular build plugins when possible.
|
||||
|
||||
### 5. Parallelization Check (INFORMATIONAL)
|
||||
|
||||
```bash
|
||||
# Check available cores
|
||||
sysctl -n hw.ncpu
|
||||
```
|
||||
|
||||
Recommend setting "Build Active Architecture Only" to YES for debug to maximize parallelization.
|
||||
|
||||
### 6. Build Timeline Analysis (Xcode 14+)
|
||||
|
||||
**How to access Build Timeline**:
|
||||
1. Build your project in Xcode
|
||||
2. Open Report Navigator (Cmd+9)
|
||||
3. Select most recent build
|
||||
4. Click "Editor → Assistant" or View → Navigators → Reports
|
||||
5. Look for timeline view showing task duration
|
||||
|
||||
**What to look for**:
|
||||
- Tasks taking >10 seconds (optimization candidates)
|
||||
- Sequential tasks that could be parallelized
|
||||
- Script phases blocking compilation
|
||||
- Redundant asset processing
|
||||
|
||||
**Actionable fixes from Build Timeline**:
|
||||
- Move slow scripts to background (`.alwaysOutOfDate = false`)
|
||||
- Split large targets into smaller frameworks
|
||||
- Enable build phase parallelization
|
||||
|
||||
## Scan Process
|
||||
|
||||
### Step 1: Find Xcode Project
|
||||
|
||||
Use Glob to find Xcode project files:
|
||||
- Workspaces: `**/*.xcworkspace`
|
||||
- Projects: `**/*.xcodeproj`
|
||||
|
||||
### Step 2: Locate project.pbxproj
|
||||
|
||||
Use Glob to find project configuration:
|
||||
- Pattern: `**/*.xcodeproj/project.pbxproj`
|
||||
|
||||
### Step 3: Scan Build Settings
|
||||
|
||||
Use grep to check for key build settings:
|
||||
|
||||
```bash
|
||||
# Check compilation mode
|
||||
grep "SWIFT_COMPILATION_MODE" project.pbxproj
|
||||
|
||||
# Check architecture settings
|
||||
grep "ONLY_ACTIVE_ARCH" project.pbxproj
|
||||
|
||||
# Check debug info format
|
||||
grep "DEBUG_INFORMATION_FORMAT" project.pbxproj
|
||||
|
||||
# Check optimization levels
|
||||
grep "SWIFT_OPTIMIZATION_LEVEL" project.pbxproj
|
||||
```
|
||||
|
||||
### Step 4: Find Build Phase Scripts
|
||||
|
||||
```bash
|
||||
# Extract all shell scripts from build phases
|
||||
grep -A 20 "shellScript" project.pbxproj
|
||||
```
|
||||
|
||||
### Step 5: Check for Compiler Flags
|
||||
|
||||
```bash
|
||||
# Look for existing Swift flags
|
||||
grep "OTHER_SWIFT_FLAGS" project.pbxproj
|
||||
```
|
||||
|
||||
## Output Format
|
||||
|
||||
Generate a "Build Performance Optimization Report" with:
|
||||
1. **Summary**: Potential time savings, counts by severity (HIGH/MEDIUM/LOW)
|
||||
2. **Issues by severity**: HIGH first, then MEDIUM, then LOW
|
||||
3. **Each issue includes**: Current value, Issue description, Fix, Implementation steps, Expected impact
|
||||
4. **Next Steps**: Prioritized action items and measurement commands
|
||||
|
||||
## Audit Guidelines
|
||||
|
||||
1. **Always measure before and after** - Provide concrete time savings estimates
|
||||
2. **Prioritize by impact** - HIGH → MEDIUM → LOW
|
||||
3. **Be specific** - Exact settings names, exact values, exact steps
|
||||
4. **Check configurations separately** - Debug vs Release have different optimal settings
|
||||
5. **Provide commands** - Give exact bash commands for verification
|
||||
3
.claude/skills/axiom-optimize-build/agents/openai.yaml
Normal file
3
.claude/skills/axiom-optimize-build/agents/openai.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
interface:
|
||||
display_name: "Optimize Build"
|
||||
short_description: "The user mentions slow builds, build performance, or build time optimization."
|
||||
Reference in New Issue
Block a user