agentleFS
ethosagentethosagent/ethos/skills/github/github-issues/SKILL.md

github-issues

Skill22 starsChanged 8 days agoMITView on GitHub

Create, search, triage, label, assign, comment, and close GitHub issues. Uses gh CLI with REST API fallback. Covers bulk operations and issue→PR linking.

52 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use touchdesigner-mcp, heartmula and 7 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • john-data-chenSkill

    touchdesigner-mcp

    Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools.

    Also in 5 projects that use this

  • math-incSkill

    heartmula

    Set up and run HeartMuLa, the open-source music generation model family (Suno-like). Generates full songs from lyrics + tags with multilingual support.

    Also in 6 projects that use this

  • Tommy-ywSkill

    webhook-subscriptions

    Create and manage webhook subscriptions for event-driven agent activation, or for direct push notifications (zero LLM cost). Use when the user wants external services to trigger agent runs OR push notifications to chats.

    Also in 4 projects that use this

  • math-incSkill

    find-nearby

    Find nearby places (restaurants, cafes, bars, pharmacies, etc.) using OpenStreetMap. Works with coordinates, addresses, cities, zip codes, or Telegram location pins. No API keys needed.

    Also in 3 projects that use this

  • Tommy-ywSkill

    songwriting-and-ai-music

    Songwriting craft, AI music generation prompts (Suno focus), parody/adaptation techniques, phonetic tricks, and lessons learned. These are tools and ideas, not rules. Break any of them when the art calls for it.

    Also in 8 projects that use this

  • +4 more from math-inc

The file

We split this skill into the rules it gives an agent

9 rules. 0 are common, 2 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 51 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before any issue operation:

    line 47
  2. Very specific:

    If gh is not installed, stop and point the user to cli.github.com.

    line 54
  3. Very specific:

    Use gh first. Fall back to gh api (which handles auth headers automatically) only when gh issue subcommands lack a needed option.

    line 71
  4. Distinctive:

    Read the title and body. Assign one of:

    line 115
  5. Very specific:

    gh CLI search: use is:issue in the search query — gh issue list --search "is:issue is:open"

    line 162
  6. Very specific:

    REST API: check that the pull_request field is absent in each response object

    line 163
  7. Very specific:

    GraphQL: use the Issues connection, not IssuesAndPullRequests

    line 164
  8. Very specific:

    Prefer gh CLI over raw API calls: Only use gh api when gh issue subcommands lack the needed option.

    line 285
  9. Very specific:

    Verify: gh auth status should print "Logged in to github.com as ...".

    line 291

“Common” is measured: kept by at least 6 in 10 of the 51 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

GitHub Issues

Full issue lifecycle — create, search, triage, label, assign, comment, close, and link to PRs. Structured steps so the user can interrupt at any point.

When to use this skill

  • User wants to create, search, update, or close GitHub issues.
  • Agent discovers a bug or improvement worth tracking during other work.
  • User asks to triage a backlog of unlabeled or unassigned issues.

When NOT to use this skill

  • PR reviews — use github-code-review instead.
  • Opening or merging PRs — use github-pr-workflow instead.
  • Repository administration (branch protection, secrets, releases) — use github-repo-management instead.

Preflight

Before any issue operation:

gh auth status          # must succeed
gh repo view --json nameWithOwner -q '.nameWithOwner'  # confirm target repo

If gh is not installed, stop and point the user to cli.github.com.

Quick reference

Actiongh CLIREST API fallback
Creategh issue create --title "T" --body "B"POST /repos/{owner}/{repo}/issues
List / searchgh issue list --search "query"GET /repos/{owner}/{repo}/issues?q=...
Showgh issue view 42GET /repos/{owner}/{repo}/issues/42
Commentgh issue comment 42 --body "msg"POST /repos/{owner}/{repo}/issues/42/comments
Closegh issue close 42PATCH /repos/{owner}/{repo}/issues/42 {"state":"closed"}
Reopengh issue reopen 42PATCH /repos/{owner}/{repo}/issues/42 {"state":"open"}
Add labelgh issue edit 42 --add-label "bug"POST /repos/{owner}/{repo}/issues/42/labels
Remove labelgh issue edit 42 --remove-label "bug"DELETE /repos/{owner}/{repo}/issues/42/labels/{name}
Assigngh issue edit 42 --add-assignee "@me"POST /repos/{owner}/{repo}/issues/42/assignees
Link to PRgh issue develop 42 -b fix-42Create branch + PR with Fixes #42 in body

Use gh first. Fall back to gh api (which handles auth headers automatically) only when gh issue subcommands lack a needed option.

Creating issues

# Simple
gh issue create --title "Widget fails on empty input" --body "Steps to reproduce..."

# With labels and assignee
gh issue create \
  --title "Add rate limiting to /api/v2" \
  --label "enhancement" --label "priority:high" \
  --assignee "@me" \
  --body-file plan.md

