progressions
9
总安装量
8
周安装量
#31393
全站排名
安装命令
npx skills add https://github.com/alexanderop/workouttracker --skill progressions
Agent 安装分布
claude-code
5
opencode
5
gemini-cli
4
antigravity
4
windsurf
4
codex
4
Skill 文档
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'