trove-swift
Swift 6 and SwiftUI coding conventions for iOS development. Auto-activates when working with Swift files. Covers @Observable, async/await, NavigationStack, Swift Testing, and accessibility. Use when: swift conventions; swiftui view; swift testing.
- License 许可
- MIT
- 所属仓库
- bravew/trove
- 最近更新
- 2026-11-12
- Stars
- ★ 10
- Forks
- 1
01 前言 Front Matter
- name
- trove-swift
- description
- Swift 6 and SwiftUI coding conventions for iOS development. Auto-activates when working with Swift files. Covers @Observable, async/await, NavigationStack, Swift Testing, and accessibility. Use when: swift conventions; swiftui view; swift testing.
03 SKILL.md 正文
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly --> <!-- Regenerate: bun run build:skills -->
Session Init
This skill ships Trove conventions. Prefer existing project patterns over generic best practices when they conflict.
Swift 6 / SwiftUI Conventions
@Observable (Preferred over ObservableObject)
@Observable
final class UserViewModel {
var name = ""
var isLoading = false
func load() async {
isLoading = true
defer { isLoading = false }
name = try await fetchUserName()
}
}
Use @Observable instead of ObservableObject + @Published in new code.
Async/Await
- Use structured concurrency (
async let,TaskGroup) - Annotate main-actor-bound code with
@MainActor - Use
Task { }only at boundaries (view lifecycle, button actions)
// Parallel fetching
async let user = fetchUser(id)
async let posts = fetchPosts(userId: id)
let (userData, postsData) = try await (user, posts)
NavigationStack
NavigationStack(path: $router.path) {
ContentView()
.navigationDestination(for: Route.self) { route in
switch route {
case .detail(let id): DetailView(id: id)
case .settings: SettingsView()
}
}
}
Error Handling
- Use typed
throwswhere possible - Define domain-specific error enums conforming to
LocalizedError - Never force-unwrap (
!) outside of tests
AI Gotchas
- Sendable: Mark types shared across concurrency domains as
Sendable - MainActor: UI updates must happen on
@MainActor - Observation:
@ObservablereplacesObservableObjectin Swift 5.9+ - SwiftUI previews: Use
#Previewmacro instead ofPreviewProvider
04 同仓库更多 Skills
using-trove
Skill discipline anchor for the Trove marketplace. Loaded once per session; routes the agent to the right trove-* skill before code, planning, review, or git actions.
trove-write-skill
Skill authoring workflow. Use when creating or updating a Codex or Trove skill, including rubrics, tasks, metadata, and validation.
trove-worktree
Git worktree workflow for spikes, risky experiments, and broad refactors that should not disturb the user's current branch.
trove-why
Reconstruct design rationale and decision history from evidence — source control, issue tracker (Linear), docs (Notion), chat (Slack), error tracking (Sentry) — with calibrated confidence. Use for "why does X work this way", "why did we pick Y", regressions, and postmortems. Use trove-explain for how it works now.
trove-verify
Completion verification workflow. Use before claiming done, fixed, complete, ready, or shipped.
trove-unslop
Cut AI tells from writing — PR descriptions, release notes, specs, commit bodies, and replies. Use before finalizing prose, or when the user asks to clean up, de-slop, or make text sound human.