Searching issues

# Open bugs assigned to me
gh issue list --search "is:open label:bug assignee:@me"

# Issues mentioning a keyword
gh issue list --search "rate limit in:title,body"

# Issues in a milestone
gh issue list --milestone "v2.0"

# JSON output for scripting
gh issue list --search "is:open" --json number,title,labels --limit 100

Triage workflow

Structured sequence for processing an untriaged backlog:

1. List unlabeled issues

gh issue list --search "is:open no:label" --json number,title,body --limit 50

2. Categorize each issue

Read the title and body. Assign one of:

CategoryLabelSignal
Defectbug"doesn't work", "error", "crash", stack traces
New capabilityenhancement"would be nice", "add support for", "feature request"
Questionquestion"how do I", "is it possible", "what is"
Not actionableneeds-infoVague description, no repro steps, unclear ask

3. Set priority

PriorityLabelCriteria
Criticalpriority:criticalData loss, security vulnerability, total outage
Highpriority:highMajor feature broken, blocking multiple users
Mediumpriority:mediumNon-critical bug, important enhancement
Lowpriority:lowNice-to-have, cosmetic, minor friction

4. Assign

gh issue edit 42 --add-label "bug" --add-label "priority:high" --add-assignee "username"

5. Comment with status

gh issue comment 42 --body "Triaged as high-priority bug. Assigned to @username. ETA: next sprint."

For issues needing more information:

gh issue comment 42 --body "Thanks for reporting. Could you provide:
- Steps to reproduce
- Expected vs actual behavior
- Environment (OS, version)

Marking as needs-info until we have repro steps."
gh issue edit 42 --add-label "needs-info"

Gotcha: issues endpoint returns PRs

The GitHub REST API's /repos/{owner}/{repo}/issues endpoint returns both issues and pull requests. PRs are technically issues with a pull_request field.

To filter correctly:

  • gh CLI search: use is:issue in the search query — gh issue list --search "is:issue is:open"
  • REST API: check that the pull_request field is absent in each response object
  • GraphQL: use the Issues connection, not IssuesAndPullRequests

The gh issue list command filters this automatically. The gotcha only bites when using gh api directly.

Bulk operations

Batch labeling

# Label all issues matching a search
gh issue list --search "is:open websocket in:title" --json number -q '.[].number' | \
  xargs -I{} gh issue edit {} --add-label "component:websocket"

Close stale issues

List the issues with no activity in 90 days (<cutoff-date> is today minus 90 days, YYYY-MM-DD):

gh issue list --search "is:open updated:<<cutoff-date>" --json number -q '.[].number'

Then, for each number it prints:

gh issue comment <number> --body "Closing due to inactivity. Reopen if still relevant."
gh issue close <number>

Transfer issues

gh issue transfer 42 owner/other-repo

Issue templates

Bug report

```markdown
## Bug report

**Describe the bug**
A clear and concise description.

**Steps to reproduce**
1. Go to '...'
2. Click on '...'
3. See error

**Expected behavior**
What you expected to happen.

**Actual behavior**
What actually happened. Include error messages or stack traces.

**Environment**
- OS: [e.g. macOS 15.1]
- Node: [e.g. 24.0]
- Version: [e.g. 1.2.3]
```

Feature request

```markdown
## Feature request

**Problem**
What problem does this solve? Who is affected?

**Proposed solution**
How should it work? Be specific.

**Alternatives considered**
What else did you consider and why did you reject it?

**Additional context**
Links, screenshots, prior art.
```

Issue → PR linking

Option 1: gh issue develop

Creates a branch linked to the issue and optionally opens a PR:

# Create a branch for issue 42
gh issue develop 42 --base main --name fix-widget-empty-input

# Create branch + checkout
gh issue develop 42 --base main --checkout

Option 2: Keywords in PR body

Include one of these keywords in the PR title or body to auto-close the issue when the PR merges:

  • Fixes #42
  • Closes #42
  • Resolves #42

For cross-repo linking: Fixes owner/repo#42.

Multiple issues: Fixes #42, fixes #43.

Option 3: Manual linking

# Add a comment cross-referencing the PR
gh issue comment 42 --body "Fix submitted in #87."

Hard rules

  • Never close an issue without a comment explaining why (fix merged, duplicate, won't fix, stale).
  • Never bulk-close without user confirmation. Print the list first, ask, then proceed.
  • Prefer gh CLI over raw API calls. Only use gh api when gh issue subcommands lack the needed option.

Setup the user needs to do once

  1. Install gh: per cli.github.com.
  2. Authenticate: gh auth login. Follow the browser flow.
  3. Verify: gh auth status should print "Logged in to github.com as ...".

Adapted from NousResearch/hermes-agent (MIT)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.