using-cron
This Claude Code skill manages scheduled tasks by creating, querying, updating, and deleting one-time or recurring message tasks through Python scripts. Use this skill whenever a user mentions future time intent such as "in 2 days," "tomorrow at 8am," or "every morning" instead of writing custom scheduler scripts.
git clone --depth 1 https://github.com/dtyq/magic /tmp/using-cron && cp -r /tmp/using-cron/backend/super-magic/agents/skills/using-cron ~/.claude/skills/using-cronSKILL.md
# Scheduled Task Management
Use this skill to create, list, inspect, update, and delete magic-service scheduled tasks.
## How it works
Scheduled task capabilities are exposed as Code Mode tools (`scheduled_task_*`). They are not directly callable as standalone tool calls. Invoke them through `run_sdk_snippet` and `sdk.tool.call`:
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_list")
print(result.content)
""")
```
`tool.call(name, params)` returns:
| Field | Meaning |
| --- | --- |
| `result.ok` | Whether the operation succeeded. Check this first. |
| `result.content` | JSON text suitable for reading and reasoning. |
| `result.data` | Structured payload for follow-up calls. |
Use the Code Mode tools below for every scheduled-task operation.
## Available Tools
| Tool name | Purpose |
| --- | --- |
| `scheduled_task_create` | Create a one-time or recurring scheduled task. |
| `scheduled_task_list` | List scheduled tasks in the current project. |
| `scheduled_task_get` | Get one scheduled task by ID. |
| `scheduled_task_update` | Partially update one scheduled task. |
| `scheduled_task_delete` | Delete one scheduled task. |
The tools automatically read `topic_id`, `project_id`, and current `model_id` from the current session. Do not pass those IDs yourself.
## Schedule Types
| `schedule_type` | Meaning | `day` |
| --- | --- | --- |
| `no_repeat` | One-time execution | Execution date `YYYY-MM-DD` (required) |
| `daily_repeat` | Repeat daily | Not needed |
| `weekly_repeat` | Repeat weekly | Weekday `0`-`6`, `0`=Sunday (required) |
| `monthly_repeat` | Repeat monthly | Day of month `1`-`31` (required) |
`time` is always required and must be `HH:MM`.
`deadline` is optional for recurring tasks. Use `YYYY-MM-DD HH:MM:SS`; `YYYY-MM-DD` is normalized to `YYYY-MM-DD 00:00:00`.
## Agent Modes
`agent_mode` is optional. Omit it by default; the scheduled task will use the current running mode.
Use `agent_mode` only when the user explicitly asks for a mode. Built-in values:
| `agent_mode` | Meaning |
| --- | --- |
| `magic` | General mode |
| `slider` | Slide generation mode |
| `data-analyst` | Data analysis mode |
| `design` | Design mode |
| `audio` | Audio summary mode |
The tool maps these friendly values to the corresponding magic-service mode identifiers internally.
If the user gives a custom employee identifier/code, pass that value as `agent_mode`. The tool maps it internally.
## Create
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_create", {
"task_name": "Daily Briefing",
"message_content": "Generate today's briefing",
"schedule_type": "daily_repeat",
"time": "09:00"
})
print(result.content)
""")
```
For long content, pass a Python triple-quoted string. Do not write a temp script:
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
message = \"\"\"Read ops/source.json in the current article directory, visit the bound publishedUrl, and update only these operations files:
- ops/metrics.json
- ops/comments.json
- ops/review.html
Do not generate an AI Card.\"\"\"
result = tool.call("scheduled_task_create", {
"task_name": "[Article Sync] Example Article",
"message_content": message,
"schedule_type": "daily_repeat",
"time": "09:00",
"specify_topic": 0
})
print(result.content)
""")
```
For custom employees, keep this parameter contract:
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_create", {
"task_name": "Custom Employee Task",
"message_content": "Process this task with the custom employee",
"schedule_type": "daily_repeat",
"time": "09:00",
"agent_mode": "SMA-custom-agent"
})
print(result.content)
""")
```
### `specify_topic`
Pass `specify_topic=1` only when both conditions hold:
1. The task is recurring: `daily_repeat`, `weekly_repeat`, or `monthly_repeat`.
2. The next run time or trigger depends on the current or previous run result, such as "run again 3 days after each completion" or "decide next time based on last result".
For one-time tasks, or fixed schedules that do not depend on previous results, keep `specify_topic=0`.
## List
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_list", {
"page": 1,
"page_size": 50,
"task_name": "briefing",
"enabled": 1,
"completed": 0
})
print(result.content)
""")
```
The list is scoped to the current project.
## Get
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_get", {
"id": "<scheduled_task_id>"
})
print(result.content)
""")
```
## Update
Only pass fields that should change. When changing time configuration, pass `schedule_type` and `time` together.
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_update", {
"id": "<scheduled_task_id>",
"enabled": 0
})
print(result.content)
""")
```
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_update", {
"id": "<scheduled_task_id>",
"message_content": "Updated task details",
"schedule_type": "daily_repeat",
"time": "10:00"
})
print(result.content)
""")
```
## Delete
```python
run_sdk_snippet(python_code="""
from sdk.tool import tool
result = tool.call("scheduled_task_delete", {
"id": "<scheduled_task_id>"
})
print(result.content)
""")
```
## Rules
1. Never create scheduler scripts or ask the shell to run cron scripts.
2. Always call `scheduled_task_list` when the user asks what scheduled tasks exist.
3. After `scheduled_task_create`, keep the returned `id`; use it for get/update/delete.
4. Check `result.ok` before relying on `result.content` or `result.data`.
5. Surface tool errors directly; do not silently retry with guessed workspace, topic, or project IDs.Query the list of all agents (employees) available to the current user. Use when generating code that requires a real agentId, or when the user asks "which agents/employees do I have".
|
Migrate existing antd-style CSS-in-JS (createStyles) components to Tailwind CSS utility classes with full dark mode support, following the project's style system transition strategy. Use when the user asks to migrate, convert, or rewrite antd-style components to Tailwind, or when working on new components in files that already use antd-style.
Open and operate webpages in a real browser: navigate, read rendered content, inspect interactive elements, click, type, submit forms, press keys, select options, check boxes, hover, scroll, upload files, wait for page changes, manage pages, take and save screenshots, analyze visual layout, and inspect page errors and network activity.
Core canvas design skill covering project management, multimedia principles, AI image generation, web image search, and design marker processing. Load for any canvas design task. CRITICAL - When user message contains [@design_canvas_project:...] or [@design_marker:...] mentions, or when the user wants to generate video/animation/clip on a canvas project, you MUST load this skill first before any operations.
Use when details may have been lost after context compaction, or when the Agent needs to inspect earlier compacted messages or previously created sub-agents.
Manage persistence for user-installed third-party CLI tools in the Super Magic sandbox. Use when the user wants to install, configure, adopt, restore, inspect, or remove a CLI, or when an external skill, webpage, or installer asks to run CLI install commands such as curl|sh, npm install -g, pipx install, uv tool install, go install, cargo install, or brew install. Do not persist runtime-provided CLIs.
Expert code review of current git changes with a senior engineer lens. Detects SOLID violations, security risks, and proposes actionable improvements.