OpenHands Extensions

August 24, 2026 · View on GitHub

This repository is the public extensions registry for OpenHands. It contains reusable, shareable skills and plugins that customize agent behavior.

Repository boundaries

OpenHands/extensions is the public registry for reusable skills, plugins, automations, and integrations. OpenHands/software-agent-sdk owns Agent Server execution and the canonical API, OpenHands/typescript-client owns typed browser access to that API, OpenHands/OpenHands owns Agent Canvas UI, and OpenHands/automation owns scheduling, webhooks, run history, dispatch, and sandbox lifecycle orchestration.

Put reusable extension artifacts here rather than in application repositories. If a PR is opened in the wrong repository, close and move it to the repository that owns the change.

Repository Layout

Skills

Skills are Markdown-based guidelines that provide domain-specific knowledge and instructions. They live under skills/, one directory per skill:

  • skills/<skill-name>/SKILL.md — the skill definition (AgentSkills-style progressive disclosure)
  • skills/<skill-name>/README.md — optional human-facing notes/examples

Browse the catalog in skills/.

Plugins

Plugins are extensions with executable code components (hooks, scripts). They live under plugins/, one directory per plugin:

  • plugins/<plugin-name>/SKILL.md — the plugin definition
  • plugins/<plugin-name>/hooks/ — lifecycle hooks
  • plugins/<plugin-name>/scripts/ — utility scripts

Browse available plugins in plugins/.

NPM Package

This repository also publishes catalog data through the @openhands/extensions package. It requires Node.js 18.20.0 or newer because the catalog entry points import JSON modules with import attributes.

import { AUTOMATION_CATALOG, INTEGRATION_CATALOG } from "@openhands/extensions";
import { INTEGRATION_CATALOG as MCP_MARKETPLACE } from "@openhands/extensions/integrations";
import { AUTOMATION_CATALOG as RECOMMENDED_AUTOMATIONS } from "@openhands/extensions/automations";

React logo components are isolated behind a separate export so data-only consumers do not need React peer dependencies:

import { INTEGRATION_LOGOS } from "@openhands/extensions/integrations/logos";

The package ships the whole repo, so the skills/, plugins/, and marketplaces/ trees are available from the installed package. Resolve content files to a path, or import JSON manifests directly:

// .md / .py / etc.: resolve to a path, then read with fs
const skillPath = import.meta.resolve("@openhands/extensions/skills/code-review/SKILL.md");

// .json: import directly
import marketplace from "@openhands/extensions/marketplaces/openhands-extensions.json" with { type: "json" };

See integrations/README.md, automations/README.md, and MIGRATION.md for catalog-specific details.

Python Package

The integration catalog is also published as a Python package (openhands-extensions) so Python services read the same catalog data as JS consumers. The single source of truth is the hand-authored JSON directory integrations/catalog/<id>.json; there is no separate provider file and no aggregate catalog JSON to maintain. Both the JS package (@openhands/extensions/integrations) and the Python package read those same per-integration JSON files and expose parallel read functions.

Each catalog entry can carry oauth and/or mcp/http connectionOptions. supportsOauth / supportsMcp flags are derived at runtime. Use listIntegrationCatalog({ mcp, oauth }) (JS) or list_integration_catalog_models(mcp=, oauth=) (Python) to filter by connector type - for example only integrations that support an oauth connector.

from openhands_extensions import (
    list_integration_catalog_models,                 # listIntegrationCatalog({ mcp, oauth })
    get_integration_catalog_entry_model,             # getIntegrationCatalogEntry(id)
    INTEGRATION_CATALOG_SNAPSHOT,                    # { integrations }
)

all_integrations = list_integration_catalog_models()
oauth_integrations = list_integration_catalog_models(oauth=True)  # only entries with an oauth connector
mcp_integrations = list_integration_catalog_models(mcp=True)      # only entries with an mcp connector
sample = get_integration_catalog_entry_model(all_integrations[0].id)

The Python functions return validated IntegrationCatalogEntry models. The raw-dictionary accessors list_integration_catalog / get_integration_catalog_entry were deprecated in 0.10.0 and removed in 0.12.0; see MIGRATION.md.

Install from git (the hub backend consumes it this way):

pip install git+https://github.com/OpenHands/extensions.git

The JS and Python versions are kept in lock-step by release-please and guarded by tests/test_version_alignment.py.

Extensions Catalog

This repository contains 2 marketplace(s) with 68 extensions (58 skills, 10 plugins).

large-codebase

OpenHands skills for interacting, improving, and refactoring large codebases

4 extensions (2 skills, 2 plugins)

