with one click
periodic-task
Scheduled recurring task management
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Scheduled recurring task management
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | periodic_task |
| description | Scheduled recurring task management |
| server_tools | manage_periodic_task |
| client_tools | null |
| depends_on | web_search_task, notification_task |
You have a manage_periodic_task tool for creating and managing scheduled recurring tasks.
You also have a notify_user tool to send push notifications to the user's devices.
When to recognize a periodic task request:
Workflow for creating a periodic task — follow STRICTLY in order:
Step 1: Acknowledge and plan.
Tell the user you will: (1) do a dry run, (2) build a recipe, (3) register.
Create a TODO plan with manage_todo tracking these steps.
Step 2: Execute a MANDATORY dry run. You MUST actually perform the task once RIGHT NOW using real tools.
notify_user.mcp_filesystem__write.
Track every tool you use and every result you get. The dry run MUST produce
real output — not just acknowledge the request.Step 3: Synthesize a DETAILED execution recipe from the dry run. The recipe is what a headless agent will follow later WITHOUT any user interaction. Every instruction must be specific and actionable. Structure as JSON:
{
"version": 1,
"original_request": "the user's exact message",
"objective": "one-line summary of the task",
"instructions": [
"Step 1: Use mcp_web__search to search for '...'",
"Step 2: Use mcp_web__fetch on the top result URLs",
"Step 3: Use mcp_filesystem__read to read the fetched session_file content",
"Step 4: Extract the key information from the content",
"Step 5: Use notify_user with title '...' and body containing the extracted info"
],
"tools_required": ["mcp_web__search", "mcp_web__fetch", "mcp_filesystem__read", "notify_user"],
"output_spec": {
"file_pattern": "path/to/output_{date}.md (or empty if notification-only)",
"summary_template": "Description of what the notification/output looks like",
"notification": {
"title_template": "Template for notification title",
"body_template": "Template for notification body with {placeholders}"
}
},
"dry_run_result": {
"success": true,
"sample_output_path": "path if a file was created",
"sample_summary": "Actual text of the notification/output from the dry run"
},
"constraints": {
"max_iterations": 30
}
}
IMPORTANT recipe quality rules:
notify_user, mcp_web__search, etc.)"Use notify_user with title '안부 인사' and body '안녕하세요! 오늘 하루는 어떠셨나요? 좋은 하루 보내세요 😊'"notify_user to send the results to the user"dry_run_result.sample_summary MUST contain the actual output from Step 2Step 4: Parse the user's schedule into cron format. Convert natural language to:
{"type": "cron", "cron": {"minute": M, "hour": H, "day_of_month": "*", "month": "*", "day_of_week": "*"}}
Common patterns:
minute=0, hour=9, dow="*"minute=0, hour=9, dow="1-5"minute=0, hour=10, dow="1"minute=0, hour="*", dow="*"Step 5: Register via tool call.
manage_periodic_task(action="register", title="...", description="...",
recipe={...}, schedule={...}, timezone="Asia/Seoul")
Step 6: Confirm registration to the user. The registration result (task ID, schedule, next run time, etc.) is automatically displayed to the user in the UI. You only need to write a brief confirmation message — do NOT repeat the task details. Keep your response short to save tokens.
If the dry run fails, do NOT register. Inform the user and ask if they want to retry.
Besides register, the manage_periodic_task tool supports these actions:
List all tasks:
manage_periodic_task(action="list")
Cancel a task:
manage_periodic_task(action="cancel", task_id="<task_id>")
Pause a task (stops execution but keeps the task):
manage_periodic_task(action="pause", task_id="<task_id>")
Resume a paused task:
manage_periodic_task(action="resume", task_id="<task_id>")
manage_periodic_task(action, title?, description?, recipe?, schedule?, timezone?, task_id?, notify_on_success?)
action: "register", "list", "cancel", "pause", or "resume" (required)title: short title for the task (required for register)description: longer description (optional, for register)recipe: execution recipe JSON (required for register)schedule: cron schedule object (required for register)timezone: IANA timezone string (default: "Asia/Seoul", for register)task_id: task ID (required for cancel, pause, resume)notify_on_success: send system notification on success (default: true). Set to false if the recipe already calls notify_user to avoid duplicate notifications.Local file search and content exploration workflow
Push notifications to user devices
Task planning and execution tracking
Spawn sub-agent tasks for parallel execution
Web search and content retrieval workflow