Skip to main content

asana-pat

Manage Asana tasks and projects via Personal Access Token (PAT): briefs, status updates, timelines, custom fields, attachments.

Quellinformationen

Repository
ThinkfleetAI/thinkfleet-engine
Letzte Quellaktivität
10. Februar 2026 um 19:23
Erkannte Sprache von SKILL.md
Englisch
Sterne
0
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
asana-pat
description
Manage Asana tasks and projects via Personal Access Token (PAT): briefs, status updates, timelines, custom fields, attachments.
# Asana (PAT) skill This skill provides a dependency-free Node.js CLI that lets the agent use the Asana REST API with a **Personal Access Token (PAT)**. It is designed to support both: - **Personal task management** (quick capture, triage, “my tasks”, lightweight planning), and - **Project management workflows** (project briefs, status updates, timelines, dependencies/blockers, custom fields, stakeholder communication). ## Setup ### 1) Create a PAT Create an Asana personal access token and store it securely. PATs are long-lived and act as the user who created them. - Asana PAT docs: https://developers.asana.com/docs/personal-access-token - Asana auth overview: https://developers.asana.com/docs/authentication ### 2) Configure the skill env var This skill requires: - `ASANA_PAT` (required): Asana PAT (Bearer token) In ThinkFleet, configure skill env vars via **skills config** (do not rely on host env vars when sandboxed). - Skills config docs: https://docs.thinkfleet.dev/tools/skills-config Example config snippet (conceptual): ```jsonc { "skills": { "entries": { "asana-pat": { "enabled": true, "apiKey": "ASANA_PAT", "env": { "ASANA_PAT": "YOUR_TOKEN" } } } } } ``` ## How to call All commands are executed via the CLI script: ```bash node {baseDir}/scripts/asana.mjs <command> [args] [--flags] ``` Run: ```bash node {baseDir}/scripts/asana.mjs help ``` for the full command list. ## Key capabilities ### Core: tasks + projects - List tasks assigned to a user (`tasks-assigned`) - List tasks in a project (`tasks-in-project`) - Create/update/complete tasks (`create-task`, `update-task`, `complete-task`) - Search tasks with filters (`search-tasks`) - Read/update project metadata (`project`, `update-project`) - Sections, project memberships, followers (common PM operations) ### Project manager conveniences - **Project brief**: read + “upsert” (create or update) (`project-brief`, `upsert-project-brief`) - **Status updates**: list, create, delete (`status-updates`, `create-status-update`, `delete-status-update`) - **Dependencies / blockers**: query + modify (`dependencies`, `dependents`, `add-dependencies`, `remove-dependencies`, `project-blockers`) - **Timeline shifting**: move dates by N days (`shift-task-dates`, `shift-project-tasks`) - **Project dashboard**: computed summary snapshot (`project-dashboard`) ### Custom fields Custom fields are first-class in PM usage. This skill supports: - Listing a project’s custom fields (`project-custom-fields`) - Reading a custom field definition (`custom-field`) - Setting task custom fields when creating/updating tasks (`--custom_fields <json>`) ### Activity / updates (feed-like) Asana does not provide a simple “Inbox API” for notifications, but you can approximate “recent changes” via: - `events` (incremental changes for a resource; maintains a local sync token) - `search-tasks` with `modified_at.after`, `created_at.after`, etc. ## Rich text formatting and @-mentions Asana supports “rich text” fields using **XML-valid HTML fragments** wrapped in a `<body>` tag. The rich text version of a field is the same name prefixed by `html_` (e.g., `notes` -> `html_notes`). Supported objects include tasks (`html_notes`), stories/comments (`html_text`), project briefs (`html_text`), and status updates (`html_text`). - Rich text guide: https://developers.asana.com/docs/rich-text ### Creating a mention To link/mention Asana objects (users, tasks, projects, etc.) in rich text, you can send a minimal link tag such as: ```html <body>FYI <a data-asana-gid="USER_GID"/></body> ``` Asana will expand it into a full link when you have access. ### Ensuring mention notifications When adding a comment (story), @-mentions only reliably generate notifications if the mentioned user is already a **follower** (or assignee) of the task. The recommended pattern is: add follower first, wait briefly, then create the story. This skill’s `comment` command supports that pattern via: - `--ensure_followers <csv>` (user gids/emails/me) - `--wait_ms 2000` (optional) - `--no_wait true` (optional) ## Attachments and images ### Uploading files (including images) You can upload files (including images) as Asana attachments using: - `upload-attachment --parent <task|project|project_brief_gid> --file <path>` Asana’s attachments endpoint supports uploading a file (multipart/form-data) or creating an external URL attachment. Files are subject to size limits (commonly 100MB). - Attachments reference: https://developers.asana.com/reference/createattachmentforobject ### Listing and inspecting attachments - `attachments <parent_gid>` - `attachment <attachment_gid>` Note: attachment `download_url` values are short-lived (minutes). Prefer `permanent_url` for a stable Asana link. ### Inline images in task notes / project briefs Asana rich text can include inline images via `<img>` tags. Inline images are stored as attachments; to embed them you must first upload/attach the image to the same target object, then reference the attachment GID in rich text. This skill includes: - `append-inline-image --attachment <attachment_gid> --task <task_gid>` - `append-inline-image --attachment <attachment_gid> --project_brief <project_brief_gid>` It verifies by default that the attachment is attached to the target object. ## Notes and non-goals - Portfolio operations are intentionally omitted (premium feature; out of scope). - This skill uses PAT auth only (not OAuth). - Keep `opt_fields` tight for performance: request only what you need.
Auf GitHub ansehen