progressions
SKILL.md
Progressions Feature
Kettlebell swing progression tracker with automatic advancement through reps → time → weight.
Progression Algorithm
- Start: X kg, 10 reps, 10 min EMOM
- Each completed session: +2 reps (until 20)
- At 20 reps: +2 min per session (until 20 min)
- At 20 reps & 20 min: next kettlebell, reset to 10 reps & 10 min
- User confirms completion after each session
10 reps → 12 → 14 → 16 → 18 → 20 reps
↓
10 min → 12 → 14 → 16 → 18 → 20 min
↓
Next kettlebell
Reset to 10/10
Key Files
| File | Purpose |
|---|---|
lib/progressionLogic.ts |
Pure functions: calculateNextLevel, getCurrentLevel, getProgressionPhase |
composables/useProgressions.ts |
List all progressions |
composables/useProgression.ts |
Single progression detail + session history |
composables/useProgressionForm.ts |
Create progression form state |
composables/useProgressionSession.ts |
Active EMOM session with timer |
Database
Tables: progressions, progressionSessions (Dexie v5)
Repository: getProgressionsRepository() from @/db
Usage
// List progressions
const { state, reload } = useProgressions()
// Single progression
const { progression, level, progress, sessions } = useProgression(id)
// Create form
const { name, selectedWeights, toggleWeight, save } = useProgressionForm()
// Active session
const { level, currentMinute, startTimer, completeSession } = useProgressionSession(id)
Progression Logic API
import {
calculateNextLevel,
getCurrentLevel,
getProgressionPhase
} from '@/features/progressions/lib/progressionLogic'
// Get current level from session history
const level = getCurrentLevel(sessions)
// { weight: 24, reps: 14, minutes: 10 }
// Calculate next level after completing session
const nextLevel = calculateNextLevel(currentLevel)
// { weight: 24, reps: 16, minutes: 10 }
// Get phase description
const phase = getProgressionPhase(level)
// 'reps' | 'time' | 'weight_reset'
Weekly Installs
9
Repository
alexanderop/wor…ttrackerGitHub Stars
10
First Seen
Jan 24, 2026
Security Audits
Installed on
claude-code6
opencode6
gemini-cli5
antigravity5
windsurf5
codex5