# Lisa Jira Evidence

> Upload text evidence to GitHub pr-assets release, update PR description, post JIRA comment with code blocks, 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.

- Skill: `codyswanngt/lisa-jira-evidence-2` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add codyswanngt/lisa-jira-evidence-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/codyswanngt/lisa-jira-evidence-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: codyswanngt (https://skillmd.com/u/codyswanngt)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/codyswanngt/lisa-jira-evidence-2

---


# JIRA Evidence Posting

## Workflow resolution

The post-build review status is read from `.lisa.config.json` `jira.workflow.review` (or `jira.workflow.code_review`). `review` is optional; when unset, the ticket stays in `claimed` until `done` and this skill skips the transition. Never transition to a status that is not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.

```bash
REVIEW=""
if [ -f .lisa.config.json ]; then
  _cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
  [ -n "$_cfg" ] && REVIEW="$_cfg"
fi
if [ -f .lisa.config.local.json ]; then
  _local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
  [ -n "$_local" ] && REVIEW="$_local"
fi
```


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:
  - `NN-name.txt` or `NN-name.json` text evidence files (e.g., `01-health-check.json`)
  - `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
2. **Upload to GitHub `pr-assets` release** — Uploads evidence files via `gh release upload --clobber`
3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body
4. **Post JIRA comment** — Posts `comment.txt` as a new comment (wiki markup with code blocks)
5. **Move ticket to the configured review status** — Transitions the JIRA ticket to `$REVIEW` (default: `Code Review`).

## Evidence Naming Convention

Text evidence files are named: `{NN}-{evidence-name}.txt` or `{NN}-{evidence-name}.json`

```text
evidence/
  01-health-check.json          uploaded
  02-schema-after-migration.txt uploaded
  03-rate-limit-response.txt    uploaded
  comment.txt                   used for JIRA comment
  comment.md                    used for PR description
```

## Troubleshooting

### Evidence not appearing in GitHub PR

Evidence files must be in the `pr-assets` GitHub release. If the release does not exist:

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

### JIRA API returns 403

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

