Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Integrate Asana with Clawdbot via the Asana REST API. Use when you need to list/search/create/update Asana tasks/projects/workspaces, or to set up Asana OAuth (authorization code grant) for a personal local-only integration (OOB/manual code paste).
.claude/skills/sundial-org-asana/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -13% | 0% |
This skill is designed for a personal local-only Asana integration using OAuth with an out-of-band/manual code paste flow.
/users/me, /workspaces, tasks)In Asana Developer Console (My apps):
tasks:read, tasks:write, projects:read)urn:ietf:wg:oauth:2.0:oobOption A (recommended for Clawdbot): save to a local credentials file:
bashnode scripts/configure.mjs --client-id "..." --client-secret "..."
This writes ~/.clawdbot/asana/credentials.json.
Option B: set environment variables (shell/session):
ASANA_CLIENT_IDASANA_CLIENT_SECRETFrom the repo root:
1) Print the authorize URL:
bashnode scripts/oauth_oob.mjs authorize
2) Open the printed URL, click Allow, copy the code. 3) Exchange code and save tokens locally:
bashnode scripts/oauth_oob.mjs token --code "PASTE_CODE_HERE"
Tokens are stored at:
~/.clawdbot/asana/token.jsonYou can use either:
/asana ...For Clawdbot, implement the mapping by translating the user request into the appropriate asana_api.mjs command.
Examples:
/asana tasks-assigned → tasks-assigned --assignee metasks-assigned --assignee me<project> to a project gid, then tasks-in-project --project <gid>search-tasks --assignee me --due_on.after 2026-01-01 --due_on.before 2026-01-15(Optional helper) scripts/asana_chat.mjs can map common phrases to a command skeleton.
Sanity check (who am I):
bashnode scripts/asana_api.mjs me
List workspaces:
bashnode scripts/asana_api.mjs workspaces
Set a default workspace (optional):
bashnode scripts/asana_api.mjs set-default-workspace --workspace <workspace_gid>
After that, you can omit --workspace for commands that support it.
List projects in a workspace (explicit):
bashnode scripts/asana_api.mjs projects --workspace <workspace_gid>
List projects using the default workspace:
bashnode scripts/asana_api.mjs projects
List tasks in a project:
bashnode scripts/asana_api.mjs tasks-in-project --project <project_gid>
List tasks assigned to me (workspace required by Asana):
bashnode scripts/asana_api.mjs tasks-assigned --workspace <workspace_gid> --assignee me
Or using the default workspace:
bashnode scripts/asana_api.mjs tasks-assigned --assignee me
Search tasks (advanced search):
bashnode scripts/asana_api.mjs search-tasks --workspace <workspace_gid> --text "release" --assignee me # also supports convenience: --project <project_gid>
View a task:
bashnode scripts/asana_api.mjs task <task_gid>
Mark a task complete:
bashnode scripts/asana_api.mjs complete-task <task_gid>
Update a task:
bashnode scripts/asana_api.mjs update-task <task_gid> --name "New title" --due_on 2026-02-01
Comment on a task:
bashnode scripts/asana_api.mjs comment <task_gid> --text "Update: shipped"
Create a task:
bashnode scripts/asana_api.mjs create-task --workspace <workspace_gid> --name "Test task" --notes "from clawdbot" --projects <project_gid>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,739 | 7,114 | -27% | 1 | 1 | 0% | 1,611 | 1,643 | +2% | 0 | 0 | — |
case-02 | fail→fail | 7,612 | 1,464 | -81% | 1 | 1 | 0% | 1,186 | 1,397 | +18% | 0 | 0 | — |
case-03 | fail→pass | 7,338 | 4,786 | -35% | 1 | 1 | 0% | 1,185 | 1,560 | +32% | 0 | 0 | — |
case-04 | fail→pass | 11,876 | 4,172 | -65% | 1 | 1 | 0% | 1,830 | 1,537 | -16% | 0 | 0 | — |
case-05 | fail→pass | 9,465 | 2,530 | -73% | 1 | 1 | 0% | 1,586 | 1,667 | +5% | 0 | 0 | — |
case-06 | fail→pass | 11,997 | 2,682 | -78% | 1 | 1 | 0% | 2,153 | 1,596 | -26% | 0 | 0 | — |
case-07 | fail→pass | 10,440 | 1,548 | -85% | 1 | 1 | 0% | 1,646 | 1,434 | -13% | 0 | 0 | — |
case-08 | fail→pass | 10,951 | 1,695 | -85% | 1 | 1 | 0% | 1,752 | 1,413 | -19% | 0 | 0 | — |
case-09 | fail→pass | 5,495 | 1,419 | -74% | 1 | 1 | 0% | 922 | 1,381 | +50% | 0 | 0 | — |
case-10 | fail→pass | 11,553 | 2,368 | -80% | 1 | 1 | 0% | 2,056 | 1,547 | -25% | 0 | 0 | — |
case-11 | fail→fail | 6,970 | 1,832 | -74% | 1 | 1 | 0% | 1,190 | 1,483 | +25% | 0 | 0 | — |
case-12 | fail→pass | 9,550 | 1,743 | -82% | 1 | 1 | 0% | 1,520 | 1,401 | -8% | 0 | 0 | — |
case-13 | fail→pass | 10,150 | 1,702 | -83% | 1 | 1 | 0% | 1,695 | 1,442 | -15% | 0 | 0 | — |
case-14 | fail→pass | 9,943 | 1,883 | -81% | 1 | 1 | 0% | 1,458 | 1,522 | +4% | 0 | 0 | — |
case-15 | fail→pass | 10,462 | 3,212 | -69% | 1 | 1 | 0% | 1,690 | 1,445 | -14% | 0 | 0 | — |
case-16 | fail→pass | 8,066 | 2,438 | -70% | 1 | 1 | 0% | 1,456 | 1,605 | +10% | 0 | 0 | — |
case-17 | fail→pass | 6,937 | 2,431 | -65% | 1 | 1 | 0% | 1,203 | 1,618 | +34% | 0 | 0 | — |
case-18 | fail→pass | 8,986 | 1,911 | -79% | 1 | 1 | 0% | 1,413 | 1,500 | +6% | 0 | 0 | — |
case-19 | pass→pass | 10,799 | 2,428 | -78% | 1 | 1 | 0% | 1,786 | 1,581 | -11% | 0 | 0 | — |
case-20 | fail→fail | 16,548 | 11,741 | -29% | 1 | 1 | 0% | 2,814 | 3,206 | +14% | 0 | 0 | — |
case-21 | pass→pass | 14,514 | 10,126 | -30% | 1 | 1 | 0% | 2,480 | 3,001 | +21% | 0 | 0 | — |
case-22 | pass→pass | 21,509 | 6,587 | -69% | 1 | 1 | 0% | 1,853 | 2,264 | +22% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +68 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.