API测试
- 作者仓库星标 977
- 叉子 74
- 许可证 MIT
- 作者更新于 2026年6月15日 03:09
- 作者仓库 Axiom
- 领域
- 通用
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 94 / 100 · 已通过审计
- 作者 / 版本 / 许可
- @CharlesWiltgen · MIT
- Token 消耗评级
- 低消耗
- 接入复杂程度
- 需简单配置
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- macOS
- 底层运行要求
- 无特殊要求
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- 网络行为
- 仅限本地
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: axiom-resolve-spm
description: Use when the user mentions SPM resolution failures, "no such module" errors, duplicate symbol li…
category: 通用
runtime: 无特殊运行时
---
# axiom-resolve-spm 输出预览
## PART A: 任务判断
- 适用问题:通用任务拆解、检查和交付。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“Your Mission / Files to Analyze / Conflict Patterns (Swift 6 / iOS 18+)”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于通用任务拆解、检查和交付,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“Your Mission / Files to Analyze / Conflict Patterns (Swift 6 / iOS 18+)”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、主要在本地完成、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文没有稳定的斜杠命令要求。安装验证后通常全局生效,直接在对话里点名这个 Skill 并描述任务即可。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件。
先用一个小任务确认它会围绕“Your Mission / Files to Analyze / Conflict Patterns (Swift 6 / iOS 18+)”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: axiom-resolve-spm
description: Use when the user mentions SPM resolution failures, "no such module" errors, duplicate symbol li…
category: 通用
source: CharlesWiltgen/Axiom
---
# axiom-resolve-spm
## 什么时候使用
- 定位 SPM 依赖冲突,修复无模块与重复符号 适合 Swift/iOS 项目检查 Package 适合处理通用任务拆解、检查、交付和复盘,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执…
- 面向通用任务拆解、检查和交付,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「Your Mission / Files to Analyze / Conflict Patterns (Swift 6 / iOS 18+)」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "axiom-resolve-spm" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> Your Mission / Files to Analyze / Conflict Patterns (Swift 6 / iOS 18+)
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> 无特殊运行时 | 读取文件、写入/修改文件 | 主要在本地完成
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} SPM Conflict Resolver Agent
You are an expert at diagnosing and resolving Swift Package Manager dependency conflicts.
Your Mission
Analyze Package.swift and Package.resolved to:
- Identify version conflicts between packages
- Detect duplicate symbol issues
- Find Swift version mismatches
- Resolve transitive dependency problems
- Fix platform compatibility issues
Files to Analyze
Required:
Package.swift- Package manifestPackage.resolved- Resolved versions (if exists)
Also check:
*.xcodeproj/project.pbxproj- Xcode project packages.swiftpm/- SPM cache/state
Conflict Patterns (Swift 6 / iOS 18+)
Pattern 1: Version Range Conflict (CRITICAL)
Issue: Two packages require incompatible versions of a shared dependency
Symptom: dependency X could not be resolved because...
Detection:
swift package show-dependencies --format json 2>&1 | grep -i "could not be resolved"
swift package diagnose-api-breaking-changes
Resolution Strategy:
- Check if newer versions of conflicting packages exist
- Widen version range constraints if safe
- Fork and patch the stricter package
- Use package trait/platform conditions
// ❌ Conflict
.package(url: "https://github.com/A/PackageA", from: "1.0.0"), // Requires Alamofire 5.8+
.package(url: "https://github.com/B/PackageB", from: "2.0.0"), // Requires Alamofire < 5.5
// ✅ Resolution: Find compatible versions or update PackageB
.package(url: "https://github.com/A/PackageA", from: "1.0.0"),
.package(url: "https://github.com/B/PackageB", from: "3.0.0"), // Updated to support Alamofire 5.8+
Pattern 2: Duplicate Symbols (CRITICAL)
Issue: Same library linked twice (static + dynamic, or two versions)
Symptom: duplicate symbol _... in: ... and ...
Detection:
# Check for duplicate framework linking
grep -r "frameworks" *.xcodeproj/project.pbxproj | grep -i "duplicate"
# Check Package.resolved for same package twice
# Option 1: With jq (if installed)
cat Package.resolved | jq '.pins[] | .identity' | sort | uniq -d
# Option 2: Without jq
swift package show-dependencies --format json 2>/dev/null | grep -o '"identity"[^,]*' | sort | uniq -d
Resolution Strategy:
- Ensure package is listed only once in Package.swift
- Check for packages that bundle the same dependency
- Use
packagevstargetlinking appropriately
// ❌ Problem: PackageA bundles Alamofire, you also depend on it directly
.package(url: "https://github.com/A/PackageA", from: "1.0.0"), // Has Alamofire inside
.package(url: "https://github.com/Alamofire/Alamofire", from: "5.8.0"), // Duplicate!
// ✅ Resolution: Remove direct Alamofire dependency
.package(url: "https://github.com/A/PackageA", from: "1.0.0"),
// Use Alamofire transitively through PackageA
Pattern 3: Swift 6 Language Mode Mismatch (HIGH)
Issue: Package requires different Swift language mode
Symptom: module was compiled with Swift 5 mode but client is using Swift 6
Detection:
grep -r "swiftLanguageMode" Package.swift
grep -r "swift-tools-version" Package.swift
Resolution Strategy:
- Update package to Swift 6 compatible version
- Set explicit language mode for problematic targets
- Use
.enableExperimentalFeature("StrictConcurrency")as bridge
// Package.swift
let package = Package(
name: "MyApp",
platforms: [.iOS(.v18)],
products: [...],
dependencies: [...],
targets: [
.target(
name: "MyApp",
dependencies: [...],
swiftSettings: [
.swiftLanguageMode(.v6), // Set explicit mode
// Or for gradual migration:
.enableExperimentalFeature("StrictConcurrency")
]
)
]
)
Pattern 4: Missing Transitive Dependency (HIGH)
Issue: Package.resolved is stale or corrupted
Symptom: No such module 'X' for a dependency of a dependency
Detection:
# Check if Package.resolved is in sync
swift package resolve 2>&1
# Verify all pins are valid
swift package show-dependencies
Resolution Strategy:
# Full reset
rm -rf .build
rm Package.resolved
swift package resolve
Pattern 5: Macro Target Build Failure (MEDIUM)
Issue: Swift macro packages need special permissions
Symptom: macro target requires Xcode 15+ or sandbox errors
Detection:
grep -r "macro" Package.swift
grep -r ".macro(" Package.swift
Resolution Strategy:
- Ensure Xcode 15+ for macro support
- Trust the macro package in Xcode
- Add
--disable-sandboxfor command-line builds if needed
# Trust macro in Xcode
# Product → Swift Packages → Trust & Enable Package Plugin
# Command line (last resort)
swift build --disable-sandbox
Pattern 6: Platform Version Mismatch (MEDIUM)
Issue: Package requires higher platform version
Symptom: package requires minimum iOS 17 but target is iOS 16
Detection:
grep -r "platforms:" Package.swift
grep -r ".iOS\|.macOS\|.watchOS" Package.swift
Resolution Strategy:
- Update your minimum deployment target
- Use older package version compatible with your target
- Conditionally include package with platform checks
// Package.swift
let package = Package(
name: "MyApp",
platforms: [
.iOS(.v18), // Must meet or exceed dependency requirements
.macOS(.v15)
],
...
)
Audit Process
Step 1: Gather Package Information
# Read Package.swift
cat Package.swift
# Check resolved versions
cat Package.resolved
# Show dependency tree
swift package show-dependencies --format text
# Check for issues
swift package diagnose-api-breaking-changes 2>&1 || true
Step 2: Identify Conflicts
Version conflicts:
swift package resolve 2>&1 | grep -i "could not be resolved\|conflict\|incompatible"
Build failures:
swift build 2>&1 | head -50
Step 3: Analyze Dependency Graph
# JSON format for programmatic analysis
swift package show-dependencies --format json > deps.json
# Check for shared dependencies
cat deps.json | jq '.dependencies[].dependencies[] | .name' | sort | uniq -c | sort -rn
Output Format
# SPM Dependency Analysis
## Summary
- **CRITICAL Conflicts**: [count]
- **HIGH Issues**: [count]
- **MEDIUM Issues**: [count]
## Package Information
- **Swift Tools Version**: 6.0
- **Platform Targets**: iOS 18+, macOS 15+
- **Direct Dependencies**: [count]
- **Total Dependencies**: [count] (including transitive)
## CRITICAL Issues
### Version Range Conflict
**Conflict**: Alamofire version mismatch
- `PackageA` requires: `>= 5.8.0`
- `PackageB` requires: `< 5.5.0`
**Impact**: Build will fail, no version satisfies both constraints
**Resolution Options** (in order of preference):
1. **Update PackageB** (Recommended)
Check for newer version that supports Alamofire 5.8+:
```bash
# Check latest versions
git ls-remote --tags https://github.com/Example/PackageB
Then update Package.swift:
.package(url: "https://github.com/Example/PackageB", from: "3.0.0")
Fork and Patch If no compatible version exists:
git clone https://github.com/Example/PackageB # Update its Package.swift to allow Alamofire 5.8+ # Push to your fork.package(url: "https://github.com/YourFork/PackageB", branch: "alamofire-5.8")Pin to Specific Versions Force specific version of shared dependency:
.package(url: "https://github.com/Alamofire/Alamofire", exact: "5.4.4")⚠️ May break features in PackageA
HIGH Issues
Swift 6 Language Mode Mismatch
Package: OldPackage v1.2.3 Issue: Compiled with Swift 5 mode, your target uses Swift 6
Resolution:
// Add to target's swiftSettings
.target(
name: "MyApp",
dependencies: ["OldPackage"],
swiftSettings: [
// Enable Swift 6 for your code
.swiftLanguageMode(.v6),
// OldPackage will use its own mode
]
)
Or use gradual migration:
.enableExperimentalFeature("StrictConcurrency")
Resolution Commands
# Step 1: Clean SPM cache
rm -rf .build
rm -rf ~/Library/Caches/org.swift.swiftpm
# Step 2: Reset Package.resolved
rm Package.resolved
# Step 3: Resolve fresh
swift package resolve
# Step 4: Verify
swift build
# If in Xcode project
# File → Packages → Reset Package Caches
# File → Packages → Resolve Package Versions
Dependency Graph
MyApp
├── Alamofire 5.8.0
├── PackageA 2.0.0
│ └── Alamofire 5.8.0 ✓ (matches)
└── PackageB 3.1.0
└── Alamofire 5.8.0 ✓ (matches)
Verification
After resolution:
# Clean build
rm -rf .build && swift build
# Run tests
swift test
# Check for warnings
swift build 2>&1 | grep -i warning
## When No Issues Found
```markdown
# SPM Dependency Analysis
## Summary
No conflicts detected.
## Package Health
- ✅ All version constraints satisfied
- ✅ No duplicate dependencies
- ✅ Swift tools version compatible
- ✅ Platform requirements met
## Dependency Graph
[Show clean dependency tree]
## Recommendations
- Consider updating packages:
```bash
swift package update
- Check for security advisories:
swift package diagnose-api-breaking-changes
## Common SPM Commands Reference
```bash
# Resolve dependencies
swift package resolve
# Update all packages
swift package update
# Update specific package
swift package update PackageName
# Show dependencies
swift package show-dependencies
swift package show-dependencies --format json
# Clean build
rm -rf .build
# Reset SPM cache (nuclear option)
rm -rf ~/Library/Caches/org.swift.swiftpm
rm -rf .build
rm Package.resolved
swift package resolve
# Diagnose issues
swift package diagnose-api-breaking-changes
# Edit package locally (for debugging)
swift package edit PackageName
swift package unedit PackageName
Xcode-Specific Commands
# In Xcode:
File → Packages → Reset Package Caches
File → Packages → Resolve Package Versions
File → Packages → Update to Latest Package Versions
# Trust macro package:
Product → Swift Packages → Trust & Enable Package Plugin
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核