Skip to content
Agentmart
Submit a tool

trove-swift

Swift 6 and SwiftUI coding conventions for iOS development.

Skill by bravew

IndexedMIT★ 10
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/bravew-trove-swift

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

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 cases: testing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/trove-swift

What's inside

Skill 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.
License
MIT
Instructions
67 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

<!-- 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)

```swift
@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)

```swift
// Parallel fetching
async let user = fetchUser(id)
async let posts = fetchPosts(userId: id)
let (userData, postsData) = try await (user, posts)
```

## NavigationStack

```swift
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 `throws` where 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**: `@Observable` replaces `ObservableObject` in Swift 5.9+
- **SwiftUI previews**: Use `#Preview` macro instead of `PreviewProvider`

From bravew/trove, MIT.

More from bravew/trove

Signals

Stars
10
Forks
1
Open issues
0
Last commit (this folder)
Sep 10, 2026 (1 month ago)
Last release
Oct 8, 2026 (21 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from bravew

Cite this page

trove-swift skill. Agent Mart. https://agentmart.dev/skills/bravew-trove-swift (last updated 2026-10-24)