| name | triage |
| description | Triage skill — walk untriaged Asana pages, push a new ticket or mark not-needed |
Triage
Walk untriaged Asana intake pages one at a time and let the user decide for each: push a new ticket, mark not-needed, or skip.
When to invoke
Run this skill when the user says "triage", "triage tasks", or similar. Also triggered by /triage and /triage --all.
Behavior
Step 1 — Determine scope and collect pages
Check whether the user passed --all:
- Default scope (
/triage): Asana-sourced pages where status: backlog AND jira_ref is null AND jira_needed is null.
- Full scope (
/triage --all): Asana-sourced pages where jira_ref is null AND jira_needed is null (any status).
In both cases, already-triaged pages are excluded — any page with jira_ref set OR jira_needed set (to yes or no) is skipped.
Scan wiki/tasks/ for matching pages. Read each .md file's frontmatter to check the filter conditions:
source must be asana
jira_ref must be null (not linked)
jira_needed must be null (not yet triaged)
- If default scope:
status must be backlog
Collect the list of matching pages. If none match, report "No untriaged pages found." and stop.
Step 2 — Walk each page
For each matching page, present:
- Page title and ref — the Asana task title and identifier
- Current status — the page's wiki status
- Jira candidates — run
rubber-ducky triage-candidates <page-path> to find Jira keys mentioned in the page body. For each candidate, show:
- The Jira key (e.g.
GEORGE-297)
- Where it was found (location: description, comments, or activity log)
Candidates are informational only — surface them so the user can decide whether the work is already tracked elsewhere before pushing a new ticket.
Step 3 — Present user choices
For each page, ask the user to pick one action:
- (p) Push — delegate to the existing
/push skill to create a new Jira ticket from this Asana page. This sets jira_needed: yes as part of the push flow.
- (n) Not-needed — mark this page as not needing a Jira ticket. Requires the user to provide a reason.
- (s) Skip — leave this page unchanged, no state change. Move to the next page.
Wait for the user's choice before proceeding.
Step 4 — Execute the chosen action
On push:
Delegate to the /push skill. The push flow handles setting jira_needed: yes automatically.
On not-needed:
- Ask the user for a reason (required — do not proceed without one).
- Set
jira_needed: no in the page's frontmatter.
- Append a dated entry to the page's
## Activity log section:
- YYYY-MM-DD — Triaged: no Jira ticket needed. Reason: <reason>
Use today's date (ISO format date portion). Write the changes using the Edit tool.
On skip:
No changes. Move to the next page.
Step 5 — Continue or finish
After processing a page, move to the next untriaged page. Repeat Steps 2–4 until all pages are processed.
When done, report a summary:
- How many pages were processed
- How many were pushed
- How many were marked not-needed
- How many were skipped
Output
A conversational, one-page-at-a-time walkthrough. Keep each prompt concise — show the essential info and choices, not a wall of text.