workout-domain — install workout-domain workout-domain, workoutTracker, community, install workout-domain, ide skills, block-based workout model, TypeScript workout domain, discriminated unions in workout-domain, workout-domain for personal trainers, Claude Code, Cursor

v1.0.0
GitHub

About this Skill

Ideal for Fitness and Health Agents requiring structured workout sequence generation using discriminated unions via 'kind'. workout-domain is a technical framework for creating block-based workout models, utilizing TypeScript and discriminated unions to define workout sequences.

Features

Supports strength blocks with traditional sets/reps exercises
Includes timed blocks such as AmrapBlock, EmomBlock, TabataBlock, and ForTimeBlock
Utilizes discriminated unions via `kind` for workout block definition
Enables creation of sequences of blocks for comprehensive workouts
Defines sets with user-inputted weight as a string
Allows for identification of blocks using a unique `id` number

# Core Topics

alexanderop alexanderop
[0]
[0]
Updated: 3/8/2026

Agent Capability Analysis

The workout-domain skill by alexanderop is an open-source community AI agent skill for Claude Code and other IDE workflows, helping agents execute tasks with better context, repeatability, and domain-specific guidance. Optimized for install workout-domain, block-based workout model, TypeScript workout domain.

Ideal Agent Persona

Ideal for Fitness and Health Agents requiring structured workout sequence generation using discriminated unions via 'kind'.

Core Value

Empowers agents to create comprehensive workout plans using block-based models, including Strength, Timed, and Cardio blocks, with specific exercise details such as sets, reps, and weight, utilizing TypeScript for type safety and flexibility.

Capabilities Granted for workout-domain

Generating customized workout sequences for personal training clients
Creating structured fitness plans with traditional sets and reps exercises
Automating workout block generation using discriminated unions via 'kind'

! Prerequisites & Limits

  • Requires knowledge of TypeScript and discriminated unions
  • Limited to workout domain and fitness applications
  • User input required for weight and other exercise details
Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

workout-domain

Install workout-domain, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with one-command setup.

SKILL.md
Readonly

Workout Domain

Block-Based Workout Model

Workouts are sequences of blocks using discriminated unions via kind:

ts
1type WorkoutBlock = StrengthBlock | TimedBlock | CardioBlock 2 3type TimedBlock = AmrapBlock | EmomBlock | TabataBlock | ForTimeBlock

Strength Block

Traditional sets/reps exercises:

ts
1type StrengthBlock = { 2 kind: 'strength' 3 id: number 4 exerciseName: string 5 sets: Array<Set> 6} 7 8type Set = { 9 id: number 10 weight?: string // User input as string 11 reps?: string 12 rir?: string // Reps in reserve 13 completed: boolean 14}

Timed Blocks

AMRAP, EMOM, Tabata, ForTime:

ts
1type AmrapBlock = { 2 kind: 'amrap' 3 id: number 4 config: AmrapConfig 5 exercises: Array<BlockExercise> 6 result?: AmrapResult 7} 8 9type EmomBlock = { 10 kind: 'emom' 11 id: number 12 config: EmomConfig 13 exercises: Array<BlockExercise> 14 result?: EmomResult 15} 16 17type TabataBlock = { 18 kind: 'tabata' 19 id: number 20 config: TabataConfig 21 exercises: Array<BlockExercise> 22 result?: TabataResult 23} 24 25type ForTimeBlock = { 26 kind: 'fortime' 27 id: number 28 config: ForTimeConfig 29 exercises: Array<BlockExercise> 30 result?: ForTimeResult 31}

Cardio Block

ts
1type CardioBlock = { 2 kind: 'cardio' 3 id: number 4 exerciseName: string 5 duration?: number 6 distance?: number 7 calories?: number 8}

Type Files

FilePurpose
src/types/blocks.tsRuntime block types
src/db/schema.tsPersistence types with Db prefix

Convention: Database types use Db prefix (e.g., DbStrengthBlock) and null instead of undefined.

Key Composables

Workout Feature

ComposablePurpose
useWorkout.tsSingleton state, block/set CRUD operations
useWorkoutPersistence.tsAuto-save, complete, discard active workout
useWorkoutExercise.tsExercise selection within workout
useWorkoutBuilder.tsBuild workout from scratch or template

Benchmark Feature

ComposablePurpose
useBenchmark.tsCore benchmark state and operations
useBenchmarkPersistence.tsSave benchmark attempts
useBenchmarkTimer.tsTimer for timed benchmarks

Template Feature

ComposablePurpose
useTemplateForm.tsCreate/edit template form state
useTemplatePicker.tsSelect template to start workout

Working with Blocks

Adding a Block

ts
1import { useWorkout } from '@/features/workout/composables/useWorkout' 2 3const { addBlock } = useWorkout() 4 5// Add strength block 6addBlock({ 7 kind: 'strength', 8 exerciseName: 'Squat', 9 sets: [] 10}) 11 12// Add AMRAP block 13addBlock({ 14 kind: 'amrap', 15 config: { duration: 10 }, 16 exercises: [] 17})

Type-Safe Block Handling

Use exhaustive switch for block kinds:

ts
1function getBlockTitle(block: WorkoutBlock): string { 2 switch (block.kind) { 3 case 'strength': 4 return block.exerciseName 5 case 'amrap': 6 return `AMRAP ${block.config.duration}min` 7 case 'emom': 8 return `EMOM ${block.config.rounds}x${block.config.interval}s` 9 case 'tabata': 10 return 'Tabata' 11 case 'fortime': 12 return 'For Time' 13 case 'cardio': 14 return block.exerciseName 15 default: 16 // TypeScript exhaustiveness check 17 const _exhaustive: never = block 18 return _exhaustive 19 } 20}

Quick Find

bash
1rg -n "kind: '(strength|amrap|emom|tabata|fortime|cardio)'" src/ # Block usage 2rg -n "type.*Block = " src/types/blocks.ts # Block type definitions 3rg -n "export function use" src/features/workout/composables # Workout composables

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is workout-domain?

Ideal for Fitness and Health Agents requiring structured workout sequence generation using discriminated unions via 'kind'. workout-domain is a technical framework for creating block-based workout models, utilizing TypeScript and discriminated unions to define workout sequences.

How do I install workout-domain?

Run the command: npx killer-skills add alexanderop/workoutTracker/workout-domain. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

What are the use cases for workout-domain?

Key use cases include: Generating customized workout sequences for personal training clients, Creating structured fitness plans with traditional sets and reps exercises, Automating workout block generation using discriminated unions via 'kind'.

Which IDEs are compatible with workout-domain?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

Are there any limitations for workout-domain?

Requires knowledge of TypeScript and discriminated unions. Limited to workout domain and fitness applications. User input required for weight and other exercise details.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add alexanderop/workoutTracker/workout-domain. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use workout-domain immediately in the current project.

Related Skills

Looking for an alternative to workout-domain or another community skill for your workflow? Explore these related open-source skills.

View All

widget-generator

Logo of f
f

f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.

149.6k
0
AI

flags

Logo of vercel
vercel

flags is a Next.js feature management skill that enables developers to efficiently add or modify framework feature flags, streamlining React application development.

138.4k
0
Browser

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI