progressions
Kettlebell swing progression tracker with automatic advancement through reps, time, and weight phases. EMOM timer for session tracking. Use when building progressions, logging completed sessions, calculating next levels, or designing training progressions. Triggers include "progression", "kettlebell", "EMOM", "advancement", "progression level", "swing progression", "kettlebell advancement", "track progress", "log session", "next level", "progression phase", "auto-advance", "progression algorithm", "set progression", "timer", "reps progression", "time progression", "weight progression", "progression form", "progression tracking".
When & Why to Use This Skill
This Claude skill provides a specialized kettlebell swing progression tracker that automates the advancement through reps, time, and weight phases. It features a built-in EMOM timer and a persistent database to log sessions, helping users maintain consistent progressive overload in their strength training routines through a data-driven algorithm.
Use Cases
- Automated Strength Progression: Seamlessly transition through training phases—from increasing reps to extending EMOM duration and eventually jumping to higher weight classes—based on completed session data.
- EMOM Workout Management: Execute and log Every Minute on the Minute (EMOM) sessions using the integrated timer to ensure strict adherence to workout structures and rest intervals.
- Training History & Analytics: Maintain a persistent digital record of completed kettlebell sessions to automatically calculate current levels and visualize long-term fitness milestones.
| name | progressions |
|---|---|
| description | Kettlebell swing progression tracker with automatic advancement through reps, time, and weight phases. EMOM timer for session tracking. Use when building progressions, logging completed sessions, calculating next levels, or designing training progressions. Triggers include "progression", "kettlebell", "EMOM", "advancement", "progression level", "swing progression", "kettlebell advancement", "track progress", "log session", "next level", "progression phase", "auto-advance", "progression algorithm", "set progression", "timer", "reps progression", "time progression", "weight progression", "progression form", "progression tracking". |
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'