{"id":"dab0aba4-5125-4157-a96f-1c7767db032e","shortId":"3vBVrD","kind":"skill","title":"swift-package-testing-workflow","tagline":"Guide Swift Testing, XCTest holdouts, xctestplan handoff conditions, async test design, semantic accessibility-test boundaries, test-fixture organization, and package test-diagnosis work in existing Swift Package Manager repositories. Use when Package.swift is the source of truth","description":"# Swift Package Testing Workflow\n\n## Purpose\n\nUse this skill as the primary execution workflow for test-focused work in existing Swift Package Manager repositories. Keep it focused on Swift Testing, XCTest holdouts, `.xctestplan` handoff conditions, async-test guidance, semantic accessibility-test boundaries, performance-sensitive package workload profiling, filters, retries, fixtures, and package-level test diagnosis instead of broad manifest and build/run work. `scripts/run_workflow.py` is the runtime entrypoint for repo-shape checks, test-surface command planning, and clean handoff to the build/run or Xcode-oriented surfaces when the request drifts.\n\n## When To Use\n\n- Use this skill for running, diagnosing, organizing, or evolving tests in an existing Swift package repo.\n- Use this skill for Swift Testing-first package work, XCTest holdouts, async-test design, semantic accessibility-test boundaries, and test-fixture organization.\n- Use this skill for package-level `.xctestplan` execution when the package surface needs Xcode test-plan follow-through.\n- Use this skill when the request is about test selection, filtering, retries, failures, flaky tests, or test-only Debug/Release validation.\n- Use this skill when the request is about package-first performance-sensitive testing, signpost placement, Release workload harnesses, or profiling-ready package test design for Audio, Metal, MLX, local AI, streaming, or other Apple silicon-sensitive workloads.\n- Do not use this skill for broad manifest edits, dependency work, package resources, plugin flows, or ordinary build and run work.\n- Do not use this skill for brand-new package bootstrap from nothing.\n- Do not use this skill for repo-guidance alignment in an existing package repo.\n- Do not use this skill as the default path for Xcode workspace, scheme, preview, simulator, or navigator-driven work.\n- Recommend `swift-package-build-run-workflow` when the request is primarily about package build/run, manifest, dependency, plugin, resource, or Metal-distribution work.\n- Recommend `bootstrap-swift-package` when the package repo does not exist yet.\n- Recommend `sync-swift-package-guidance` when the repo guidance needs to be added, refreshed, or merged.\n- Recommend `xcode-testing-workflow` when test work depends on active Xcode workspace state, navigator diagnostics, simulator or device flows, XCUITest, runtime accessibility verification, or Xcode-native test plans and test execution.\n- Recommend `apple-ui-accessibility-workflow` when the request is primarily about accessibility semantics or review rather than package-side testing strategy.\n- Recommend `xcode-build-run-workflow` when package test work crosses into guarded mutation, file membership, or other Xcode-managed project-integrity work.\n- Recommend `explore-apple-swift-docs` when the user needs Apple or Swift docs exploration before implementation or test changes.\n\n## Single-Path Workflow\n\n1. Classify the request into one operation type:\n   - package inspection\n   - read or search\n   - test\n   - mutation\n2. Apply the Apple and Swift docs gate before any design, architecture, implementation, or refactor guidance:\n   - use `explore-apple-swift-docs` to gather the relevant SwiftPM, Swift, or Apple documentation first\n   - state the documented API behavior, testing rule, or workflow requirement being relied on before proposing changes\n   - do not rely on memory as the primary source when docs exist\n   - if the docs and the current code conflict, stop and report that conflict\n   - if no relevant docs can be found, say that explicitly before proceeding\n3. Apply the shared Swift-package policy before giving implementation guidance:\n   - apply the detailed local policy in `references/snippets/apple-swift-package-core.md` when package-policy wording is needed\n   - preserve its simplicity-first, shape-preserving, and anti-ceremony Swift guidance\n   - preserve its explicit `swiftLanguageModes: [.v6]` package-manifest default and prefer that spelling over the legacy `swiftLanguageVersions` alias on current manifest surfaces\n   - preserve its package-appropriate logging, telemetry, structured-concurrency, and Swift Testing guidance\n4. Run `scripts/run_workflow.py` to resolve repo shape, confirm the request stays on the testing surface, and plan the package-testing command path.\n5. Use `references/package-resources-testing-and-builds.md` when the request touches Swift Testing, XCTest, `.xctestplan`, accessibility-related semantic tests, fixtures, async test discipline, or test-related Debug/Release validation.\n6. Use `references/performance-sensitive-testing-and-profiling.md` when the request touches package-first instrumentation, `OSSignposter`, `xctrace`, Time Profiler, Metal System Trace, Allocations, VM Tracker, Audio, MLX, local AI, streaming, or other performance-sensitive Apple silicon workloads.\n7. If the repo root is ambiguous because Xcode-managed markers are present at the same root, use `references/xcode-handoff-conditions.md` and hand off cleanly to `xcode-testing-workflow`.\n8. Report which parts were agent-executed, the docs relied on, the repo-shape result, and any required next step or handoff.\n\n## Inputs\n\n- `operation_type`: one of the operation types listed above.\n- `request`: optional short natural-language request text used to infer `operation_type` when the explicit operation is omitted.\n- `repo_root`: optional absolute path for the target package repo.\n- `mixed_root_opt_in`: optional explicit opt-in when the user wants a SwiftPM-first plan for a mixed root even though Xcode markers are present.\n- Defaults:\n  - runtime entrypoint: executable `scripts/run_workflow.py`\n  - `repo_root=.` when omitted\n  - the runtime may infer `operation_type` from `--request` text when the request wording is clear enough\n  - package testing prefers `swift test`, filtered `swift test` runs, and `xcodebuild` test-plan follow-through only when the package surface truly needs it\n  - mixed roots hand off by default unless `--mixed-root-opt-in` is passed\n\n## Outputs\n\n- `status`\n  - `success`: the workflow completed on the package-testing path\n  - `handoff`: the workflow is handing off to another skill because build/run or Xcode-managed behavior is the safer surface\n  - `blocked`: prerequisites or repo-shape rules prevented completion\n- `path_type`\n  - `primary`: the package-testing path completed\n  - `fallback`: a non-mutating planned command path was returned\n- `output`\n  - operation type\n  - resolved repo root\n  - repo-shape result\n  - `planned_commands`\n  - one concise next step or handoff payload\n\n## Guards and Stop Conditions\n\n- Stop with `blocked` when the repo root cannot be resolved.\n- Stop with `blocked` when the repo does not contain `Package.swift`.\n- Stop with `handoff` when the request is really package build/run, manifest, dependency, plugin, resource, or Metal-distribution work.\n- Stop with `handoff` when the repo root is mixed and Xcode-managed behavior is the safer default.\n- Stop with `handoff` when the requested work crosses into Xcode project membership, scheme, preview, simulator, or other Xcode-managed concerns.\n- Stop with `blocked` when no safe package-testing command path exists for the requested operation.\n\n## Fallbacks and Handoffs\n\n- SwiftPM and ordinary filesystem edits inside package-managed scope are the default execution surface for this skill.\n- The only current fallback is a non-mutating planned command result when the user asked for guidance rather than immediate execution.\n- Hand off to `swift-package-build-run-workflow` when the request becomes primarily about package build/run, manifest, dependencies, plugins, package resources, or Metal-distribution work.\n- Hand off to `xcode-testing-workflow` when package test work depends on:\n  - active Xcode workspace or scheme state\n  - previews, snippet execution, simulator, or device flows\n  - navigator issues or Xcode build-log inspection\n  - Xcode MCP mutation tools\n  - `.xctestplan` execution or package test behavior that is more authoritative through Xcode-managed Apple SDK integration\n  - direct test execution through Xcode-native destinations, UI testing, or `.xctestplan` handling inside an Xcode-managed workspace\n  - Instruments UI inspection, `.trace` artifact interpretation, or `xctrace` capture that depends on Xcode-managed schemes, destinations, app hosts, or test plans\n- Recommend `apple-ui-accessibility-workflow` when the user is really asking how the UI should expose semantics to assistive technologies instead of how a package-side test should be organized.\n- Hand off to `xcode-build-run-workflow` when package test work instead crosses into direct changes inside `.xcodeproj`, `.xcworkspace`, or `.pbxproj` managed scope.\n- Recommend `sync-swift-package-guidance` when the request is really about repo guidance instead of execution.\n- Recommend `bootstrap-swift-package` when the repository still needs to be created from scratch.\n- When maintaining this repository itself, refresh guidance-sync consumers after substantial package-testing policy changes and keep the top-level export-surface docs aligned. Do not tell users to rely on repo-local installer workflows; this repository does not ship them.\n\n## Customization\n\n- Use `references/customization.template.yaml`.\n- `scripts/customization_config.py` stores and reports customization state.\n- `scripts/run_workflow.py` reads customization state, but the current workflow keeps a fixed package-testing policy and does not expose ordinary user-facing knobs yet.\n- Run the Python wrapper and customization entrypoints through `uv`, because they rely on inline `PyYAML` script metadata rather than a repo-global Python environment.\n\n## References\n\n### Workflow References\n\n- `references/workflow-policy.md`\n- `references/repo-shape-detection.md`\n- `references/package-resources-testing-and-builds.md`\n- `references/performance-sensitive-testing-and-profiling.md`\n- `references/xcode-handoff-conditions.md`\n\n### Contract References\n\n- `references/customization.template.yaml`\n\n### Support References\n\n- Recommend `references/snippets/apple-swift-package-core.md` when the user needs reusable SwiftPM baseline policy wording in an end-user repo.\n- `references/snippets/apple-swift-package-core.md`\n\n### Script Inventory\n\n- `scripts/run_workflow.py`\n- `scripts/customization_config.py`","tags":["swift","package","testing","workflow","apple","dev","skills","gaelic-ghost","agent-skills","apple-development","apple-docs","apple-docs-mcp"],"capabilities":["skill","source-gaelic-ghost","skill-swift-package-testing-workflow","topic-agent-skills","topic-apple-development","topic-apple-docs","topic-apple-docs-mcp","topic-codex","topic-codex-app","topic-codex-cli","topic-codex-skills","topic-dash-docsets","topic-ios","topic-macos","topic-swift"],"categories":["apple-dev-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/gaelic-ghost/apple-dev-skills/swift-package-testing-workflow","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add gaelic-ghost/apple-dev-skills","source_repo":"https://github.com/gaelic-ghost/apple-dev-skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (10,368 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:13:58.871Z","embedding":null,"createdAt":"2026-05-18T13:21:11.241Z","updatedAt":"2026-05-18T19:13:58.871Z","lastSeenAt":"2026-05-18T19:13:58.871Z","tsv":"'1':498 '2':513 '3':598 '4':674 '5':697 '6':723 '7':757 '8':786 'absolut':842 'access':19,87,179,415,430,438,709,1288 'accessibility-rel':708 'accessibility-test':18,86,178 'activ':403,1201 'ad':389 'agent':792 'agent-execut':791 'ai':261,747 'alia':655 'align':313,1399 'alloc':741 'ambigu':763 'anoth':960 'anti':634 'anti-ceremoni':633 'api':548 'app':1279 'appl':265,428,477,484,516,532,542,754,1240,1286 'apple-ui-accessibility-workflow':427,1285 'appli':514,599,610 'appropri':664 'architectur':524 'artifact':1266 'ask':1154,1295 'assist':1303 'async':14,82,174,714 'async-test':81,173 'audio':257,744 'authorit':1235 'baselin':1498 'becom':1173 'behavior':549,968,1076,1231 'block':973,1026,1036,1104 'bootstrap':301,365,1359 'bootstrap-swift-packag':364,1358 'boundari':21,89,181 'brand':298 'brand-new':297 'broad':107,276 'build':287,343,452,1167,1219,1321 'build-log':1218 'build/run':110,132,353,963,1053,1177 'cannot':1031 'captur':1270 'ceremoni':635 'chang':493,560,1332,1388 'check':121 'classifi':499 'clean':128,780 'clear':900 'code':579 'command':125,695,997,1012,1111,1149 'complet':946,981,990 'concern':1101 'concis':1014 'concurr':669 'condit':13,80,1023 'confirm':681 'conflict':580,585 'consum':1381 'contain':1042 'contract':1485 'creat':1369 'cross':459,1088,1329 'current':578,657,1141,1433 'custom':1418,1425,1429,1457 'debug/release':227,721 'default':326,646,877,932,1080,1133 'depend':279,355,401,1055,1179,1199,1272 'design':16,176,255,523 'destin':1250,1278 'detail':612 'devic':411,1212 'diagnos':150 'diagnosi':30,104 'diagnost':408 'direct':1243,1331 'disciplin':716 'distribut':361,1061,1186 'doc':479,487,519,534,571,575,589,795,1398 'document':543,547 'drift':141 'driven':337 'edit':278,1125 'end':1504 'end-us':1503 'enough':901 'entrypoint':116,879,1458 'environ':1476 'even':871 'evolv':153 'execut':57,195,425,793,880,1134,1160,1209,1227,1245,1356 'exist':33,65,157,316,374,572,1113 'explicit':595,640,835,854 'explor':476,488,531 'explore-apple-swift-doc':475,530 'export':1396 'export-surfac':1395 'expos':1300,1445 'face':1449 'failur':220 'fallback':991,1118,1142 'file':463 'filesystem':1124 'filter':96,218,907 'first':168,239,544,628,732,865 'fix':1437 'fixtur':24,98,185,713 'flaki':221 'flow':284,412,1213 'focus':62,72 'follow':206,917 'follow-through':205,916 'found':592 'gate':520 'gather':536 'give':607 'global':1474 'guard':461,1020 'guid':6 'guidanc':84,312,381,385,528,609,637,673,1156,1345,1353,1379 'guidance-sync':1378 'hand':778,929,957,1161,1188,1316 'handl':1255 'handoff':12,79,129,809,953,1018,1046,1065,1083,1120 'har':248 'holdout':10,77,172 'host':1280 'immedi':1159 'implement':490,525,608 'infer':830,889 'inlin':1465 'input':810 'insid':1126,1256,1333 'inspect':507,1221,1264 'instal':1410 'instead':105,1305,1328,1354 'instrument':733,1262 'integr':472,1242 'interpret':1267 'inventori':1509 'issu':1215 'keep':70,1390,1435 'knob':1450 'languag':825 'legaci':653 'level':102,193,1394 'list':818 'local':260,613,746,1409 'log':665,1220 'maintain':1373 'manag':36,68,469,767,967,1075,1100,1129,1239,1260,1276,1338 'manifest':108,277,354,645,658,1054,1178 'marker':768,874 'may':888 'mcp':1223 'membership':464,1092 'memori':565 'merg':392 'metadata':1468 'metal':258,360,738,1060,1185 'metal-distribut':359,1059,1184 'mix':849,869,927,935,1071 'mixed-root-opt-in':934 'mlx':259,745 'mutat':462,512,995,1147,1224 'nativ':420,1249 'natur':824 'natural-languag':823 'navig':336,407,1214 'navigator-driven':335 'need':200,386,483,623,925,1366,1495 'new':299 'next':806,1015 'non':994,1146 'non-mut':993,1145 'noth':303 'omit':838,885 'one':503,813,1013 'oper':504,811,816,831,836,890,1002,1117 'opt':851,856,937 'opt-in':855 'option':821,841,853 'ordinari':286,1123,1446 'organ':25,151,186,1315 'orient':136 'ossignpost':734 'output':941,1001 'packag':3,27,35,47,67,93,101,159,169,192,198,238,253,281,300,317,342,352,367,370,380,445,456,506,604,619,644,663,693,731,847,902,922,950,987,1052,1109,1128,1166,1176,1181,1196,1229,1310,1325,1344,1361,1385,1439 'package-appropri':662 'package-first':237,730 'package-level':100,191 'package-manag':1127 'package-manifest':643 'package-polici':618 'package-sid':444,1309 'package-test':692,949,986,1108,1384,1438 'package.swift':40,1043 'part':789 'pass':940 'path':327,496,696,843,952,982,989,998,1112 'payload':1019 'pbxproj':1337 'perform':91,241,752 'performance-sensit':90,240,751 'placement':245 'plan':126,204,422,690,866,915,996,1011,1148,1283 'plugin':283,356,1056,1180 'polici':605,614,620,1387,1441,1499 'prefer':648,904 'prerequisit':974 'present':770,876 'preserv':624,631,638,660 'prevent':980 'preview':332,1094,1207 'primari':56,568,984 'primarili':350,436,1174 'proceed':597 'profil':95,251,737 'profiling-readi':250 'project':471,1091 'project-integr':470 'propos':559 'purpos':50 'python':1454,1475 'pyyaml':1466 'rather':442,1157,1469 'read':508,1428 'readi':252 'realli':1051,1294,1350 'recommend':339,363,376,393,426,449,474,1284,1340,1357,1490 'refactor':527 'refer':1477,1479,1486,1489 'references/customization.template.yaml':1420,1487 'references/package-resources-testing-and-builds.md':699,1482 'references/performance-sensitive-testing-and-profiling.md':725,1483 'references/repo-shape-detection.md':1481 'references/snippets/apple-swift-package-core.md':616,1491,1507 'references/workflow-policy.md':1480 'references/xcode-handoff-conditions.md':776,1484 'refresh':390,1377 'relat':710,720 'releas':246 'relev':538,588 'reli':556,563,796,1405,1463 'repo':119,160,311,318,371,384,679,760,800,839,848,882,977,1005,1008,1029,1039,1068,1352,1408,1473,1506 'repo-glob':1472 'repo-guid':310 'repo-loc':1407 'repo-shap':118,799,976,1007 'report':583,787,1424 'repositori':37,69,1364,1375,1413 'request':140,213,234,348,434,501,683,702,728,820,826,893,897,1049,1086,1116,1172,1348 'requir':554,805 'resolv':678,1004,1033 'resourc':282,357,1057,1182 'result':802,1010,1150 'retri':97,219 'return':1000 'reusabl':1496 'review':441 'root':761,774,840,850,870,883,928,936,1006,1030,1069 'rule':551,979 'run':149,289,344,453,675,910,1168,1322,1452 'runtim':115,414,878,887 'safe':1107 'safer':971,1079 'say':593 'scheme':331,1093,1205,1277 'scope':1130,1339 'scratch':1371 'script':1467,1508 'scripts/customization_config.py':1421,1511 'scripts/run_workflow.py':112,676,881,1427,1510 'sdk':1241 'search':510 'select':217 'semant':17,85,177,439,711,1301 'sensit':92,242,268,753 'shape':120,630,680,801,978,1009 'shape-preserv':629 'share':601 'ship':1416 'short':822 'side':446,1311 'signpost':244 'silicon':267,755 'silicon-sensit':266 'simplic':627 'simplicity-first':626 'simul':333,409,1095,1210 'singl':495 'single-path':494 'skill':53,147,163,189,210,231,274,295,308,323,961,1138 'skill-swift-package-testing-workflow' 'snippet':1208 'sourc':43,569 'source-gaelic-ghost' 'spell':650 'state':406,545,1206,1426,1430 'status':942 'stay':684 'step':807,1016 'still':1365 'stop':581,1022,1024,1034,1044,1063,1081,1102 'store':1422 'strategi':448 'stream':262,748 'structur':668 'structured-concurr':667 'substanti':1383 'success':943 'support':1488 'surfac':124,137,199,659,688,923,972,1135,1397 'swift':2,7,34,46,66,74,158,165,341,366,379,478,486,518,533,540,603,636,671,704,905,908,1165,1343,1360 'swift-packag':602 'swift-package-build-run-workflow':340,1164 'swift-package-testing-workflow':1 'swiftlanguagemod':641 'swiftlanguagevers':654 'swiftpm':539,864,1121,1497 'swiftpm-first':863 'sync':378,1342,1380 'sync-swift-package-guid':377,1341 'system':739 'target':846 'technolog':1304 'telemetri':666 'tell':1402 'test':4,8,15,20,23,29,48,61,75,83,88,103,123,154,167,175,180,184,203,216,222,225,243,254,396,399,421,424,447,457,492,511,550,672,687,694,705,712,715,719,784,903,906,909,914,951,988,1110,1193,1197,1230,1244,1252,1282,1312,1326,1386,1440 'test-diagnosi':28 'test-fixtur':22,183 'test-focus':60 'test-on':224 'test-plan':202,913 'test-rel':718 'test-surfac':122 'testing-first':166 'text':827,894 'though':872 'time':736 'tool':1225 'top':1393 'top-level':1392 'topic-agent-skills' 'topic-apple-development' 'topic-apple-docs' 'topic-apple-docs-mcp' 'topic-codex' 'topic-codex-app' 'topic-codex-cli' 'topic-codex-skills' 'topic-dash-docsets' 'topic-ios' 'topic-macos' 'topic-swift' 'touch':703,729 'trace':740,1265 'tracker':743 'truli':924 'truth':45 'type':505,812,817,832,891,983,1003 'ui':429,1251,1263,1287,1298 'unless':933 'use':38,51,144,145,161,187,208,229,272,293,306,321,529,698,724,775,828,1419 'user':482,860,1153,1292,1403,1448,1494,1505 'user-fac':1447 'uv':1460 'v6':642 'valid':228,722 'verif':416 'vm':742 'want':861 'word':621,898,1500 'work':31,63,111,170,280,290,338,362,400,458,473,1062,1087,1187,1198,1327 'workflow':5,49,58,345,397,431,454,497,553,785,945,955,1169,1194,1289,1323,1411,1434,1478 'workload':94,247,269,756 'workspac':330,405,1203,1261 'wrapper':1455 'xcode':135,201,329,395,404,419,451,468,766,783,873,966,1074,1090,1099,1192,1202,1217,1222,1238,1248,1259,1275,1320 'xcode-build-run-workflow':450,1319 'xcode-manag':467,765,965,1073,1098,1237,1258,1274 'xcode-n':418,1247 'xcode-ori':134 'xcode-testing-workflow':394,782,1191 'xcodebuild':912 'xcodeproj':1334 'xctest':9,76,171,706 'xctestplan':11,78,194,707,1226,1254 'xctrace':735,1269 'xcuitest':413 'xcworkspac':1335 'yet':375,1451","prices":[{"id":"fa6c3fb0-6bc5-4f4e-9c27-dad7e395667a","listingId":"dab0aba4-5125-4157-a96f-1c7767db032e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"gaelic-ghost","category":"apple-dev-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:11.241Z"}],"sources":[{"listingId":"dab0aba4-5125-4157-a96f-1c7767db032e","source":"github","sourceId":"gaelic-ghost/apple-dev-skills/swift-package-testing-workflow","sourceUrl":"https://github.com/gaelic-ghost/apple-dev-skills/tree/main/skills/swift-package-testing-workflow","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:11.241Z","lastSeenAt":"2026-05-18T19:13:58.871Z"}],"details":{"listingId":"dab0aba4-5125-4157-a96f-1c7767db032e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"gaelic-ghost","slug":"swift-package-testing-workflow","github":{"repo":"gaelic-ghost/apple-dev-skills","stars":7,"topics":["agent-skills","apple-development","apple-docs","apple-docs-mcp","codex","codex-app","codex-cli","codex-skills","dash-docsets","ios","macos","swift","swift-package-manager","swift-toolchain","swiftly","swiftpm","xcode","xcode-mcp","xcodebuild","xcrun"],"license":"apache-2.0","html_url":"https://github.com/gaelic-ghost/apple-dev-skills","pushed_at":"2026-05-13T01:26:51Z","description":"Apple Dev Workflows for Codex | Now Available in Socket Marketplace","skill_md_sha":"dcd9999b0cbafd373cbfe68e358362926d5bc8ca","skill_md_path":"skills/swift-package-testing-workflow/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/gaelic-ghost/apple-dev-skills/tree/main/skills/swift-package-testing-workflow"},"layout":"multi","source":"github","category":"apple-dev-skills","frontmatter":{"name":"swift-package-testing-workflow","description":"Guide Swift Testing, XCTest holdouts, xctestplan handoff conditions, async test design, semantic accessibility-test boundaries, test-fixture organization, and package test-diagnosis work in existing Swift Package Manager repositories. Use when Package.swift is the source of truth and the task is primarily about testing rather than package build or run work."},"skills_sh_url":"https://skills.sh/gaelic-ghost/apple-dev-skills/swift-package-testing-workflow"},"updatedAt":"2026-05-18T19:13:58.871Z"}}