---
title: "ROVO Skills for ROVO Studio"
canonical: "https://help.releasemanagement.app/space/RMC/3981213697/ROVO%20Skills%20for%20ROVO%20Studio"
format: markdown
---
> Macro (include)

# Topics

> Macro (toc)

# What is “ROVO Studio“

**Rovo Studio** from Atlassian is a builder environment within its AI platform, [Atlassian Rovo](https://chatgpt.com/c/69e7867b-ab90-8397-8166-736ea64981d0#:~:text=Rovo%20Studio%20from%20Atlassian%20is,without%20building%20everything%20from%20scratch.), that lets teams create and customize AI-powered assistants, automations, and workflows across Atlassian tools like Jira and Confluence. It enables users to design how AI (Rovo) understands context, retrieves knowledge, and takes actions—using company data, permissions, and integrations—so organizations can tailor AI to specific use cases such as support, delivery, or knowledge management without building everything from scratch.

# What are “ROVO Skills“

**“Rovo Skills”** in Atlassian Rovo are modular, reusable capabilities that define what the AI can *do*—such as retrieving data, executing actions, or automating workflows across tools like Jira and Confluence. Built and configured in [Rovo Studio](https://chatgpt.com/c/69e7867b-ab90-8397-8166-736ea64981d0#:~:text=%E2%80%9CRovo%20Skills%E2%80%9D%20in,permissions%20and%20organizational%20context.), Skills combine prompts, logic, and integrations so teams can tailor AI behavior to specific use cases (e.g., generating release notes, summarizing incidents, or triggering updates), while respecting permissions and organizational context.

# List of Skills Release Management App provides

![image-20260422-131939.png](media://b962baee-bc2b-4912-89dc-643da91990f8)

| **Skill** | **Category** | **Purpose** | **Input** | **Output** |
| --- | --- | --- | --- | --- |
| **RM get boards ** | Read | List all RM boards | None | Array of board objects: `{ id: string, name: string, url: string }` — `id`: board identifier to pass as `boardId` in other actions — `url`: direct link to the board in the app |
| **RM get current board ** | Read | Resolve the board currently stored in the user's session | `nonce` (integer) — replay-attack guard | `{ id: string, name: string }` — the stored board, or `null` if no board has been set yet |
| **RM set current board ** | Write | Switch the active board for the current user session | `name` (string, **required**) — exact board name from the board list | `void` — no return value; the board is persisted in the user's session storage |
| **RM get sprints ** | Read | All sprints on the board | `boardId` (string, **required**)`nonce` (integer) | Array of sprint objects (see *Version/package entity shape* below) |
| **RM get virtual versions ** | Read | All virtual versions (JQL-based) on the board | `boardId` (string, **required**) `nonce` (integer) | Array of virtual version objects (see *Version/package entity shape* below) |
| **RM get epics ** | Read | All epics on the board | `boardId` (string, **required**)`nonce` (integer) | Array of epic objects (see *Version/package entity shape* below) |
| **RM get cross project versions ** | Read | Versions that span multiple Jira projects | `boardId` (string, **required**)`nonce` (integer) | Array of cross-project version objects (see *Version/package entity shape* below) |
| **RM get versions by field ** | Read | Filter versions by any field value | `boardId` (string, **required**)`fieldName` (string, **required**) — field name, e.g. `"Status"`, `"Tag"`, `"column"`. Use the schema action to get available names.`fieldValue` (string, **required**) — the value to match against`nonce` (integer) | Array of matching version objects (see *Version/package entity shape* below) |
| **RM get version schema ** | Read | Version field structure in TypeScript-like format | `boardId` (string, **required**) | Schema object describing all available fields for versions on this board, their types, and allowed values. Use field names from this schema in `get-versions-by-field` and `update-version`. |
| **RM get version issues ** | Read | All Jira issues inside a specific version | `boardId` (string, **required**)`name` (string, **required**) — exact version name | `{ issues: IssueCompact[], totalCount: number, totalCountByStatus: Record<string, number> }`  
Each issue: `{ key, summary, status, priority, type: { name, description }, description }`<br>— `totalCountByStatus`: map of status name → issue count |
| **RM get packages by field ** | Read | Filter packages by any field value | `boardId` (string, **required**)<br>`fieldName` (string, **required**) — field name. Use the schema action to get available names.<br>`fieldValue` (string, **required**) — the value to match against<br>`nonce` (integer) | Array of matching package objects (see *Version/package entity shape* below) |
| **RM get package schema ** | Read | Package field structure in TypeScript-like format | `boardId` (string, **required**) | Schema object describing all available fields for packages on this board. Use field names from this schema in `get-packages-by-field` and `update-package`. |
| **RM get package issues ** | Read | All Jira issues inside a specific package | `boardId` (string, **required**)<br>`name` (string, **required**) — exact package name | `{ issues: IssueCompact[], totalCount: number, totalCountByStatus: Record<string, number> }`<br>Same shape as `get-version-issues` |
| **RM move version by column name and version name ** | Write | Move a version to a different column on the board | `boardId` (string, **required**)  
`versionNameOrId` (string, **required**) — version name or ID  
`columnName` (string, **required**) — destination column name  
`projectName` (string) — Jira project name; required when multiple versions share the same name  
`versionType` (string) — disambiguates versions with the same name and project; see *versionType* values above | `{ success: true }` on success.<br>On failure: `{ success: false, message: string, availableColumns?: string[] }` — `availableColumns` lists valid column names when the given column is not found.<br>If multiple versions match: `{ success: false, message: string, multipleVersions: ReleaseItem[] }` |
| **RM move package by column name and package name ** | Write | Move a package to a different column on the board | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name  
`columnName` (string, **required**) — destination column name | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableColumns?: string[] }` |
| **RM add version comment ** | Write | Add a comment to a version | `boardId` (string, **required**)  
`versionNameOrId` (string, **required**) — version name or ID  
`comment` (string, **required**) — comment text (plain text)  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[] }` |
| **RM add package comment ** | Write | Add a comment to a package | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name  
`comment` (string, **required**) — comment text (plain text) | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availablePackages?: string[] }` |
| **RM update version (release) ** | Write | Edit one or more properties of a version | `boardId` (string, **required**)  
`versionNameOrId` (string, **required**) — version name or ID  
`versionProperties` (string, **required**) — comma-separated `key: value` pairs, e.g. `"Status: In Progress, Tag: backend"`. Use the schema action to get valid property names and values.  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[], availableProperties?: ReleaseItemSchemaValue }` |
| **RM update package ** | Write | Edit one or more properties of a package | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name  
`packageProperties` (string, **required**) — comma-separated `key: value` pairs. Use the schema action to get valid property names and values. | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availablePackages?: string[], availableProperties?: ReleaseItemSchemaValue }` |
| **RM create version ** | Create | Create a new version (release) | `boardId` (string, **required**)  
`versionName` (string, **required**) — name for the new version  
`projectName` (string, **required**) — Jira project the version belongs to  
`packageName` (string) — add the new version to this package immediately  
`startDate` (string) — `YYYY-MM-DD`  
`releaseDate` (string) — `YYYY-MM-DD`  
`rolloutEndDate` (string) — `YYYY-MM-DD`  
`properties` (string) — comma-separated `key: value` pairs for custom fields | `{ success: true }` on success.  
On failure: `{ success: false, message: string }` with optional `availableProjects`, `availablePackages`, `availableProperties`, or `requireProperties` hint fields |
| **RM create virtual version ** | Create | Create a new JQL-based virtual version | `boardId` (string, **required**)  
`versionName` (string, **required**) — name for the new virtual version  
`jql` (string, **required**) — valid Jira JQL query that defines which issues belong to this virtual version (e.g. `"project = MYPROJ AND fixVersion = '1.0'"` )  
`packageName` (string) — add to this package immediately  
`startDate` (string) — `YYYY-MM-DD`  
`releaseDate` (string) — `YYYY-MM-DD`  
`rolloutEndDate` (string) — `YYYY-MM-DD`  
`properties` (string) — comma-separated `key: value` pairs | `{ success: true }` on success.  
On failure: `{ success: false, message: string }` with optional hint fields |
| **RM create epic ** | Create | Create a new epic | `boardId` (string, **required**)  
`epicName` (string, **required**) — name for the new epic  
`startDate` (string) — `YYYY-MM-DD`  
`releaseDate` (string) — `YYYY-MM-DD`  
`packageName` (string) — add to this package immediately  
`properties` (string) — comma-separated `key: value` pairs | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableEpics?: string[] }` — `availableEpics` lists existing epics when the board has no slot for a new one |
| **RM create sprint ** | Create | Create a new sprint | `boardId` (string, **required**)  
`boardName` (string, **required**) — name of the **Jira board** (scrum board) on which to create the sprint  
`sprintName` (string, **required**) — name for the new sprint  
`startDate` (string) — `YYYY-MM-DD`  
`releaseDate` (string) — `YYYY-MM-DD`  
`packageName` (string) — add to this package immediately  
`properties` (string) — comma-separated `key: value` pairs | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableSprints?: string[], availableBoards?: string[] }` — hint fields list valid sprints or scrum boards when not found |
| **RM create package ** | Create | Create a new package | `boardId` (string, **required**)  
`packageName` (string, **required**) — name for the new package  
`versionNames` (string) — comma-separated version names to add immediately  
`projectName` (string) — Jira project for the listed versions  
`description` (string) — free-text package description  
`startDate` (string) — `YYYY-MM-DD`  
`releaseDate` (string) — `YYYY-MM-DD`  
`rolloutEndDate` (string) — `YYYY-MM-DD`  
`properties` (string) — comma-separated `key: value` pairs  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string }` with optional `availableProjects`, `availableVersions`, `availableProperties`, or `requireProperties` hint fields |
| **RM add versions to package ** | Write | Add one or more existing versions to a package | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name  
`versionNames` (string, **required**) — comma-separated version names  
`projectName` (string) — Jira project; required when versions share the same name  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[], availablePackages?: string[] }` |
| **RM remove versions from package ** | Write | Remove one or more versions from a package | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name  
`versionNames` (string, **required**) — comma-separated version names to remove  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[], availablePackages?: string[] }` |
| **RM get environments by version ** | Env | List all environments where a version is currently deployed | `boardId` (string, **required**  
`versionNameOrId` (string, **required**) — version name or ID  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true, environments: ResponseEnvironment[] }`  
Each environment: `{ name: string, description: string, tags: string[], type: string }`  
On failure: `{ success: false, message: string, availableVersions?: string[] }` |
| **RM get versions by environment ** | Env | List all versions currently deployed to an environment | `boardId` (string, **required**)  
`environmentName` (string, **required**) — exact environment name | `{ success: true, versions: ReleaseItem[] }` — same entity shape as the filter actions (see *Version/package entity shape* below)  
On failure: `{ success: false, message: string, availableEnvironments?: string[] }` |
| **RM deploy version to environment ** | Env | Deploy a version to an environment | `boardId` (string, **required**)  
`versionNameOrId` (string, **required**) — version name or ID  
`environmentName` (string, **required**) — target environment name  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above  
`buildNumber` (string) — optional build/artifact identifier to record on this deployment | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[], availableEnvironments?: string[] }` |
| **RM remove version from environment ** | Env | Undeploy a version from an environment | `boardId` (string, **required**)  
`versionNameOrId` (string, **required**) — version name or ID  
`environmentName` (string, **required**) — environment to remove from  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[], availableEnvironments?: string[] }` |
| **RM get milestones by version ** | Milestone | Get all milestones of a version | `boardId` (string, **required**  
`versionNameOrId` (string, **required**) — version name or ID  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true, milestones: ResponseMilestone[] }`  
Each milestone: `{ name: string, description: string, achieved: boolean, achievedDate: string | null, date: string | null, updatedBy: string | null }`  
— `achievedDate` / `date`: date string (JS `Date.toDateString()` format, e.g. `"Thu Jan 01 2025"`)  
— `updatedBy`: display name of the Jira user who last updated the milestone |
| **RM get milestones by package ** | Milestone | Get all milestones of a package | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name | Same shape as *get milestones by version* |
| **RM achieve version milestone ** | Milestone | Mark a version milestone as achieved | `boardId` (string, **required**)  
`versionNameOrId` (string, **required**) — version name or ID  
`milestoneName` (string, **required**) — exact milestone name  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[], availableMilestones?: string[] }` |
| **RM achieve package milestone ** | Milestone | Mark a package milestone as achieved | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name  
`milestoneName` (string, **required**) — exact milestone name | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availablePackages?: string[], availableMilestones?: string[] }` |
| **RM unachieve version milestone ** | Milestone | Revert a version milestone back to not-achieved | `boardId` (string, **required**)  
`versionNameOrId` (string, **required**) — version name or ID  
`milestoneName` (string, **required**) — exact milestone name  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availableVersions?: string[], availableMilestones?: string[] }` |
| **RM unachieve package milestone ** | Milestone | Revert a package milestone back to not-achieved | `boardId` (string, **required**)  
`packageName` (string, **required**) — exact package name  
`milestoneName` (string, **required**) — exact milestone name | `{ success: true }` on success.  
On failure: `{ success: false, message: string, availablePackages?: string[], availableMilestones?: string[] }` |
| **RM get version or package creation date ** | History | Get the creation date and author of a version or package | `boardId` (string, **required**)  
`nameOrId` (string, **required**) — version or package name or ID  
`entityType` (string, **required**) — `"version"` / `"release"` / `"package"`  
`projectName` (string) — disambiguates versions sharing the same name (applies only when `entityType` is version/release)  
`versionType` (string) — see *versionType* values above | `{ success: true, date: string, author: string }`  
— `date`: ISO 8601 date-time string of when the entity was created<br>— `author`: display name of the Jira user who created it |
| **RM get version or package transition history ** | History | Column/status change log for a version or package | `boardId` (string, **required**)  
`nameOrId` (string, **required**) — version or package name or ID  
`entityType` (string, **required**) — `"version"` / `"release"` / `"package"`  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true, transitions: TransitionHistoryItem[] }`  
Each item: `{ date: string, actor: string, oldStatus: string, newStatus: string }`  
— `date`: ISO 8601 date-time of the transition  
— `actor`: display name of the Jira user who triggered the move  
Ordered chronologically (oldest first) |
| **RM get version or package change history ** | History | Property/field change log for a version or package | `boardId` (string, **required**)  
`nameOrId` (string, **required**) — version or package name or ID  
`entityType` (string, **required**) — `"version"` / `"release"` / `"package"`  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true, history: ChangeHistoryItem[] }`  
Each item: `{ date: string, actor: string, changedFields: ChangeHistoryField[] }`  
Each field change: `{ fieldName: string, oldValue: string, newValue: string }`  
— `date`: ISO 8601 date-time of the change  
— `actor`: display name of the user who made the change |
| **RM get version or package time in status ** | History | Duration spent in each status/column | `boardId` (string, **required**)  
`nameOrId` (string, **required**) — version or package name or ID  
`entityType` (string, **required**) — `"version"` / `"release"` / `"package"`  
`projectName` (string) — disambiguates versions sharing the same name  
`versionType` (string) — see *versionType* values above | `{ success: true, statusName: string, totalTime: string, returnsCount: number }`  
— `statusName`: the column/status name  
— `totalTime`: human-readable duration string (e.g. `"3 days 4 hours"`)  
— `returnsCount`: how many times the entity returned to this status |

## Help: Version / package entity shape

Returned by all filter and list actions (`get-versions-by-field`, `get-packages-by-field`, `get-sprints`, `get-virtual-versions`, `get-epics`, `get-cross-project-versions`, `get-versions-by-environment`):

```
{
  name:           string          // entity name
  url:            string          // direct link to the entity in the app
  type:           string          // "Version" | "Virtual Version" | "Sprint" | "Epic" | "Cross Project Version"
  column:         string          // current board column name
  tags:           string[]        // list of tag names
  projects:       string[]        // Jira project keys this entity belongs to
  startDate:      string | null   // YYYY-MM-DD
  releaseDate:    string | null   // YYYY-MM-DD
  rolloutEndDate: string | null   // YYYY-MM-DD
  released:       boolean         // true if released (versions only; absent for packages)
  properties:     Record<string, unknown>  // custom field values keyed by field name
}
```

# What’s next?

> ℹ️ As Atlassian expands its integration capabilities, we can deliver more in-app functionality—unlocking use cases where AI (Rovo) becomes a game changer or a significant time saver.

[https://releasemanagement.atlassian.net/wiki/spaces/RMC/pages/4124246017](https://releasemanagement.atlassian.net/wiki/spaces/RMC/pages/4124246017)


> Macro (include)