Asana
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). Skill: Asana Owner: k0nkupa Summary: 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). Tags: latest:1.0.0 Version history: v1.0.0 | 2026-01-26T02:59:51.460Z | user - Updated skill. Archive index: Archive v1.0.0: 8 files,
Rank
62
Safety
84
Downloads
2.7k
Updated
Apr 15, 2026
Version
1.0.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 2.7K downloads reported by the source. Last updated 4/15/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Apr 15, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Apr 15, 2026
- Adoption signal
- 2.7K downloadsadoption · observed Apr 15, 2026
- Latest release
- 1.0.0release · observed Jan 26, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install kn7b69bxtkr2s9fv7wte391nan7zz874:asana- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-k0nkupa-asana/snapshot"
Documentation
CLAWHUB
10,564 characters of source documentation, loaded on request.
Extracted files
4 files captured from the source.
SKILL.md
--- name: asana description: "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)." --- # Asana (Clawdbot skill) This skill is designed for a **personal local-only** Asana integration using **OAuth** with an **out-of-band/manual code paste** flow. ## What this skill provides - A small Node CLI to: - generate the Asana authorize URL - exchange an authorization code for access/refresh tokens - auto-refresh the access token - make basic API calls (e.g. `/users/me`, `/workspaces`, tasks) ## Setup (OAuth, OOB/manual code) ### 0) Create an Asana app In Asana Developer Console (My apps): - Create app - Enable scopes you will need (typical: `tasks:read`, `tasks:write`, `projects:read`) - Set redirect URI to the OOB value (manual code): - `urn:ietf:wg:oauth:2.0:oob` ### 1) Provide credentials (two options) **Option A (recommended for Clawdbot):** save to a local credentials file: ```bash node scripts/configure.mjs --client-id "..." --client-secret "..." ``` This writes `~/.clawdbot/asana/credentials.json`. **Option B:** set environment variables (shell/session): - `ASANA_CLIENT_ID` - `ASANA_CLIENT_SECRET` ### 2) Run OAuth From the repo root: 1) Print the authorize URL: ```bash node scripts/oauth_oob.mjs authorize ``` 2) Open the printed URL, click **Allow**, copy the code. 3) Exchange code and save tokens locally: ```bash node scripts/oauth_oob.mjs token --code "PASTE_CODE_HERE" ``` Tokens are stored at: - `~/.clawdbot/asana/token.json` ## Chat usage (support both explicit + natural language) You can use either: - **Explicit commands**: start the message with `/asana ...` - **Natural language**: e.g. “list tasks assigned to me” For Clawdbot, implement the mapping by translating the user request into the appropriate `asana_api.mjs` command. Examples: - `/asana tasks-assigned` → `tasks-assigned --assignee me` - “list tasks assigned to me” → `tasks-assigned --assignee me` - “list all tasks in <project>” → resolve `<project>` to a project gid, then `tasks-in-project --project <gid>` - “list tasks due date from 2026-01-01 to 2026-01-15” → `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. ## Using the API helper Sanity check (who am I): ```bash node scripts/asana_api.mjs me ``` List workspaces: ```bash node scripts/asana_api.mjs workspaces ``` Set a default workspace (optional): ```bash node 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): ```bash node scripts/asana_api.mjs projects --workspace <workspace_gid> ``` List projects using the default workspace: ```bash node scripts/asana_ap
README.md
# clawdbot-asana-skill
Asana OAuth (local-only) + task/project commands for Clawdbot.
This repo contains a small **Asana skill** (an AgentSkill folder) that you can:
- use locally on your Clawdbot host
- publish/share so other Clawdbot users can install and run it
It uses **Asana OAuth 2.0 Authorization Code Grant** with an **out-of-band (OOB) / manual code paste** redirect URI:
- `urn:ietf:wg:oauth:2.0:oob`
No public callback server is required.
---
## What you get
Commands (via Node scripts):
- Auth helpers: generate authorize URL, exchange code, refresh access token
- List workspaces, list projects, list tasks
- View task, update task, mark complete, comment
Tokens and config are stored locally under:
- `~/.clawdbot/asana/credentials.json` (client id + secret)
- `~/.clawdbot/asana/token.json` (OAuth tokens)
- `~/.clawdbot/asana/config.json` (default workspace)
---
## Prerequisites
- Node.js 22+
- An Asana account with access to the workspace(s) you want
---
## 1) Create an Asana “Custom App” (Developer Console)
1. Open the Asana Developer Console:
- https://app.asana.com/0/my-apps
2. Create a new app.
3. **Distribution (important):**
- Your OAuth app must be **available in the workspace** the user is authorizing from.
- In the developer console, configure **Manage distribution** so the app is available to the target workspace(s).
- If distribution/workspace availability is misconfigured, authorization can fail even if the URL is correct.
4. OAuth settings:
- **Redirect URI:**
- `urn:ietf:wg:oauth:2.0:oob`
- Copy the **Client ID** and **Client Secret**.
### Scopes (must match what you request)
In the Asana Developer Console, go to **OAuth → Permission scopes** and enable the scopes you plan to request.
Important rules:
- The scopes you request in the authorize URL **must be a subset of** the scopes enabled in the console.
- If you request a scope that is not enabled, you’ll get a `forbidden_scopes` error.
Recommended “full task management” scope set:
- `tasks:read` `tasks:write` `tasks:delete`
- `projects:read` `projects:write`
- `attachments:read` `attachments:write`
- `custom_fields:read` `custom_fields:write`
- `tags:read` `tags:write`
- `task_custom_types:read`
- `teams:read`
- `users:read`
- `workspaces:read`
---
## 2) Configure credentials locally
Save your Asana OAuth client id/secret to a local file:
```bash
node scripts/configure.mjs \
--client-id "YOUR_CLIENT_ID" \
--client-secret "YOUR_CLIENT_SECRET"
```
This writes:
- `~/.clawdbot/asana/credentials.json`
(Alternative: you can set `ASANA_CLIENT_ID` and `ASANA_CLIENT_SECRET` as environment variables, but the credentials file is recommended for Clawdbot.)
---
## 3) Authorize (OOB) and save tokens
### 3.1 Generate the authorize URL
```bash
node scripts/oauth_oob.mjs authorize \
--scope "tasks:read tasks:write projects:read"
```
Open the printed URL in your browser, click **Allow**, then copy the code.
### 3.2 Exchange the code_meta.json
{
"ownerId": "kn7b69bxtkr2s9fv7wte391nan7zz874",
"slug": "asana",
"version": "1.0.0",
"publishedAt": 1769396391460
}references/asana-endpoints.md
# Asana endpoints (quick reference)
Auth:
- Authorize: `GET https://app.asana.com/-/oauth_authorize`
- Token exchange / refresh: `POST https://app.asana.com/-/oauth_token`
- Revoke: `POST https://app.asana.com/-/oauth_revoke`
API:
- Base: `https://app.asana.com/api/1.0`
Common:
- `GET /users/me`
- `GET /workspaces`
- `GET /projects?workspace=<gid>`
- `GET /tasks` (requires filters)
- `GET /workspaces/{workspace_gid}/tasks/search` (advanced search; can be premium-only)
- `POST /tasks`
Notes:
- OAuth scopes are required with OAuth apps (examples: `tasks:read`, `tasks:write`, `projects:read`).AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/k0nkupa/asana",
"sourceUrl": "https://clawhub.ai/k0nkupa/asana",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-k0nkupa-asana/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-k0nkupa-asana/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2.7K downloads",
"href": "https://clawhub.ai/k0nkupa/asana",
"sourceUrl": "https://clawhub.ai/k0nkupa/asana",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.0",
"href": "https://clawhub.ai/k0nkupa/asana",
"sourceUrl": "https://clawhub.ai/k0nkupa/asana",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-01-26T02:59:51.460Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-k0nkupa-asana/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-k0nkupa-asana/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.0",
"description": "- Updated skill.",
"href": "https://clawhub.ai/k0nkupa/asana",
"sourceUrl": "https://clawhub.ai/k0nkupa/asana",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-01-26T02:59:51.460Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
