Skip to main content
ClaudeWave
Skill5k repo starsupdated 1mo ago

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.

Install in Claude Code
Copy
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-cron
Then start a new Claude Code session; the skill loads automatically.

SKILL.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.
guidesSkill
canvas-designerSkill

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.

compact-chat-historySkill

Summarize and compress the current conversation history into a structured context snapshot, then call compact_chat_history to save it. Read this skill only when the user explicitly asks to compact/summarize — system-triggered compaction injects the instructions directly without requiring a skill read.

creating-slidesSkill

Slide/PPT creation skill that provides complete slide creation, editing, and management capabilities. Use when users need to create slides, make presentations, edit slide content, or manage slide projects. CRITICAL - When user message contains [@slide_project:...] mention, you MUST load this skill first before any operations.

crew-creatorSkill

|

deep-researchSkill

|

develop-data-analysis-dashboardSkill

Data analysis dashboard (instrument panel) development skill. Use when users need to develop data dashboards, create/edit Dashboard projects, build large-screen data boards, or perform dashboard data cleaning. Includes dashboard project creation, card plan, data cleaning (data_cleaning.py), card management tools (create_dashboard_cards, update_dashboard_cards, delete_dashboard_cards, query_dashboard_cards), map download tool (download_dashboard_maps), dashboard development, and validation.

dingtalk-cliSkill

Use when the user wants to interact with DingTalk in any way — including but not limited to: reading, querying, searching, sending, replying to, forwarding, or recalling DingTalk chat messages and chat history; managing group chats and conversations; sending DING alerts; querying contacts, org structure, AI search, or coworkers; reading, searching, creating, or editing DingTalk docs, drive files, sheets, AI tables, wiki, mail, calendar events, meeting rooms, AI meeting minutes, attendance, OA approvals, todos, reports/logs, live sessions, AI apps, permissions, or open-platform docs.