Help us improve
Share bugs, ideas, or general feedback.
From gaac
Manages GitHub issues, PRs, project boards, and comments via scripts. Use for any GitHub operations in GAAC workflows.
npx claudepluginhub sihaoliu/gaac --plugin gaacHow this skill is triggered — by the user, by Claude, or both
Slash command
/gaac:github-managerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill is the central hub for all GitHub operations in GAAC. It provides templates, scripts, and guidance for:
references/commit-format.mdreferences/issue-pr-format.mdreferences/project-board-integration.mdscripts/add-to-project.shscripts/create-commit.shscripts/create-issue.shscripts/create-pr.shscripts/get-pr-comments.shscripts/merge-pr.shscripts/post-comment.shscripts/update-related-issues.shtemplates/commit-template.mdtemplates/issue-template.mdtemplates/pr-template.mdExecutes GitHub operations (PRs, issues, milestones, labels, comments, merges) using Python scripts with structured output and error handling. Use for pull requests, issues, review comments, CI checks, milestones instead of raw gh.
Executes GitHub operations on PRs, issues, milestones, labels, comments, and merges using Python scripts with structured output and error handling. Use for pull requests, issues, review comments, CI checks, or milestones instead of raw gh.
Manages GitHub issues, PRs, milestones, and Projects v2 using gh CLI commands, REST API calls, and GraphQL queries. Useful for automation, bulk operations, and project tracking.
Share bugs, ideas, or general feedback.
This skill is the central hub for all GitHub operations in GAAC. It provides templates, scripts, and guidance for:
GitHub as Context: GAAC uses GitHub's native features (Issues, PRs, Projects) as persistent context storage for LLM coding agents. This skill enables that bridge.
Create a new issue using the SWE-bench format template:
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/create-issue.sh" \
--title "[L1][L2] Issue title" \
--body-file ./issue-body.md \
--labels "L1:Component,L2:SubArea"
Add an issue to the GitHub Project board (PRs are NOT added - they link to issues via Resolves #N):
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/add-to-project.sh" \
--item-number 42
Project Field Auto-Fill: After adding the issue, the script reads gaac.project_fields from config and sets field values automatically.
Configure in gaac.md:
gaac.project_fields: Status=Todo, Priority=Medium, Effort=S
Supported field types:
Fields not found or values not matching options are skipped with warnings.
Create a pull request with the standard template:
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/create-pr.sh" \
--title "[L1][L2][Issue #N] Description" \
--body-file ./pr-body.md \
--resolves 42
Fetch comments from a PR for resolution:
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/get-pr-comments.sh" \
--pr-number 123 \
--format json
Create a git commit following the GAAC format:
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/create-commit.sh" \
--issue 42 \
--message "Add feature X implementation"
Post a comment to an issue or PR with optional attribution prefix:
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/post-comment.sh" \
--type issue --number 42 --body "Comment text here"
# Or with a file
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/post-comment.sh" \
--type pr --number 123 --body-file ./comment.md
# Skip attribution prefix
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/post-comment.sh" \
--type issue --number 42 --body "..." --no-attribution
Comment Attribution: Reads gaac.comment_attribution_prefix from config and prepends it to all comments. Configure in gaac.md:
gaac.comment_attribution_prefix: *[Comment by Claude Code AI Agent]*
Use --no-attribution to skip the prefix (e.g., for user-triggered actions).
Update related issues after PR merge:
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/update-related-issues.sh" \
--pr 123
Features:
Resolves #N, Fixes #N, Closes #N patternsRelated: #N, See: #N) with progress commentDepends on: #N)--dry-run for preview modeMerge a PR with validation and configurable strategy:
bash "${CLAUDE_PLUGIN_ROOT}/skills/github-manager/scripts/merge-pr.sh" \
--pr 123 \
--strategy squash
Features:
gaac.merge_strategy), default: squash--force to bypass pending CI checksLocated at: templates/issue-template.md
## Problem Statement
[Clear description of what needs to be solved]
## Expected Behavior
[What should happen when this is implemented]
## Current Behavior
[What currently happens, if applicable]
## Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] All tests pass
## Test Plan
[Test commands and expected results]
## Implementation Hints
[Optional guidance for implementation]
## Dependencies
- Depends on: #N (if any)
- Blocks: #M (if any)
## References
- Architecture doc: `docs/architecture/X.md`
- Related issue: #P
Located at: templates/pr-template.md
## Summary
[1-3 bullet points describing the changes]
## Changes
- [Change 1]
- [Change 2]
## Test Plan
- [ ] Unit tests pass
- [ ] Integration tests pass
- [ ] Manual testing completed
## Checklist
- [ ] Code follows project conventions
- [ ] Documentation updated if needed
- [ ] No new warnings introduced
Resolves #N
Located at: templates/commit-template.md
[L1][Issue #N] Short description # L1 + issue
[L1][L2][Issue #N] Short description # L1 + L2 + issue
[L1][Issue #789,#456] Short description # L1 + multiple issues (rare)
- Detail 1
- Detail 2
Issue: #N
Note: L1 is required, L2/L3 optional. Multi-issue [L1][Issue #N,#M] is rare (chicken-egg dependencies only).
# For organization project
gh api graphql -f query='
query($org: String!, $number: Int!) {
organization(login: $org) {
projectV2(number: $number) { id }
}
}' -f org=OrgName -F number=1 --jq '.data.organization.projectV2.id'
# For user project
gh api graphql -f query='
query($login: String!, $number: Int!) {
user(login: $login) {
projectV2(number: $number) { id }
}
}' -f login=Username -F number=1 --jq '.data.user.projectV2.id'
gh api graphql -f query='
mutation($project: ID!, $content: ID!) {
addProjectV2ItemByContentId(input: {projectId: $project, contentId: $content}) {
item { id }
}
}' -f project=PROJECT_ID -f content=ISSUE_NODE_ID
gh issue view 42 --json id --jq '.id'
When resolving PR comments, process in this order:
If project operations fail with permission error:
gh auth refresh -s project
If GitHub API rate limit is hit:
gh api rate_limit --jq '.resources.core'
Wait for reset or use --cache 1h for read operations.
| GAAC Command | GitHub Manager Usage |
|---|---|
/research-idea-to-spec | Create issue, add to project |
/refine-spec-to-arch | Create PR for arch docs |
/plan-arch-to-issues | Create multiple issues, add to project |
/work-on-issue | Create PR, get/resolve comments |
/git-commit | Create commit with proper format |
/resolve-pr-comment | Get comments, update PR |
| File | Purpose |
|---|---|
SKILL.md | This documentation |
scripts/create-issue.sh | Issue creation script |
scripts/create-pr.sh | PR creation script |
scripts/add-to-project.sh | Project board integration + field auto-fill |
scripts/get-pr-comments.sh | Fetch PR comments |
scripts/create-commit.sh | Git commit creation |
scripts/post-comment.sh | Post comment with attribution |
scripts/update-related-issues.sh | Update issues after PR merge |
scripts/merge-pr.sh | Merge PR with validation |
templates/issue-template.md | SWE-bench issue format |
templates/pr-template.md | PR body template |
templates/commit-template.md | Commit message format |