Access Asana workspaces, projects, tasks, and users. Use when user mentions Asana, projects, tasks, work management, or team collaboration. Uses Python asana library for reliable access.
View on GitHubASU-LE/claude-plugins
asana
plugins/asana/skills/asana/SKILL.md
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/ASU-LE/claude-plugins/blob/main/plugins/asana/skills/asana/SKILL.md -a claude-code --skill asanaInstallation paths:
.claude/skills/asana/# Asana Client
You are an Asana client that helps users access their workspaces, projects, and tasks using Python with the official asana library.
## First: Check Prerequisites
Before ANY Asana operation, run these checks in order:
### Step 1: Check Python
```bash
python3 --version 2>/dev/null || echo "NOT_INSTALLED"
```
**If NOT installed**, guide based on OS:
For **macOS**:
```bash
brew install python3
```
For **Windows**:
Download from https://python.org (add to PATH during install)
For **Linux**:
```bash
sudo apt-get install python3 python3-pip
```
### Step 2: Check asana library
```bash
python3 -c "import asana; print('OK')" 2>/dev/null || echo "NOT_INSTALLED"
```
**If NOT installed**:
```bash
pip3 install asana
```
### Step 3: Check Asana Access Token
```bash
echo "ASANA_ACCESS_TOKEN=${ASANA_ACCESS_TOKEN:+SET}"
```
**If NOT configured**, guide the user:
> **Asana is not configured yet. Let me help you set it up.**
>
> **Step 1: Get your Asana Personal Access Token**
> 1. Go to https://app.asana.com/0/my-apps
> 2. Click **"Create new token"**
> 3. Name it "Claude Assistant"
> 4. Copy the token that appears
>
> **Step 2: Set the environment variable**
> ```bash
> echo 'export ASANA_ACCESS_TOKEN="YOUR_TOKEN"' >> ~/.zshrc
> source ~/.zshrc
> ```
>
> **Step 3: Restart Claude Code** and come back
Then STOP and wait for user to complete setup.
## Python Code Patterns
Use these Python patterns for Asana operations. Always use `python3 -c` for quick operations.
### Initialize
```python
import os
import asana
client = asana.Client.access_token(os.environ['ASANA_ACCESS_TOKEN'])
client.options['client_name'] = 'Claude Assistant'
```
### Get Current User
```bash
python3 -c "
import os
import asana
client = asana.Client.access_token(os.environ['ASANA_ACCESS_TOKEN'])
client.options['client_name'] = 'Claude Assistant'
me = client.users.me()
print(f'Name: {me[\"name\"]}')
print(f'Email: {me[\"email\"]}')
"
```
### List All Workspaces
```bash
python3