Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when apple-dev has finished feature code + Unit tests (Swift Testing) and is about to enter code-review. Provides the Apple SIT scope (xcodebuild test + simulator per declared target), the AC-driven integration walk, APIProtocol-mock discipline, and evidence sink (progress/apple-dev.md). SIT is dev-owned; apple-code-reviewer audits the evidence.
.claude/skills/pcliangx-agf-running-apple-sit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -49% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 190% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 12% | 0% |
Use this skill when:
SIT verifies that independently-developed components compose correctly at the app-integration layer — SwiftUI 视图 ↔ AppCore 业务层 ↔ swift-openapi-generator 生成的 client ↔(mock 后端)。It is NOT:
swift test 已在分支全绿)If a failure reproduces in plain swift test with mocks, it's a unit-level miss — fold it back into the unit suite, don't write it up as a SIT defect.
maincd apple/AppCore && swift test,strict concurrency 零 warningdocs/changes/<change>/tasks.md(AC↔scenario 映射,ADR-012;旧 feature fallback docs/prd/[feature]-[date].md),且每条 AC 的 target 归属清楚(macos / ios / universal)APIProtocol(ADR-008),禁手写 JSON fixture;openapi.json 与 main 上后端导出一致xcrun simctl list devices available 有目标 destinationIf any precondition fails: SendMessage product-lead, do not proceed.
SIT 在模拟器 / 本机层执行(非签名分发包——那是 E2E 的事):
bash# iOS target xcodebuild test -project apple/App.xcodeproj -scheme App \ -destination 'platform=iOS Simulator,name=iPhone 16' \ -resultBundlePath sit-ios.xcresult # macOS target xcodebuild test -project apple/App.xcodeproj -scheme App \ -destination 'platform=macOS' \ -resultBundlePath sit-macos.xcresult
uvicorn app.main:app)+ 真实 Postgres(docker compose up -d postgres),client 指向 localhost;LLM 类 AC 用 dedicated SIT key(参见 agf-wiring-apple-llm 的 env 契约)。Walk every AC from docs/changes/<change>/tasks.md(旧 feature fallback PRD). For each AC at the integration layer:
xcrun xcresulttool get --path *.xcresult --format json 关键段)/ 后端响应摘录> Verify, don't assume. 不许因为"代码看着对"写 Passed——跑命令、贴真实输出、对比。
证据全部进 progress/apple-dev.md 的 **SIT 证据** 段(pool 模式 progress/apple-dev-<N>.md)——pass = 单行 AC 标注(✅ AC-N (integration, macos|ios): <一句话>),fail/blocked 展开命令 + 输出 + 偏差。大体积 xcresult → progress/evidence/[feature]/ 按路径引用。
Format authority: .claude/standards/ac-lifecycle.md → 完整条目格式(5 段格式)。UAT 签字后由 product-lead 归档到 docs/qa/[feature]-process-log.md。
APIProtocol(ADR-008)❌ Redo SIT| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,127 | 7,271 | -52% | 1 | 1 | 0% | 2,481 | 1,814 | -27% | 0 | 0 | — |
case-02 | fail→pass | 28,306 | 10,599 | -63% | 1 | 1 | 0% | 4,710 | 2,410 | -49% | 0 | 0 | — |
case-03 | fail→fail | 25,708 | 7,914 | -69% | 1 | 1 | 0% | 4,238 | 1,810 | -57% | 0 | 0 | — |
case-04 | fail→fail | 8,612 | 4,307 | -50% | 1 | 1 | 0% | 1,264 | 2,014 | +59% | 0 | 0 | — |
case-05 | fail→pass | 11,285 | 3,894 | -65% | 1 | 1 | 0% | 1,757 | 1,879 | +7% | 0 | 0 | — |
case-14 | fail→fail | 8,786 | 3,744 | -57% | 1 | 1 | 0% | 1,280 | 1,799 | +41% | 0 | 0 | — |
case-06 | fail→pass | 11,869 | 3,917 | -67% | 1 | 1 | 0% | 1,720 | 1,971 | +15% | 0 | 0 | — |
case-07 | pass→pass | 3,652 | 3,202 | -12% | 1 | 1 | 0% | 573 | 1,739 | +203% | 0 | 0 | — |
case-08 | fail→pass | 3,949 | 2,760 | -30% | 1 | 1 | 0% | 594 | 1,722 | +190% | 0 | 0 | — |
case-09 | pass→pass | 8,202 | 3,511 | -57% | 1 | 1 | 0% | 1,221 | 1,789 | +47% | 0 | 0 | — |
case-10 | fail→pass | 12,288 | 4,695 | -62% | 1 | 1 | 0% | 1,865 | 2,098 | +12% | 0 | 0 | — |
case-11 | fail→pass | 12,035 | 4,630 | -62% | 1 | 1 | 0% | 1,864 | 2,019 | +8% | 0 | 0 | — |
case-12 | fail→pass | 10,676 | 4,472 | -58% | 1 | 1 | 0% | 1,684 | 1,925 | +14% | 0 | 0 | — |
case-13 | pass→pass | 7,637 | 4,412 | -42% | 1 | 1 | 0% | 1,318 | 1,977 | +50% | 0 | 0 | — |
case-15 | fail→pass | 7,422 | 2,289 | -69% | 1 | 1 | 0% | 1,039 | 1,615 | +55% | 0 | 0 | — |
case-16 | pass→pass | 5,312 | 1,556 | -71% | 1 | 1 | 0% | 824 | 1,472 | +79% | 0 | 0 | — |
case-17 | fail→pass | 9,662 | 2,535 | -74% | 1 | 1 | 0% | 1,508 | 1,691 | +12% | 0 | 0 | — |
case-18 | fail→pass | 10,033 | 4,698 | -53% | 1 | 1 | 0% | 1,518 | 1,960 | +29% | 0 | 0 | — |
case-19 | fail→pass | 11,069 | 4,961 | -55% | 1 | 1 | 0% | 1,590 | 2,058 | +29% | 0 | 0 | — |
case-20 | pass→pass | 7,942 | 4,135 | -48% | 1 | 1 | 0% | 1,207 | 2,033 | +68% | 0 | 0 | — |
case-21 | fail→pass | 13,941 | 4,075 | -71% | 1 | 1 | 0% | 2,067 | 1,964 | -5% | 0 | 0 | — |
case-22 | pass→pass | 6,341 | 1,642 | -74% | 1 | 1 | 0% | 885 | 1,516 | +71% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.