---
name: jira-evidence
description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures evidence and generates evidence/comment.txt + evidence/comment.md."
---

# JIRA Evidence Posting

Upload captured evidence and generated templates to GitHub PR description and JIRA ticket. This skill is the posting step — it assumes evidence files and comment templates already exist in the evidence directory.

## Arguments

`$ARGUMENTS`: `<TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>`

- `TICKET_ID` (required): JIRA ticket key (e.g., `PROJ-123`)
- `EVIDENCE_DIR` (required): Directory containing evidence and templates (e.g., `./evidence`)
- `PR_NUMBER` (required): GitHub PR number to update description

## Prerequisites

- `JIRA_API_TOKEN` environment variable set
- `jira-cli` configured (`~/.config/.jira/.config.yml`) — server and login are read from there
- `gh` CLI authenticated
- Evidence directory containing:
  - Evidence files: `NN-name-viewport.png` (screenshots) and/or `NN-name.txt`/`NN-name.json` (text evidence)
  - `comment.txt` — JIRA wiki markup (generated by `generate-templates.py`)
  - `comment.md` — GitHub markdown (generated by `generate-templates.py`)

## Usage

```bash
bash .claude/skills/jira-evidence/scripts/post-evidence.sh <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>
```

### Example

```bash
bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 42
```

## What It Does

1. **Read JIRA config** — Reads `~/.config/.jira/.config.yml` to obtain `server` and `login` dynamically (no hardcoded values)
2. **Upload to GitHub `pr-assets` release** — Uploads evidence files via `gh release upload --clobber`, creating CDN URLs
3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
4. **Upload JIRA attachments** — Uploads image evidence via REST API v3 so `!filename.png!` wiki markup renders inline
5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup)
6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.

## Evidence Naming Conventions

- Image evidence: `NN-name-viewport.png` (e.g., `01-search-step-desktop.png`)
- Text evidence: `NN-name.txt` or `NN-name.json` (e.g., `01-health-check.json`)

## Troubleshooting

### Images not rendering in GitHub PR

Images must be in the `pr-assets` GitHub release. If the release does not exist, create it first:

```bash
gh release create pr-assets --title "PR Assets" --notes "CDN for PR evidence"
```

### JIRA comment shows `!filename.png!` as text (not image)

The screenshot must be uploaded as a JIRA attachment before posting the comment. The script uploads attachments first then posts the comment.

### JIRA API returns 403 on attachment upload

Ensure `JIRA_API_TOKEN` is set and `login` in `~/.config/.jira/.config.yml` matches your Atlassian account email.
