Back to list
johnrogers

sqlite-data

by johnrogers

A collection of agents and skills to aid in the planning, implementation, documentation and testing of Swift/TCA code.

63🍴 3📅 Jan 23, 2026

SKILL.md


name: sqlite-data description: Use when working with SQLiteData library (@Table, @FetchAll, @FetchOne macros) for SQLite persistence, queries, writes, migrations, or CloudKit private database sync.

SQLite Data

SQLiteData provides type-safe SQLite access through Swift macros, simplifying database modeling and queries while handling CloudKit sync, migrations, and async patterns automatically.

Reference Loading Guide

ALWAYS load reference files if there is even a small chance the content may be required. It's better to have the context than to miss a pattern or make a mistake.

ReferenceLoad When
Table ModelsDefining tables with @Table, setting up primary keys, columns, or enums
Queries - BasicsUsing @FetchAll, @FetchOne, @Selection, filtering, ordering, or joins
Queries - AdvancedUsing @Fetch with FetchKeyRequest, dynamic queries, recursive CTEs, or direct reads
WritesInserting, updating, upserting, deleting records, or managing transactions
Views - SwiftUIUsing @FetchAll/@FetchOne in SwiftUI views, @Observable models, or animations
Views - IntegrationUIKit integration, dynamic query loading, TCA integration, or observe {}
MigrationsCreating database migrations with DatabaseMigrator or #sql() macro
CloudKit SyncSetting up CloudKit private database sync, sharing, or sync delegates
DependenciesInjecting database/sync engine via @Dependency, bootstrap patterns, or TCA integration
TestingSetting up test databases, seeding data, or writing assertions for SQLite code
Advanced - QueriesImplementing triggers, custom database functions, or full-text search (FTS5)
Advanced - OptimizationPerformance tuning, indexes, custom aggregates, JSON aggregation, or self-joins
Schema CompositionUsing @Selection column groups, single-table inheritance, or database views

Core Workflow

When working with SQLiteData:

  1. Define table models with @Table macro
  2. Use @FetchAll/@FetchOne property wrappers in views or @Observable models
  3. Access database via @Dependency(\.defaultDatabase)
  4. Perform writes in database.write { } transactions
  5. Set up migrations before first use

Common Mistakes

  1. N+1 query patterns — Loading records one-by-one in a loop (e.g., fetching user then fetching all their posts separately) kills performance. Use joins or batch fetches instead.

  2. Missing migrations on schema changes — Modifying @Table without creating a migration causes crashes at runtime. Always create migrations for schema changes before deploying.

  3. Improper transaction handling — Long-running transactions outside of database.write { } block can cause deadlocks or data loss. Keep write blocks short and focused.

  4. Ignoring CloudKit sync delegates — Setting up CloudKit sync without implementing SyncDelegate means you miss error handling and conflict resolution. Implement all delegate methods for production.

  5. Over-fetching in SwiftUI views — Using @FetchAll without filtering/limiting can load thousands of records, freezing the UI. Use predicates, limits, and sorting to keep in-memory footprint small.

Score

Total Score

70/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon