swift-style
by contentstack
SwiftLint, Sources layout, Kanna/libxml2, platforms, naming, access control for all Swift in this repo.
npx skills add https://github.com/contentstack/contentstack-utils-swift --skill swift-styleSwift style and repo layout – Contentstack Utils Swift
When to use
- Editing any Swift under
Sources/orTests/. - Adding files or changing platform/deployment assumptions.
Tooling
- Run SwiftLint with
.swiftlint.yml. Do not relax rules for new code without team agreement. Sources/Kanna/is excluded from SwiftLint—do not copy patterns intoSources/ContentstackUtils/that would fail lint there.
Package layout
- Library code:
Sources/ContentstackUtils/. - Vendored Kanna:
Sources/Kanna/—treat as third-party unless you are deliberately upgrading the vendored copy; prefer fixes inContentstackUtilsor documented Kanna upgrades.
Platforms and libxml2
- Deployment targets: macOS 10.13+, iOS/tvOS 11+, watchOS 4+ (
Package.swift). Avoid newer SDK-only APIs without availability checks or a deliberate target bump. - libxml2: Apple platforms use system libxml where applicable; Linux uses the
libxml2system target andpkg-config. KeepModules/andPackage.swiftconditionals in sync when changing platform support.
Naming and API surface
- Swift conventions: types
UpperCamelCase, memberslowerCamelCase. - Preserve established public names even when imperfect (e.g. historical typos) unless doing a semver-major cleanup with maintainer agreement.
Imports and access control
import Foundationas needed; HTML parsing follows existing Kanna usage in this package.- Mark
public/openintentionally; keep implementationinternalorprivateunless tests use established@testablepatterns.
References
skills/framework/SKILL.md(SPM, podspec, CI)skills/testing/SKILL.md(lint exclusions in tests)