Task
The kid-facing unit. A check-in chat, a chore, an interactive challenge. Every kid touchpoint is a task.
A task is the kid-facing unit in Sprout. It is the thing that shows up on the kid's iPad, the thing they tap into, the thing they complete. Every kid touchpoint: a chat, a chore, an interactive canvas, a camera proof: is a task or starts with one.
Tasks can stand alone (your agent creates one directly) or be governed by a skill that re-runs them or refreshes them over time. Most first-time builders ship a task before they ship a skill.
Where you'll see this
In the wild: Your first task
A worked example
A daily check-in conversation task. Read the family first to resolve the kid id, then ship the task.
task.create({
name: "Daily check-in",
assignChildIds: ["<childId>"],
runMode: "conversation",
conversationSpec: {
goalType: "share",
guidance: "Ask about one highlight from today, one lowlight, and one thing they're looking forward to. Listen well; reflect back. Keep it warm and short."
},
scheduleSpec: {
taskType: "schedule",
days: ["mon","tue","wed","thu","fri"],
startMinutes: 1020
},
rewardSpec: { gems: 3 }
})That's it. No skill needed for the simple recurring shape. Same idea works for self_check (chores) and canvas (interactive activities) tasks: swap the spec object.
Shape
Every task has these key fields:
name: what the kid sees on the card.assignChildIds: which kid(s) it lands on.assignAllChildrencovers the family.runMode: discriminator.self_check(default),conversation,canvas. Camera is planned.conversationSpec/canvasSpec: the spec object matching the runMode.conversationSpec.guidanceis the load-bearing field for a chat task;canvasSpec.canvasIdpoints at the rendered HTML for a canvas task.scheduleSpec: when it fires.taskType: "onetime"withoneTimeDate, ortaskType: "schedule"withdays+startMinutes.rewardSpec: gems on completion. Omit to award no gems.assignmentSkillId: optional. Link a skill for governance, audit, reuse.
When to use it (and when not to)
Reach for a standalone task when:
- The thing is a one-off or recurs on a fixed weekly cadence.
- The content is the same every time (or the variations come from a canvas you've already authored).
- You don't need to re-run the authoring procedure with new context tomorrow.
Wrap it in a skill when:
- Tomorrow's task should reflect tomorrow's data (school day, last week's themes, the kid's mood).
- You want the skill in your library so it can re-fire across kids or contexts.
- The procedure benefits from audit and parameterization.
Common errors
BAD_INPUT·conversation-needs-guidance,runMode:"conversation"without a non-emptyconversationSpec.guidance. Fix: add guidance.BAD_INPUT·canvas-needs-a-skill,runMode:"canvas"withoutassignmentSkillId, or with a skill that doesn't link the canvas. Fix: wrap in a skill that links the canvas.BAD_INPUT·one-mode-only: passing aconversationSpecwithrunMode:"canvas", or vice versa. Fix: spec must match the mode.PERMISSION_DENIED: thechildIdorassignmentSkillIddoesn't belong to this family.
Related tools
task.create: author a new task.task.update: partial patch. Pass only the fields to change.task.list: keyset-paginated; filter by child, status, type.task.describe: read-back / preview shape without guessing.task.complete: fuzzy-match what a kid did against open tasks.task.review: approve/deny a completion.task.delete: destructive; confirm with parent.
Roadmap for this noun
- Soon
runMode: "camera": first-class video/photo proof. Pair withsprout.uploadAsseton canvas. - Soon Event-driven scheduling: tasks created in response to activity events, not just clocks.