Inspiration
Tickets reach refinement without acceptance criteria, repro steps or environment, and teams burn meetings bouncing them back. A Definition of Ready usually lives on a wiki page nobody opens. ReadyGate turns it into something executable.
What it does
- A deterministic rule engine scores each issue (12 rules by issue type: description, acceptance criteria, repro steps, expected/actual result, environment, priority, estimate, goal and scope). No LLM cost for the check, same result every time.
- The Rovo agent ReadyGate reports the score and exact gaps, drafts only the missing sections from the issue text (assumptions are marked), shows the text, and writes it to the issue only after the user confirms.
- A Readiness issue panel shows the same score, checklist and hints on every issue, with a Re-check button.
- Policy is per project (threshold, rule on/off, weights, custom regex rules) in Forge storage.
How we built it
Forge (Node 24, UI Kit): one rovo:agent with four action modules (check-issue-readiness, get-dor-policy, apply-issue-sections, post-readiness-comment), a jira:issuePanel with a resolver, and Forge KVS for policy and a field-id cache. All Jira calls use api.asUser(), so Jira permissions apply. The pure logic lives in src/lib/ with 13 Jest tests. It runs on Atlassian: no remotes, no egress, no external storage.
Challenges
Making the agent never write without confirmation (prompt plus the Rovo review card), writing ADF back safely (append under headings, optional dedicated Acceptance Criteria field), and keeping the check deterministic while the drafting stays conversational.
Accomplishments
End to end on a live site: a one-line bug scores 10/100, the agent drafts repro steps and expected/actual result, the user confirms, and the issue is re-scored 95/100 READY.
What we learned
Rovo actions fit "check then act" workflows well when the check is a pure function and the model only handles judgement.
What's next
Auto-check on issue create/update with a label and comment, a project settings page for policy editing, a sprint-wide "which issues are not ready" view, and MCP tools.
Main technology requirement
ReadyGate is a Forge app (manifest.yml, Node 24) that integrates with Jira and Rovo: a rovo:agent with four action modules plus a jira:issuePanel, using the Jira REST API through api.asUser() and Forge KVS.
Bonus prize: Best Agents
The app ships the rovo:agent module ReadyGate with 4 conversation starters and 4 action modules. The agent never writes to an issue before the user sees the drafted text and confirms; Rovo's own review card also gates every UPDATE/CREATE action.
Setup instructions for judges
- Open the installation link and install ReadyGate on a Jira site where Rovo is enabled.
- No configuration is needed. Defaults: threshold 80, 12 rules by issue type. Per-project overrides live in Forge storage.
- Open any Jira issue, click the Apps button under the issue title and choose Readiness: score, status and gaps appear. Click Re-check after edits.
- Open Rovo Chat (top right), mention the agent @ReadyGate on an issue and ask "Check this issue against our Definition of Ready" or "Turn this bug report into a complete repro template". Review the draft, answer "yes", and click Confirm on the Rovo review card.
- To test quickly, create a Bug with a one-line description: it scores about 10/100; after the agent applies the draft it scores 95/100 READY.
Installation link (Jira)
Links
- Demo video: https://youtu.be/HcS9O4sj6js
- Source code: https://github.com/congptvinadic-debug/readygate
Log in or sign up for Devpost to join the conversation.