From studio-skills
Creates and configures scheduled tasks in Treasure Studio using TASK.md, schedule.yaml, scripts, with validation, review, testing, and cron enabling workflow.
npx claudepluginhub treasure-data/td-skills --plugin treasure-work-skillsThis skill uses the workspace's default tool permissions.
Create scheduled tasks in Treasure Studio that mix deterministic script execution with agent-driven analysis and delivery.
Manages scheduled Claude Code tasks: add recurring/one-off skills/prompts/scripts, list/pause/resume/remove, view results/logs, test execution with safety controls and notifications. Cross-platform (macOS/Linux/Windows).
Create and manage scheduled tasks that execute Claude CLI using cron expressions, intervals, or one-time schedules via Python scripts.
Schedules recurring and one-off tasks via local OS cron/Task Scheduler or remote Anthropic Cron APIs. Supports list/add/remove with quota-aware defaults.
Share bugs, ideas, or general feedback.
Create scheduled tasks in Treasure Studio that mix deterministic script execution with agent-driven analysis and delivery.
Determine where to create the task based on your current working directory:
If inside a workspace: find the nearest ancestor directory (including the current one) that contains a tdx.json file and at least one of goals/ or items/ folders. That directory is {workspace}.
{workspace}/schedules/{task-name}/{workspace} becomes the working directory during executionOtherwise (standalone):
~/.tdx/schedule-tasks/{task-name}/CRITICAL: Never just create files and stop. Always run the task and iterate until it works.
create_schedule MCP tool for the initial task scaffold; do not hand-create schedule.yaml, TASK.md, or the standard subdirs (data/, reference/, scripts/, results/) with Write/Bash. The tool generates those files/directories and stamps the active Studio profile into schedule.yaml. Extra files under scripts/ or reference/ may be added afterwards with Write.schedule_validate to check schedule.yamlschedule_reload to pick up new/changed tasksschedule-review skill and run a full review (structure + quality checks in parallel)schedule_run to execute immediatelyschedule_results to review output.md and check for errorsschedule_enable to activate the cron scheduleSteps 5-8 are mandatory — a task is not complete until it has been reviewed and executed successfully at least once.
{task-dir}/
├── TASK.md # Instructions (frontmatter + markdown body)
├── schedule.yaml # Cron schedule, permissions, notifications
├── scripts/ # Deterministic scripts (bash, python, etc.)
├── reference/ # Immutable reference files (templates, specs, configs)
├── data/ # Persistent data across runs (snapshots, state, caches)
└── results/{run_id}/ # Auto-created per execution (pruned over time)
├── metadata.json # System-managed run metadata
└── output.md # Execution summary (REQUIRED — agent writes this)
Use create_schedule to scaffold the directory — it generates schedule.yaml, TASK.md, and the four subdirs in one call and auto-registers the task. Add extra files under scripts/ and reference/ afterwards with Write. The system will pick up subsequent edits after schedule_reload.
YAML frontmatter with name and description, followed by markdown instructions:
---
name: daily-sales-report
description: Fetch sales data, analyze trends, and post to Slack
---
## Steps
1. Run `bash scripts/fetch-sales-data.sh` to download data
2. Analyze the CSV: revenue, order count, top products
3. Compare with previous run (check results/ for yesterday's output.md)
4. Write results/{run_id}/output.md with findings
5. Post summary to Slack, attach chart via slack_upload_file
## Data Files
- `data/previous-metrics.csv` — Yesterday's metrics for trend comparison. Update after analysis.
## Notes
- Revenue thresholds: flag if daily total < $10K
- Use reference/report-template.html for formatting
- If fetch script fails, retry once then report the error
Additional sections (## Notes, ## Constraints, ## Data Files, ## Output Format, etc.) are welcome. The run_id is provided to the agent automatically in the prompt.
Do NOT write Slack channel names or notification targets in TASK.md. Notification channels are configured in schedule.yaml (notify.on_success / notify.on_failure) and injected into the prompt automatically at execution time. Writing them in TASK.md causes conflicts when the yaml is updated.
data/ persists across runs (unlike results/ which is pruned). When a task uses data/, describe the files and their purpose in TASK.md under a ## Data Files section.
name: daily-sales-report
profile: "@tdx-studio:<site>:<account-id>:<user-id>" # AUTO-STAMPED by create_schedule — DO NOT hand-author. Omit to make the task visible under every Studio account (reserved for system-installed templates).
schedule: "0 9 * * 1-5"
enabled: false
status: configured # "configured" = ready to run, "template" = needs customization
catch_up: false # true = run missed schedule once on next Studio startup
skills:
- sql-skills:trino
permissions:
allow:
- Bash
- Write
- slack_post_message
- slack_upload_file
notify:
on_success: slack:channel-name # or "slack:dm" for DM
on_failure: slack:channel-name # or "slack:dm" for DM
context:
max_turns: 20
timeout: 600
autonomous: false # true = Supervisor Agent auto-continues until task complete
Task name: lowercase, hyphens/underscores only, max 64 chars. Minimum cron interval: 5 minutes.
These fields are only meaningful for tasks inside a workspace schedules/ directory:
# Target Goal — agent scopes work to this goal's linked items
goal: auth-redesign
# Workspace skill to invoke (different from `skills` which lists capability packs/MCP tools)
skill: weekly-review
# Output configuration — create a Note from execution results
output:
note: true # Create a Note in workspace notes/ from output.md
note_tags: [weekly, auto] # Tags added to the auto-created Note
When goal is set, the agent receives the goal content and linked item statuses in its prompt. When output.note: true is set, a Note is automatically created in the workspace's notes/ folder after successful execution.
configured — Task is ready to run. Use this when creating a task specific to the user's environment.template — Task is a reusable template that needs customization before enabling. Use this when the user wants to create a shareable template with placeholder values (e.g., GITHUB_REPO, SLACK_CHANNEL) that others will customize later.Tasks with status: template should not be enabled directly. First customize them and change status to configured before enabling.
Notification targets: use slack:channel-name for a Slack channel, or slack:dm for the user's DM. Always use slack:dm exactly — not "direct message", "DM", or other variations.
| Tool | Purpose |
|---|---|
create_schedule | Preferred path to create a new task — scaffolds schedule.yaml, TASK.md, and the standard subdirs; stamps the active Studio profile automatically |
schedule_list | List all tasks with status |
schedule_get | Full task details including TASK.md and recent results |
schedule_validate | Validate schedule.yaml against schema |
schedule_reload | Reload tasks from disk (after creating/editing files) |
schedule_run | Trigger immediate execution (for testing) |
schedule_results | View past run summaries and output files (optional limit, default 10) |
schedule_enable / schedule_disable | Toggle task on/off |
schedule_delete | Remove task and all files |