Agent skill
personal-message-scheduling
Create, manage, and execute scheduled WhatsApp and Slack messages. Use this skill when asked to "schedule a message", "create a reminder", "set up recurring notifications", "schedule standup reminders", "automate daily/weekly messages", or any task involving time-based message delivery. Supports cron expressions, recurring intervals, and one-time scheduled messages. Works on both local (localhost:4098) and production (ai.proph.bet) environments.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/personal-message-scheduling
SKILL.md
Message Scheduling
Create automated scheduled messages for WhatsApp groups/contacts or Slack channels.
Quick Start
-
Determine the API base URL based on environment:
- Local/Development:
http://localhost:4098 - Production:
https://ai.proph.bet/dashboard
- Local/Development:
-
Use curl to create a scheduled job:
# Set API base (local or production)
API_BASE="http://localhost:4098" # or https://ai.proph.bet/dashboard
curl -X POST "${API_BASE}/api/schedules" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily Standup Reminder",
"scheduleType": "cron",
"cronExpression": "0 9 * * 1-5",
"timezone": "Asia/Jerusalem",
"provider": "whatsapp",
"target": "120363406740668957@g.us",
"messageTemplate": "š Standup in 10 minutes!\n\nDate: {{date}}\nDay: {{day}}",
"enabled": true
}'
Schedule Types
Cron (most flexible)
Use for complex schedules. See references/cron-reference.md for presets and syntax.
{
"scheduleType": "cron",
"cronExpression": "0 9 * * 1-5"
}
Recurring (interval-based)
Run at fixed intervals (in minutes):
{
"scheduleType": "recurring",
"intervalMinutes": 60
}
One-Time
Run once at a specific ISO 8601 timestamp, then auto-disable:
{
"scheduleType": "once",
"runAt": "2026-01-15T09:00:00.000Z"
}
Required Fields
| Field | Type | Description |
|---|---|---|
name |
string | Job name (required) |
scheduleType |
string | cron, recurring, or once |
provider |
string | whatsapp or slack |
target |
string | WhatsApp JID or Slack channel ID |
messageTemplate |
string | Message content with optional variables |
Target Lookup
- WhatsApp groups: Use JID format
XXXXXXXXX@g.us - WhatsApp contacts: Use
9725XXXXXXXX@s.whatsapp.net - Slack channels: Use channel ID (e.g.,
C01234567)
See references/known-targets.md for common targets.
Template Variables
| Variable | Example | Description |
|---|---|---|
{{date}} |
2026-01-07 |
Current date (YYYY-MM-DD) |
{{time}} |
14:30 |
Current time (HH:MM) |
{{day}} |
Tuesday |
Day of week |
{{month}} |
January |
Month name |
{{year}} |
2026 |
Year |
{{datetime}} |
2026-01-07T14:30:00.000Z |
Full ISO datetime |
API Endpoints
All endpoints require Bearer token auth when applicable.
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/schedules |
List all jobs |
POST |
/api/schedules |
Create job |
GET |
/api/schedules/:id |
Get job details |
PATCH |
/api/schedules/:id |
Update job |
DELETE |
/api/schedules/:id |
Delete job |
POST |
/api/schedules/:id/toggle |
Toggle enabled |
POST |
/api/schedules/:id/run |
Run immediately |
GET |
/api/schedules/:id/runs |
Get run history |
POST |
/api/schedules/validate-cron |
Validate cron expression |
Common Examples
Daily Standup Reminder (Weekdays 9 AM)
curl -X POST "${API_BASE}/api/schedules" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily Standup",
"scheduleType": "cron",
"cronExpression": "0 9 * * 1-5",
"timezone": "Asia/Jerusalem",
"provider": "whatsapp",
"target": "120363406740668957@g.us",
"messageTemplate": "š **Daily Standup**\n\nš
{{date}} ({{day}})\n\nTime for our daily sync!",
"enabled": true
}'
Friday Weekly Summary (Friday 5 PM)
curl -X POST "${API_BASE}/api/schedules" \
-H "Content-Type: application/json" \
-d '{
"name": "Weekly Summary",
"scheduleType": "cron",
"cronExpression": "0 17 * * 5",
"timezone": "Asia/Jerusalem",
"provider": "whatsapp",
"target": "120363406740668957@g.us",
"messageTemplate": "š **Weekly Summary**\n\nHappy Friday! {{date}}\n\nā
Review sprint progress\nā
Update time tracking\n\nHave a great weekend! š",
"enabled": true
}'
One-Time Meeting Reminder
curl -X POST "${API_BASE}/api/schedules" \
-H "Content-Type: application/json" \
-d '{
"name": "Project Kickoff Reminder",
"scheduleType": "once",
"runAt": "2026-01-15T08:45:00.000Z",
"provider": "whatsapp",
"target": "120363406740668957@g.us",
"messageTemplate": "ā” Project Kickoff in 15 minutes!\n\nš
{{date}} at {{time}}",
"enabled": true
}'
Manage Existing Jobs
# List all jobs
curl "${API_BASE}/api/schedules"
# Disable a job
curl -X POST "${API_BASE}/api/schedules/1/toggle" \
-H "Content-Type: application/json" \
-d '{"enabled": false}'
# Run job now (test)
curl -X POST "${API_BASE}/api/schedules/1/run"
# Delete a job
curl -X DELETE "${API_BASE}/api/schedules/1"
Timezones
Supported values: UTC, Asia/Jerusalem (default), America/New_York, America/Los_Angeles, Europe/London, Europe/Paris, Asia/Tokyo, Australia/Sydney
Error Handling
Jobs that fail are logged with errors in the run history. Check status via:
curl "${API_BASE}/api/schedules/1/runs?limit=10"
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?