Generate a structured practice session plan for the Music Practice Tracker app. Receives player context and writes a session plan to next-session.json.
Trigger: Called by the Music Practice Tracker app via promptClaude('/practice-plan {context}') when the user clicks "Start Session". The context JSON is appended after the skill name.
Goal: Analyze the player's current state and generate an intelligent, personalized session plan.
The context JSON (provided after /practice-plan) contains:
focusAreas: array of focus categories (e.g., ["speed", "theory"])sessionLength: minutes (15, 30, or 45)mode: "full" | "technique" | "theory"recentSessions: last 3 session summariesexerciseProgress: exercise stats with currentWorkingBpm, personalBest, timesCompletedstreaks: current streak, lastPracticeDatetheoryProgress: currentModule, modulesCompleted, recentScoresEvaluate:
Phase allocation by session length:
If mode is "technique": skip theory, redistribute time to technique. If mode is "theory": minimal warm-up (3 min), all remaining time to theory/fretboard.
currentWorkingBpm from progresscurrentModule or advance based on scoresRead 05_App_Data/practice-tracker/exercises.json to get valid exercise IDs and their properties.
Write the session plan to 05_App_Data/practice-tracker/next-session.json using this exact schema:
{
"generated": "ISO timestamp",
"sessionLength": 30,
"phases": [
{
"name": "warm-up",
"duration": 300,
"exercises": [
{
"exerciseId": "valid-exercise-id",
"targetBpm": 100,
"duration": 180,
"note": "Contextual coaching note"
}
]
},
{
"name": "technique",
"duration": 720,
"exercises": [...]
},
{
"name": "theory",
"duration": 600,
"type": "quiz",
"moduleId": "valid-module-id",
"note": "Score was X% last time. Aim for Y%."
},
{
"name": "cool-down",
"duration": 180,
"note": "Free play suggestion"
}
],
"coachNote": "Brief contextual message (direct, respectful, not cheerleader energy)"
}
Use the write_file tool to write the plan to 05_App_Data/practice-tracker/next-session.json.
Direct and respectful, like a good coach who knows the player is serious. No gamification language, no excessive encouragement. Practical observations and specific technique suggestions.
Examples: