返回 Skill 列表
extension
分类: 开发与工程无需 API Key

progressions

壶铃摇摆进度跟踪器,通过重复次数、时间和重量阶段自动推进。使用EMOM计时器进行训练课程跟踪。适用于构建进度、记录完成的训练课程、计算下一个级别或设计训练进度时使用。触发词包括:“进度”、“壶铃”、“每分钟开始”、“进步”、“进度级别”、“摇摆进度”、“壶铃进步”、“追踪进度”、“记录课程”、“下一级别”、“进度阶段”、“自动推进”、“进度算法”、“设置进度”、“计时器”、“重复次数进度”、“时间进度”、“重量进度”、“进度表单”、“进度跟踪”。

person作者: jakexiaohubgithub

Progressions Feature

Kettlebell swing progression tracker with automatic advancement through reps → time → weight.

Progression Algorithm

  1. Start: X kg, 10 reps, 10 min EMOM
  2. Each completed session: +2 reps (until 20)
  3. At 20 reps: +2 min per session (until 20 min)
  4. At 20 reps & 20 min: next kettlebell, reset to 10 reps & 10 min
  5. 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'