NameTypeDescriptionCommands
add-javadocskillAdd comprehensive JavaDoc documentation to Java classes and methods. Use when documenting Java code, adding API docum...
cobol-modernizationpluginEnd-to-end COBOL to Java migration workflow. Handles build setup, mainframe dependency removal, and code migration wi...
migration-scoringpluginEvaluate code migration quality with coverage, correctness, and style scoring. Generates executive reports with actio...
spark-version-upgradeskillUpgrade Apache Spark applications between major versions (2.x→3.x, 3.x→4.x). Covers build files, deprecated APIs, con...

openhands-extensions

Official skills and plugins for OpenHands — the open-source AI software engineer.

64 extensions (56 skills, 8 plugins)

NameTypeDescriptionCommands
add-skillskillAdd (import) an OpenHands skill from a GitHub repository into the current workspace.
agent-canvas-environmentskillWork effectively inside a local Agent Canvas environment, including local agent-server auth, safe workspace hygiene, ...
agent-creatorskillCreate file-based sub-agents as Markdown files — no Python code required. Guides the user through a structured interv.../agent-creator
agent-memoryskillPersist and retrieve repository-specific knowledge using AGENTS.md files. Use when you want to save important informa.../remember
agent-sdk-builderskillGuided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a n.../agent-builder
azure-devopsskillInteract with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. U...
bitbucketskillBitbucket integration hub. Detects whether the repository is on Bitbucket Cloud or Bitbucket Data Center and directs ...
bitbucket-cloudskillBitbucket Cloud (bitbucket.org) specifics — authenticate with BITBUCKET_TOKEN, use the REST API v2, workspace/repo_sl...
bitbucket-data-centerskillBitbucket Data Center (self-hosted Bitbucket Server) specifics — authenticate with BITBUCKET_DATA_CENTER_TOKEN, use t...
city-weatherpluginGet current weather, time, and precipitation forecast for any city using the free Open-Meteo API. Provides slash comm...
code-reviewskillRigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provi.../codereview, /codereview-roasted
code-simplifierskillSimplifies and refines code across three dimensions - code reuse, code quality, and efficiency - while preserving all.../simplify
datadogskillQuery and analyze Datadog logs, metrics, APM traces, and monitors using the Datadog API. Use when debugging productio...
denoskillCommon project operations using Deno (tasks, run/test/lint/fmt, and dependency management).
discordskillBuild and automate Discord integrations (bots, webhooks, slash commands, and REST API workflows). Use when the user m...
dockerskillRun Docker commands within a container environment, including starting the Docker daemon and managing containers. Use...
evidence-based-citationsskillBack factual claims and field values with official, verifiable sources. Use when the user asks to fill fields, answer...
flarglebargleskillA test skill that responds to the magic word 'flarglebargle' with a compliment. Use for testing skill activation and ...
frontend-designskillCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks ...
githubskillInteract with GitHub repositories, pull requests, issues, and workflows using the GITHUB_TOKEN environment variable a...
github-actionsskillCreate, debug, and test GitHub Actions workflows and custom actions. Use when building CI/CD pipelines, automating wo...
github-agents-md-maintainerskillCreate an automation that keeps AGENTS.md current in one or more GitHub repositories. On a schedule an agent reads th.../agents-md:setup
github-issue-to-prskillCreate an automation that implements GitHub issues when a configurable trigger label is applied. Clones the default b.../issue-to-pr:setup
github-pr-reviewskillPost structured PR reviews to GitHub with inline comments/suggestions in a single API call./github-pr-review
github-pr-reviewerskillCreate an automation that reviews GitHub pull requests when they are opened or updated. Inspects the diff, changed fi.../pr-reviewer:setup
github-repo-monitorskillCreate a cron automation that polls a GitHub repository for issue and PR comments containing a configurable trigger p.../github-monitor:poll
gitlabskillInteract with GitLab repositories, merge requests, and APIs using the GITLAB_TOKEN environment variable. Use when wor...
incident-retrospectiveskillCreate an automation that drafts incident retrospectives by gathering incident-channel messages from Slack, collectin.../incident-retro:setup
iterateskillIterate on a GitHub pull request — drive it through CI, code review, and QA until merge-ready. Monitors state, fixes .../iterate, /verify, /babysit
jira-issue-to-prskillDeploy a cron-based OpenHands automation that watches a Jira Cloud project for issues labeled with a configurable lab...
jupyterskillRead, modify, execute, and convert Jupyter notebooks programmatically. Use when working with .ipynb files for data sc...
kubernetesskillSet up and manage local Kubernetes clusters using KIND (Kubernetes IN Docker). Use when testing Kubernetes applicatio...
learn-from-code-reviewskillDistill code review feedback from GitHub PRs into reusable skills and guidelines. Use when users ask to learn from co.../learn-from-reviews
linearskillInteract with Linear project management - query issues, update status, create tickets using the Linear GraphQL API.
linear-triageskillCreate an automation that triages new Linear issues by inspecting title, description, team, and recent related issues.../linear-triage:setup
magic-testpluginA simple test plugin for verifying plugin loading. Triggers on magic words (alakazam, abracadabra) and returns a spec...
news-digestskillCreate an automation that reads public RSS and Atom feeds on a schedule, keeps what is new and matches the configured.../news-digest:setup
notionskillCreate, search, and update Notion pages/databases using the Notion API. Use for documenting work, generating runbooks...
npmskillHandle npm package installation in non-interactive environments by piping confirmations. Use when installing Node.js ...
onboardingpluginAssess repository agent-readiness across five pillars, propose high-impact fixes, and generate repo-specific AGENTS.m...
openhandspluginUnified OpenHands plugin — bundles Cloud CLI, REST API (openhands-api), and Automations (openhands-automation) into a.../openhands-cloud
openhands-apiskillUse the OpenHands Cloud REST API (V1) and agent-server APIs to create and manage Cloud or local backend conversations...
openhands-automationskillCreate and manage OpenHands automations - scheduled tasks that run in sandboxes. Use the prompt preset to create auto.../automation:create
openhands-sdkskillReference skill for the OpenHands Software Agent SDK - build AI agents with custom tools, LLM configuration, conversa.../sdk
pdflatexskillInstall and use pdflatex to compile LaTeX documents into PDFs on Linux. Use when generating academic papers, research...
plain-english-contentskillWrite and edit clear, accessible prose in a plain English content style: active voice, front-loaded content, sentence...
pr-reviewpluginAutomated PR code review — analyzes diffs and posts inline review comments via the GitHub API.
prdskillGenerate a Product Requirements Document (PRD) for a new feature through an interactive clarifying-question workflow..../prd
qa-changespluginValidate pull request changes by actually running the code — setting up the environment, exercising changed behavior,...
release-notespluginGenerate consistent, well-structured release notes from git history. Produces categorized changelog with breaking cha.../release-notes
research-briefskillCreate a recurring automation that researches a topic using Tavily web search and publishes a structured brief to Not.../research-brief:setup
securityskillSecurity best practices for secure coding, authentication, authorization, and data protection. Use when developing fe...
skill-creatorskillGuide for creating effective skills. This skill should be used when users want to create a new skill (or update an ex...
slack-channel-monitorskillCreate a cron automation that polls up to 10 Slack channels every minute and starts an OpenHands conversation when a .../slack-monitor:poll
slack-standup-digestskillCreate an automation that generates an async standup digest from Slack. Searches selected channels for messages since.../standup-digest:setup
sshskillEstablish and manage SSH connections to remote machines, including key generation, configuration, and file transfers....
swift-linuxskillInstall and configure Swift programming language on Debian Linux for server-side development. Use when building Swift...
technical-writingskillWrite and revise technical explanations in flowing, direct, conversational prose that stays concise without becoming ...
theme-factoryskillToolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc....
ticket-to-code-changeskillSet up Jira or Linear ticket-to-code-change automations for GitHub, GitLab, and Bitbucket./ticket-to-code-change:setup
upstream-fork-syncskillKeep a long-lived fork in sync with its upstream. Creates a cron automation that fetches upstream changes, rebases lo.../upstream-fork-sync:setup
uvskillCommon project, dependency, and environment operations using uv.
vercelskillDeploy and manage applications on Vercel, including preview deployments and deployment protection.
vulnerability-remediationpluginAutomated security vulnerability scanning and AI-powered remediation. Scans repositories, skips when no issues found,...

Contributing

Adding a Skill

  1. Fork this repository
  2. Create a new directory: skills/<your-skill-name>/
  3. Add skills/<your-skill-name>/SKILL.md
  4. (Optional) Add README.md, references/, scripts/, etc.
  5. Add an entry to marketplaces/openhands-extensions.json with a category — this is what the OpenHands Skills page uses to group the skill. Skills with no entry are grouped as "Uncategorized". Marketplace entries also require .plugin/plugin.json and vendor symlinks.
  6. Submit a pull request

Valid skill categories: automations, environment, code-hosting, agent-authoring, code-quality, integrations, writing, design, other.

Adding a Plugin

  1. Fork this repository
  2. Create a new directory: plugins/<your-plugin-name>/
  3. Add plugins/<your-plugin-name>/SKILL.md
  4. Add hooks/ and/or scripts/ directories with your executable code
  5. Submit a pull request

Agent Instructions

See AGENTS.md for the rules agents should follow when editing/adding skills and plugins.


Thank You to Our Contributors