4.5 KiB
Skill Tududi Tasks
OpenClaw integration for Tududi — self-hosted task management system with smart suggestions and daily reminders.
Features
✅ Quick task capture — Add tasks to inbox without friction
✅ Smart suggestions — AI suggests priority, tags, and projects
✅ Inbox management — Read inbox status and upcoming tasks
✅ Daily reminders — Automatic morning recap (overdue + today tasks)
✅ No auto-sync — Manual control, you decide what goes where
Installation
1. Clone to OpenClaw Skills Directory
cd ~/.openclaw/skills
git clone https://forge.dilain.com/Remora/skill-tududi.git
2. Configure Environment Variables
Add to your OpenClaw gateway environment or shell profile:
export TUDUDI_API_URL="https://todo.dilain.com/api/v1"
export TUDUDI_API_KEY="tt_5e3ac7fc2bf5ae5162ebac5d1d66dcc2ff9d9d0ab343b9d3d4c5a7c439ef67f5"
Or configure in openclaw.json:
{
"env": {
"vars": {
"TUDUDI_API_URL": "https://todo.dilain.com/api/v1",
"TUDUDI_API_KEY": "tt_5e3ac7fc..."
}
}
}
3. Restart OpenClaw
openclaw gateway restart
Usage
Add a Task to Inbox
./scripts/tududi-api.sh add-task "Task name" "Optional description"
Or via Discord:
"Add task: Fix the CI/CD pipeline"
I'll suggest priority and tags, then add to Tududi inbox.
List Inbox
./scripts/tududi-api.sh list-inbox
Shows all tasks with no project assigned.
Get Smart Suggestions
Ask me to suggest priority/tags/projects:
"I want to add 'Setup staging environment'. Suggest priority and project."
Response example:
{
"priority": "high",
"tags": ["devops", "infrastructure"],
"projects_available": [
{"id": 1, "name": "Infrastructure"},
{"id": 2, "name": "DevOps"}
]
}
Daily Reminder
Configured to run 8:00 AM (Europe/Paris timezone) every day.
Reminder format:
📋 Tududi Morning Reminder (Monday)
🔴 Overdue (2):
• Fix payment bug (high)
• Respond to client email (normal)
📅 Today (3):
• Deploy v2.1 (high)
• Team standup (normal)
• Review PRs (normal)
Scripts
tududi-api.sh
Core API wrapper for Tududi REST API.
Commands:
# Add task to inbox
tududi-api.sh add-task "name" "description" [project_id]
# List tasks in inbox (no project)
tududi-api.sh list-inbox
# List all projects
tududi-api.sh list-projects
# Get single task details
tududi-api.sh get-task <task_id>
tududi-suggest.sh
Analyze task name/description and suggest priority, tags, and available projects.
tududi-suggest.sh "Task name" "Optional description"
Output: JSON with suggestions.
Configuration
Change Reminder Time
Edit openclaw.json:
{
"cron": {
"jobs": [{
"name": "Tududi Morning Reminder",
"schedule": {
"kind": "cron",
"expr": "0 9 * * *",
"tz": "Europe/Paris"
}
}]
}
}
Change "0 9" to your preferred hour.
Disable Reminders
openclaw cron remove <job-id>
Customize Reminder Content
Edit the system prompt in heartbeat config:
{
"agents": {
"defaults": {
"heartbeat": {
"prompt": "Custom reminder logic here..."
}
}
}
}
Troubleshooting
Scripts fail with "TUDUDI_API_KEY not set"
# Test env vars
echo $TUDUDI_API_URL
echo $TUDUDI_API_KEY
# If empty, source your env file or set them:
export TUDUDI_API_KEY="..."
No tasks returned from list-inbox
-
Verify API connection:
curl -s -H "Authorization: Bearer $TUDUDI_API_KEY" \ "$TUDUDI_API_URL/tasks" | jq '.' | head -
Check if tasks have
project_idset (inbox tasks havenull)
Reminder not firing at 8 AM
-
Check gateway logs:
openclaw logs | grep -i tududi -
Verify cron job is enabled:
openclaw cron list -
Check timezone:
date
Development
Add New Suggestion Rules
Edit scripts/tududi-suggest.sh to add keyword detection:
# Example: detect "meeting" → tag:communication
if echo "$task_name $task_desc" | grep -iE "meeting"; then
tag_array="${tag_array}\"meeting\","
fi
Test API Directly
API_KEY="..." API_URL="..." ./scripts/tududi-api.sh list-inbox
Support
- Issues: Report on Forge: https://forge.dilain.com/Remora/skill-tududi/issues
- Docs: See
SKILL.mdfor full feature documentation
License
MIT