Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions automations/catalog/jira-issue-to-pr/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"description": "Watch a Jira Cloud project for issues with a configurable label and automatically open a GitHub pull request for each new issue found. The target GitHub repo is read from the ticket body - no repo parameter required at deploy time.",
"requires": {
"integrations": {
"jira": {
"message": "Reads the project for issues carrying the trigger label."
"atlassian-rovo": {
"message": "Provides the Atlassian Rovo MCP connection used to access Jira data."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Suggestion: The message says the Atlassian Rovo MCP connection is "used to access Jira data", but scripts/main.py lines 267-268 drop the entire mcp_config before spawning each agent conversation — so this connection is never injected. If the automation will eventually use the MCP for Jira access, remove that agent_settings.pop("mcp_config", None) workaround; if it will keep using direct API-token calls, update this message (or switch to a lighter integration type) to avoid asking users to OAuth into Atlassian Rovo for a connection that never gets used.

},
"github": {
"message": "Opens a pull request on the repository named in the ticket."
Expand All @@ -15,5 +15,5 @@
},
"popularityRank": 85,
"estimatedSetupMinutes": 5,
"exampleImplementation": "Trigger: cron polling (e.g. every 5 minutes)\nRequired secrets: Jira API token, GitHub personal access token (repo + workflow scope)\n\n1. Collect Jira base URL, email, API token secret name, label to watch, and cron schedule from the user. No GitHub repo is needed at deploy time - each ticket must include the target repo (owner/repo) in its body.\n2. Poll POST /rest/api/3/search/jql on the Jira Cloud instance to find open issues carrying the configured label.\n3. Deduplicate against a KV-store-backed set of already-processed issue keys so re-runs never create duplicate PRs.\n4. For each new issue, start an independent OpenHands agent conversation that extracts the GitHub repo from the ticket body, clones it, creates a branch named after the Jira key, implements or scaffolds the requested change, and opens a pull request.\n5. Immediately after the conversation is created, post a Jira comment on the issue: 'I'm on it: <conversation URL>'.\n6. Persist the processed issue key immediately after dispatching so the next poll skips it."
"exampleImplementation": "Trigger: cron polling (e.g. every 5 minutes)\nRequired integrations: Atlassian Rovo MCP for Jira access and a GitHub MCP connection. The poller also needs a Jira API token and a GitHub personal access token (repo + workflow scope) as secrets for its direct API calls.\n\n1. Connect Atlassian Rovo MCP and GitHub, then collect the Jira base URL, email, API token secret name, label to watch, and cron schedule from the user. No GitHub repo is needed at deploy time - each ticket must include the target repo (owner/repo) in its body.\n2. Poll POST /rest/api/3/search/jql on the Jira Cloud instance to find open issues carrying the configured label.\n3. Deduplicate against a KV-store-backed set of already-processed issue keys so re-runs never create duplicate PRs.\n4. For each new issue, start an independent OpenHands agent conversation that extracts the GitHub repo from the ticket body, clones it, creates a branch named after the Jira key, implements or scaffolds the requested change, and opens a pull request.\n5. Immediately after the conversation is created, post a Jira comment on the issue: 'I'm on it: <conversation URL>'.\n6. Persist the processed issue key immediately after dispatching so the next poll skips it."
}
2 changes: 1 addition & 1 deletion marketplaces/openhands-extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,7 @@
"name": "upstream-fork-sync",
"source": "./skills/upstream-fork-sync",
"description": "Keep a long-lived fork in sync with its upstream. Creates a cron automation that fetches upstream changes, rebases local customizations on top, verifies the software works, and replaces the running version when the rebase is clean.",
"category": "integration",
"category": "integrations",
"keywords": [
"fork",
"upstream",
Expand Down
3 changes: 2 additions & 1 deletion skills/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion tests/test_skills_catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ def test_index_is_up_to_date(self):
"code-hosting": 8,
"agent-authoring": 8,
"code-quality": 6,
"integrations": 5,
"integrations": 6,
"writing": 4,
"design": 2,
"other": 1,
Expand Down
Loading