Claude-skill-registry github-swarm-issue
GitHub issue-based swarm coordination for intelligent task decomposition and progress tracking. Use for transforming issues into multi-agent tasks, automated triage, task breakdown, and issue lifecycle management.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/github-swarm-issue" ~/.claude/skills/majiayu000-claude-skill-registry-github-swarm-issue && rm -rf "$T"
manifest:
skills/data/github-swarm-issue/SKILL.mdsource content
GitHub Swarm Issue Skill
Overview
This skill transforms GitHub Issues into intelligent swarm tasks, enabling automatic task decomposition, agent coordination, and comprehensive progress tracking. It provides issue-to-swarm conversion, automated triage, and lifecycle management.
Key Capabilities:
- Issue-to-swarm conversion with automatic decomposition
- Issue comment commands for swarm control
- Automated triage and labeling
- Task breakdown with subtask creation
- Progress tracking with visual updates
- Duplicate detection and linking
Quick Start
# Get issue details for swarm initialization gh issue view 456 --json title,body,labels,assignees,comments # List issues ready for swarm processing gh issue list --label "swarm-ready" # Add swarm label to trigger processing gh issue edit 456 --add-label "swarm-ready" # Post swarm status comment gh issue comment 456 --body "Swarm initialized for this issue"
When to Use
- Complex Issues: Multi-step tasks requiring decomposition
- Bug Investigation: Issues needing systematic debugging
- Feature Requests: New features requiring architecture and implementation
- Technical Debt: Refactoring tasks with multiple components
- Epic Management: Coordinating child issues under parent
Usage Examples
1. Issue-to-Swarm Conversion
# Get complete issue context ISSUE=$(gh issue view 456 --json title,body,labels,assignees,comments,projectItems) # Analyze issue complexity BODY=$(echo "$ISSUE" | jq -r '.body') LABEL_COUNT=$(echo "$ISSUE" | jq '.labels | length') COMMENT_COUNT=$(echo "$ISSUE" | jq '.comments | length') # Determine swarm topology based on complexity if [ $LABEL_COUNT -gt 3 ] || [ ${#BODY} -gt 1000 ]; then TOPOLOGY="hierarchical" MAX_AGENTS=8 elif echo "$BODY" | grep -qE "(\[ \]|1\.|step)" ; then TOPOLOGY="mesh" MAX_AGENTS=5 else TOPOLOGY="ring" MAX_AGENTS=3 fi echo "Issue #456: Using $TOPOLOGY topology with $MAX_AGENTS agents" # Initialize swarm comment gh issue comment 456 --body "## Swarm Initialized **Topology**: $TOPOLOGY **Agents**: $MAX_AGENTS Processing issue for task decomposition..."
2. Task Decomposition
# Get issue body ISSUE_BODY=$(gh issue view 456 --json body --jq '.body') # Extract tasks from issue body (markdown checklist items) TASKS=$(echo "$ISSUE_BODY" | grep -E '^\s*-\s*\[ \]' | sed 's/.*\[ \]//') # Create subtask checklist SUBTASK_LIST="" TASK_NUM=1 echo "$TASKS" | while read -r task; do SUBTASK_LIST+="- [ ] $TASK_NUM. $task\n" TASK_NUM=$((TASK_NUM + 1)) done # Update issue with structured subtasks UPDATED_BODY="$ISSUE_BODY ## Swarm Task Breakdown $SUBTASK_LIST --- Decomposed by Swarm Agent" gh issue edit 456 --body "$UPDATED_BODY" # Create linked issues for major subtasks gh issue create \ --title "Subtask: Implement authentication" \ --body "Part of #456 ## Task Implement the authentication module. ## Acceptance Criteria - [ ] User login works - [ ] Token refresh works - [ ] Logout clears session" \ --label "subtask"
3. Progress Tracking
# Track issue progress track_progress() { local ISSUE_NUM=$1 # Get current issue state ISSUE=$(gh issue view $ISSUE_NUM --json body,labels) BODY=$(echo "$ISSUE" | jq -r '.body') # Count completed vs total tasks TOTAL=$(echo "$BODY" | grep -cE '^\s*-\s*\[[ x]\]' || echo 0) COMPLETED=$(echo "$BODY" | grep -cE '^\s*-\s*\[x\]' || echo 0) PERCENT=$((COMPLETED * 100 / TOTAL)) # Generate progress bar FILLED=$((PERCENT / 5)) EMPTY=$((20 - FILLED)) PROGRESS_BAR=$(printf '█%.0s' $(seq 1 $FILLED))$(printf '░%.0s' $(seq 1 $EMPTY)) # Post progress update gh issue comment $ISSUE_NUM --body "## Progress Update **Completion**: $PERCENT% [$PROGRESS_BAR] **Tasks**: $COMPLETED / $TOTAL completed $([ $PERCENT -eq 100 ] && echo '✅ All tasks complete!' || echo '🔄 Work in progress...') --- Updated: $(date '+%Y-%m-%d %H:%M')" } track_progress 456
4. Issue Comment Commands
Use these commands in issue comments:
<!-- Analyze issue and suggest approach --> /swarm analyze <!-- Decompose into subtasks --> /swarm decompose 5 <!-- Assign specific agent type --> /swarm assign @coder <!-- Estimate effort --> /swarm estimate <!-- Start swarm processing --> /swarm start <!-- Check progress --> /swarm progress <!-- Complete and summarize --> /swarm complete
5. Automated Triage
# Triage unlabeled issues triage_issues() { # Get unlabeled issues gh issue list --label "" --json number,title,body | \ jq -r '.[] | @base64' | while read -r encoded; do ISSUE=$(echo "$encoded" | base64 -d) NUM=$(echo "$ISSUE" | jq -r '.number') TITLE=$(echo "$ISSUE" | jq -r '.title') BODY=$(echo "$ISSUE" | jq -r '.body') # Analyze content for auto-labeling LABELS="" # Bug detection if echo "$TITLE $BODY" | grep -qiE "bug|error|broken|crash|fail"; then LABELS="bug" fi # Feature detection if echo "$TITLE $BODY" | grep -qiE "feature|add|implement|new"; then LABELS="${LABELS:+$LABELS,}enhancement" fi # Performance detection if echo "$TITLE $BODY" | grep -qiE "slow|performance|optimize|speed"; then LABELS="${LABELS:+$LABELS,}performance" fi # Security detection if echo "$TITLE $BODY" | grep -qiE "security|vulnerability|auth|permission"; then LABELS="${LABELS:+$LABELS,}security" fi # Apply labels if [ -n "$LABELS" ]; then gh issue edit $NUM --add-label "$LABELS" echo "Issue #$NUM: Added labels $LABELS" fi done } triage_issues
6. Stale Issue Management
# Process stale issues manage_stale_issues() { # Get issues not updated in 30 days STALE_DATE=$(date -d '30 days ago' '+%Y-%m-%d') gh issue list --state open --json number,title,updatedAt | \ jq -r ".[] | select(.updatedAt < \"$STALE_DATE\") | .number" | \ while read -r num; do # Check if already marked stale LABELS=$(gh issue view $num --json labels --jq '.labels[].name') if echo "$LABELS" | grep -q "stale"; then # Already stale for 7+ days - close STALE_CHECK=$(date -d '7 days ago' '+%Y-%m-%d') UPDATED=$(gh issue view $num --json updatedAt --jq '.updatedAt[:10]') if [ "$UPDATED" \< "$STALE_CHECK" ]; then gh issue close $num --comment "Closing due to inactivity. Feel free to reopen if still relevant." fi else # Mark as stale gh issue edit $num --add-label "stale" gh issue comment $num --body "This issue has been inactive for 30 days. It will be closed in 7 days if there's no activity." fi done } manage_stale_issues
Issue Templates for Swarms
# .github/ISSUE_TEMPLATE/swarm-task.yml name: Swarm Task description: Create a task for AI swarm processing body: - type: dropdown id: topology attributes: label: Swarm Topology options: - mesh (collaborative) - hierarchical (structured) - ring (sequential) - star (centralized) validations: required: true - type: input id: agents attributes: label: Required Agents placeholder: "coder, tester, analyst" - type: textarea id: description attributes: label: Task Description placeholder: "Describe what needs to be done..." validations: required: true - type: textarea id: subtasks attributes: label: Subtasks (Optional) placeholder: | - [ ] Subtask 1 - [ ] Subtask 2 - [ ] Subtask 3
MCP Tool Integration
Multi-Agent Issue Processing
// Initialize issue-specific swarm mcp__claude-flow__swarm_init { topology: "hierarchical", maxAgents: 8 } mcp__claude-flow__agent_spawn { type: "coordinator", name: "Issue Coordinator" } mcp__claude-flow__agent_spawn { type: "analyst", name: "Issue Analyzer" } mcp__claude-flow__agent_spawn { type: "coder", name: "Solution Developer" } mcp__claude-flow__agent_spawn { type: "tester", name: "Validation Engineer" } // Store issue context in swarm memory mcp__claude-flow__memory_usage { action: "store", key: "issue/456/context", value: { issue_number: 456, title: "Implement authentication", labels: ["feature", "priority:high"], complexity: "high", agents_assigned: ["coordinator", "analyst", "coder", "tester"] } } // Orchestrate issue resolution mcp__claude-flow__task_orchestrate { task: "Coordinate multi-agent issue resolution with progress tracking", strategy: "adaptive", priority: "high" }
GitHub Integration Tools
// Track issues mcp__claude-flow__github_issue_track { repo: "owner/repo", action: "triage" } // Analyze repository mcp__claude-flow__github_repo_analyze { repo: "owner/repo", analysis_type: "code_quality" } // Get metrics mcp__claude-flow__github_metrics { repo: "owner/repo" }
GitHub Actions Integration
# .github/workflows/issue-swarm.yml name: Issue Swarm Handler on: issues: types: [opened, labeled] issue_comment: types: [created] jobs: process-new-issue: if: github.event.action == 'opened' runs-on: ubuntu-latest steps: - name: Auto-Triage Issue env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | TITLE="${{ github.event.issue.title }}" BODY="${{ github.event.issue.body }}" # Determine labels based on content LABELS="" if echo "$TITLE $BODY" | grep -qiE "bug|error"; then LABELS="bug" elif echo "$TITLE $BODY" | grep -qiE "feature|add"; then LABELS="enhancement" fi if [ -n "$LABELS" ]; then gh issue edit ${{ github.event.issue.number }} --add-label "$LABELS" fi handle-swarm-label: if: github.event.action == 'labeled' && github.event.label.name == 'swarm-ready' runs-on: ubuntu-latest steps: - name: Initialize Swarm env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh issue comment ${{ github.event.issue.number }} \ --body "## Swarm Processing Started This issue has been queued for swarm processing. **Status**: Analyzing... **ETA**: ~15 minutes" handle-commands: if: github.event_name == 'issue_comment' && startsWith(github.event.comment.body, '/swarm') runs-on: ubuntu-latest steps: - name: Process Command run: | COMMAND="${{ github.event.comment.body }}" echo "Processing swarm command: $COMMAND"
Issue Types and Strategies
Bug Reports
# Specialized bug handling handle_bug() { local ISSUE_NUM=$1 gh issue comment $ISSUE_NUM --body "## Bug Investigation Swarm **Agents Assigned:** - Debugger: Reproduce and isolate - Analyst: Root cause analysis - Tester: Regression tests - Coder: Fix implementation **Process:** 1. Reproduce the bug 2. Isolate to minimal case 3. Identify root cause 4. Implement fix 5. Add regression tests 6. Verify fix" }
Feature Requests
# Feature implementation workflow handle_feature() { local ISSUE_NUM=$1 gh issue comment $ISSUE_NUM --body "## Feature Implementation Swarm **Agents Assigned:** - Architect: Design approach - Coder: Implementation - Tester: Test coverage - Reviewer: Code quality **Phases:** 1. Design review 2. Implementation 3. Testing 4. Documentation 5. Demo/Review" }
Best Practices
1. Issue Templates
- Include swarm configuration options
- Provide structured task breakdown
- Set clear acceptance criteria
- Include complexity estimates
2. Label Strategy
- Use consistent swarm-related labels (swarm-ready, swarm-processing)
- Map labels to agent types
- Include priority indicators
- Track status with labels
3. Comment Etiquette
- Clear command syntax (/swarm command)
- Progress updates in threads
- Summary comments for decisions
- Link to relevant PRs
4. Progress Tracking
- Regular status updates
- Visual progress indicators
- ETA estimates
- Blocker identification
Metrics and Analytics
# Issue resolution metrics generate_metrics() { # Get closed issues from last 30 days gh issue list --state closed --json number,title,createdAt,closedAt,labels | \ jq '{ total_closed: length, avg_resolution_days: ([.[].createdAt, .[].closedAt] | map(fromdateiso8601) | . as $dates | (($dates[1] - $dates[0]) / 86400)) | add / length, by_label: group_by(.labels[].name) | map({label: .[0].labels[0].name, count: length}) }' } generate_metrics
Related Skills
- github-swarm-pr - PR-based swarm coordination
- github-project-board - Project board integration
- github-workflow - CI/CD automation
- github-modes - GitHub integration modes
Version History
- 1.0.0 (2026-01-02): Initial skill conversion from swarm-issue agent