skills/schedule/SKILL.md
Schedule management specialist for RECURRING/SCHEDULED tasks. Use when user wants to create, view, modify, or delete scheduled/cron jobs, timers, reminders, or periodic executions. Triggered by keywords: "schedule", "timer", "cron", "定时任务", "提醒", "定期", "周期", "每天", "每周", "recurring", "periodic".
npx skillsauth add hs3180/disclaude scheduleInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage schedules with full CRUD operations.
Use this skill for:
DO NOT use this skill for:
Keywords that trigger this skill: "定时任务", "schedule", "cron", "timer", "reminder", "每天", "每周", "定期", "周期性", "recurring", "periodic"
ALWAYS send feedback to user via send_user_feedback after EVERY operation.
This is mandatory. Users must receive confirmation of operation results.
When invoked, you receive:
IMPORTANT: Use chatId as schedule scope to ensure schedules only execute in the correct chat.
Files stored in workspace/schedules/ using subdirectory layout (mirroring the skills/ convention).
Each schedule lives in its own subdirectory:
workspace/schedules/<slug>/SCHEDULE.md
<slug>: A short, descriptive, filesystem-safe name (lowercase, hyphens instead of spaces, no special characters)SCHEDULE.md (uppercase)IMPORTANT (Issue #3803): Schedule files MUST live in the workspace schedules/ directory, NOT the current working directory's schedules/. When in project mode, the agent's cwd is the project directory, but schedules must still be written to the workspace directory.
To determine the workspace schedules directory, use:
echo "${DISCLAUDE_WORKSPACE_DIR:-$(pwd)}/schedules"
DISCLAUDE_WORKSPACE_DIR is set → use $DISCLAUDE_WORKSPACE_DIR/schedules/schedules/ relative to current directoryExamples:
$DISCLAUDE_WORKSPACE_DIR/schedules/daily-report/SCHEDULE.md$DISCLAUDE_WORKSPACE_DIR/schedules/issue-solver/SCHEDULE.md$DISCLAUDE_WORKSPACE_DIR/schedules/weekly-summary/SCHEDULE.mdSteps:
Collect schedule info:
Create directory and file:
$DISCLAUDE_WORKSPACE_DIR/schedules/<slug>/SCHEDULE.md
(Use $DISCLAUDE_WORKSPACE_DIR to ensure schedules go to workspace, not project dir.)
Create file with Write tool
SEND FEEDBACK confirming creation
File Format:
---
name: Schedule Name
cron: "0 9 * * *"
enabled: true
blocking: true
chatId: oc_xxx
createdAt: 2024-01-01T00:00:00.000Z
---
Schedule content prompt here
Field Reference:
| Field | Required | Default | Description |
|-------|----------|---------|-------------|
| name | Yes | - | Schedule display name |
| cron | Yes | - | Cron expression for timing |
| enabled | No | true | Whether schedule is active |
| blocking | No | true | Skip execution if previous run still in progress |
| chatId | Yes | - | Chat ID for execution context |
| createdAt | No | - | Creation timestamp |
| model | No | - | Model to use for execution (e.g., "sonnet", "opus") |
| modelTier | No | - | Model tier for execution (e.g., "fast", "default") |
IMPORTANT: Do NOT delete the schedule file. Instead, disable it by setting enabled: false.
This preserves the configuration for potential future reactivation and maintains an audit trail.
Steps:
Glob: $DISCLAUDE_WORKSPACE_DIR/schedules/*/SCHEDULE.md (or schedules/*/SCHEDULE.md if env var not set)ReadchatIdchatIdEdit tool: Change enabled: true to enabled: falseExample:
# Before
enabled: true
# After
enabled: false
Error Handling:
Why disable instead of delete?
Modifiable Properties:
cron: Execution timename: Schedule nameenabled: Enable/disableblocking: Blocking modemodel: Model selectionmodelTier: Model tier selectionSteps:
Glob: $DISCLAUDE_WORKSPACE_DIR/schedules/*/SCHEDULE.md (or schedules/*/SCHEDULE.md if env var not set)chatId ownershipEdit toolSteps:
Glob: $DISCLAUDE_WORKSPACE_DIR/schedules/*/SCHEDULE.md (or schedules/*/SCHEDULE.md if env var not set)chatIdOutput Format:
Schedules:
| Name | Cron | Status |
|------|------|--------|
| Daily Report | Daily 9:00 | Enabled |
| Weekly Summary | Fri 14:00 | Disabled |
No Schedules:
No schedules found.
Would you like to create one?
minute hour day month weekday
Examples:
"0 9 * * *" - Daily at 9:00"30 14 * * 5" - Friday 14:30"0 10 1 * *" - 1st of month 10:00"*/15 * * * *" - Every 15 minutes"0 * * * *" - Hourly"0 0 * * *" - Daily at midnightCRITICAL: Well-written prompts ensure efficient execution. Follow these guidelines:
Bad: "Continue the task from yesterday" Good: "Check the disclaude repository for new issues and create a PR if applicable"
The prompt must contain ALL necessary context. The scheduler executes in a fresh session with no memory of previous conversations.
Bad: "Create a daily reminder to check emails" Good: "Check emails and report new important messages"
Scheduled tasks cannot create other scheduled tasks (anti-recursion protection). If periodic behavior is needed, report to user instead.
Bad: "Do something with the database" Good: "Run database backup and verify the backup file exists in /backups/"
Define what "done" looks like. Include verification steps when possible.
Bad: "Send a report" Good: "Send a report. If the API is unavailable, retry once after 5 minutes, then report failure."
Specify what to do when things go wrong.
Bad: "Fix all bugs in the system" Good: "Check issue #123 and report its current status"
Avoid broad or unbounded tasks. Each execution should have clear boundaries.
Bad: "Check the config file"
Good: "Check the config file at /app/workspace/config.yaml"
Include full paths, URLs, or identifiers. Don't assume the executor knows where things are.
Bad: "Analyze the entire codebase and refactor" Good: "Run the test suite for the schedule module"
Scheduled tasks should complete within reasonable time. Break large tasks into smaller scheduled checks.
## Objective
[What should be accomplished]
## Context
[Any necessary background information]
## Steps
1. [First step]
2. [Second step]
...
## Success Criteria
[How to verify the task completed successfully]
## Error Handling
[What to do if something fails]
After each operation, verify:
chatId?enabled: false)This example demonstrates how to create a schedule for the 0.4.2 MVP use case: daily analysis of chat/work records with open-ended "soul questions" to trigger discussions in topic groups.
/topic-group mark <chatId>workspace/logs/chat-messages/Create $DISCLAUDE_WORKSPACE_DIR/schedules/daily-soul-question/SCHEDULE.md:
---
name: 每日灵魂拷问
cron: "0 21 * * *"
enabled: true
blocking: true
# Replace with your topic group's chatId
chatId: oc_your_topic_group_chat_id
createdAt: 2026-03-06T00:00:00.000Z
---
# 每日灵魂拷问
## 背景
0.4.2 的 MVP 用例:每日分析聊天/工作记录,发出开放式的灵魂拷问,引发话题群讨论。
## 核心特点
- **类 BBS 模式**: 不预期用户一定有响应
- **开放式讨论**: 引发思考,而非等待决策
- **主动推送**: 发送到话题群
## 执行步骤
### 步骤 1: 获取话题群
读取 `workspace/groups.json` 文件,获取所有 `isTopicGroup: true` 的群。
如果没有话题群,输出以下消息并结束:
📋 每日灵魂拷问: 暂无话题群
请先使用 /topic-group mark <chatId> 命令标记一个群为话题群。
### 步骤 2: 读取今日聊天记录
读取 `workspace/logs/chat-messages/` 目录下今天的日期文件夹中的所有 `.md` 文件。
今天的日期格式为 YYYY-MM-DD (如 2026-03-06)。
如果没有聊天记录,输出以下消息并发送到话题群:
📋 每日灵魂拷问: 今日暂无聊天记录
今天还没有聊天记录,无法生成灵魂拷问。明天再试试吧!
### 步骤 3: 分析并生成灵魂拷问
分析聊天记录,识别以下类型的话题:
- 有趣的决策或讨论
- 潜在的改进点
- 值得反思的问题
- 有趣的技术讨论
生成 1-3 个开放式的灵魂拷问问题,格式示例:
🤔 今日灵魂拷问
分析今天的聊天记录,发现一个有趣的问题:
「在处理 xxx 时,我们选择了方案 A 而非方案 B。 这个决策是否正确?有没有更好的选择?」
欢迎在群里讨论 👇
### 步骤 4: 发送到话题群
使用 `send_user_feedback` 工具发送灵魂拷问到第一个话题群。
参数设置:
- content: 灵魂拷问内容
- format: "text"
- chatId: 第一个话题群的 chatId
## 重要提示
1. **不要创建新的定时任务** - 这是定时任务执行环境的规则
2. **不要修改现有的定时任务**
3. **只执行上述步骤,完成后结束**
4. **使用 send_user_feedback 发送消息时,确保 chatId 是话题群的 ID**
## 验收标准
- [ ] 能获取话题群列表
- [ ] 能读取今日聊天记录
- [ ] 能生成灵魂拷问内容
- [ ] 能发送到话题群
tools
--- name: issue-solver description: Issue Solver - creates a scheduled task to scan a GitHub repo for open issues, pick the best candidate, and submit a fix PR. Use when user wants to set up automated issue resolution. Keywords: "Issue Solver", "自动修 Bug", "solve issues", "issue solver", "issue solver 安装". allowed-tools: Read, Write, Edit, Bash, Glob, Grep --- # Issue Solver — Schedule 安装器 为指定 GitHub 仓库创建 Issue 扫描定时任务。将 schedule 模板实例化为可执行的 SCHEDULE.md。 **适用于**: 安装/配置 Issue Solver 定时任务 | **不适用于
testing
Dissolve a Feishu group chat and clean up associated resources. Use when a PR is merged/closed, a discussion is finished, or a group needs to be removed. Keywords: "解散群", "dissolve group", "删除群", "close group", "清理群".
data-ai
手气不错 — disclaude dogfooding skill. Randomly selects a real use case from disclaude's feature set, simulates a natural user interaction, and reports observations. Use when user says keywords like "手气不错", "随机测试", "feeling lucky", "dogfooding", "自我体验", "feeling-lucky".
tools
Feishu/Lark document operations via lark-cli. Read, upload, import, export, and manage Feishu docs. Keywords: '飞书文档', '上传文档', '读飞书文档', 'lark cli', '导入文档', '导出文档', 'upload to feishu', 'feishu doc', 'lark doc', 'lark-cli', 'feishu.cn', '读文档'.