| name | generate-daily-tasks |
| description | Generate an ordered list of daily study tasks tailored to the learner's current week focus, recent performance, and available time. |
generate-daily-tasks
When to Use
Invoke this skill each time a learner runs /jp-today. It reads the learner's profile and current week plan to produce a concrete, time-bounded task list for today.
Inputs
| Parameter | Type | Required | Description |
|---|
user_profile | object | yes | Full user record from storage/users.json |
current_week | object | yes | Current week object from the study plan (output of build-study-plan) |
recent_progress | object | yes | User's progress record from storage/progress.json |
available_minutes | integer | yes | Time the learner has today (defaults to user_profile.daily_minutes) |
Outputs
An ordered array of task objects:
| Field | Type | Description |
|---|
task_id | string | Unique ID for today's session: {type}_{content_ref}_{YYYYMMDD} |
type | string | Task type: "vocab", "grammar", "listening", "shadowing", "speaking" |
content_ref | string | ID of the item in data/*.json to use |
estimated_minutes | integer | Time allocation for this task |
priority | string | "core" (must do) or "bonus" (if time allows) |
Logic
Time Budget Allocation
Time is distributed proportionally to the week's focus_area:
- vocab+listening week: 40% vocab, 35% listening, 15% grammar, 10% speaking
- grammar+shadowing week: 30% grammar, 30% shadowing, 20% vocab, 20% speaking
- speaking+review week: 40% speaking, 20% shadowing, 20% vocab, 20% review
Round to nearest 5-minute block. Any remainder becomes bonus time.
Task Ordering
Tasks are ordered to optimize learning flow:
- Warm-up: short vocab review (5 min max)
- Core skill: primary focus of the week (longest block)
- Secondary skill: second priority
- Cool-down: speaking or self-reflection (5–10 min)
Carry-Forward
If yesterday's daily_state.carry_forward_recommendation exists, prepend a short review task targeting those weak points before the warm-up.
Item Selection
- Vocab: delegate to
select-vocab-items with recent_mistakes from progress
- Grammar: delegate to
select-grammar-items with current week focus
- Listening: delegate to
generate-listening-drill matching topic and level
- Shadowing: delegate to
generate-shadowing-drill from the same listening item
- Speaking: delegate to
generate-speaking-prompt matching topic
Example
Input:
{
"user_profile": { "level": "N5", "daily_minutes": 30, "focus_topics": ["travel"] },
"current_week": { "week_index": 3, "focus_area": "vocab+listening", "target_vocab_count": 7 },
"recent_progress": { "recurring_mistakes": [{"pattern": "は vs が"}] },
"available_minutes": 30
}
Output:
[
{ "task_id": "vocab_003_20260413", "type": "vocab", "content_ref": "vocab_003", "estimated_minutes": 10, "priority": "core" },
{ "task_id": "listen_001_20260413", "type": "listening", "content_ref": "listen_001", "estimated_minutes": 15, "priority": "core" },
{ "task_id": "speak_001_20260413", "type": "speaking", "content_ref": "speak_001", "estimated_minutes": 5, "priority": "bonus" }
]