asana-patManage Asana tasks, projects, briefs, status updates, custom fields, dependencies, attachments, events, and timelines via Personal Access Token (PAT).
Install via ClawdBot CLI:
clawdbot install L-U-C-K-Y/asana-patThis skill provides a dependency-free Node.js CLI that calls the Asana REST API (v1) using a Personal Access Token (PAT).
{baseDir}/scripts/asana.mjsASANA_PAT (preferred) or ASANA_TOKENASANA_PAT. export ASANA_PAT="..."
skills.entries.asana.apiKey (or env.ASANA_PAT) so the secret is injected only for the agent run.This is the safest way to set the PAT because it keeps secrets out of prompts and ad-hoc shell history.
Recommended (apiKey → ASANA_PAT):
openclaw config set skills.entries.asana.enabled true
openclaw config set skills.entries.asana.apiKey "ASANA_PAT_HERE"
skills.entries.asana.apiKey is a convenience field: for skills that declare metadata.openclaw.primaryEnv, OpenClaw injects apiKey into that env var for the agent run (this skill’s primary env is ASANA_PAT).
Alternative (explicit env):
openclaw config set skills.entries.asana.enabled true
openclaw config set skills.entries.asana.env.ASANA_PAT "ASANA_PAT_HERE"
Verify what is stored:
openclaw config get skills.entries.asana
openclaw config get skills.entries.asana.enabled
openclaw config get skills.entries.asana.apiKey
Remove a stored token:
openclaw config unset skills.entries.asana.apiKey
# or
openclaw config unset skills.entries.asana.env.ASANA_PAT
When a session is sandboxed, skill processes run inside Docker and do not inherit the host environment. In that case, skills.entries.*.env/apiKey applies to host runs only.
Set Docker env via:
agents.defaults.sandbox.docker.env (or per-agent agents.list[].sandbox.docker.env) node {baseDir}/scripts/asana.mjs me
node {baseDir}/scripts/asana.mjs workspaces
node {baseDir}/scripts/asana.mjs set-default-workspace --workspace
When the user provides names (project/task/user), resolve to GIDs using one of:
typeahead --workspace --resource_type project|task|user --query "..." (fast, best default)projects --workspace --all (enumerate)users --workspace --all (enumerate)Avoid guessing a GID when multiple matches exist.
node {baseDir}/scripts/asana.mjs tasks-assigned --assignee me --workspace
node {baseDir}/scripts/asana.mjs tasks-in-project --project
Canonical primitive: search-tasks (supports many filters; preferred over adding narrow “search helper” commands).
One-liner example (search within a project):
node {baseDir}/scripts/asana.mjs search-tasks --workspace
Useful filters:
--assignee me| (maps to assignee.any)--completed true|false--created_at.after / --modified_at.after --due_on.before YYYY-MM-DD / --due_at.before --is_blocked true|false / --is_blocking true|false node {baseDir}/scripts/asana.mjs create-task --workspace
node {baseDir}/scripts/asana.mjs update-task
node {baseDir}/scripts/asana.mjs complete-task
This skill supports the workflows commonly expected from a PM in Asana:
upsert-project-brief)create-status-update)project-blockers, dependencies, dependents) node {baseDir}/scripts/asana.mjs project-brief
node {baseDir}/scripts/asana.mjs upsert-project-brief
node {baseDir}/scripts/asana.mjs create-status-update --parent
node {baseDir}/scripts/asana.mjs status-updates --parent
node {baseDir}/scripts/asana.mjs sections --project
node {baseDir}/scripts/asana.mjs create-section --project
Command: add-task-to-project
Calls POST /tasks/{task_gid}/addProject and supports optional section placement and ordering.
Examples:
node {baseDir}/scripts/asana.mjs add-task-to-project
With section + ordering:
node {baseDir}/scripts/asana.mjs add-task-to-project
(--section, --insert_before, and --insert_after are optional; when provided they are passed through in the request body.)
Command: remove-task-from-project
Calls POST /tasks/{task_gid}/removeProject.
Example:
node {baseDir}/scripts/asana.mjs remove-task-from-project
Custom fields are critical for reliable PM automation.
node {baseDir}/scripts/asana.mjs project-custom-fields
node {baseDir}/scripts/asana.mjs custom-field
node {baseDir}/scripts/asana.mjs update-task
Notes:
Asana rich text fields are XML-valid HTML fragments wrapped in a root element. The API rejects invalid XML or unsupported tags.
Key points:
html_notes for task descriptions.html_text for comments/stories and status updates. and
; prefer literal newlines (\n) and
separators. (or a self-closing ).Creating a mention link does not guarantee notification delivery if the user is not already assigned or following.
For reliable pings, do one of:
This skill supports the “add follower + wait” pattern:
node {baseDir}/scripts/asana.mjs comment
Plain text comments (--text) do not create real @-mentions via the API; they remain plain text.
node {baseDir}/scripts/asana.mjs upload-attachment --parent
node {baseDir}/scripts/asana.mjs append-inline-image --attachment
Asana does not provide a single universal “inbox” API for all notifications. The closest stable primitive is the Events endpoint scoped to a specific resource (project, task, etc.).
Use:
events --resource to pull incremental changes on a project (or a user's "My Tasks" project) node {baseDir}/scripts/asana.mjs shift-task-dates
node {baseDir}/scripts/asana.mjs shift-project-tasks --project
Run with --dry_run true first, then re-run with --dry_run false.
Generated Mar 1, 2026
A project manager needs to compile weekly status updates across multiple projects. They use the skill to list all projects in their workspace, check task completion rates, identify blocked tasks, and create structured status updates with the create-status-update command. This automates what would normally be manual data gathering and report writing.
A freelance consultant manages tasks across different client projects in Asana. They use the skill to quickly view all tasks assigned to them across workspaces, update due dates as priorities shift, and generate project briefs for clients using upsert-project-brief. This helps maintain clear communication without switching contexts.
A team lead needs to onboard new members by assigning them to appropriate projects and tasks. They use the skill to search for unassigned tasks in specific projects, assign them to new users via create-task or update-task commands, and set up custom fields to track skill development. This streamlines the onboarding workflow.
A marketing manager oversees campaigns with strict deadlines. They use the skill to set up project timelines, create tasks with dependencies using project-blockers commands, and monitor progress via search-tasks with due date filters. This ensures campaigns stay on schedule and dependencies are visible.
A product team uses Asana to manage sprints. They leverage the skill to list tasks in a project, move tasks between sections for sprint backlogs, and complete tasks at the end of sprints with the complete-task command. This integrates Asana into automated sprint review processes.
A company offers a SaaS platform that integrates with Asana via this skill to provide advanced analytics and automation. They use the skill's API calls to pull task data, generate insights on team productivity, and automate status reports, charging clients a monthly subscription based on usage.
A consultancy firm uses this skill to audit and optimize clients' Asana setups. They run scripts to analyze task dependencies, custom fields, and project structures, then provide tailored recommendations and automated scripts, billing on a project or retainer basis.
A startup builds a freemium service that leverages this skill to offer basic Asana automation (e.g., daily task digests) for free, with premium features like advanced reporting and integration with other tools. Revenue comes from upgraded plans and enterprise contracts.
💬 Integration Tip
Use the OpenClaw CLI to securely set the ASANA_PAT via skills.entries.asana.apiKey, avoiding exposure in shell history, and always set a default workspace with set-default-workspace for consistent command execution.
Manage Trello boards, lists, and cards via the Trello REST API.
Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.
Manage tasks and projects in Todoist. Use when user asks about tasks, to-dos, reminders, or productivity.
Master OpenClaw's timing systems. Use for scheduling reliable reminders, setting up periodic maintenance (janitor jobs), and understanding when to use Cron v...
Calendar management and scheduling. Create events, manage meetings, and sync across calendar providers.
Kanban-style task management dashboard for AI assistants. Manage tasks via CLI or dashboard UI. Use when user mentions tasks, kanban, task board, mission con...