Skip to content
Back to skills

Jira Review Prep

ASecurity

Prepare a Jira issue for review — generate a PR/MR description from acceptance criteria and the local git diff, then optionally transition to the review status. Use to get a ticket review-ready; for a bare status change use jira-update-status.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 28, 2026
toolstestinggit

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned September 28, 2026

npx -y skills add ShreyPurohit/Jira-Dev-Workflow-Plugin --skill jira-review-prep --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jira Review Prep?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Jira Review Prep
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/shreypurohit-jira-review-prep/badge)](https://www.skillsdirectory.com/skills/shreypurohit-jira-review-prep)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: jira-review-prep
description: Prepare a Jira issue for review — generate a PR/MR description from acceptance criteria and the local git diff, then optionally transition to the review status. Use to get a ticket review-ready; for a bare status change use jira-update-status.
license: MIT
compatibility: Requires Atlassian Cloud Jira through Atlassian Rovo MCP v2 (https://mcp.atlassian.com/v2/mcp) with client-managed OAuth.
---

# Jira Review Prep

Turn a finished piece of work into a review-ready state: generate a PR/MR
description from the ticket's acceptance criteria plus the local git diff, and
optionally transition the ticket to its review status.

## Responsibility

This skill owns review-preparation intent: mapping a git diff back to a ticket's
acceptance criteria and producing a copy-paste PR/MR description. It coordinates
`jira-update-status` for the optional transition and can hand off to
`jira-link-work` for posting git context back to the ticket.

It does not own generic status mechanics, generic comment creation, or branch
creation, and it does not commit, push, or open PRs itself.

## When to use

- User says "prepare PROJ-123 for review"
- User says "get PROJ-123 review-ready"
- User says "write a PR description for PROJ-123"
- User says "draft the pull request for PROJ-123"

## When NOT to use

- **Just changing status to a review state, no description** → use
  `jira-update-status`.
- **Posting branch/commit/PR context back to the ticket** → use `jira-link-work`.
- **Final completion (comment + Done transition)** → use `jira-complete`.
- **Creating the branch** → use `jira-branch`.

## Atlassian MCP conventions

1. Call `getAccessibleAtlassianResources` first and obtain the `cloudId` for the user's Jira Cloud site. If more than one site is returned, ask which to use; do not guess.
2. Pass that `cloudId` on every subsequent Jira tool call.
3. Call `getJiraIssue` to read the issue.
4. For the optional review transition, follow the `jira-update-status` procedure (discover → `executeRead` for `listJiraIssueTransitions`, match by destination `to.name`, confirm, `transitionJiraIssue`, verify).

## How to respond

### Step 1: Read the ticket

Call `getJiraIssue` with the issue key and `cloudId`. Extract summary,
description, and acceptance criteria.

### Step 2: Gather local git context (read-only)

1. Determine the **base branch** from repository context (e.g. remote default /
   upstream tracking) or the user's request. If it cannot be identified
   unambiguously, **ask the user** which base to use — never assume `main` or
   `development`.
2. Collect:
   - current branch: `git branch --show-current`
   - commits since base: `git log --oneline <confirmed-base>..HEAD`
   - changed-files summary: `git diff --stat <confirmed-base>...HEAD`
   - **actual patch**: `git diff <confirmed-base>...HEAD`
3. Inspect the **patch** (and relevant files where needed) to decide AC coverage.
   Do **not** infer implementation from filenames or `--stat` line counts alone.

Infer the issue key from the branch name (`feat/<KEY>-slug`) if the user did not
supply it. This step reads git only — it never commits, pushes, or opens a PR.

### Step 3: Generate the PR/MR description

Map the **patch** back to the ticket's ACs:

```markdown
## <ISSUE-KEY>: <summary>

### What changed

- <one line per meaningful commit / file group>

### Acceptance criteria

- [x] <AC 1 — met by …>
- [x] <AC 2 — met by …>
- [ ] <AC not yet covered, if any>

### Testing

- <only claim run/passed when there is real evidence; otherwise "Not verified" / note for the developer>

Closes <ISSUE-KEY>
```

Mark an AC unchecked (and say so) when the patch does not clearly cover it. Never
claim an AC is met without evidence in the changes.

### Step 4: Present the description

Show the description for the user to copy into their PR/MR. Creating the PR
itself is out of scope (that is `gh`/`glab`, not a portable MCP tool).

### Step 5: Offer the transition

Ask whether to move the ticket to its review status. On yes, apply the transition
discovery, destination matching, confirmation, execution, and verification
procedure defined by `jira-update-status`:

- The target is the workflow's **review-status equivalent**.
- Match using the destination status field (commonly `to.name`), never the
  transition label.
- Always confirm before changing Jira state.
- Verify the resulting status afterward.

### Step 6: Offer to link the work

Suggest running `jira-link-work` to post the branch/commit context back to the
ticket.

## Important rules

- **No invented AC coverage.** Only tick an AC the **patch** actually supports;
  flag the rest explicitly. `--stat` alone is not enough evidence.
- **Identify the base branch** before gathering commits/diff. Use repository
  context or the user's request when unambiguous; ask the user when it isn't.
- **Do not invent test results.** Report tests as run and passed only when there
  is actual evidence (e.g. command output the user provided, or CI results you
  can see). A commit message or the presence of test files is **not** proof.
  Otherwise write `Not verified` or leave a testing note for the developer.
- **Read-only git.** This skill inspects git; it does not commit, push, or open PRs.
- **Confirm the transition separately** from generating the description — a user
  may want the description without moving the ticket.
- **Transition matching by `to.name`**, never by transition label.
- **Never include secrets, tokens, or sensitive paths** in the description.

## Error handling

- **Not a git repository** → generate the description from the ticket alone and
  note that git context was unavailable.
- **Ambiguous base branch** → ask which base to use before inspecting the patch.
- **No ACs in the ticket** → build the description from summary + patch and say the
  ticket had no explicit ACs to check against.
- **Issue not found / branch matches no key** → ask the user for the key.
- **No available transition to the review status** → present the description
  anyway, list the available destinations, and ask which the user wants.

## Example

User: "Prepare PROJ-123 for review"

Response:

1. Fetch PROJ-123 → summary, description, ACs
2. Confirm base branch (ask if ambiguous); read commits, `--stat`, and the full `git diff <base>...HEAD` patch
3. Generate a PR description mapping the patch to each AC (marking uncovered ACs); Testing = evidence only or "Not verified"
4. Present it to copy; then offer to transition PROJ-123 to its review status
5. On confirmation, apply the `jira-update-status` transition procedure for the review destination, verify, and offer `jira-link-work`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.