The problem
Every project loses context. When an issue changes hands, the attempts and decisions already made are buried in comments - and the next person repeats the same dead ends.
What it does
Continuity Memory is a Forge app that gives each Jira issue a persistent memory:
- Record - capture an attempt, decision, fact or handoff as a short entry, stored against the issue in Forge's hosted Key-Value Store.
- Recall - ask the Rovo agent what has already been tried; it answers from the recorded memory instead of guessing.
- Write-back - when the agent tries something new, it records that too. The memory writes itself.
Because the panel and the agent share one KVS namespace, either can read what the other wrote - the memory survives across people and across interfaces.
How it meets the technology requirement
Two Atlassian capabilities, one data store:
- Jira - a
jira:issuePanelmodule renders the per-issue memory panel; entries are scoped by issue key and read through a resolver. - Rovo - two
actionmodules (recall-memory,record-memory), a reusablerovo:skill(continuity-memory) that teaches agents how to classify context without inventing detail, arovo:agent("Continuity") configured with a prompt, conversation starters and both actions, and arovo:mcpserver exposing both actions as tools for custom agents and third-party MCP clients.
All data stays inside Atlassian's hosted storage; nothing leaves the platform, keeping the app eligible for Runs on Atlassian.
Building it
Forge Custom UI (React) panel backed by Forge resolvers and functions. Getting the issue key into the resolver required reading it from the request context rather than the view context, and the @forge/kvs v2 query API (prefix match with a cursor) shaped the recall path. The frontend needed native value setters plus dispatched input events to drive its controlled inputs reliably.
The external MCP surface is registered through rovo:mcp; enabling the tools for a site requires a site admin to toggle them under Administration > Apps > Connected apps, after which any MCP client can connect over OAuth 2.1.
Installing and testing
- Open the installation link below and install continuity for Jira on any site you administer - a free Cloud Developer License is enough.
- Open any Jira issue. The Continuity Memory panel appears in the issue sidebar.
- Type a summary, pick a kind (attempt / decision / fact / handoff), and press Record.
- Reload the page - the entry persists.
- For the agent half, use a site with Rovo enabled, open the issue's Agents picker, choose Continuity, and ask "What have we already tried on this issue?"
- Then ask it to record something: "Record this decision: ..." - confirm the card and reload; the entry appears in the panel.
No configuration beyond installation is required. The app requests only the storage:app scope.
Installation
(The Devpost "Try it out" field caps URLs at 255 characters, so the signed link above is mirrored as https://is.gd/daOR1S. Both open the same Atlassian install screen.)
Built With
- atlassian-forge
- javascript
- jira
- mcp
- node.js
- rovo