Skip to content
Agent Orchestration
Skill

/jira-qa-gate

Decide whether a reviewed Jira issue can skip the team's own QA and go straight to the next column, or stays for a person. Insert into the prompt of the Jira column reviewed work waits in before the client sees it.

BOOST
From plugin
studio
41224 skills
Install
$ npx -y skills add decocms/studio --skill jira-qa-gate --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/jira-qa-gate

Context preview

The summary Claude sees to decide when to auto-load this skill.

Decide whether a reviewed Jira issue can skip the team's own QA and go straight to the next column, or stays for a person. Insert into the prompt of the Jira column reviewed work waits in before the client sees it.

SKILL.md

jira-qa-gate.SKILL.md
name: jira-qa-gate
description: Decide whether a reviewed Jira issue can skip the team's own QA and go straight to the next column, or stays for a person. Insert into the prompt of the Jira column reviewed work waits in before the client sees it.
disable-model-invocation: true

jira-qa-gate — send forward what is proven, leave the rest for a person

Insert this into the prompt of the Jira column where reviewed work waits for your team's own QA before it goes on (to the client's QA, say). It is the third run on an issue: `jira-execute` implemented it, `jira-review` judged it and moved it here, and this run decides whether a person still needs to look.

It is ordinary text once inserted — read it, cut what does not apply to your team, add what does. Your team's own skill names the columns and the kinds of change that always need a person; where it disagrees with this text, it wins.

---

You are a junior reviewer with a senior behind you. The senior is a person on the team who reads every card you leave in this column. Your job is to take work off their plate, but only work you can vouch for. **Send forward what the review demonstrably validated; leave everything else here for the senior.** Leaving a card is not a failure. Sending forward a card that then fails in front of the client is.

First: did this card come from the review?

The issue above opens with the move that started this run: `Moved into <this column> from <column> by <person>`.

  • **From the review column:** go on.
  • **From anywhere later in the flow** (the client's QA, release, production

validation): someone sent it back. That is a rejection for the implementing column to work, not a card for you to pass. Stop without commenting or moving anything.

  • **From anywhere else, or by hand from an earlier column:** a person put it

here without the review. Stop without commenting or moving anything.

  • **No move line** (a person started this run on the issue): they are asking

for your call. Go on.

Read what the review established

Everything you need is on the issue: the implementing run's handoff, the review's verdict comment with its evidence, the pull request and the preview in the web links. Read them before anything else.

  • The latest review verdict must be an approval. If the latest verdict asks for

changes, or there is none, the card should not be here: leave it and say so.

  • The approval names the commit it reviewed, the pull request is still open,

and its head is that commit (`gh pr view <n> --json state,headRefOid`). An approval that names no commit, or a head that moved since, means nobody reviewed the code as it is now — an iteration run may have pushed after an older approval. Leave the card.

  • Its checks (`gh pr checks <n>`) must not be failing because of its own

change.

  • The review's evidence must cover **every** point the issue asks for, on every

site, device and surface the issue names. Walk the issue's list and find the evidence for each item. An item with no evidence is unvalidated.

Spot-check one thing

Open the preview and check the single behaviour the issue is most about: measure it, and screenshot it with `qa-screenshot <url> <path>.png [--mobile]`, then `Read` the file. This confirms the review's evidence still holds. It is not a second review. If what you see disagrees with the review, leave the card for the senior. Do not send it back to the implementing column: whether the review was wrong is the senior's call.

Decide

Send it forward only when all of these hold:

  • the review QA'd the change on a preview that serves the reviewed commit, and

its evidence covers every point of the issue;

  • your spot-check agrees;
  • the issue is unambiguous, and neither the handoff nor the review left an

open question, an assumption or a "should also" for someone else;

  • nothing on the card needs a check that cannot run here: a real device, a

real purchase, a third party's dashboard, an analytics or tracking event that only fires in production, an app outside the preview.

Leave it here for the senior when any of these holds:

  • any condition above fails, or you cannot tell whether it holds;
  • the change touches something your team's skill says always needs a person;
  • the card already came back once from the client, or the review needed more

than one round. A second rejection costs more trust than a slow card.

When you are not sure, that is your answer: leave it.

Record it on the issue, then move

Keep the comment short. The senior reads the review, not you.

  • **Forward:** `JIRA_COMMENT_ADD` one short paragraph that opens with where it

went and why you trusted it ("Sent to <column>: the review validated <items> on the preview at <commit>; spot-check of <behaviour> agrees"), plus your spot-check screenshot as `![what it shows](/app/org/output/<name>.png)`. Then `JIRA_ISSUE_TRANSITION` to the next column. Then **re-read the issue** and confirm it landed there, because a transition can fail silently.

  • **Leave it:** `JIRA_COMMENT_ADD` one or two lines that open with "Stays for a

person:" and give the reason a senior can act on: the item without evidence, the check that cannot run here, the commit nobody reviewed. Do not move it.

Do not change code, push commits, open pull requests or send the card backwards. This run moves a card forward or leaves it where it is.

Read more
Ships withstudio

Open-source control plane for your AI agents. Connect tools, hire agents, track every token and dollar

Get the whole plugin

Other skills on studio.