Manage tasks via the AgentTodo REST API — a shared execution layer for humans and AI agents. Use when the user asks to create, list, update, or manage tasks, todos, projects, or agent feedback.
Installs into .claude/skills of the current project.
Are you the author of Agenttodo?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/diegosouzapw-agenttodo)
---
name: agenttodo
description: Manage tasks via the AgentTodo REST API — a shared execution layer for humans and AI agents. Use when the user asks to create, list, update, or manage tasks, todos, projects, or agent feedback.
---
# AgentTodo Skill
A shared task board for humans and AI agents. Manage todos, track progress, and coordinate work through a REST API.
**This skill is designed for AI agents** — it provides a complete, prompt-friendly API reference so any LLM-based agent can autonomously manage tasks.
## Setup
1. Sign up at [agenttodo.vercel.app](https://agenttodo.vercel.app/signin) and create an API key from the dashboard
2. Store it in your tools config as `AGENTTODO_API_KEY`
## API Reference
**Base URL:** `https://agenttodo.vercel.app/api`
**Auth:** Include `Authorization: Bearer <API_KEY>` header on all requests.
---
### Tasks
#### Create a Task
```
POST /tasks
Content-Type: application/json
{
"title": "Deploy new feature",
"description": "Ship the auth module to production",
"intent": "deploy",
"priority": 4,
"project": "backend",
"assigned_agent": "claude"
}
```
Only `title` is required. All other fields are optional.
#### List Tasks
```
GET /tasks
GET /tasks?status=todo&limit=50
GET /tasks?project=backend&intent=build
```
Query parameters: `status`, `intent`, `project`, `assigned_agent`, `limit`, `offset`.
#### Get a Single Task
```
GET /tasks/:id
```
Returns full task details including subtasks, activity log, messages, attachments, and dependencies.
#### Update a Task
```
PATCH /tasks/:id
Content-Type: application/json
{
"status": "in_progress",
"description": "Updated description"
}
```
#### Delete a Task (soft delete)
```
DELETE /tasks/:id
```
#### Bulk Create Tasks
```
POST /tasks/bulk
Content-Type: application/json
{
"tasks": [
{ "title": "Task 1", "intent": "build", "priority": 3 },
{ "title": "Task 2", "intent": "research", "priority": 2 }
]
}
```
Maximum 50 tasks per request.
#### Claim Next Task
```
POST /tasks/next
Content-Type: application/json
{
"intents": ["build", "deploy"],
"project": "backend",
"priorityMin": 3
}
```
Returns the highest-priority unclaimed task matching filters. All filter fields are optional.
---
### Task Actions
```
POST /tasks/:id/start # Mark as in_progress
POST /tasks/:id/complete # Mark as done
POST /tasks/:id/block # Mark as blocked
```
#### Add a Log Entry
```
POST /tasks/:id/log
Content-Type: application/json
{ "message": "Started implementation, 50% done" }
```
#### Spawn a Subtask
```
POST /tasks/:id/spawn
Content-Type: application/json
{
"title": "Sub-task title",
"description": "Details",
"intent": "build"
}
```
Creates a child task linked to the parent via `parent_task_id`.
---
### Task Messages
```
GET /tasks/:id/messages
POST /tasks/:id/messages
Content-Type: application/json
{ "content": "Question about this task...", "role": "agent" }
```
#### Task Dependencies
```
GET /tasks/:id/dependencies
POST /tasks/:id/dependencies
Content-Type: application/json
{ "depends_on": "OTHER_TASK_ID" }
```
#### Task Attachments
```
POST /tasks/:id/upload # Upload a file attachment
DELETE /tasks/:id/attachments/:attachmentId
```
---
### Projects
#### List Projects
```
GET /projects
GET /projects?limit=50&offset=0
```
#### Create a Project
```
POST /projects
Content-Type: application/json
{ "name": "My Project", "description": "Project details" }
```
#### Update a Project
```
PATCH /projects/:id
Content-Type: application/json
{ "name": "Updated Name" }
```
#### Delete a Project
```
DELETE /projects/:id
```
---
### Feedback
Agents can submit feedback about their experience, report issues, or suggest improvements.
#### List Feedback
```
GET /feedback
GET /feedback?limit=50&offset=0
```
#### Submit Feedback
```
POST /feedback
Content-Type: application/json
{ "message": "The task decomposition flow works great for multi-step builds" }
```
---
### Task Fields
| Field | Type | Required | Values |
|-------|------|----------|--------|
| `title` | string | ✅ | Free text |
| `description` | string | | Free text |
| `intent` | string | | `build`, `research`, `deploy`, `review`, `test`, `monitor`, `write`, `think`, `admin`, `ops` |
| `status` | string | | `todo`, `in_progress`, `blocked`, `review`, `done` |
| `priority` | number | | `1` (lowest) to `5` (highest) |
| `project` | string | | Free text, used for grouping |
| `assigned_agent` | string | | Free text (e.g. `claude`, `cursor`) |
| `human_input_needed` | boolean | | Flag for tasks needing human review |
| `parent_task_id` | string | | UUID of parent task (for subtasks) |
| `blockers` | array | | List of blocker descriptions |
## Examples
**Create a task:**
```bash
curl -X POST https://agenttodo.vercel.app/api/tasks \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Review PR #42", "intent": "review", "priority": 3}'
```
**List open tasks:**
```bash
curl "https://agenttodo.vercel.app/api/tasks?status=todo&limit=10" \
-H "Authorization: Bearer $API_KEY"
```
**Claim next task:**
```bash
curl -X POST https://agenttodo.vercel.app/api/tasks/next \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"intents": ["build"]}'
```
**Complete a task:**
```bash
curl -X POST https://agenttodo.vercel.app/api/tasks/TASK_ID/complete \
-H "Authorization: Bearer $API_KEY"
```
**Add a log entry:**
```bash
curl -X POST https://agenttodo.vercel.app/api/tasks/TASK_ID/log \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "Started implementation, 50% done"}'
```
**Bulk create:**
```bash
curl -X POST https://agenttodo.vercel.app/api/tasks/bulk \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"tasks": [{"title": "Task 1"}, {"title": "Task 2"}]}'
```
**Submit feedback:**
```bash
curl -X POST https://agenttodo.vercel.app/api/feedback \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "Great API, easy to integrate"}'
```
## Usage Guidelines
- When a user says "add a todo" or "create a task", use `POST /tasks`
- When asked "what's on my plate?" or "show tasks", use `GET /tasks?status=todo`
- Use `POST /tasks/next` to autonomously claim the highest-priority unclaimed task
- After completing work, mark tasks done with `/complete`
- Use `/log` to track progress on long-running tasks
- Use `/spawn` to break large tasks into subtasks
- Use `project` to group related tasks together
- Set `assigned_agent` to your agent name when claiming work
- Use `/feedback` to report issues or suggest improvements