Skip to content
Merged
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
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ See [`mcps/README.md`](mcps/README.md) and [`automations/README.md`](automations
## Extensions Catalog

<!-- BEGIN AUTO-GENERATED CATALOG -->
This repository contains **2 marketplace(s)** with **49 extensions** (39 skills, 10 plugins).
This repository contains **2 marketplace(s)** with **50 extensions** (40 skills, 10 plugins).

### large-codebase

Expand All @@ -69,7 +69,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases

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

**45 extensions** (37 skills, 8 plugins)
**46 extensions** (38 skills, 8 plugins)

| Name | Type | Description | Commands |
|------|------|-------------|----------|
Expand All @@ -90,6 +90,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
| frontend-design | skill | Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks ... | — |
| github | skill | Interact with GitHub repositories, pull requests, issues, and workflows using the GITHUB_TOKEN environment variable a... | — |
| github-pr-review | skill | Post structured PR reviews to GitHub with inline comments/suggestions in a single API call. | `/github-pr-review` |
| github-repo-monitor | skill | Create a cron automation that polls a GitHub repository for issue and PR comments containing a configurable trigger p... | — |
| gitlab | skill | Interact with GitLab repositories, merge requests, and APIs using the GITLAB_TOKEN environment variable. Use when wor... | — |
| iterate | skill | Iterate on a GitHub pull request — drive it through CI, code review, and QA until merge-ready. Monitors state, fixes ... | `/iterate`, `/verify`, `/babysit` |
| jupyter | skill | Read, modify, execute, and convert Jupyter notebooks programmatically. Use when working with .ipynb files for data sc... | — |
Expand Down
16 changes: 16 additions & 0 deletions marketplaces/openhands-extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,22 @@
"code-review"
]
},
{
"name": "github-repo-monitor",
"source": "./skills/github-repo-monitor",
"description": "Create a cron automation that polls a GitHub repository for issue and PR comments containing a configurable trigger phrase (@OpenHands by default). Starts an OpenHands conversation with full issue/PR context, posts acknowledgement comments with a conversation link, and summarises results back to the issue/PR when the agent finishes.",
"category": "productivity",
"keywords": [
"github",
"monitor",
"issues",
"pull-requests",
"trigger",
"cron",
"automation",
"integration"
]
},
{
"name": "gitlab",
"source": "./skills/gitlab",
Expand Down
1 change: 1 addition & 0 deletions skills/github-repo-monitor/.claude-plugin
1 change: 1 addition & 0 deletions skills/github-repo-monitor/.codex-plugin
22 changes: 22 additions & 0 deletions skills/github-repo-monitor/.plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "github-repo-monitor",
"version": "1.0.0",
"description": "Create a cron automation that polls a GitHub repository for issue and PR comments containing a configurable trigger phrase (@OpenHands by default). Starts an OpenHands conversation with full issue/PR context, posts acknowledgement comments with a conversation link, and summarises results back to the issue/PR when the agent finishes.",
"author": {
"name": "OpenHands",
"email": "contact@all-hands.dev"
},
"homepage": "https://github.com/OpenHands/extensions",
"repository": "https://github.com/OpenHands/extensions",
"license": "MIT",
"keywords": [
"github",
"monitor",
"issues",
"pull-requests",
"trigger",
"cron",
"automation",
"integration"
]
}
69 changes: 69 additions & 0 deletions skills/github-repo-monitor/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# GitHub Repository Monitor Skill

An OpenHands skill that creates a cron automation to monitor a GitHub
repository for issue and PR comments, routing them to OpenHands conversations
and posting results back as GitHub comments.

## What it does

1. **Polls** a GitHub repository for new comments on issues and PRs.
2. **Triggers** when a comment contains `@OpenHands` (configurable).
3. **Creates** an OpenHands conversation pre-loaded with the full issue/PR
context — title, description, labels, and the last 10 comments.
4. **Posts** a GitHub comment with a link to the conversation and an
AI-disclosure notice.
5. **Forwards** follow-up trigger comments to the running conversation,
or re-opens it if it was previously closed.
6. **Summarises** by posting the agent's final response back to the
issue/PR once the conversation finishes.

## Files

```
github-repo-monitor/
├── SKILL.md ← agent instructions (loaded automatically)
├── README.md ← this file
├── scripts/
│ └── main.py ← automation script template
└── references/
├── state-schema.md ← JSON state file documentation
└── github-api.md ← GitHub API endpoints and rate-limit notes
```

## Quick start

Just tell OpenHands:

> *"Set up a GitHub repository monitor for `owner/repo`"*

The skill will walk through token verification, event-type selection, cron
schedule, and automation creation automatically.

## Requirements

- `GITHUB_TOKEN` secret set in OpenHands Settings → Secrets
- Classic PAT: `repo` (private repos) or `public_repo` (public repos)
- Fine-grained PAT: Issues — Read and Write
- The monitored repository must be accessible with that token

## Configuration options

| Option | Default | Description |
|--------|---------|-------------|
| Repository | (required) | `owner/repo` format |
| Trigger phrase | `@OpenHands` | Case-insensitive string to watch for in comments |
| Event types | `issue_comment` | `issue_comment`, `pr_review_comment`, or both |
| Cron schedule | `* * * * *` | Every minute; any valid 5-field cron expression |

## State file

The automation maintains a JSON state file at:
```
~/.openhands/workspaces/automation-state/github_poller_{automation_id}.json
```

See `references/state-schema.md` for the full schema.

## Similar skills

- `slack-channel-monitor` — same pattern applied to Slack channels
Loading
Loading