Use when managing GitHub Issues including creation, labels, milestones, assignees, and comments using gh CLI. Trigger with create issue, set labels, assign milestone.
npx claudepluginhub emasoft/emasoft-plugins --plugin emasoft-integrator-agentThis skill uses the workspace's default tool permissions.
This skill provides complete GitHub Issue management capabilities for orchestrator agents. It enables programmatic issue creation, labeling, milestone tracking, assignee management, and comment posting using the `gh` CLI tool.
README.mdreferences/issue-templates-part1-bug-reports.mdreferences/issue-templates-part2-feature-requests.mdreferences/issue-templates-part3-tasks.mdreferences/issue-templates-part4-programmatic.mdreferences/issue-templates.mdreferences/label-management.mdreferences/milestone-tracking-part1-creating.mdreferences/milestone-tracking-part2-assigning.mdreferences/milestone-tracking-part3-progress-closing.mdreferences/milestone-tracking.mdreferences/op-create-issue.mdreferences/op-get-issue-context.mdreferences/op-post-issue-comment.mdreferences/op-set-issue-labels.mdreferences/op-set-issue-milestone.mdscripts/__pycache__/atlas_create_issue.cpython-314.pycscripts/__pycache__/atlas_get_issue_context.cpython-314.pycscripts/__pycache__/atlas_invoke_claude_assignment.cpython-314.pycscripts/__pycache__/atlas_post_issue_comment.cpython-314.pycManages GitHub issues via gh CLI: create, list, search, edit, bulk operations, JSON/jq parsing, advanced filters, issue-to-PR workflow, milestones, labels, and AI session context storage.
Creates, lists, and views GitHub issues using gh CLI with guided prompts for actions, titles, bodies, and issue types. For repository issue management workflows.
Creates well-structured GitHub issues using gh CLI with templates for bugs, features, tasks including titles, descriptions, acceptance criteria, and labels. Use for filing bugs or feature requests.
Share bugs, ideas, or general feedback.
This skill provides complete GitHub Issue management capabilities for orchestrator agents. It enables programmatic issue creation, labeling, milestone tracking, assignee management, and comment posting using the gh CLI tool.
Copy this checklist and track your progress:
gh --versiongh auth status"error": false) or error ("error": true)All scripts return structured JSON output:
| Output Type | Format | Fields | Example |
|---|---|---|---|
| Success | JSON object | Operation-specific data | {"number": 123, "url": "https://github.com/..."} |
| Error | JSON object with error: true | message, code | {"error": true, "message": "Issue not found", "code": "ISSUE_NOT_FOUND"} |
| Exit codes | Standard codes 0-6 | See Exit Codes section | 0 = success, 1-6 = specific errors |
Before using this skill, ensure:
gh CLI is installed and authenticated (gh auth status)jq is available for JSON processingNeed to work with GitHub Issues?
│
├─► Need issue information?
│ └─► Use: eia_get_issue_context.py
│ Returns: title, body, state, labels, assignees, milestone, comments count, linked PRs
│
├─► Need to create a new issue?
│ └─► Use: eia_create_issue.py
│ Requires: --title, optional: --body, --labels, --assignee
│ Returns: issue number and URL
│
├─► Need to manage labels?
│ ├─► Adding labels? → eia_set_issue_labels.py --add "label1,label2"
│ ├─► Removing labels? → eia_set_issue_labels.py --remove "label1"
│ └─► Setting exact labels? → eia_set_issue_labels.py --set "label1,label2"
│ Note: Auto-creates missing labels if they don't exist
│
├─► Need to assign to milestone?
│ └─► Use: eia_set_issue_milestone.py
│ Option: --create-if-missing to auto-create milestone
│
└─► Need to post a comment?
└─► Use: eia_post_issue_comment.py
Option: --marker for idempotent comments (won't duplicate)
File: references/label-management.md
Contents:
File: references/issue-templates.md
Contents:
File: references/milestone-tracking.md
Contents:
| Script | Purpose | Required Args | Optional Args | Output |
|---|---|---|---|---|
eia_get_issue_context.py | Get issue metadata | --repo, --issue | --include-comments | JSON with issue details |
eia_create_issue.py | Create new issue | --repo, --title | --body, --labels, --assignee, --milestone | JSON with number, URL |
eia_set_issue_labels.py | Manage labels | --repo, --issue | --add, --remove, --set, --auto-create | JSON with updated labels |
eia_set_issue_milestone.py | Assign milestone | --repo, --issue, --milestone | --create-if-missing | JSON with milestone info |
eia_post_issue_comment.py | Post comment | --repo, --issue, --body | --marker | JSON with comment ID, URL |
# Get full issue context
./scripts/eia_get_issue_context.py --repo owner/repo --issue 123
# Output:
{
"number": 123,
"title": "Bug: Application crashes on startup",
"state": "open",
"labels": ["bug", "P1"],
"assignees": ["developer1"],
"milestone": "v2.0",
"comments_count": 5,
"linked_prs": [456, 789]
}
# Create issue with labels and assignee
./scripts/eia_create_issue.py \
--repo owner/repo \
--title "Implement new feature X" \
--body "## Description\nFeature details here" \
--labels "feature,P2" \
--assignee "developer1"
# Output:
{
"number": 124,
"url": "https://github.com/owner/repo/issues/124"
}
# Add labels (auto-creates if missing)
./scripts/eia_set_issue_labels.py \
--repo owner/repo \
--issue 123 \
--add "in-progress,ai-review" \
--auto-create
# Remove labels
./scripts/eia_set_issue_labels.py \
--repo owner/repo \
--issue 123 \
--remove "backlog"
# Assign to existing milestone
./scripts/eia_set_issue_milestone.py \
--repo owner/repo \
--issue 123 \
--milestone "v2.0"
# Create milestone if it doesn't exist
./scripts/eia_set_issue_milestone.py \
--repo owner/repo \
--issue 123 \
--milestone "v3.0" \
--create-if-missing
# Post comment with marker (won't duplicate if marker exists)
./scripts/eia_post_issue_comment.py \
--repo owner/repo \
--issue 123 \
--body "## Status Update\nTask completed successfully." \
--marker "status-update-2024-01-15"
# Output:
{
"comment_id": 12345,
"url": "https://github.com/owner/repo/issues/123#issuecomment-12345",
"created": true # false if marker already existed
}
All scripts return JSON with an error field on failure:
{
"error": true,
"message": "Issue not found: 999",
"code": "ISSUE_NOT_FOUND"
}
Common error codes:
AUTH_REQUIRED: gh CLI not authenticatedREPO_NOT_FOUND: Repository doesn't exist or no accessISSUE_NOT_FOUND: Issue number doesn't existLABEL_CREATE_FAILED: Failed to create labelMILESTONE_NOT_FOUND: Milestone doesn't exist (without --create-if-missing)PERMISSION_DENIED: Insufficient permissionsAll scripts use standardized exit codes for consistent error handling:
| Code | Meaning | Description |
|---|---|---|
| 0 | Success | Operation completed successfully |
| 1 | Invalid parameters | Missing required args, bad format |
| 2 | Resource not found | Issue, repo, milestone, or labels not found |
| 3 | API error | Network, rate limit, timeout |
| 4 | Not authenticated | gh CLI not logged in |
| 5 | Idempotency skip | Comment with marker already exists |
| 6 | Not mergeable | N/A for these scripts |
Note: eia_post_issue_comment.py returns exit code 5 when a comment with the specified --marker already exists. The JSON output will have "created": false.
Solution: Install gh CLI:
# macOS
brew install gh
# Linux
sudo apt install gh # Debian/Ubuntu
sudo dnf install gh # Fedora
Solution: Authenticate with gh:
gh auth login
Solution: Ensure you have write access to the repository. Label creation requires at least "triage" permission level.
Solution: Check that the milestone exists. Use --create-if-missing flag or create the milestone first via GitHub UI or API.
Solution: Use the --marker flag with a unique identifier. The script checks for existing comments containing the marker before posting.
This skill integrates with the Integrator Agent workflow:
eia_create_issue.py to create a tracking issueeia_post_issue_comment.py with markers to post status updateseia_set_issue_labels.py to mark issues as completedeia_set_issue_milestone.py to organize work into releasesSee the main Integrator Agent documentation for workflow integration details.