# Sw Process Feed Tickets

> Processes FEED project customer feedback tickets. Can target specific tickets by key (e.g. /sw-process-feed-tickets FEED-1234 FEED-5678) or, when no keys are given, fetches all "In Triage" FEED tickets assigned to currentUser() with the UI component. Clones UI-only tickets into the UX project with mapped priorities and linked references, transitions FEED tickets based on clone priority, and returns a summary with a manual-review list for tickets with mixed components. Use when the user runs /sw-process-feed-tickets or asks to process, triage, or sync FEED tickets to UX.

- Skill: `weirong-duke/sw-process-feed-tickets` (Agent Skill)
- Install (CLI): `npx skillmds@latest add weirong-duke/sw-process-feed-tickets`
- Raw SKILL.md: https://api.skillmd.com/api/skills/weirong-duke/sw-process-feed-tickets/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: weirong-duke (https://skillmd.com/u/weirong-duke)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/weirong-duke/sw-process-feed-tickets

---


# SW: Process FEED → UX Tickets

## Overview

1. Determine the target ticket set (see Step 1)
2. Split into **UI-only** vs **UI + other components**
3. For UI-only tickets: clone into UX project, link back, transition FEED ticket
4. Return a full summary

---

## Step 1 — Fetch Tickets

### If the user provided specific ticket keys (e.g. `/sw-process-feed-tickets FEED-1234 FEED-5678`)

Fetch those tickets directly by key. Do **not** apply any JQL filter — process them regardless of status or assignee.

**Fields to fetch:** `summary`, `issuetype`, `components`, `attachment`, `comment`, `description`, `customfield_10049`, `customfield_10447`

### If no ticket keys were provided

**JQL:**
```
project = FEED AND assignee = currentUser() AND status = "In Triage" AND component = "UI"
```

**Fields to fetch:** `summary`, `issuetype`, `components`, `attachment`, `comment`, `description`, `customfield_10049`, `customfield_10447`

---

After fetching, split the results:
- **UI-only**: `components` array has exactly one entry (`UI`)
- **Mixed**: `components` has `UI` plus at least one other component — these go in the manual-review list, skip cloning

---

## Step 2 — Priority Mapping

Use the **highest-matching rule** (rules are ordered by precedence):

| Rule | FEED Condition | UX Priority |
|------|---------------|-------------|
| 1 | Severity = Sev-1 **or** User Priority = Critical | Urgent |
| 2 | Severity = Sev-2 **or** User Priority = High | High |
| 3 | Severity = Sev-3 **and** User Priority = Medium or higher | Medium |
| 4 | Severity = Sev-3 **and** (User Priority = Low, None, or TBD) | Low |

UX priority hierarchy (highest → lowest): **Fire > Urgent > High > Medium > Low**

**Custom field IDs:**
- Severity: `customfield_10049` (values: `Sev-1`, `Sev-2`, `Sev-3`)
- User Priority: `customfield_10447` (values: `P1 - Critical`, `P2 - High`, `P3 - Medium`, `P4 - Low`)

---

## Step 3 — Clone into UX

For each UI-only ticket, create a new issue in the **UX** project:

**Title:** `FEED - {original summary}`

**Issue type:** Copy from the source FEED ticket (fallback: `Bug`)

**Priority:** Mapped UX priority from Step 2

**Description:** Copy the original description verbatim, then append:

```markdown
---
**📎 Attachments from [FEED-XXXX](https://striveworks.atlassian.net/browse/FEED-XXXX)**
- [filename.ext](attachment_content_url)
- ...
```

If there are no attachments, omit the section entirely.

**After creating the UX ticket**, if the source FEED ticket had any comments, post a single proxy comment on the new UX ticket:

```markdown
**💬 Comments from [FEED-XXXX](https://striveworks.atlassian.net/browse/FEED-XXXX)**

**{Author DisplayName}** — {date}:
{comment body}

---
**{Author DisplayName}** — {date}:
{comment body}
```

Note: `@mentions` in comment bodies are plain text (cross-project account IDs can't be resolved).

**Link the UX ticket back to the FEED ticket** using link type: `relates to`

---

## Step 4 — Transition FEED Tickets

After a UX clone is created and linked, transition the source FEED ticket:

| UX Priority | FEED Transition |
|-------------|----------------|
| Fire, High, or Medium | → **Selected for Development** |
| Low | → **Backlog** |

Use the Jira transition API. Fetch available transitions for the issue if the transition ID is unknown.

---

## Step 5 — Return Summary

After processing all tickets, output a summary in this format:

```
## FEED → UX Processing Summary

### ✅ Cloned & Linked ({count})
| FEED Ticket | UX Ticket | Priority | FEED Status |
|-------------|-----------|----------|-------------|
| FEED-XXXX   | UX-YYY    | High     | Selected for Development |
...

### ⚠️ Needs Manual Review — Mixed Components ({count})
These tickets have the UI component alongside others and were skipped.
Verify whether they should be cloned to UX and/or another team's board.

| Ticket | Summary | Components |
|--------|---------|------------|
| FEED-XXXX | ... | UI, Sentinel |
...
```

---

## Notes

- Always do a **dry run first** and show the summary before executing, unless the user explicitly says to skip it.
- The Atlassian MCP server must be authenticated before running (`plugin-atlassian-atlassian`).
- Attachment files cannot be copied cross-project via the API — use reference links in the description instead.
- Inline `blob:` image URLs in descriptions will not render in UX; the attachment reference section is the reliable fallback.

