一键导入
asana-automation
Query an Asana task by ID or title keyword via the Asana API, retrieve its title and description, then analyze and process it.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Query an Asana task by ID or title keyword via the Asana API, retrieve its title and description, then analyze and process it.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Query and manage WooCommerce orders on flowers.fenny-studio.com. (1) Look up orders by product ID or Chinese keyword — e.g. "哪些訂單買了鬱金香材料包"、"4182 被誰訂了"、"查一下 DIY 材料包的訂單". (2) Look up orders by shipping tracking number (運送編號) — e.g. "P93479717606 是哪張單"、"查物流單 R53049771167". (3) Filter orders by 希望送達時間 (desired delivery date) — e.g. "明天要出哪些貨"、"4/15 要送的訂單"、"本週出貨清單". (4) Reissue ECPay C2C tracking number for expired logistics — e.g. "4372 重打綠界"、"物流單過期了重新產生"、"reissue tracking". (5) Query ECPay logistics status — e.g. "誰到店了"、"查物流狀態"、"列到店待取的訂單"、"已寄出的訂單目前狀況"、"4345 現在物流狀態".
Trigger a Bitbucket Cloud pipeline on the current branch, with interactive pipeline selection and variable support. Polls for completion and reports results.
Generate a slide deck from a topic or context, then convert it into a Google Slides presentation after user confirmation.
Create or update a Bitbucket Cloud pull request with auto-generated title and description from git diff.
Fetch Bitbucket PR review comments, analyze whether code changes are needed, and reply after user confirmation.
Generate a D2 diagram (sequence diagram or flowchart) by tracing an API endpoint or method's execution flow in the current repository. Use when the user wants to visualize code flow.
| name | asana-automation |
| description | Query an Asana task by ID or title keyword via the Asana API, retrieve its title and description, then analyze and process it. |
Managed in $HOME/my-skills/.env (see .env.example for reference):
ASANA_ACCESS_TOKEN — Asana Personal Access TokenASANA_WORKSPACE_GID — Asana Workspace GID (required when searching by title)ASANA_DONE_SECTION_NAME — Section name to move the task to after completion (default: To Be Test)Load them before making API calls:
source "$HOME/my-skills/.env"
The user runs /asana <ID or keyword>:
$ARGUMENTS is purely numeric, treat it as a Task GID and query directlycurl -sS -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/tasks/$ARGUMENTS?opt_fields=name,notes,assignee.name,due_on,completed,created_by.gid,created_by.name,memberships.project.gid,memberships.project.name,memberships.section.gid,memberships.section.name,custom_fields.name,custom_fields.display_value" \
| jq '{
gid: .data.gid,
name: .data.name,
notes: .data.notes,
assignee: .data.assignee.name,
due_on: .data.due_on,
completed: .data.completed,
created_by: { gid: .data.created_by.gid, name: .data.created_by.name },
memberships: [.data.memberships[] | { project_gid: .project.gid, project_name: .project.name, section_gid: .section.gid, section_name: .section.name }],
custom_fields: [.data.custom_fields[] | select(.display_value != null) | {name: .name, value: .display_value}]
}'
Remember the created_by (reporter) GID and the project_gid from the query — these will be needed when completing the task later.
QUERY=$(echo "$ARGUMENTS" | jq -sRr @uri)
curl -sS -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/workspaces/$ASANA_WORKSPACE_GID/tasks/search?text=$QUERY&opt_fields=name,notes,assignee.name,due_on,completed,memberships.project.name&is_subtask=false&sort_by=modified_at&limit=10" \
| jq '.data[] | {gid, name, assignee: .assignee.name, due_on, completed}'
If multiple results are found, list them and let the user choose, then query the full details using the selected GID.
After querying, present the task information in the following format:
## Task: <title>
- **GID**: <gid>
- **Project**: <project name>
- **Assignee**: <assignee>
- **Due**: <due date>
- **Status**: <completion status>
### Description
<notes content>
After presenting the task information:
After implementation is complete and committed, perform the following steps:
List all sections in the task's project and find the one whose name contains $ASANA_DONE_SECTION_NAME (case-insensitive):
curl -sS -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/projects/<PROJECT_GID>/sections?opt_fields=name"
curl -sS -X POST \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data":{"task":"<TASK_GID>"}}' \
"https://app.asana.com/api/1.0/sections/<TO_BE_TEST_SECTION_GID>/addTask"
curl -sS -X PUT \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data":{"assignee":"<REPORTER_GID>"}}' \
"https://app.asana.com/api/1.0/tasks/<TASK_GID>"
Remember the Task GID, Project GID, and Reporter GID from the query, and automatically execute the above steps after the commit is complete.