251 lines
4.5 KiB
Markdown
251 lines
4.5 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
export TUDUDI_API_URL="https://todo.dilain.com/api/v1"
|
|
export TUDUDI_API_KEY="tt_5e3ac7fc2bf5ae5162ebac5d1d66dcc2ff9d9d0ab343b9d3d4c5a7c439ef67f5"
|
|
```
|
|
|
|
Or configure in `openclaw.json`:
|
|
|
|
```json
|
|
{
|
|
"env": {
|
|
"vars": {
|
|
"TUDUDI_API_URL": "https://todo.dilain.com/api/v1",
|
|
"TUDUDI_API_KEY": "tt_5e3ac7fc..."
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### 3. Restart OpenClaw
|
|
|
|
```bash
|
|
openclaw gateway restart
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Add a Task to Inbox
|
|
|
|
```bash
|
|
./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
|
|
|
|
```bash
|
|
./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:
|
|
```json
|
|
{
|
|
"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:**
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
```bash
|
|
tududi-suggest.sh "Task name" "Optional description"
|
|
```
|
|
|
|
Output: JSON with suggestions.
|
|
|
|
## Configuration
|
|
|
|
### Change Reminder Time
|
|
|
|
Edit `openclaw.json`:
|
|
|
|
```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
|
|
|
|
```bash
|
|
openclaw cron remove <job-id>
|
|
```
|
|
|
|
### Customize Reminder Content
|
|
|
|
Edit the system prompt in heartbeat config:
|
|
|
|
```json
|
|
{
|
|
"agents": {
|
|
"defaults": {
|
|
"heartbeat": {
|
|
"prompt": "Custom reminder logic here..."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Scripts fail with "TUDUDI_API_KEY not set"
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Verify API connection:
|
|
```bash
|
|
curl -s -H "Authorization: Bearer $TUDUDI_API_KEY" \
|
|
"$TUDUDI_API_URL/tasks" | jq '.' | head
|
|
```
|
|
|
|
2. Check if tasks have `project_id` set (inbox tasks have `null`)
|
|
|
|
### Reminder not firing at 8 AM
|
|
|
|
1. Check gateway logs:
|
|
```bash
|
|
openclaw logs | grep -i tududi
|
|
```
|
|
|
|
2. Verify cron job is enabled:
|
|
```bash
|
|
openclaw cron list
|
|
```
|
|
|
|
3. Check timezone:
|
|
```bash
|
|
date
|
|
```
|
|
|
|
## Development
|
|
|
|
### Add New Suggestion Rules
|
|
|
|
Edit `scripts/tududi-suggest.sh` to add keyword detection:
|
|
|
|
```bash
|
|
# Example: detect "meeting" → tag:communication
|
|
if echo "$task_name $task_desc" | grep -iE "meeting"; then
|
|
tag_array="${tag_array}\"meeting\","
|
|
fi
|
|
```
|
|
|
|
### Test API Directly
|
|
|
|
```bash
|
|
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.md` for full feature documentation
|
|
|
|
## License
|
|
|
|
MIT
|