Add comprehensive README with installation and usage guide
This commit is contained in:
250
README.md
Normal file
250
README.md
Normal file
@@ -0,0 +1,250 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user