A robust personal productivity manager for organizing tasks, projects, and capacity with rich attributes and calendar synchronization.
Install
mkdir -p .claude/skills/yatta && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16932" && unzip -o skill.zip -d .claude/skills/yatta && rm skill.zipInstalls to .claude/skills/yatta
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Personal productivity system for task and capacity management. Create and organize tasks with rich attributes (priority, effort, complexity, tags), track time and streaks, manage capacity across projects and contexts, view Eisenhower Matrix prioritization, sync calendar subscriptions, handle delegation and follow-ups, and get AI-powered insights. Supports batch operations, multi-project workflows, and real-time capacity planning to prevent overcommitment.Key capabilities
- →Create and organize tasks with attributes
- →Track time and streaks for tasks
- →Manage capacity across projects and contexts
- →View Eisenhower Matrix prioritization
- →Sync calendar subscriptions
How it works
The skill interacts with the Yatta! task management system via its API, allowing for creation, modification, and retrieval of tasks, projects, and related data.
Inputs & outputs
When to use yatta
- →Plan daily tasks with priority
- →Manage project capacity
- →Sync calendar with task list
About this skill
Yatta! Skill
Interact with Yatta! task management system via API. Requires an API key from your Yatta! account.
⚠️ Security Warning
This skill can perform DESTRUCTIVE operations on your Yatta! account:
- Task Management: Create, update, archive, and batch-modify tasks
- Project Management: Create, update, and archive projects
- Context Management: Create contexts and assign them to tasks
- Comment Management: Add, update, and delete task comments
- Calendar Management: Create, sync, and modify calendar subscriptions
- Follow-Up Management: Update delegation schedules and mark complete
- Capacity Management: Trigger capacity computations
Operation Types:
Read-Only Operations (✅ Safe):
- List tasks, projects, contexts, comments
- Get analytics, insights, streaks
- View capacity and calendar data
- Get Eisenhower Matrix view
- All GET requests
Destructive Operations (⚠️ Modify or delete data):
- Create/update/archive tasks (POST, PUT, DELETE)
- Batch update tasks
- Create/update projects
- Create/assign contexts
- Add/update/delete comments
- Add/sync calendar subscriptions
- Update follow-up schedules
- All POST, PUT, DELETE requests
Best Practices:
- Review commands before running - Check what the API call will do
- No undo for deletions - Archived tasks can be recovered, but some operations are permanent
- Test on non-critical data first - Create test tasks/projects to verify behavior
- Batch operations affect multiple items - Be extra careful with batch updates
- Real-time sync - Changes appear in Yatta! UI immediately
For detailed API operation documentation, see API-REFERENCE.md.
Setup
⚠️ API Key Security
Your Yatta! API key provides FULL access to your account:
- Can create, read, update, and delete ALL tasks, projects, contexts
- Can modify calendar subscriptions and follow-up schedules
- Can archive data and trigger computations
- No read-only scopes available - keys have full permissions
Security Best Practices:
- Store keys in a secure password manager (1Password CLI recommended)
- Use environment variables, never hardcode keys in scripts
- Rotate keys regularly (every 90 days recommended)
- Create separate keys for different integrations
- Revoke unused keys immediately
- Never commit keys to version control
1. Get Your API Key
- Log into Yatta! app
- Go to Settings → API Keys
- Create new key (e.g., "OpenClaw Integration")
- Copy the
yatta_...key - Store it securely
2. Configure the Skill
Option A: Environment Variables (Recommended)
# Add to your shell profile (~/.zshrc, ~/.bashrc)
export YATTA_API_KEY="yatta_your_key_here"
export YATTA_API_URL="https://zunahvofybvxpptjkwxk.supabase.co/functions/v1" # Default
Option B: 1Password CLI (Most Secure)
# Store key in 1Password
op item create --category=API_CREDENTIAL \
--title="Yatta API Key" \
api_key[password]="yatta_your_key_here"
# Use in commands
export YATTA_API_KEY=$(op read "op://Private/Yatta API Key/api_key")
Note: Currently using direct Supabase URL. Clean branded URLs (yattadone.com/api) coming soon.
3. Test Connection
curl -s "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.[:3]' # Show first 3 tasks
Tasks API
List Tasks
All tasks:
curl -s "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
Filter by status:
# TODO tasks only
curl -s "$YATTA_API_URL/tasks?status=todo" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
# Doing (active) tasks
curl -s "$YATTA_API_URL/tasks?status=doing" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
# Completed tasks
curl -s "$YATTA_API_URL/tasks?status=done" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
Filter by priority:
# High priority tasks
curl -s "$YATTA_API_URL/tasks?priority=high" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.[] | {title, due_date, priority}'
Filter by project:
# Get project ID first
PROJECT_ID=$(curl -s "$YATTA_API_URL/projects" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq -r '.[] | select(.name=="Website Redesign") | .id')
# Get tasks for that project
curl -s "$YATTA_API_URL/tasks?project_id=$PROJECT_ID" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
Filter by matrix state:
# Delegated tasks
curl -s "$YATTA_API_URL/tasks?matrix_state=delegated" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.[] | {title, delegated_to, follow_up_date}'
# Waiting tasks
curl -s "$YATTA_API_URL/tasks?matrix_state=waiting" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
Date range queries:
# Tasks due this week
WEEK_END=$(date -v+7d "+%Y-%m-%d")
curl -s "$YATTA_API_URL/tasks?due_date_lte=$WEEK_END" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.[] | {title, due_date}'
# Overdue tasks
TODAY=$(date "+%Y-%m-%d")
curl -s "$YATTA_API_URL/tasks?due_date_lte=$TODAY&status=todo" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.[] | {title, due_date}'
Pagination:
# First 50 tasks
curl -s "$YATTA_API_URL/tasks?limit=50&offset=0" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
# Next 50 tasks
curl -s "$YATTA_API_URL/tasks?limit=50&offset=50" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
Archived tasks:
curl -s "$YATTA_API_URL/tasks?archived=true" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
Create Task
Simple task:
curl -s "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Finish report",
"priority": "high"
}' \
| jq '.'
Task with full details:
curl -s "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Review Q1 numbers",
"description": "Go through revenue, costs, and projections",
"priority": "high",
"due_date": "2026-02-15",
"effort_points": 5,
"project_id": "uuid-of-project",
"matrix_state": "active"
}' \
| jq '.'
Delegated task with follow-up:
curl -s "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Website redesign",
"delegated_to": "Dev Team",
"matrix_state": "delegated",
"follow_up_schedule": {
"type": "weekly",
"day_of_week": "monday",
"next_follow_up": "2026-02-17"
}
}' \
| jq '.'
Recurring task:
curl -s "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Team standup",
"recurrence_rule": {
"frequency": "daily",
"interval": 1,
"days_of_week": ["monday", "tuesday", "wednesday", "thursday", "friday"]
},
"effort_points": 1
}' \
| jq '.'
Update Task
Update single task:
TASK_ID="uuid-of-task"
curl -s -X PUT "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "'$TASK_ID'",
"status": "done",
"completed_at": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'"
}' \
| jq '.'
Batch update tasks:
curl -s -X PUT "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ids": ["uuid-1", "uuid-2", "uuid-3"],
"priority": "high",
"project_id": "project-uuid"
}' \
| jq '.'
Archive Task
TASK_ID="uuid-of-task"
curl -s -X DELETE "$YATTA_API_URL/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "'$TASK_ID'"
}' \
| jq '.'
Projects API
List Projects
# All projects
curl -s "$YATTA_API_URL/projects" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
# With task counts
curl -s "$YATTA_API_URL/projects?with_counts=true" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.[] | {name, task_count, open_count}'
Create Project
curl -s "$YATTA_API_URL/projects" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Website Redesign",
"description": "Complete overhaul of company site",
"color": "#3b82f6",
"icon": "🌐"
}' \
| jq '.'
Update Project
PROJECT_ID="uuid-of-project"
curl -s -X PUT "$YATTA_API_URL/projects" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "'$PROJECT_ID'",
"name": "Website Redesign v2",
"archived": false
}' \
| jq '.'
Get Project Tasks
PROJECT_ID="uuid-of-project"
curl -s "$YATTA_API_URL/projects/$PROJECT_ID/tasks" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
Contexts API
List Contexts
# All contexts
curl -s "$YATTA_API_URL/contexts" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.'
# With task counts
curl -s "$YATTA_API_URL/contexts?with_counts=true" \
-H "Authorization: Bearer $YATTA_API_KEY" \
| jq '.[] | {name, task_count}'
Create Context
curl -s "$YATTA_API_URL/contexts" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "@deep-focus",
"color": "#8b5cf6",
"icon": "🧠"
}' \
| jq '.'
Assign Context to Task
TASK_ID="uuid-of-task"
CONTEXT_ID="uuid-of-context"
curl -s -X POST "$YATTA_API_URL/contexts/assign" \
-H "Authorization: Bearer $YATTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"task_id": "'$TASK_ID'",
"context_ids": ["'$CONTEXT_ID'"]
}' \
| jq '.'
Get Ta
Content truncated.
When not to use it
- →When read-only scopes are required for API keys
- →When an undo option for deletions is necessary
- →When testing on critical data without prior verification
Prerequisites
Limitations
- →API key provides full access to the Yatta! account
- →No read-only scopes are available for API keys
- →Some operations, like deletions, are permanent without undo
How it compares
This skill provides direct API interaction with Yatta! for task and capacity management, offering programmatic control over a personal productivity system.
Compared to similar skills
yatta side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| yatta (this skill) | 0 | 6mo | Review | Intermediate |
| agile-product-owner | 10 | 8mo | Review | Beginner |
| gsd-planner | 1 | 4mo | Review | Intermediate |
| task-management | 0 | 3mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
agile-product-owner
davila7
Agile product ownership toolkit for Senior Product Owner including INVEST-compliant user story generation, sprint planning, backlog management, and velocity tracking. Use for story writing, sprint planning, stakeholder communication, and agile ceremonies.
gsd-planner
toonight
Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification
task-management
rjchien728
管理 ~/tasks/(或使用者指定路徑)下的進行中工作項目資料夾。每個 task 是一個資料夾,README.md 是純狀態 dashboard(status frontmatter + 一句 headline + 一行狀態 + 檔案清單 + 下一步),實際的設計 / 規劃 / 調查文件用獨立 .md 檔,腳本與 reproduce 也存獨立檔。負責命名(YYMMDD-<slug>)、建資料夾、寫 README dashboard、更新狀態、總覽掃描。當使用者說「開新 task」「開個 task」「新增 task」「new task」「記錄到 tasks 下」「把目前設計記下來開個 task
pi-tasks
Micka33
>-
pm
zeuikli
專案管理工作流:Sprint 規劃、Issue 優先排序(MoSCoW/RICE)、狀態報告、風險評估、Sprint 回顧。適合在啟動新專案、Sprint 規劃會議、撰寫進度報告、或做任務優先排序時使用。
pm
josecoelho
GitHub Issues-based project management for obsidian-tasks-caldav