From 2a348da07de981f9fee359ca9ccc885f67c93f0d Mon Sep 17 00:00:00 2001 From: Yogesh Rao Date: Wed, 22 Apr 2026 11:42:17 +0530 Subject: [PATCH 1/2] feat: improve skill scores for apple-engineer-superpowers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hey 👋 @piemonte I ran your skills through `tessl skill review` at work and found some targeted improvements. Here's the full before/after: | Skill | Before | After | Change | |-------|--------|-------|--------| | apple-engineer-superpowers | 89% | 95% | +6% |
Changes made - Added executable code examples for three key patterns: actor definition, `@MainActor` ViewModel with `@Published`, and `AsyncStream` usage — these directly address the actionability gap the reviewer flagged - Added a 5-step Swift 6 strict concurrency workflow with a verification checkpoint (enable → fix Sendable warnings → isolate state → ensure `@Sendable` closures → verify) - No changes to existing content, frontmatter, or reference files — purely additive
Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch - just saw room for improvement and wanted to contribute. Want to self-improve your skills? Just point your agent (Claude Code, Codex, etc.) at [this Tessl guide](https://docs.tessl.io/evaluate/optimize-a-skill-using-best-practices) and ask it to optimize your skill. Ping me - [@yogesh-tessl](https://github.com/yogesh-tessl) - if you hit any snags. Thanks in advance 🙏 --- SKILL.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/SKILL.md b/SKILL.md index 58dc19b..e9dc138 100644 --- a/SKILL.md +++ b/SKILL.md @@ -104,6 +104,64 @@ enum ServiceError: LocalizedError, Sendable { | Combine to async | `publisher.sinkSingleValue() async throws` | | Custom defaults | `@DefaultValue` property wrapper | +## Key Patterns + +### Actor Definition + +```swift +actor DataStore { + private var cache: [String: Data] = [:] + + func fetch(_ key: String) async throws -> Data { + if let cached = cache[key] { return cached } + let data = try await URLSession.shared.data(from: endpoint(for: key)).0 + cache[key] = data + return data + } +} +``` + +### @MainActor ViewModel + +```swift +@MainActor +final class ItemListViewModel: ObservableObject { + @Published private(set) var items: [Item] = [] + @Published private(set) var isLoading = false + private let store: DataStore + + init(store: DataStore) { self.store = store } + + func load() async { + isLoading = true + defer { isLoading = false } + items = (try? await store.fetchItems()) ?? [] + } +} +``` + +### AsyncStream Usage + +```swift +func progressUpdates() -> AsyncStream { + AsyncStream { continuation in + let observer = progress.observe(\.fractionCompleted) { p, _ in + continuation.yield(Float(p.fractionCompleted)) + if p.isFinished { continuation.finish() } + } + continuation.onTermination = { _ in observer.invalidate() } + } +} +``` + +### Swift 6 Strict Concurrency Workflow + +1. Enable in `Package.swift`: `swiftSettings: [.enableExperimentalFeature("StrictConcurrency")]` +2. Build — fix `Sendable` warnings: mark value types `Sendable`, use `@MainActor` for UI state +3. Isolate shared mutable state in `actor` types or `Mutex` +4. Ensure closures crossing isolation boundaries are `@Sendable` +5. Verify: build with no warnings → run tests → check for runtime isolation violations in Console + ## Detailed References - **swift-concurrency.md** — Swift 6 concurrency patterns: actors, Sendable, AsyncSequence, task cancellation, synchronization, state machines, reactive patterns, generics, persistence, networking, testing, diagnostics From a83f0e1f0c73106a3dc44d119157f120265ec154 Mon Sep 17 00:00:00 2001 From: Yogesh Rao Date: Wed, 22 Apr 2026 12:55:55 +0530 Subject: [PATCH 2/2] ci: add skill-review GitHub Action for automated skill review on PRs --- .github/workflows/skill-review.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/skill-review.yml diff --git a/.github/workflows/skill-review.yml b/.github/workflows/skill-review.yml new file mode 100644 index 0000000..f0ab779 --- /dev/null +++ b/.github/workflows/skill-review.yml @@ -0,0 +1,13 @@ +name: Skill Review +on: + pull_request: + paths: ['**/SKILL.md'] +jobs: + review: + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: read + steps: + - uses: actions/checkout@v4 + - uses: tesslio/skill-review@22e928dd837202b2b1d1397e0114c92e0fae5ead # main