CorvidLabs Swift Package
Use this skill for a Swift package owned by CorvidLabs. It is a shared operating baseline,
not a substitute for product CLIs. The repository's AGENTS.md, Package.swift, local
skills, and CI configuration win whenever they are more specific.
Discover before changing code
Start with the repository's instructions and Fledge surface. Use the native task or lane when
one exists; use fledge introspect, fledge --help, fledge run --list, or
fledge plugins list before falling back to direct swift or git commands. Read the
affected target, tests, platform conditions, and public API before proposing a change.
Preserve package guarantees
- Give every type, extension, member, and other declaration that admits access control an
explicit applicable level (
open, public, package, internal, fileprivate, or
private). Use open only for externally subclassable or overridable API and package
only for package-scoped implementation API. Public API is explicit and documented. Local
declarations do not admit access modifiers.
- Prefer descriptive generic parameters (
Value, Output, Key) over single letters.
- Treat Swift 6 strict concurrency as a design constraint. Values shared across isolation
domains are
Sendable; ownership-transferred values may use Swift's sending and
region-based isolation. Isolate mutable state with actors by default, or use a safe
synchronization primitive when the repository's synchronous API requires one. Asynchronous
APIs use async/await. For a Swift-5.9-compatible manifest, enable complete checking with
swiftSettings: [.enableExperimentalFeature("StrictConcurrency")], but do not treat warnings
in Swift 5 language mode as a release gate. Prefer Swift 6 tools / language mode; require a
Swift 6 language-mode build, or an explicit warnings-as-errors CI equivalent, so concurrency
violations fail verification.
- Never use force unwrap (
!), try!, or as! in library code. Do not use callback APIs
or @unchecked Sendable merely to make a build pass. Test-only or explicitly documented
exceptions require review justification.
- Keep targets portable across the platforms declared in
Package.swift and actually
verified in CI. Read those sources before claiming multi-platform readiness—do not assume
Windows (or any platform) unless declared and gated. When non-macOS platforms are claimed,
do not treat a macOS-only build as a release gate.
- Prefer Apple frameworks and minimal dependencies; do not add a package dependency when the
platform already provides the capability.
Verify the actual release surface
Run the repository's Fledge test/release lane first. Cover the changed behavior with focused
tests, then run the package's required cross-platform or CI-equivalent lane before publishing.
Check the release artifact and public documentation when an exported API, platform support, or
version changes.
Keep reviews actionable
In a PR, state the changed contract, platform/concurrency impact, and exact validation run.
If the package has a generated Spec Sync skill, use it for the change record and bidirectional
checks; this skill does not replace that lifecycle. For push/tag evidence language, use
ci-release-hygiene.
1---2name: corvid-swift-package3description: Build, modify, test, review, or release CorvidLabs Swift packages with Fledge-first and Swift 6 discipline.4---56# CorvidLabs Swift Package78Use this skill for a Swift package owned by CorvidLabs. It is a shared operating baseline,9not a substitute for product CLIs. The repository's `AGENTS.md`, `Package.swift`, local10skills, and CI configuration win whenever they are more specific.1112## Discover before changing code1314Start with the repository's instructions and Fledge surface. Use the native task or lane when15one exists; use `fledge introspect`, `fledge --help`, `fledge run --list`, or16`fledge plugins list` before falling back to direct `swift` or `git` commands. Read the17affected target, tests, platform conditions, and public API before proposing a change.1819## Preserve package guarantees2021- Give every type, extension, member, and other declaration that admits access control an22 explicit applicable level (`open`, `public`, `package`, `internal`, `fileprivate`, or23 `private`). Use `open` only for externally subclassable or overridable API and `package`24 only for package-scoped implementation API. Public API is explicit and documented. Local25 declarations do not admit access modifiers.26- Prefer descriptive generic parameters (`Value`, `Output`, `Key`) over single letters.27- Treat Swift 6 strict concurrency as a design constraint. Values shared across isolation28 domains are `Sendable`; ownership-transferred values may use Swift's `sending` and29 region-based isolation. Isolate mutable state with actors by default, or use a safe30 synchronization primitive when the repository's synchronous API requires one. Asynchronous31 APIs use `async`/`await`. For a Swift-5.9-compatible manifest, enable complete checking with32 `swiftSettings: [.enableExperimentalFeature("StrictConcurrency")]`, but do not treat warnings33 in Swift 5 language mode as a release gate. Prefer Swift 6 tools / language mode; require a34 Swift 6 language-mode build, or an explicit warnings-as-errors CI equivalent, so concurrency35 violations fail verification.36- **Never** use force unwrap (`!`), `try!`, or `as!` in library code. Do not use callback APIs37 or `@unchecked Sendable` merely to make a build pass. Test-only or explicitly documented38 exceptions require review justification.39- Keep targets portable across the platforms **declared in `Package.swift` and actually40 verified in CI**. Read those sources before claiming multi-platform readiness—do not assume41 Windows (or any platform) unless declared and gated. When non-macOS platforms are claimed,42 do not treat a macOS-only build as a release gate.43- Prefer Apple frameworks and minimal dependencies; do not add a package dependency when the44 platform already provides the capability.4546## Verify the actual release surface4748Run the repository's Fledge test/release lane first. Cover the changed behavior with focused49tests, then run the package's required cross-platform or CI-equivalent lane before publishing.50Check the release artifact and public documentation when an exported API, platform support, or51version changes.5253## Keep reviews actionable5455In a PR, state the changed contract, platform/concurrency impact, and exact validation run.56If the package has a generated Spec Sync skill, use it for the change record and bidirectional57checks; this skill does not replace that lifecycle. For push/tag evidence language, use58`ci-release-hygiene`.