progressions
π―Skillfrom alexanderop/workouttracker
Tracks and automatically advances kettlebell swing progressions through reps, time, and weight phases using an EMOM timer.
Installation
npx skills add https://github.com/alexanderop/workouttracker --skill progressionsSkill Details
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".
Overview
# 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
```ts
// 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
```ts
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'
```
More from this repository7
Helps product owners and business analysts streamline product planning by creating, refining, and prioritizing user stories, PRDs, backlogs, and roadmaps.
Generates high-quality Vue 3 composables by following established patterns and best practices for creating reusable Composition API logic.
Enables comprehensive Vue 3 integration testing using Vitest Browser Mode and Page Objects for verifying complex user flows and multi-component interactions.
Enables adding new exercises to the workout tracker database by specifying exercise details like name, equipment, muscle group, type, and tracking metrics.
vue-composable-testing skill from alexanderop/workouttracker
Provides comprehensive Vitest mocking strategies for creating test doubles, replacing dependencies, and verifying interactions in JavaScript/TypeScript tests.
Enhance mobile app accessibility by generating clear, context-aware notifications with screen reader compatibility and adaptive formatting.