Develop and maintain LapBuddy, a native iOS swimming lap counter/stopwatch app built with SwiftUI and CoreData. Track laps, times, and rest intervals with haptic feedback and analytics.
Develop and maintain LapBuddy, a native iOS swimming lap counter/stopwatch app built with SwiftUI. The app helps swimmers track laps, times, and rest intervals during swim sessions with haptic feedback and detailed analytics.
LapBuddy is an Xcode project (`LapBuddy.xcodeproj`) using:
The app's session logic is managed by a `CounterState` enum in `Counter.swift`:
1. **reset** → start → **running**
2. **running** → pause → **paused** OR add lap → **running** OR auto-complete → **completed**
3. **paused** → resume → **running** OR reset → **reset**
4. **completed** → reset → **reset**
Each state has associated UI colors via `CounterState.modeColor` computed property.
**Counter.swift** (ViewModel)
**CounterView.swift** (Main UI)
- `BigDisplayView`: Lap progress (completed/remaining)
- `CounterStatsView`: Current/last/average/fastest lap statistics
- `StopwatchView`: Animated analog stopwatch with visual feedback
- State-dependent action buttons (start/pause/resume/lap/reset)
**Data Persistence**
TabView with 4 main tabs:
1. **Counter**: Main stopwatch interface
2. **Logbook** (`LogbookView`): Historical session data
3. **Analysis** (`AnalysisView`): Session analytics with charts
4. **Settings** (`SettingsView`): App configuration
1. **Ignore Legacy Code**: The `__attic__/` directory contains deprecated files. Always use current implementations in main directories.
2. **Use Current Counter.swift**: Do not reference or import patterns from legacy counter implementations.
**IMPORTANT**: Unless explicitly instructed otherwise, on every commit:
1. Update `RELEASE-NOTES.md` with technical changes
2. Update `PUBLIC-RELEASE-NOTES.md` with user-facing changes
3. Update key features list in `README.md` when major features are added
4. Perform a git push
5. **Do NOT include** references to Claude Code as co-author in commit messages
1. Identify which layer requires changes (ViewModel, View, Data)
2. Update `Counter.swift` if session logic is affected
3. Modify appropriate View files for UI changes
4. Update CoreData model if persistence schema changes
5. Add/update `@AppStorage` properties in `PersistedSettings` for new preferences
6. Update documentation files as per commit process above
1. Review `CounterState` enum in `Counter.swift`
2. Add new state or transition logic
3. Update `modeColor` computed property if visual changes needed
4. Test all state transitions end-to-end
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/lapbuddy-ios-swimming-tracker/raw