{"id":"6355a5fd-3ea3-46fb-b3db-db3c834a57d7","shortId":"3f8Mr5","kind":"skill","title":"format-swift-sources","tagline":"Guide SwiftLint and SwiftFormat integration across CLI, Xcode build phases, Xcode source-editor workflows, Swift Package plugins, AppleScript, Git hooks, and GitHub Actions, including exporting SwiftFormat for Xcode settings into a checked-in project config file. Use this first w","description":"# Format Swift Sources\n\n## Purpose\n\nUse this skill as the top-level workflow for integrating and maintaining SwiftLint and SwiftFormat in Apple or Swift repositories. The skill keeps the support matrix explicit, teaches the shortest correct path for each surface, and includes a deterministic helper script for turning SwiftFormat for Xcode shared settings into a project-root `.swiftformat` file when the host app export path is unavailable or inconvenient. For shared Swift repositories, the preferred baseline is a checked-in repo-root `.swiftformat` plus a Git pre-commit hook that formats staged Swift sources and then reruns SwiftFormat in lint mode before the commit is allowed through. When both tools are in play, treat SwiftFormat as the primary owner of formatting shape and use SwiftLint as a complementary signal layer for clarity, safety, maintenance, and selectively chosen documentation expectations rather than as a second formatter. When the script path is needed, prefer feeding it the real shared plist from the SwiftFormat group container over assuming the defaults-domain export is complete, and treat the generated file as a curated starting point rather than as a guaranteed final repo config. It is also the canonical first pass before and after `structure-swift-sources` when a request will split, move, or reorganize Swift source files.\n\n## When To Use\n\n- Use this skill when the user wants to add or maintain `swiftformat`, `swiftlint`, or both in a Swift repository.\n- Use this skill when the user wants guidance on how to divide responsibility between SwiftFormat and SwiftLint in the same repository.\n- Use this skill when the user wants guidance for one of these integration surfaces:\n  - CLI\n  - Xcode Run Script Build Phase\n  - Xcode source editor extension\n  - Swift Package Manager plugin\n  - AppleScript or Automator-style local triggers\n  - Git pre-commit hook\n  - GitHub Actions\n- Use this skill when the user wants to promote personal SwiftFormat for Xcode settings into a checked-in `.swiftformat` file.\n- Use this skill when the user wants the recommended shared-repo formatting baseline for a Swift repository.\n- Use this skill when the user needs the supported-path caveats for SwiftLint or SwiftFormat, such as plugin config-path limitations, Xcode script sandboxing, or per-project config gaps in the SwiftFormat extension.\n- Use this skill first when a later `structure-swift-sources` pass will split files, move files, or normalize section layout and the repo needs a clean formatting baseline before structural edits begin.\n- Recommend `bootstrap-swift-package` when the user is creating a brand new Swift package and style tooling is only one part of that scaffold.\n- Recommend `bootstrap-xcode-app-project` when the user is creating a brand new native Apple app project and style tooling is only one part of that scaffold.\n- Recommend `swift-package-build-run-workflow` or `swift-package-testing-workflow` when the task shifts from style-tooling integration to ordinary SwiftPM package execution.\n- Recommend `xcode-build-run-workflow` when the task shifts from style-tooling integration to active Xcode execution, diagnostics, or mutation work in an existing project.\n- Recommend `xcode-testing-workflow` when the task shifts from style-tooling integration to active Xcode test work.\n- Recommend `structure-swift-sources` when the task shifts from formatter or linter setup into file splitting, file moves, declaration grouping, or TODO/FIXME ledger cleanup.\n- Recommend `author-swift-docc-docs` when the task shifts from style-tooling setup into symbol documentation, DocC article work, landing-page structure, topic groups, or DocC-oriented review.\n- Recommend `sync-xcode-project-guidance` or `sync-swift-package-guidance` when the user is aligning `AGENTS.md` and repo guidance rather than integrating style tooling itself.\n\n## Single-Path Workflow\n\n1. Classify the request by tool selection:\n   - `swiftformat`\n   - `swiftlint`\n   - `both`\n2. Classify the request by surface:\n   - `cli`\n   - `xcode-build-phase`\n   - `xcode-source-extension`\n   - `swiftpm-plugin`\n   - `applescript`\n   - `git-pre-commit`\n   - `github-actions`\n   - `swiftformat-xcode-config-export`\n3. Check the support matrix in `references/integration-matrix.md` before proposing or generating steps.\n4. Choose one documented path:\n   - when the user wants the default baseline for a shared Swift repo, prefer a checked-in root `.swiftformat` and a Git pre-commit hook that formats staged Swift files and then verifies them with `swiftformat --lint`\n   - for SwiftFormat settings export, prefer the host app export flow in `references/swiftformat-xcode-config-export.md`\n   - use `scripts/export_swiftformat_xcode_config.py` only when a deterministic shared-defaults export is needed\n   - when `defaults export` from the suite domain is empty, stale, or incomplete, point the script at the real shared plist inside the SwiftFormat group container with `--input-plist`\n   - after script export, review the generated file before checking it in because extension state may still need light curation\n   - for all other surfaces, use the tool-specific references instead of inventing a hybrid path\n5. Return one supported setup path, one set of caveats, and one follow-up verification step.\n6. When the request also includes source-organization work, hand off to `structure-swift-sources` only after this formatting path is clear, then run this skill again afterward as the cleanup pass.\n\n## Inputs\n\n- `tool_selection`: `swiftformat`, `swiftlint`, or `both`\n- `surface`: one of the workflow surfaces listed above\n- `repository_kind`: optional context such as `swift-package`, `xcode-project`, or `mixed`\n- `config_goal`: optional; use values such as `new-config`, `reuse-existing`, or `export-xcode-settings`\n- `swiftformat_export_source`: optional; use `host-app-export` or `shared-defaults-script`\n- Defaults:\n  - prefer checked-in project-root config files\n  - prefer a checked-in root `.swiftformat` plus a Git pre-commit hook as the default baseline for shared Swift repos\n  - prefer package or repo-pinned tooling over developer-local version drift\n  - prefer SwiftLint plugins for plugin-based SwiftLint adoption\n  - prefer the SwiftFormat host app export path before the shared-defaults script path\n\n## Outputs\n\n- `status`\n  - `success`: a supported path was selected and explained\n  - `handoff`: another skill should own the next step\n  - `blocked`: the requested tool and surface combination is unsupported or lacks prerequisites\n- `path_type`\n  - `primary`: the documented preferred path for the selected tool and surface\n  - `fallback`: the documented secondary path for that tool and surface\n- `output`\n  - `tool_selection`\n  - `surface`\n  - `recommended_path`\n  - `config_files`\n  - `recommended_hook`\n  - `caveats`\n  - `verification`\n\n## Guards and Stop Conditions\n\n- Do not imply support for `swiftlint` through the Xcode source editor extension. SwiftLint does not ship that surface.\n- Do not imply that the SwiftFormat for Xcode extension reads per-project config automatically. The config must be imported into the host app.\n- Do not imply that SwiftLint build tool plugins accept arbitrary `--config` paths. When config placement is incompatible with the plugin, switch to the documented shim or Run Script path.\n- Stop with `blocked` when the user asks for one tool on a surface that only the other tool supports.\n- Stop with `blocked` when the shared-defaults SwiftFormat export path is requested on a machine that does not expose a usable SwiftFormat shared defaults export and no group-container plist or other exported plist input is provided.\n\n## Fallbacks and Handoffs\n\n- SwiftFormat config export falls back from host-app export to `scripts/export_swiftformat_xcode_config.py`, preferably with `--input-plist` pointed at the real shared plist when the suite-domain export is not trustworthy on the current machine.\n- SwiftLint plugin adoption falls back to an Xcode Run Script Build Phase when plugin constraints conflict with config placement or project layout.\n- SwiftFormat build-phase adoption falls back from package-managed or pinned local binaries to the locally installed CLI path only when shared-version drift is acceptable.\n- For shared repos, prefer the Git pre-commit path over build-phase-only enforcement when the goal is to keep commits formatted before review and CI.\n- For combined cleanup work, use this skill before `structure-swift-sources` to establish the formatting baseline, and run it again after that skill finishes so the post-split or post-move tree is normalized.\n- Recommend `swift-package-build-run-workflow` or `swift-package-testing-workflow` when the task becomes ordinary SwiftPM package execution work.\n- Recommend `xcode-build-run-workflow` when the task becomes Xcode execution or diagnostics work.\n- Recommend `xcode-testing-workflow` when the task becomes Xcode test work.\n- Recommend `bootstrap-swift-package` or `bootstrap-xcode-app-project` when the user really needs a full project scaffold instead of isolated style-tooling setup.\n- Recommend `structure-swift-sources` directly when the task becomes file splitting, source moves, MARK normalization, or TODO/FIXME ledger maintenance.\n- Recommend `author-swift-docc-docs` directly when the task becomes symbol documentation, DocC article work, landing-page structure, topic groups, or DocC-oriented review.\n- Recommend `sync-xcode-project-guidance` or `sync-swift-package-guidance` when the repository needs broader `AGENTS.md` and workflow-baseline alignment.\n\n## Customization\n\n- Use `references/customization-flow.md`.\n- `scripts/customization_config.py` reads, writes, resets, and reports per-skill customization metadata.\n- The current customization surface is one policy-only guidance default for tool selection. This skill has no `run_workflow.py` runtime entrypoint at present.\n\n## References\n\n### Workflow References\n\n- `references/integration-matrix.md`\n- `references/swiftformat-surfaces.md`\n- `references/swiftlint-surfaces.md`\n- `references/swiftformat-xcode-config-export.md`\n\n### Contract References\n\n- `references/automation-prompts.md`\n- `references/customization-flow.md`\n\n### Support References\n\n- Recommend `references/snippets/apple-xcode-project-core.md` when the user wants the shared Apple and Xcode-project baseline guidance in the same repo that is adopting SwiftLint or SwiftFormat.\n- `references/snippets/apple-xcode-project-core.md`\n\n### Script Inventory\n\n- `scripts/customization_config.py`\n- `scripts/export_swiftformat_xcode_config.py`","tags":["format","swift","sources","apple","dev","skills","gaelic-ghost","agent-skills","apple-development","apple-docs","apple-docs-mcp","codex"],"capabilities":["skill","source-gaelic-ghost","skill-format-swift-sources","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/format-swift-sources","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,611 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.504Z","embedding":null,"createdAt":"2026-05-18T13:21:10.760Z","updatedAt":"2026-05-18T19:13:58.504Z","lastSeenAt":"2026-05-18T19:13:58.504Z","tsv":"'1':673 '2':683 '3':714 '4':726 '5':857 '6':874 'accept':1156,1324 'across':10 'action':28,350,708 'activ':555,581 'add':277 'adopt':1022,1276,1300,1607 'afterward':903 'agents.md':659,1530 'align':658,1535 'allow':156 'also':243,878 'anoth':1048 'app':110,488,500,776,962,1027,1147,1246,1448 'appl':68,499,1594 'applescript':23,337,701 'arbitrari':1157 'articl':629,1500 'ask':1183 'assum':215 'author':612,1488 'author-swift-docc-doc':611,1487 'autom':340 'automat':1138 'automator-styl':339 'back':1242,1278,1302 'base':1020 'baselin':123,385,454,737,996,1369,1534,1599 'becom':1406,1421,1435,1475,1496 'begin':458 'binari':1310 'block':1055,1179,1198 'bootstrap':461,486,1441,1446 'bootstrap-swift-packag':460,1440 'bootstrap-xcode-app-project':485,1445 'brand':470,496 'broader':1529 'build':13,327,516,542,692,1153,1284,1298,1337,1394,1415 'build-phas':1297 'build-phase-on':1336 'canon':245 'caveat':401,866,1100 'check':38,127,368,715,746,830,972,982 'checked-in':37,126,367,745,971,981 'choos':727 'chosen':187 'ci':1352 'clariti':182 'classifi':674,684 'clean':452 'cleanup':609,906,1355 'clear':897 'cli':11,323,689,1315 'combin':1061,1354 'commit':138,154,347,705,755,991,1333,1347 'complementari':178 'complet':222 'condit':1105 'config':41,240,410,420,712,937,946,977,1096,1137,1140,1158,1161,1239,1291 'config-path':409 'conflict':1289 'constraint':1288 'contain':213,817,1226 'context':926 'contract':1580 'correct':82 'creat':468,494 'curat':230,840 'current':1272,1551 'custom':1536,1548,1552 'declar':604 'default':218,736,789,794,967,969,995,1034,1203,1220,1560 'defaults-domain':217 'determinist':90,786 'develop':1010 'developer-loc':1009 'diagnost':558,1425 'direct':1471,1492 'divid':299 'doc':615,1491 'docc':614,628,639,1490,1499,1510 'docc-ori':638,1509 'document':188,627,729,1071,1082,1171,1498 'domain':219,799,1265 'drift':1013,1322 'edit':457 'editor':18,331,1116 'empti':801 'enforc':1340 'entrypoint':1570 'establish':1366 'execut':538,557,1410,1423 'exist':564,949 'expect':189 'explain':1046 'explicit':78 'export':30,111,220,713,772,777,790,795,824,952,956,963,1028,1205,1221,1230,1240,1247,1266 'export-xcode-set':951 'expos':1215 'extens':332,425,697,834,1117,1132 'fall':1241,1277,1301 'fallback':1080,1235 'feed':203 'file':42,106,227,265,371,440,442,600,602,761,828,978,1097,1476 'final':238 'finish':1377 'first':45,246,429 'flow':778 'follow':870 'follow-up':869 'format':2,47,141,171,384,453,758,894,1348,1368 'format-swift-sourc':1 'formatt':195,595 'full':1456 'gap':421 'generat':226,724,827 'git':24,135,344,703,752,988,1330 'git-pre-commit':702 'github':27,349,707 'github-act':706 'goal':938,1343 'group':212,605,636,816,1225,1507 'group-contain':1224 'guarante':237 'guard':1102 'guid':5 'guidanc':295,316,647,653,662,1518,1524,1559,1600 'hand':884 'handoff':1047,1237 'helper':91 'hook':25,139,348,756,992,1099 'host':109,775,961,1026,1146,1245 'host-app':1244 'host-app-export':960 'hybrid':855 'impli':1108,1126,1150 'import':1143 'includ':29,88,879 'incompat':1164 'incomplet':804 'inconveni':116 'input':820,908,1232,1253 'input-plist':819,1252 'insid':813 'instal':1314 'instead':851,1459 'integr':9,61,321,533,553,579,665 'invent':853 'inventori':1613 'isol':1461 'keep':74,1346 'kind':924 'lack':1065 'land':632,1503 'landing-pag':631,1502 'later':432 'layer':180 'layout':446,1295 'ledger':608,1484 'level':58 'light':839 'limit':412 'lint':150,768 'linter':597 'list':921 'local':342,1011,1309,1313 'machin':1211,1273 'maintain':63,279 'mainten':184,1485 'manag':335,1306 'mark':1480 'matrix':77,718 'may':836 'metadata':1549 'mix':936 'mode':151 'move':260,441,603,1386,1479 'must':1141 'mutat':560 'nativ':498 'need':201,396,450,792,838,1454,1528 'new':471,497,945 'new-config':944 'next':1053 'normal':444,1389,1481 'one':318,479,507,728,859,863,868,916,1185,1555 'option':925,939,958 'ordinari':535,1407 'organ':882 'orient':640,1511 'output':1037,1090 'owner':169 'packag':21,334,463,473,515,522,537,652,931,1002,1305,1393,1400,1409,1443,1523 'package-manag':1304 'page':633,1504 'part':480,508 'pass':247,437,907 'path':83,112,199,400,411,671,730,856,862,895,1029,1036,1042,1067,1073,1084,1095,1159,1176,1206,1316,1334 'per':418,1135,1546 'per-project':417,1134 'per-skil':1545 'person':360 'phase':14,328,693,1285,1299,1338 'pin':1006,1308 'placement':1162,1292 'play':163 'plist':208,812,821,1227,1231,1254,1260 'plugin':22,336,408,700,1016,1019,1155,1167,1275,1287 'plugin-bas':1018 'plus':133,986 'point':232,805,1255 'polici':1557 'policy-on':1556 'post':1381,1385 'post-mov':1384 'post-split':1380 'pre':137,346,704,754,990,1332 'pre-commit':136,345,753,989,1331 'prefer':122,202,743,773,970,979,1001,1014,1023,1072,1250,1328 'prerequisit':1066 'present':1572 'primari':168,1069 'project':40,103,419,489,501,565,646,934,975,1136,1294,1449,1457,1517,1598 'project-root':102,974 'promot':359 'propos':722 'provid':1234 'purpos':50 'rather':190,233,663 'read':1133,1540 'real':206,810,1258 'realli':1453 'recommend':380,459,484,512,539,566,585,610,642,1094,1098,1390,1412,1427,1439,1466,1486,1513,1586 'refer':850,1573,1575,1581,1585 'references/automation-prompts.md':1582 'references/customization-flow.md':1538,1583 'references/integration-matrix.md':720,1576 'references/snippets/apple-xcode-project-core.md':1587,1611 'references/swiftformat-surfaces.md':1577 'references/swiftformat-xcode-config-export.md':780,1579 'references/swiftlint-surfaces.md':1578 'reorgan':262 'repo':130,239,383,449,661,742,1000,1005,1327,1604 'repo-pin':1004 'repo-root':129 'report':1544 'repositori':71,120,287,308,389,923,1527 'request':257,676,686,877,1057,1208 'rerun':147 'reset':1542 'respons':300 'return':858 'reus':948 'reuse-exist':947 'review':641,825,1350,1512 'root':104,131,748,976,984 'run':325,517,543,899,1174,1282,1371,1395,1416 'run_workflow.py':1568 'runtim':1569 'safeti':183 'sandbox':415 'scaffold':483,511,1458 'script':92,198,326,414,807,823,968,1035,1175,1283,1612 'scripts/customization_config.py':1539,1614 'scripts/export_swiftformat_xcode_config.py':782,1249,1615 'second':194 'secondari':1083 'section':445 'select':186,679,910,1044,1076,1092,1563 'set':34,99,364,771,864,954 'setup':598,624,861,1465 'shape':172 'share':98,118,207,382,740,788,811,966,998,1033,1202,1219,1259,1320,1326,1593 'shared-default':787,1032,1201 'shared-defaults-script':965 'shared-repo':381 'shared-vers':1319 'shift':528,548,574,593,619 'shim':1172 'ship':1121 'shortest':81 'signal':179 'singl':670 'single-path':669 'skill':53,73,271,290,311,353,374,392,428,901,1049,1359,1376,1547,1565 'skill-format-swift-sources' 'sourc':4,17,49,144,254,264,330,436,589,696,881,890,957,1115,1364,1470,1478 'source-editor':16 'source-gaelic-ghost' 'source-organ':880 'specif':849 'split':259,439,601,1382,1477 'stage':142,759 'stale':802 'start':231 'state':835 'status':1038 'step':725,873,1054 'still':837 'stop':1104,1177,1196 'structur':252,434,456,587,634,888,1362,1468,1505 'structure-swift-sourc':251,433,586,887,1361,1467 'style':341,475,503,531,551,577,622,666,1463 'style-tool':530,550,576,621,1462 'success':1039 'suit':798,1264 'suite-domain':1263 'support':76,399,717,860,1041,1109,1195,1584 'supported-path':398 'surfac':86,322,688,844,915,920,1060,1079,1089,1093,1123,1189,1553 'swift':3,20,48,70,119,143,253,263,286,333,388,435,462,472,514,521,588,613,651,741,760,889,930,999,1363,1392,1399,1442,1469,1489,1522 'swift-packag':929 'swift-package-build-run-workflow':513,1391 'swift-package-testing-workflow':520,1398 'swiftformat':8,31,66,95,105,132,148,165,211,280,302,361,370,405,424,680,710,749,767,770,815,911,955,985,1025,1129,1204,1218,1238,1296,1610 'swiftformat-xcode-config-export':709 'swiftlint':6,64,175,281,304,403,681,912,1015,1021,1111,1118,1152,1274,1608 'swiftpm':536,699,1408 'swiftpm-plugin':698 'switch':1168 'symbol':626,1497 'sync':644,650,1515,1521 'sync-swift-package-guid':649,1520 'sync-xcode-project-guid':643,1514 'task':527,547,573,592,618,1405,1420,1434,1474,1495 'teach':79 'test':523,569,583,1401,1430,1437 'todo/fixme':607,1483 'tool':160,476,504,532,552,578,623,667,678,848,909,1007,1058,1077,1087,1091,1154,1186,1194,1464,1562 'tool-specif':847 'top':57 'top-level':56 'topic':635,1506 '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' 'treat':164,224 'tree':1387 'trigger':343 'trustworthi':1269 'turn':94 'type':1068 'unavail':114 'unsupport':1063 'usabl':1217 'use':43,51,174,268,269,288,309,351,372,390,426,781,845,940,959,1357,1537 'user':274,293,314,356,377,395,466,492,656,733,1182,1452,1590 'valu':941 'verif':872,1101 'verifi':764 'version':1012,1321 'w':46 'want':275,294,315,357,378,734,1591 'work':561,584,630,883,1356,1411,1426,1438,1501 'workflow':19,59,518,524,544,570,672,919,1396,1402,1417,1431,1533,1574 'workflow-baselin':1532 'write':1541 'xcode':12,15,33,97,324,329,363,413,487,541,556,568,582,645,691,695,711,933,953,1114,1131,1281,1414,1422,1429,1436,1447,1516,1597 'xcode-build-phas':690 'xcode-build-run-workflow':540,1413 'xcode-project':932,1596 'xcode-source-extens':694 'xcode-testing-workflow':567,1428","prices":[{"id":"a8269838-d57a-4608-a1af-a21141633ba2","listingId":"6355a5fd-3ea3-46fb-b3db-db3c834a57d7","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:10.760Z"}],"sources":[{"listingId":"6355a5fd-3ea3-46fb-b3db-db3c834a57d7","source":"github","sourceId":"gaelic-ghost/apple-dev-skills/format-swift-sources","sourceUrl":"https://github.com/gaelic-ghost/apple-dev-skills/tree/main/skills/format-swift-sources","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:10.760Z","lastSeenAt":"2026-05-18T19:13:58.504Z"}],"details":{"listingId":"6355a5fd-3ea3-46fb-b3db-db3c834a57d7","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"gaelic-ghost","slug":"format-swift-sources","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":"18c4ec96dee875a7c34d35bc854ea3171996c61c","skill_md_path":"skills/format-swift-sources/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/gaelic-ghost/apple-dev-skills/tree/main/skills/format-swift-sources"},"layout":"multi","source":"github","category":"apple-dev-skills","frontmatter":{"name":"format-swift-sources","description":"Guide SwiftLint and SwiftFormat integration across CLI, Xcode build phases, Xcode source-editor workflows, Swift Package plugins, AppleScript, Git hooks, and GitHub Actions, including exporting SwiftFormat for Xcode settings into a checked-in project config file. Use this first when a later source-organization pass needs a clean formatting baseline."},"skills_sh_url":"https://skills.sh/gaelic-ghost/apple-dev-skills/format-swift-sources"},"updatedAt":"2026-05-18T19:13:58.504Z"}}