github-project
Automates GitHub issue and milestone management for the Bluegrass Songbook repository.
Install
mkdir -p .claude/skills/github-project && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12114" && unzip -o skill.zip -d .claude/skills/github-project && rm skill.zipInstalls to .claude/skills/github-project
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
GitHub project management for Bluegrass Songbook. Use when working with issues, milestones, labels, PRs, or release workflows.Key capabilities
- →List GitHub issues by state, milestone, or label
- →Close GitHub issues with comments
- →Create new milestones for a repository
- →Assign issues to milestones or remove them
- →Add or remove labels from issues
- →Create new GitHub releases with notes
How it works
The skill uses `gh` CLI commands and GitHub API calls to manage issues, milestones, labels, and releases within the Jollyhrothgar/Bluegrass-Songbook repository.
Inputs & outputs
When to use github-project
- →List open issues by label or milestone
- →Create and assign milestones
- →Close issues with status comments
- →Update issue labels
About this skill
GitHub Project Management
Repository: Jollyhrothgar/Bluegrass-Songbook
Quick Reference
# Issues
gh issue list # Open issues
gh issue list --state all # All issues
gh issue list --milestone "Name" # By milestone
gh issue list --label bug # By label
gh issue view 42 # View issue details
gh issue close 42 -c "Fixed in abc123" # Close with comment
# Milestones
gh api repos/:owner/:repo/milestones # List milestones
gh api repos/:owner/:repo/milestones --jq '.[] | {number, title, open_issues}'
# Assign issue to milestone
gh api repos/:owner/:repo/issues/42 -X PATCH -F milestone=2
# Remove from milestone
gh api repos/:owner/:repo/issues/42 -X PATCH -F milestone=null
# Labels
gh issue edit 42 --add-label "bug"
gh issue edit 42 --remove-label "bug"
Milestones
Milestone numbers and titles change. Always read them live before using
one — passing a stale number to -F milestone=N silently files the issue in
the wrong place:
gh api 'repos/:owner/:repo/milestones?state=all' --jq '.[] | "\(.number) | \(.title) | \(.state)"'
Snapshot as of 2026-08-19 (open unless noted), for orientation only:
| # | Title | Purpose |
|---|---|---|
| 1 | User Login | closed |
| 2 | List Management Tools | User lists, setlists, offline access |
| 3 | Improve Search & Filtering | Search features, filters, tagging |
| 4 | Backlog | Lower priority items |
| 5 | Fun Features | Leaderboards, easter eggs |
| 6 | Content | New song sources, imports |
| 7 | Playback Engine | Metronome, chord backing |
| 8 | Fiddle Tunes | closed — ABC notation support shipped |
| 9 | Tablature | Tab display, editing, playback |
| 10 | Community | Profiles, contributions |
| 11 | Code Health | Refactors, test coverage, tech debt |
| 12 | Contribution pipeline | Submission → pending_songs → works/ |
Create a Milestone
gh api repos/:owner/:repo/milestones -X POST \
-f title="Milestone Name" \
-f description="What this milestone covers" \
-f due_on="2025-03-01T00:00:00Z" # Optional
Milestone Progress
# Get open/closed counts
gh api repos/:owner/:repo/milestones --jq '.[] | "\(.title): \(.open_issues) open, \(.closed_issues) closed"'
Labels
Applying a label that does not exist makes gh issue create fail. The
repo has ~32 labels; read them live before choosing:
gh label list --limit 100
Commonly used ones (verified present 2026-08-19):
| Label | Purpose |
|---|---|
bug | Something isn't working |
feature-request | Add something new that doesn't exist |
technical-debt | Non-blocking cleanup or improvements |
refactoring | Code cleanup and restructuring |
documentation | Documentation improvements |
song-flag | A reader reported a problem with a song (read-only report, no workflow) |
tune-request | Instrumental tune request (fetched from TuneArch on approval) |
approved | Triggers the tune-request workflow |
new-data-source | New song collection to import |
rfc | Request for Comments - architectural decisions |
superuser-request | Request for super-user/trusted status |
quick-win / medium / large | Size |
P0 / P1 / P2 / P3 | Priority |
Automated Workflows
tune-request + approved is the only label combination that triggers a
GitHub Action:
| Labels | Action |
|---|---|
tune-request + approved | process-tune-request.yml ("Process Tune Request") - imports a fiddle tune from TuneArch |
Song content no longer arrives by issue. Since phase 2b of
docs/plans/contribution-pipeline.md, any logged-in user's submission goes
straight to pending_songs (live in seconds) and then to works/ via the
pending-commit dispatch handled by process-pending.yml.
The song-submission, song-correction, tab-submission and
tab-correction labels still exist in the repo but nothing consumes them —
their workflows and edge functions are deleted. Do not apply them expecting an
automation to fire.
The rest of the workflows
Not label-triggered; listed so you don't invent one. Verify with
ls .github/workflows/:
| File | name: | Trigger |
|---|---|---|
build.yml | CI & Deploy | push to main, PRs |
deploy-functions.yml | Deploy Supabase Functions | push to main touching supabase/functions/**; workflow_dispatch |
process-pending.yml | Process Pending Submission | pending-commit repository_dispatch |
process-tune-request.yml | Process Tune Request | issue labeled (see above) |
cleanup-pending.yml | Cleanup Pending Songs | workflow_run after "CI & Deploy" |
reconcile-pending.yml | Reconcile Pending Songs | cron 42 * * * * |
sync-community-input.yml | Sync Community Input | cron 27 * * * * |
sync-deleted-songs.yml | Sync Deleted + Promoted Songs | cron 17 * * * * |
Common Workflows
Triage New Issue
# 1. View the issue
gh issue view 42
# 2. Add appropriate label
gh issue edit 42 --add-label "feature-request"
# 3. Assign to milestone
gh api repos/:owner/:repo/issues/42 -X PATCH -F milestone=2
# 4. Optionally add comment
gh issue comment 42 -b "Added to List Management milestone. Will address in next sprint."
Close Resolved Issue
# Close with reference to fix
gh issue close 42 -c "Fixed in commit abc123 / PR #45"
Bulk Operations
# Close all issues with a label
gh issue list --label "wontfix" --json number --jq '.[].number' | xargs -I {} gh issue close {}
# Add label to multiple issues
for i in 10 11 12; do gh issue edit $i --add-label "bug"; done
# Move issues to milestone
for i in 31 39 40; do gh api repos/:owner/:repo/issues/$i -X PATCH -F milestone=2; done
Create Release
# Tag and create release
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin v1.0.0
gh release create v1.0.0 \
--title "v1.0.0 - List Management" \
--notes "## Features
- Drag-and-drop setlists
- Offline list access
- Full screen performance mode"
Pull Requests
# Create PR
gh pr create --title "Add setlist navigation" \
--body "Closes #40" \
--base main
# View PR checks
gh pr checks 45
# Merge PR
gh pr merge 45 --squash --delete-branch
# View PR comments
gh api repos/:owner/:repo/pulls/45/comments
Issue Templates
Issues are created via the web UI or:
gh issue create --title "Bug: description" \
--body "## Steps to reproduce
1.
2.
## Expected behavior
## Actual behavior" \
--label "bug"
Queries
# Issues without milestone
gh issue list --json number,title,milestone --jq '.[] | select(.milestone == null) | "\(.number): \(.title)"'
# Issues by author
gh issue list --author pixiefarm
# Recently updated
gh issue list --json number,title,updatedAt --jq 'sort_by(.updatedAt) | reverse | .[:5] | .[] | "\(.number): \(.title)"'
# Search issue content
gh issue list --search "offline in:body"
Project Board (if using GitHub Projects)
gh api repos/:owner/:repo/projects is the classic Projects API and is
gone — it returns HTTP 404 on this repo. Projects v2 is GraphQL-only, via the
gh project subcommands:
gh project list
gh project view 1
These need the read:project scope, which the default gh token does not
carry. If you get "your authentication token is missing required scopes",
run gh auth refresh -s read:project — that is an interactive browser flow,
so ask the user rather than running it unprompted.
When not to use it
- →For GitHub repositories other than Jollyhrothgar/Bluegrass-Songbook
- →For project management tasks outside of GitHub
- →When not working with issues, milestones, labels, PRs, or release workflows
Limitations
- →Specific to the Jollyhrothgar/Bluegrass-Songbook repository
- →Requires use of the `gh` CLI tool
- →Automated workflows are triggered by specific label combinations
How it compares
This skill provides specific CLI commands and API endpoints tailored for the Bluegrass Songbook project, including predefined milestones and labels, unlike general GitHub CLI usage.
Compared to similar skills
github-project side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| github-project (this skill) | 0 | 9mo | Review | Intermediate |
| task-master | 22 | 8mo | Review | Intermediate |
| github-project-management | 4 | 7mo | Review | Advanced |
| issue-manage | 2 | 7mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
task-master
sfc-gh-dflippo
AI-powered task management for structured, specification-driven development. Use this skill when you need to manage complex projects with PRDs, break down tasks into subtasks, track dependencies, and maintain organized development workflows across features and branches.
github-project-management
ruvnet
Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
issue-manage
catlog22
Interactive issue management with menu-driven CRUD operations. Use when managing issues, viewing issue status, editing issue fields, performing bulk operations, or viewing issue history. Triggers on "manage issue", "list issues", "edit issue", "delete issue", "bulk update", "issue dashboard", "issue history", "completed issues".
issue-maker
pollinations
Create GitHub issues following Pollinations team conventions. Use when asked to create issues, track work, or plan features.
create-issue
dotCMS
Create GitHub issues using repository templates. Use when the user asks to create an issue, bug report, feature request, task, spike, epic, or UX requirement. Also use when the user describes a problem, bug, enhancement, or work item that should be tracked. Supports both English and Spanish input.
issue-discover
catlog22
Unified issue discovery and creation. Create issues from GitHub/text, discover issues via multi-perspective analysis, or prompt-driven iterative exploration. Triggers on "issue:new", "issue:discover", "issue:discover-by-prompt", "create issue", "discover issues", "find issues".