with one click
asana
Asana API — tasks, projects, and team collaboration
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Asana API — tasks, projects, and team collaboration
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Google Calendar — list, create, and manage events via gcal CLI
Manage HubSpot CRM — contacts, companies, deals, tickets
Manage Shopify store — products, orders, customers, inventory
Configure audio transcription and image/video understanding for channels
AWS CLI for S3, EC2, Lambda, CloudWatch, RDS, and ECS
Google Calendar — list, create, and manage events via gcal CLI
| name | asana |
| version | 0.1.0 |
| author | devclaw |
| description | Asana API — tasks, projects, and team collaboration |
| category | project-management |
| tags | ["asana","tasks","projects","collaboration","team"] |
| requires | {"bins":["curl","jq"],"env":["ASANA_ACCESS_TOKEN"]} |
Interact with Asana using their REST API.
Check existing credentials:
vault_get asana_access_token
If not configured:
vault_save asana_access_token "x_xxx"
The token is auto-injected as $ASANA_ACCESS_TOKEN.
# List workspaces
curl -s "https://app.asana.com/api/1.0/workspaces" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data[]'
# List projects in workspace
curl -s "https://app.asana.com/api/1.0/workspaces/WORKSPACE_ID/projects" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data[]'
# List all projects
curl -s "https://app.asana.com/api/1.0/projects" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data[] | {gid, name}'
# List tasks in project
curl -s "https://app.asana.com/api/1.0/projects/PROJECT_ID/tasks" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data[]'
# Get task details
curl -s "https://app.asana.com/api/1.0/tasks/TASK_ID" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data'
# My tasks
curl -s "https://app.asana.com/api/1.0/user/me/tasks?opt_fields=name,completed,due_on" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data[]'
curl -s -X POST "https://app.asana.com/api/1.0/tasks" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"data": {
"name": "Review pull request",
"notes": "Check the authentication module changes",
"projects": ["PROJECT_ID"],
"assignee": "me",
"due_on": "2025-01-20"
}
}' | jq '.data'
# Complete task
curl -s -X PUT "https://app.asana.com/api/1.0/tasks/TASK_ID" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data": {"completed": true}}'
# Update task name/notes
curl -s -X PUT "https://app.asana.com/api/1.0/tasks/TASK_ID" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data": {"name": "Updated task name"}}'
# Add comment
curl -s -X POST "https://app.asana.com/api/1.0/tasks/TASK_ID/stories" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data": {"text": "Progress update: completed review"}}'
# Create subtask
curl -s -X POST "https://app.asana.com/api/1.0/tasks/TASK_ID/subtasks" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data": {"name": "Subtask item"}}'
# List subtasks
curl -s "https://app.asana.com/api/1.0/tasks/TASK_ID/subtasks" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data[]'
# Search tasks
curl -s "https://app.asana.com/api/1.0/workspaces/WORKSPACE_ID/tasks/search?text=bug" \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" | jq '.data[]'
opt_fields to request specific fields: ?opt_fields=name,completed,due_on,assigneeopt_expand for nested resourcesassignee: "me" to assign to yourselfasana, asana task, create asana task, asana project, asana api