{"id":35478066,"url":"https://github.com/netresearch/github-project-skill","last_synced_at":"2026-05-28T22:00:29.468Z","repository":{"id":328926428,"uuid":"1115743770","full_name":"netresearch/github-project-skill","owner":"netresearch","description":"Agent Skill for GitHub repository setup and platform-specific features | Claude Code compatible","archived":false,"fork":false,"pushed_at":"2026-05-23T07:16:45.000Z","size":429,"stargazers_count":5,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-23T07:28:21.072Z","etag":null,"topics":["agent-skills","ai-agent","open-standard"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netresearch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-CC-BY-SA-4.0","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-13T13:14:49.000Z","updated_at":"2026-05-23T06:52:22.000Z","dependencies_parsed_at":"2026-03-14T17:04:30.792Z","dependency_job_id":null,"html_url":"https://github.com/netresearch/github-project-skill","commit_stats":null,"previous_names":["netresearch/github-project-skill"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/netresearch/github-project-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netresearch%2Fgithub-project-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netresearch%2Fgithub-project-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netresearch%2Fgithub-project-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netresearch%2Fgithub-project-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netresearch","download_url":"https://codeload.github.com/netresearch/github-project-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netresearch%2Fgithub-project-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33627937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skills","ai-agent","open-standard"],"created_at":"2026-01-03T13:13:08.997Z","updated_at":"2026-05-28T22:00:29.429Z","avatar_url":"https://github.com/netresearch.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\nname: github-project\ndescription: \"GitHub repository setup and platform-specific features. This skill should be used when creating new GitHub repositories, configuring branch protection rules, setting up GitHub Issues/Discussions/Projects, creating sub-issues and issue hierarchies, managing PR review workflows, configuring Dependabot/Renovate auto-merge, setting up merge queues with GraphQL enqueuePullRequest mutations, or checking GitHub project configuration. Focuses on GitHub platform features, not CI/CD pipelines or language-specific tooling. By Netresearch.\"\n---\n\n# GitHub Project Skill\n\nGitHub platform configuration and repository management patterns. This skill focuses exclusively on **GitHub-specific features**.\n\n\u003e **New repo? Run this BEFORE the first PR:**\n\u003e `bash skills/github-project/scripts/init-branch-protection.sh OWNER/REPO`\n\u003e Applies `required_conversation_resolution: true` + 1-approver baseline so the\n\u003e \"abort merge if unresolved threads\" rule is structurally enforced, not just\n\u003e documented. See `skills/github-project/SKILL.md` → *Required First Step\n\u003e After `gh repo create`* for the two-step flow.\n\n## 🔌 Compatibility\n\nThis is an **Agent Skill** following the [open standard](https://agentskills.io) originally developed by Anthropic and released for cross-platform use.\n\n**Supported Platforms:**\n- ✅ Claude Code (Anthropic)\n- ✅ Cursor\n- ✅ GitHub Copilot\n- ✅ Other skills-compatible AI agents\n\n\u003e Skills are portable packages of procedural knowledge that work across any AI agent supporting the Agent Skills specification.\n\n\n## Scope Boundaries\n\n**This Skill Covers:**\n- Branch protection rules and PR workflows\n- CODEOWNERS configuration\n- GitHub Issues, Discussions, Projects\n- Sub-issues and issue hierarchies (parent/child relationships)\n- Dependabot/Renovate auto-merge\n- GitHub Releases configuration\n- Repository collaboration features\n\n**Delegate to Other Skills:**\n- CI/CD pipelines → `go-development`, `php-modernization`, `typo3-testing`\n- Security scanning (CodeQL, gosec) → `security-audit`\n- SLSA, SBOMs, supply chain → `enterprise-readiness`\n- Git branching strategies, conventional commits → `git-workflow`\n\n## Triggers\n\n**Setup \u0026 Configuration:**\n- Creating a new GitHub repository\n- \"Check my GitHub project setup\"\n- \"Configure branch protection\"\n- \"Set up GitHub Issues/Discussions\"\n- \"How do I require PR reviews?\"\n- \"Auto-merge Dependabot PRs\"\n- \"Configure CODEOWNERS\"\n\n**Sub-Issues \u0026 Issue Hierarchies:**\n- \"Create sub-issues\"\n- \"Add child issues to parent\"\n- \"Link issues as parent/child\"\n- \"Break down issue into sub-tasks\"\n- \"Set up issue hierarchy\"\n- \"Convert checklist to sub-issues\"\n\n**Troubleshooting (PR Merge Blocked):**\n- \"PR can't be merged\" / \"merge is blocked\"\n- \"unresolved conversations\" / \"unresolved comments\"\n- \"required reviews not met\"\n- \"CODEOWNERS review required\"\n- \"status checks failed\" (for branch protection context)\n- `gh pr merge` returns error\n\n**Troubleshooting (Auto-Merge Failures):**\n- \"auto-merge not working\" / \"Dependabot PR not merging\"\n- \"Merge method squash merging is not allowed\"\n- \"Merge method merge commit is not allowed\"\n- \"required status check not found\"\n- \"status check name mismatch\"\n- PRs stuck with auto-merge enabled\n- \"Protected branch rules not configured\" (--auto requires branch protection)\n- Merge queue not processing PRs\n\n**Troubleshooting (Ruleset Conflicts):**\n- \"Rebase is not an allowed merge method\"\n- \"Squash is not an allowed merge method\"\n- \"Merge commit is not an allowed merge method\"\n- Ruleset merge method mismatch warning on PR\n\n**Merge Queue Configuration:**\n- \"set up merge queue\"\n- \"enqueuePullRequest\"\n- \"auto-merge with merge queue\"\n- \"GraphQL merge queue mutation\"\n\n**Branch Migration:**\n- \"rename master to main\"\n- \"change default branch\"\n- \"migrate from master\"\n- \"prevent master branch\"\n- \"block master from being created\"\n\n## Installation\n\n### Marketplace (Recommended)\n\nAdd the [Netresearch marketplace](https://github.com/netresearch/claude-code-marketplace) once, then browse and install skills:\n\n```bash\n# Claude Code\n/plugin marketplace add netresearch/claude-code-marketplace\n```\n\n### npx ([skills.sh](https://skills.sh))\n\nInstall with any [Agent Skills](https://agentskills.io)-compatible agent:\n\n```bash\nnpx skills add https://github.com/netresearch/github-project-skill --skill github-project\n```\n\n### Download Release\n\nDownload the [latest release](https://github.com/netresearch/github-project-skill/releases/latest) and extract to your agent's skills directory.\n\n### Git Clone\n\n```bash\ngit clone https://github.com/netresearch/github-project-skill.git\n```\n\n### Composer (PHP Projects)\n\n```bash\ncomposer require netresearch/github-project-skill\n```\n\nRequires [netresearch/composer-agent-skill-plugin](https://github.com/netresearch/composer-agent-skill-plugin).\n\n### npm (Node Projects)\n\n```bash\nnpm install --save-dev \\\n  @netresearch/agent-skill-coordinator \\\n  github:netresearch/github-project-skill\n```\n\nRequires [@netresearch/agent-skill-coordinator](https://github.com/netresearch/node-agent-skill-coordinator), which discovers the skill in `node_modules` and registers it in `AGENTS.md` via a `postinstall` hook. For pnpm, also allowlist the coordinator's postinstall:\n\n```json\n{\n  \"pnpm\": {\n    \"onlyBuiltDependencies\": [\"@netresearch/agent-skill-coordinator\"]\n  }\n}\n```\n\n## Workflows\n\n### New Repository Setup\n\nTo set up a new GitHub repository:\n\n1. Create essential files: README.md, LICENSE, SECURITY.md\n2. Configure `.github/` directory structure (see `references/repository-structure.md`)\n3. Set up branch protection on `main` branch\n4. Configure CODEOWNERS for automatic reviewer assignment\n5. Create issue and PR templates\n6. Enable Dependabot or Renovate for dependency updates\n7. Configure auto-merge workflow for dependency PRs\n8. Set up release notes configuration\n\nRun verification: `./scripts/verify-github-project.sh /path/to/repo`\n\n### Branch Configuration\n\n**Required branch settings:**\n\n| Setting | Value | Rationale |\n|---------|-------|-----------|\n| Default branch name | `main` | Industry standard |\n| Default branch protected | ✅ | Prevent direct pushes |\n| Allowed merge method | **Merge commits only** | Preserve complete history |\n| Delete branch on merge | ✅ | Keep repo clean |\n\nTo configure via GitHub CLI:\n\n```bash\n# Ensure default branch is named \"main\"\ngh api repos/{owner}/{repo} --jq '.default_branch'\n\n# Configure merge settings (merge commits only, delete on merge)\ngh repo edit --enable-merge-commit --disable-rebase-merge --disable-squash-merge --delete-branch-on-merge\n```\n\n**Note:** If you prefer rebase merging for linear history, use `--enable-rebase-merge --disable-merge-commit` instead. Ensure consistency with any GitHub Rulesets (see [Rulesets Configuration](#github-rulesets-configuration)).\n\n### Repository Settings\n\n**Complete repository settings:**\n\n| Setting | Value | Rationale |\n|---------|-------|-----------|\n| Allow merge commits | ✅ | With PR title and description |\n| Allow squash merging | ❌ | Preserve commit granularity |\n| Allow rebase merging | ❌ | Use merge queue instead |\n| Automatically delete head branches | ✅ | Keep repo clean |\n| Allow auto-merge | ✅ | Enable merge queue integration |\n| Always suggest updating PR branches | ✅ | Keep PRs up-to-date with base |\n| Discussions | ✅ | Community Q\u0026A |\n| Wikis | ❌ | Use docs folder instead |\n\n**Configure via CLI:**\n\n```bash\n# Configure all repository settings\ngh repo edit \\\n  --enable-merge-commit \\\n  --disable-squash-merge \\\n  --disable-rebase-merge \\\n  --delete-branch-on-merge \\\n  --enable-auto-merge \\\n  --enable-discussions \\\n  --disable-wiki\n\n# Set merge commit message format (PR title and description)\ngh api repos/{owner}/{repo} \\\n  --method PATCH \\\n  -f merge_commit_title=PR_TITLE \\\n  -f merge_commit_message=PR_BODY\n\n# Enable \"always suggest updating PR branches\"\ngh api repos/{owner}/{repo} \\\n  --method PATCH \\\n  -F allow_update_branch=true\n```\n\n**Important:** Do NOT enable `required_linear_history` when using merge commits. Linear history requires fast-forward merges only (no merge commits). If you see \"not authorized to push\" errors, check if `required_linear_history` is enabled and disable it.\n\n### Renaming \"master\" to \"main\"\n\nFor complete migration steps from `master` to `main` as default branch, see `references/branch-migration.md`.\n\nQuick start:\n```bash\ngit branch -m master main\ngit push -u origin main\ngh repo edit --default-branch main\ngit push origin --delete master\n```\n\n### Branch Protection Configuration\n\nTo configure branch protection via GitHub CLI:\n\n```bash\n# View current protection\ngh api repos/{owner}/{repo}/branches/main/protection\n\n# Set branch protection\ngh api repos/{owner}/{repo}/branches/main/protection \\\n  --method PUT \\\n  -f required_status_checks='{\"strict\":true,\"contexts\":[\"test\",\"lint\"]}' \\\n  -f enforce_admins=true \\\n  -f required_pull_request_reviews='{\"required_approving_review_count\":1,\"dismiss_stale_reviews\":true,\"require_code_owner_reviews\":true}' \\\n  -f restrictions=null \\\n  -f required_conversation_resolution=true\n```\n\n**Recommended Settings:**\n| Setting | Value | Purpose |\n|---------|-------|---------|\n| Require pull request | ✅ | Enforce code review |\n| Required approvals | 1+ | Based on team size |\n| Dismiss stale reviews | ✅ | Re-review after changes |\n| Require CODEOWNERS review | ✅ | Domain expert review |\n| Require conversation resolution | ✅ | All comments addressed |\n| Do not allow force pushes | ✅ | Protect history |\n| Allow merge commits | ✅ | Preserve complete history |\n| Disable rebase merge | ✅ | Avoid linear-only restriction |\n| Disable squash merge | ✅ | Preserve commit granularity |\n| Delete branch on merge | ✅ | Auto-cleanup merged branches |\n\n### GitHub Rulesets Configuration\n\nGitHub Rulesets provide repository rules that can override or conflict with repository-level settings. **Critical:** The `pull_request` rule in rulesets has its own `allowed_merge_methods` setting that must match repository settings.\n\n**View existing rulesets:**\n```bash\n# List all rulesets\ngh api repos/{owner}/{repo}/rulesets\n\n# Get specific ruleset details\ngh api repos/{owner}/{repo}/rulesets/{ruleset_id}\n```\n\n**Common Issue: \"Rebase is not an allowed merge method\" Warning**\n\nThis warning appears on PRs when there's a mismatch between:\n1. **Repository settings** (`allow_rebase_merge: false`)\n2. **Ruleset settings** (`allowed_merge_methods` includes `\"rebase\"`)\n\n**Diagnosis:**\n```bash\n# Check repository merge settings\ngh api repos/{owner}/{repo} --jq '{allow_merge_commit, allow_rebase_merge, allow_squash_merge}'\n\n# Check ruleset merge settings\ngh api repos/{owner}/{repo}/rulesets/{ruleset_id} --jq '.rules[] | select(.type == \"pull_request\") | .parameters.allowed_merge_methods'\n\n# Check merge queue settings\ngh api repos/{owner}/{repo}/rulesets/{ruleset_id} --jq '.rules[] | select(.type == \"merge_queue\") | .parameters.merge_method'\n```\n\n**Fix: Update ruleset to match repository settings**\n\nFor merge commits only:\n```bash\ngh api repos/{owner}/{repo}/rulesets/{ruleset_id} -X PUT --input - \u003c\u003c 'EOF'\n{\n  \"rules\": [\n    {\n      \"type\": \"pull_request\",\n      \"parameters\": {\n        \"allowed_merge_methods\": [\"merge\"]\n      }\n    },\n    {\n      \"type\": \"merge_queue\",\n      \"parameters\": {\n        \"merge_method\": \"MERGE\"\n      }\n    }\n  ]\n}\nEOF\n```\n\n**Ruleset merge method alignment:**\n\n| Repository Setting | Ruleset `allowed_merge_methods` | Ruleset `merge_queue.merge_method` |\n|-------------------|--------------------------------|-----------------------------------|\n| `allow_merge_commit: true` only | `[\"merge\"]` | `\"MERGE\"` |\n| `allow_rebase_merge: true` only | `[\"rebase\"]` | `\"REBASE\"` |\n| `allow_squash_merge: true` only | `[\"squash\"]` | `\"SQUASH\"` |\n\n### PR Comment Resolution Workflow\n\nTo enforce PR comment resolution:\n\n1. Enable \"Require conversation resolution\" in branch protection\n2. During review:\n   - Reviewers leave line-specific comments\n   - Author responds to each comment\n   - Author clicks \"Resolve conversation\" after addressing\n3. PR cannot merge until all conversations are resolved\n4. Options for each thread:\n   - \"Resolve conversation\" → Mark as addressed\n   - Reply with explanation → Then resolve\n   - \"Won't fix\" with reason → Then resolve\n\n### Programmatic Review Thread Resolution (CRITICAL)\n\n**IMPORTANT**: \"Addressing\" review comments means BOTH:\n1. Fixing the code\n2. **LITERALLY resolving** the thread via GitHub GraphQL API\n\nThe `gh` CLI does not support resolving review threads directly. Use GraphQL API.\n\n**Step 1: Get unresolved review threads**\n```bash\ngh api graphql -f query='{\n  repository(owner: \"OWNER\", name: \"REPO\") {\n    pullRequest(number: NUMBER) {\n      reviewThreads(first: 50) {\n        nodes {\n          id\n          isResolved\n          path\n          line\n          comments(first: 1) {\n            nodes { body }\n          }\n        }\n      }\n    }\n  }\n}'\n```\n\n**Step 2: Resolve each thread by ID**\n```bash\ngh api graphql -f query='mutation {\n  resolveReviewThread(input: {threadId: \"PRRT_xxxxxxxxxxxx\"}) {\n    thread { isResolved }\n  }\n}'\n```\n\n**Step 3: Verify all threads resolved**\n```bash\ngh api graphql -f query='{\n  repository(owner: \"OWNER\", name: \"REPO\") {\n    pullRequest(number: NUMBER) {\n      reviewThreads(first: 50) {\n        nodes { id isResolved }\n      }\n    }\n  }\n}' | jq '.data.repository.pullRequest.reviewThreads.nodes | map(select(.isResolved == false))'\n```\n\n**PR Completion Checklist**:\n- [ ] Code changes pushed and CI passing\n- [ ] All review threads LITERALLY resolved via GraphQL API\n- [ ] PR title and description updated to reflect final changes\n- [ ] Added to merge queue or auto-merge enabled\n\n### CODEOWNERS Setup\n\nTo configure automatic reviewer assignment:\n\n1. Create `.github/CODEOWNERS`\n2. Define ownership patterns (last matching pattern wins):\n\n```\n# Default owners for everything\n* @org/maintainers\n\n# Directory ownership\n/src/auth/ @org/security-team\n/docs/ @org/docs-team\n\n# File pattern ownership\n*.sql @org/dba-team\n/.github/ @org/maintainers\n```\n\n3. Enable \"Require review from CODEOWNERS\" in branch protection\n\n### Dependency Auto-Merge Setup\n\nTo configure automatic merging of dependency updates:\n\n1. Configure Dependabot or Renovate (see `references/dependency-management.md`)\n2. Create auto-merge workflow using appropriate template (see decision matrix below)\n3. Workflow auto-approves and merges minor/patch updates\n4. Major updates require manual review\n\n**Auto-Merge Decision Matrix:**\n\n| Repository Configuration | Template | Merge Method |\n|--------------------------|----------|--------------|\n| Merge queue enabled | `auto-merge-queue.yml.template` | GraphQL `enqueuePullRequest` |\n| Branch protection (no queue) | `auto-merge.yml.template` | `gh pr merge --auto` |\n| No branch protection | `auto-merge-direct.yml.template` | `gh pr merge --rebase` (direct) |\n\n### Merge Queue Auto-Merge Setup\n\nFor repositories with merge queues enabled, the `--auto` flag and direct merge commands don't work. Use the GraphQL `enqueuePullRequest` mutation instead.\n\n**Key points:**\n- The `mergeMethod` parameter is NOT valid for `enqueuePullRequest` - merge method is set by queue configuration\n- Use `github.event.pull_request.node_id` to get the PR's GraphQL node ID\n- The mutation adds the PR to the queue; actual merge happens when queue processes it\n\n```yaml\n# .github/workflows/auto-merge-deps.yml\nname: Auto-merge dependency PRs\non:\n  pull_request_target:\n    types: [opened, synchronize, reopened]\n\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  auto-merge:\n    runs-on: ubuntu-latest\n    if: github.actor == 'dependabot[bot]' || github.actor == 'renovate[bot]'\n    steps:\n      - name: Approve PR\n        env:\n          PR_URL: ${{ github.event.pull_request.html_url }}\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: gh pr review --approve \"$PR_URL\"\n\n      - name: Add to merge queue\n        env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          PR_NODE_ID: ${{ github.event.pull_request.node_id }}\n        run: |\n          gh api graphql -f query='\n            mutation($pullRequestId: ID!) {\n              enqueuePullRequest(input: {pullRequestId: $pullRequestId}) {\n                mergeQueueEntry { id }\n              }\n            }' -f pullRequestId=\"$PR_NODE_ID\"\n```\n\n### Direct Auto-Merge Setup (No Branch Protection)\n\nFor repositories without branch protection rules, the `--auto` flag fails with \"Protected branch rules not configured\". Use direct merge instead:\n\n```yaml\n# .github/workflows/auto-merge-deps.yml\n- name: Merge PR\n  env:\n    PR_URL: ${{ github.event.pull_request.html_url }}\n    GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n  run: gh pr merge --rebase \"$PR_URL\"\n```\n\n### Troubleshooting: Auto-Merge Failures\n\nWhen auto-merge is enabled but PRs aren't merging automatically:\n\n**Step 1: Check repo merge settings vs workflow merge method**\n```bash\n# View current merge method settings\ngh api repos/{owner}/{repo} --jq '{\n  allow_squash_merge,\n  allow_merge_commit,\n  allow_rebase_merge,\n  delete_branch_on_merge\n}'\n```\n\n**Step 2: Identify merge method mismatch**\n\n| Workflow Uses | Repo Setting Required | Error Message |\n|---------------|----------------------|---------------|\n| `gh pr merge --squash` | `allow_squash_merge: true` | \"Merge method squash merging is not allowed\" |\n| `gh pr merge --merge` | `allow_merge_commit: true` | \"Merge method merge commit is not allowed\" |\n| `gh pr merge --rebase` | `allow_rebase_merge: true` | \"Merge method rebase is not allowed\" |\n\n**Step 3: Fix merge method alignment**\n\nEither update workflow to match repo settings (`gh pr merge --rebase`) or update repo:\n```bash\ngh api repos/{owner}/{repo} --method PATCH -f allow_rebase_merge=true\n```\n\n**Step 4: Validate required status checks**\n\nStatus check names must **exactly match** what workflows produce:\n```bash\n# Compare expected vs actual check names\ngh api repos/{owner}/{repo}/branches/main/protection/required_status_checks --jq '.contexts[]'\ngh pr checks \u003cnumber\u003e --json name --jq '.[].name'\n```\n\n**Common status check name mismatches:**\n\n| Expected | Actual | Issue |\n|----------|--------|-------|\n| `Analyze (javascript-typescript)` | `Analyze (javascript)` | Language detection |\n| `build` | `Build / build` | Workflow name prefix |\n| `test` | `test (ubuntu-latest, 18)` | Matrix parameters |\n\n**Step 5: Fix and re-trigger**\n```bash\n# Update branch protection check names\ngh api repos/{owner}/{repo}/branches/main/protection/required_status_checks \\\n  --method PATCH -f strict=true --input - \u003c\u003c\u003c '{\"contexts\":[\"actual-check-name\"]}'\n\n# Re-trigger stuck PRs\ngh pr update-branch \u003cnumber\u003e --rebase\n```\n\n**Auto-merge compatibility checklist:**\n\n| Check | Command | Expected |\n|-------|---------|----------|\n| Merge method alignment | `gh api repos/{owner}/{repo} --jq '.allow_rebase_merge'` | Matches workflow flag |\n| Status checks pass | `gh pr checks \u003cnumber\u003e` | All green |\n| Status check names match | Compare `gh pr checks` vs branch protection | Exact match |\n| Reviews complete | `gh pr view \u003cnumber\u003e --json reviewDecision` | `APPROVED` |\n| No merge conflicts | `gh pr view \u003cnumber\u003e --json mergeable` | `MERGEABLE` |\n| Auto-merge enabled | `gh pr view \u003cnumber\u003e --json autoMergeRequest` | Not null |\n\n### GitHub Discussions Setup\n\nTo enable Discussions:\n\n1. Go to **Settings → Features → Discussions**\n2. Create categories:\n   - 📣 Announcements (maintainers only)\n   - 💬 General\n   - 💡 Ideas\n   - 🙏 Q\u0026A (Question/Answer format)\n3. Add Discussions link to issue template chooser\n\n**Use Discussions for:** Questions, ideas, announcements\n**Use Issues for:** Bug reports, confirmed features, actionable tasks\n\n### GitHub Releases Configuration\n\nTo configure automatic release notes:\n\n1. Create `.github/release.yml`:\n\n```yaml\nchangelog:\n  exclude:\n    authors: [dependabot, renovate]\n  categories:\n    - title: 🚀 Features\n      labels: [enhancement]\n    - title: 🐛 Bug Fixes\n      labels: [bug]\n    - title: 📚 Documentation\n      labels: [documentation]\n```\n\n2. Create releases via CLI:\n\n```bash\ngh release create v1.0.0 --generate-notes\n```\n\n### Sub-Issues Configuration\n\nGitHub's sub-issues feature enables parent-child relationships between issues (up to 8 levels, 100 sub-issues per parent). For complete GraphQL API reference, see `references/sub-issues.md`.\n\n**Important:** The `gh` CLI does not support sub-issues directly. Use GraphQL API.\n\nQuick reference:\n```bash\n# Get issue node ID\ngh api graphql -f query='{repository(owner:\"OWNER\",name:\"REPO\"){issue(number:123){id}}}'\n\n# Add sub-issue (requires node IDs)\ngh api graphql -f query='mutation{addSubIssue(input:{issueId:\"PARENT_ID\",subIssueId:\"CHILD_ID\"}){issue{number}subIssue{number}}}'\n\n# List sub-issues\ngh api graphql -f query='{repository(owner:\"OWNER\",name:\"REPO\"){issue(number:123){subIssues(first:50){nodes{number title state}}}}}'\n```\n\n### Troubleshooting: PR Merge Blocked\n\nWhen a PR cannot be merged, diagnose the cause:\n\n**Step 1: Check PR status**\n```bash\n# View PR details including merge state\ngh pr view \u003cnumber\u003e --json mergeable,mergeStateStatus,reviewDecision,statusCheckRollup\n\n# Check for blocking issues\ngh pr checks \u003cnumber\u003e\n```\n\n**Step 2: Identify the blocker**\n\n| Symptom | Cause | Resolution |\n|---------|-------|------------|\n| `BLOCKED` mergeStateStatus | Unresolved conversations | Resolve all review threads |\n| `REVIEW_REQUIRED` reviewDecision | Missing approvals | Request reviews from required reviewers |\n| `CHANGES_REQUESTED` reviewDecision | Changes requested | Address feedback, request re-review |\n| Failed checks in `statusCheckRollup` | CI/CD failures | Fix failing tests/lints |\n| `CODEOWNERS review required` | Missing code owner approval | Get approval from designated owners |\n\n**Step 3: Resolution actions**\n```bash\n# For unresolved conversations: view and resolve threads\ngh pr view \u003cnumber\u003e --comments\n\n# For missing reviews: request specific reviewers\ngh pr edit \u003cnumber\u003e --add-reviewer username\n\n# For CODEOWNERS blocking: check which files need review\ngh pr view \u003cnumber\u003e --json files\n```\n\n**Common `gh pr merge` errors:**\n\n| Error Message | Meaning | Fix |\n|---------------|---------|-----|\n| `Pull request is not mergeable` | Branch protection blocking | Run diagnosis steps above |\n| `Required status check \"X\" is expected` | CI not run or pending | Wait for CI or trigger manually |\n| `At least 1 approving review is required` | No approvals yet | Request and obtain review |\n| `Changes were made after the most recent approval` | Stale approval | Request re-review |\n| `Protected branch rules not configured` | `--auto` requires branch protection | Use direct merge or enable branch protection |\n| `InputObject 'EnqueuePullRequestInput' doesn't accept argument 'mergeMethod'` | Invalid GraphQL parameter | Remove `mergeMethod` from mutation - it's set by queue config |\n\n## Quick CLI Reference\n\n```bash\n# Repository\ngh repo view\ngh repo edit --enable-discussions\n\n# Issues\ngh issue list\ngh issue create\ngh issue edit 123 --add-label \"priority: high\"\n\n# Pull requests\ngh pr list\ngh pr create\ngh pr review --approve\ngh pr merge --squash\n\n# Releases\ngh release create v1.0.0 --generate-notes\n\n# Labels\ngh label create \"name\" --color \"hex\" --description \"desc\"\n\n# Projects\ngh project create --title \"Project Name\"\n```\n\n## Resources\n\n| Resource | Purpose |\n|----------|---------|\n| `references/repository-structure.md` | Standard files and directory layout |\n| `references/dependency-management.md` | Dependabot/Renovate and auto-merge patterns |\n| `references/sub-issues.md` | GitHub sub-issues GraphQL API |\n| `references/branch-migration.md` | Master to main migration guide |\n| `assets/auto-merge.yml.template` | Auto-merge with branch protection (--auto flag) |\n| `assets/auto-merge-queue.yml.template` | Auto-merge with merge queue (GraphQL mutation) |\n| `assets/auto-merge-direct.yml.template` | Auto-merge without branch protection |\n| `scripts/verify-github-project.sh` | Verification script for project setup |\n\n## Related Skills\n\nThis skill focuses on GitHub platform configuration. For complete project setup:\n\n| Skill | Purpose |\n|-------|---------|\n| `go-development` | Go code patterns, Makefile interface, testing, linting |\n| `enterprise-readiness` | OpenSSF Scorecard, SLSA provenance, signed releases, CI workflow templates |\n| `git-workflow` | Git branching strategies, conventional commits |\n| `security-audit` | Deep security audits (OWASP, CVE analysis) |\n\n### Skill Coordination\n\n```\ngithub-project (this skill)\n├── Repository configuration\n├── Branch protection / rulesets\n├── Dependabot/Renovate auto-merge\n└── Coordinates with:\n    ├── go-development → CI workflow content (test, lint, build)\n    └── enterprise-readiness → Security workflows (Scorecard, CodeQL, SLSA)\n```\n\n## License\n\nThis project uses split licensing:\n\n- **Code** (scripts, workflows, configs): [MIT](LICENSE-MIT)\n- **Content** (skill definitions, documentation, references): [CC-BY-SA-4.0](LICENSE-CC-BY-SA-4.0)\n\nSee the individual license files for full terms.\n\n---\n\n**Made with ❤️ for Open Source by [Netresearch](https://www.netresearch.de/)**\n\n## Verification\n\nTo check GitHub project configuration:\n\n```bash\n./scripts/verify-github-project.sh /path/to/repository\n```\n\nChecks: documentation files, CODEOWNERS, dependency management, issue/PR templates, auto-merge workflow, release configuration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetresearch%2Fgithub-project-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetresearch%2Fgithub-project-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetresearch%2Fgithub-project-skill/lists"}