-
-
Understudy: hand over your Jira work without losing its context. Stand-ins with evidence and what only one person knows.
-
Plan health for Ada's leave: 7 open items, 4 must be covered, 2 due while away, 1 only Ada knows.
-
Every stand-in comes with evidence you can check in Jira: 12 points for Max Taylor on PAY-2.
-
Team risk: across PAY, OPS and FIN, 3 of 14 open items are known by one person, 2 urgent soon. Cover readiness 79%.
-
Who holds knowledge alone: per person, what someone else knows and what only they know, with the closest colleague.
-
Request walkthrough: a comment asks the owner for a 15-minute walkthrough with a colleague. Nothing is reassigned.
-
On every work item: if Ada is away, who could cover this? Candidates ranked with evidence and load.
-
A briefing on the work item: what the stand-in covers, why it matters and why them. Briefing again updates the same comment.
-
The Rovo agent answers "Where is our team's knowledge held by one person?" with people, items and best backups, and offers walkthroughs.
-
An external MCP client (MCP Inspector) lists Understudy's 8 tools through Atlassian's MCP server and gets the same plan.
-
Welcome back: what moved on Ada's work while she was away, what needs her first, and which stand-in covered what.
-
One click publishes the handover as a Confluence page: who covers what, what only Ada knows, and the reasons.
-
One engine, four ways in: the Jira page, the work item panel, the Rovo agent and MCP, over Jira, Confluence and the Teamwork Graph.
- What it is: a Forge app for Jira and Confluence, with a Rovo agent and an MCP server, that plans a handover before someone goes away and catches them up when they are back.
- Who it is for: anyone in a business team whose work lives in Jira and who goes on leave or covers for someone, and the managers who plan that cover.
- What is new: a stand-in for each work item with evidence anyone can check, a warning for the work only one person knows, and a Team risk view that finds those single points of knowledge across a team before anyone leaves.
Inspiration
Every team has the same Thursday-before-leave ritual: a rushed handover doc, a list of tickets, and a vague "ping Ben if anything breaks". It misses the one thing only you understood, it buries the most experienced person, and nobody tells the stand-ins why they were picked. Then you come back and spend a morning reconstructing what happened.
The context to do this well already exists in Atlassian: who commented on what, who works in the same epic and components, who is on your team, which pull requests are open, which goals your work rolls up to. Codegeist asked us to turn that connected context into confident decisions. A handover is exactly that decision.
Why it matters
Handovers weigh on people before and after leave. 46% of US workers with paid time off take less than they are offered, and 43% of them would feel bad about coworkers taking on extra work (Pew Research Center, 2023). Coming back is slow: 53% of knowledge workers need three or more days to feel caught up after time off (Zoom and Morning Consult, 2026; a vendor-commissioned survey). And what a rushed handover loses is often held by one person: 42% of institutional knowledge is unique to the person in the role (Panopto and YouGov, 2018, via HR Dive). Understudy works on all three: it spreads the cover so nobody is buried, flags the knowledge only you hold, and shows what needs you first when you return.
What it does
Before you go. Pick a person and dates. Understudy reads their open Jira work and ranks it by what must be covered: overdue, due while away, blocked, high priority, open pull request, someone waiting for a reply, in progress. For example, with Ada Isadora away from 12 Nov 2026 to 14 Nov 2026 on the demo site, the headline reads: "Ada Isadora has 7 open items: 4 must be covered from 12 Nov 2026, 2 fall due by 14 Nov 2026, 1 already overdue, 1 only Ada Isadora has context on." For each item it suggests a stand-in with the evidence. An illustrative example of those evidence lines (not taken from the video): "Commented 2 times on this item (+6), worked on 2 other items in Refunds v2 (+6), knows the Payments component (+1), already carries 9 open items (−2)". It assigns items in order of urgency and counts each assignment against that person's load, so the plan spreads work instead of burying the expert.
It also flags work only you have context on: items where nobody else has 3 or more points of evidence, because nobody else has commented or worked nearby. Those need a 15-minute walkthrough before you leave, not a reassignment, and that is the knowledge most handovers lose.
Then one click briefs every stand-in (or one at a time): a comment on the work item that @-mentions them with what they cover, why it matters and why they were picked, and adds them as a watcher. Briefing the same stand-in again updates your earlier briefing comment instead of adding a duplicate. Another click publishes the whole handover as a Confluence page.
On its own. When someone creates a work item that announces time off (type Time off, Leave or Vacation, a label such as time-off or vacation, or a summary that starts with "Time off"), Understudy drafts the handover without being asked and posts it on that item for the person going away: the headline, who covers what, and what only they know. On the demo site, creating "Time off: Ada Isadora, 13 to 17 Nov" in the HR project got this comment from Understudy within a minute: "Ada Isadora has 7 open items: 4 must be covered from 13 Nov 2026, 2 fall due by 17 Nov 2026, 1 already overdue, 1 only Ada Isadora has context on. Suggested cover: Max Taylor: PAY-2, PAY-4 · Ryan Lee: OPS-1 · Cassi Owens: PAY-3. Before you go: only you have context on FIN-1." It lists keys and names only (no summaries, because everyone who can see the time-off item sees it), posts once, and briefs nobody: the person reviews the plan and briefs the stand-ins from the page or the agent.
Welcome back. When you return, Understudy shows what other people did on your work since your first day away (status changes, reassignments, comments), with what needs you first: mentions, items handed to you, replies waiting. It recognizes its own briefings, so it can tell you which stand-in covered what.
Team risk. Before anyone goes away, a manager or team lead picks up to 5 projects. Understudy checks every open assigned work item (up to the 100 most urgent) with the same evidence as a handover and finds the single points of knowledge: items where nobody else has 3 or more points of evidence. On the demo site, for PAY, OPS and FIN: "Only one person has context on 3 of the 14 open items in PAY, OPS, FIN, 2 of them due or urgent in the next two weeks. Ryan Lee holds the most: 2 of 2 items." Cover readiness, the share of open work someone else could pick up today, is 79%.
The view shows tiles (open items checked, only one person knows, of those urgent soon, people with open work), a stacked bar chart "Who holds knowledge alone", a table "Work only one person knows" with the closest colleague and their evidence, and a People table with each person's cover readiness and best backup ("Could cover 3 of 5 today"). Request walkthrough posts a comment on the work item that @-mentions the owner, asks for a 15-minute walkthrough with the chosen colleague and adds the colleague as a watcher; the row then shows "Walkthrough asked for name". Nothing is reassigned, and the comment, signed "Requested with Understudy.", never counts as evidence.
The handover warning counts only work that must be covered while someone is away, and the team view counts every open item, including work that can wait, so its numbers can be higher.
Everywhere you work:
- a Jira page with three tabs, Before you go, Welcome back and Team risk, with a sample plan and a sample team for sites that have no open work yet;
- a draft handover posted on its own on every time-off work item;
- an Understudy panel on every work item: "If Ada is away, who could cover this?";
- a Rovo agent ("Prepare my handover for next week", "I'm back, what needs me first?", "Where is our team's knowledge held by one person?");
- an MCP server with eight tools and three open skills, so a team's own Rovo Studio agents, or Claude and other MCP clients, can plan handovers too.
How it differs:
- Out-of-office apps on the Marketplace make you name a coverer in advance and then reassign by rule; Understudy suggests a stand-in for each work item from evidence anyone can check in Jira, and shows why.
- Rules move tickets; Understudy changes no assignee. It finds the work only you understand, so it gets a walkthrough instead of a silent reassignment, and spreads the load so your one expert is not buried.
- Chat assistants summarize what you missed after you return; Understudy plans the cover before you leave, briefs each stand-in on the work item itself, publishes the handover page, and then closes the loop when you are back.
- Out-of-office apps act once someone is away; none we found on the Marketplace shows a team's single points of knowledge before anyone leaves. Understudy's Team risk tab does, and turns each one into a walkthrough request.
How we built it
- Forge, runtime
nodejs24.x, UI Kit for the Jira global page (three tabs, with a UI Kit bar chart on Team risk) and the issue panel. - Rovo:
rovo:agentwith a prompt resource, eightactionmodules, and threerovo:skillmodules (handover-planner,welcome-back,knowledge-risk) whoseSKILL.mdplaybooks follow the Agent Skills format. The actions areget-handover-brief,suggest-stand-ins,publish-handover-page,brief-stand-in,brief-all-stand-ins(briefs every stand-in in the plan with one confirmation),get-welcome-back-brief,get-team-knowledge-risk(inputprojects, comma-separated keys; empty means the projects of the current user's open work) andrequest-walkthrough(inputsissueKey,learner,note).publish-handover-pageandbrief-all-stand-insacceptstandIns("PAY-3=Max Taylor; PAY-5=Cassi Owens"), so a plan edited in chat is what gets published and briefed. - MCP:
rovo:mcpexposes the same eight actions as tools for Rovo Studio and for external MCP clients. - Acting on its own: a Forge product event
triggeron created and updated work items (ignoreSelf, so its own comments never start it again) recognizes time-off items and runs the same engine. There is no signed-in person in a trigger, so anAsyncLocalStorageswitch routes every Atlassian call throughasAppfor that run, and Teamwork Graph, which only answers people, is left out. The draft is signed "Prepared by Understudy." so it is posted once and never counts as evidence. - Teamwork Graph API: curated queries
atlassianUserInTeamsandatlassianTeamMembers(who is on the person's teams),atlassianUserPullRequestsandjiraWorkItemLinkedExternalPullRequests(the user's pull requests and those linked to each work item, batched with GraphQL aliases) andatlassianUserGoalsAndProjects(what the work rolls up to). Each query has a plainer fallback, and each source reports its own state (connected, no data, not available), so missing scopes or an empty graph never fail the handover. On the Forge demo site, the graph intermittently refused reads with "User is not permitted to query this organization" (a known demo-site issue, reported on the Atlassian developer community) and did not link some fictional users to their teams. Understudy now retries that refusal (up to 3 times, with backoff), and when the graph links a person to no team it looks through the teams of the person asking and checks the member lists. With that, the demo site returns the signed-in user's teams and goals and "In the same team (Payments squad)" evidence for teammates such as Ryan Lee. Ada Isadora, the person in the video, was still missing from the graph's member list when it was recorded, so her plan shows "Teamwork Graph no data": the app says what is missing instead of hiding it. - Jira and Confluence REST: enhanced JQL search (with changelogs for Welcome back), ADF comments with mentions (a repeat briefing updates the earlier comment), watchers, CQL page search, and v2 pages to publish.
- Design for trust: every call runs as the user (
asUser), the graph is read-only, nothing is stored, nothing leaves Atlassian, and Understudy only writes (a comment, a watcher, a page) after a person confirms. Agent inputs come from an LLM, so identity always comes from the invocation context, and every key and account ID is validated before it reaches JQL. - Quality: the scoring, planning, team-risk, rendering and parsing logic is pure TypeScript with 90 unit tests. We checked every REST endpoint we call against Atlassian's published OpenAPI specs to keep the scope list minimal and complete, and then tested every surface live on a Forge demo site with 25 projects and thousands of work items.
Challenges we ran into
- Explaining, not just ranking. A single score nobody could question was not trustworthy. We built the scoring so every point is a sentence a teammate can verify in Jira, and the UI and agent always show those reasons.
- The expert problem. Pure "who knows most" sends everything to one person. Processing items by urgency and charging each assignment to the stand-in's load produces plans that spread the work.
- Empty graphs. A missing Teamwork Graph scope returns success with no rows, and on the demo site some reads were intermittently refused with "User is not permitted to query this organization". Each source reports its own state (connected, no data, not available), and that refusal is retried, so users and the agent can be honest about gaps.
- Real data is messier than test data. Testing on Atlassian's demo site found what unit tests could not. One person there has 2,447 open items, so Understudy now plans the 100 most urgent and says so. A single load search let that person use up the result limit and made everyone else look idle, so load is now counted per person. Automation for Jira, service desk customers and deactivated accounts were showing up as possible stand-ins, and Understudy's own briefing comments counted as the sender knowing the work; all of that is filtered now. And when everyone who knows an item is already overloaded, Understudy no longer suggests the least-bad option: it asks a person to decide.
Accomplishments that we're proud of
- The "only you know this" warning: the part of a handover that usually gets lost, found automatically.
- Understudy acts without being asked: a time-off work item gets a draft handover within minutes, and nobody is briefed until the person going away has reviewed it.
- A team view that finds single points of knowledge before anyone goes away, from the same evidence as a handover, and turns each one into a walkthrough request instead of a reassignment.
- One engine behind four surfaces (page, issue panel, Rovo agent, MCP), so they always agree.
- A complete loop: hand over, brief, publish, and hand back.
- Every surface was exercised live on an Atlassian demo site: the Jira page, the work item panel, the Rovo agent, and the MCP tools from an external client (MCP Inspector) through Atlassian's MCP server. The Teamwork Graph queries degrade gracefully and recover: refused reads are retried, teams are found through the asker's teams when the graph does not link a person directly, and the sources line says what is still missing instead of hiding it.
What we learned
Context only builds confidence when people can see where it came from. Evidence lines change how a suggestion reads: from "the AI says Ben" to "Ben commented twice on this and owns the sibling ticket".
What's next for Understudy
- Spot upcoming time off from calendar events in the Teamwork Graph and suggest starting a handover a few days ahead.
- Calendars: offer the same draft when time off is booked in a calendar, not only in Jira.
- A scheduled weekly knowledge-risk digest, so a team lead sees new single points of knowledge without opening the page.
Built With
- confluence
- forge
- graphql
- jira
- react
- rovo
- rovo-agent
- rovo-mcp
- rovo-skill
- teamwork-graph
- typescript
- ui-kit
- vitest