{"id":"f4226284-48a6-4b9a-a05b-7adf893ccb14","shortId":"2rYC6m","kind":"skill","title":"github-release","tagline":"Guides IA through releasing a new version of a GitHub library end-to-end.  Handles SemVer versioning and Keep a Changelog formatting automatically.","description":"# GitHub Release Skill\n\nThis skill automates the full release workflow for a single-package GitHub repository,\nfrom analysis through changelog authoring and PR creation. It relies exclusively on\n`gh` (GitHub CLI) and `git` � no other tools needed.\n\nSteps 1�4 are **read-only reconnaissance** � nothing is written to the repo until\nStep 5, once the version number is confirmed.\n\n## When to Use This Skill\n\nUse this skill whenever the user wants to cut a new release, publish a new version,\nbump a version, create a release branch, generate a changelog, or open a release PR\non a GitHub repository. Trigger even if the user says something casual like \"let's\nship a new version\" or \"time to release\".\n\n---\n\n## Prerequisites\n\nExamples below include both Bash and PowerShell variants; Windows users should prefer \nthe PowerShell blocks.\n\nBefore starting, verify the environment:\n\n```bash\ngh auth status                        # must be authenticated\ngh repo view --json nameWithOwner     # must be inside a GitHub repo\ngit status                            # working tree should be clean\n```\n\nIf any check fails, stop and tell the user what to fix before continuing.\n\nThen ask the user one question:\n\n> *\"Which directory contains your library's public-facing source code?\n> (e.g. `src/`, `lib/`, `pkg/` � used to focus the diff on what consumers\n> actually see. Press Enter to scan the whole repo.)\"*\n\nStore the answer as `PUBLIC_PATH`. If empty, `PUBLIC_PATH` is `.` (repo root).\nExclude these paths from all diffs regardless: `tests/`, `test/`, `spec/`,\n`__tests__/`, `docs/`, `*.lock`, `*-lock.json`, `*.sum`, generated files\n(files with a \"do not edit\" header comment), and build artefacts.\n\n---\n\n## The 9-Step Release Workflow\n\nWork through every step in order. Show the user what command you're about to run and\nits output. Pause and ask for confirmation only when explicitly noted.\n\n---\n\n### Step 1 � Ensure main is up to date\n\n```bash\ngit checkout main\ngit pull origin main\n```\n\nStay on `main` for now. The release branch is created in Step 5, after the version\nis confirmed.\n\n---\n\n### Step 2 � Grab the latest version tag\n\n> **Why not `gh release list`?** GitHub Releases are an optional layer on top of Git\n> tags. Many repos tag releases with `git tag` without ever creating a GitHub Release,\n> so `gh release list` can return empty even when version tags exist. Reading tags\n> directly from git is the reliable source of truth.\n\n```bash\n# Fetch all tags from remote to ensure local view is current\ngit fetch --tags\n\n# Find the latest version tag, sorted semantically\n# --sort=-version:refname handles 1.10.0 > 1.9.0 correctly (unlike alphabetical)\nPREV_TAG=$(git tag --sort=-version:refname | grep -E '^v?[0-9]+\\.[0-9]+\\.[0-9]+' | head -1)\necho \"Latest tag: $PREV_TAG\"\n```\n\n```PowerShell\n# Fetch all tags from remote to ensure local view is current\ngit fetch --tags\n\n# Find the latest version tag, sorted semantically\n# --sort=-version:refname handles 1.10.0 > 1.9.0 correctly (unlike alphabetical)\n$prevTag = git tag --sort='-version:refname' | `\n  Select-String '^[vV]?\\d+\\.\\d+\\.\\d+' | `\n  Select-Object -First 1 -ExpandProperty Line\n\nif ($prevTag) {\n  $prevSha = git rev-list -n 1 $prevTag\n} else {\n  $prevSha = git rev-list --max-parents=0 HEAD\n}\n\nWrite-Output \"Latest tag: $prevTag\"\n```\n\nThen verify the tag exists on the remote (not just locally):\n\n```bash\ngit ls-remote --tags origin | grep \"refs/tags/$PREV_TAG$\"\n```\n\nIf the remote check returns nothing, warn the user that the tag appears to be local-only\nand hasn't been pushed � they may want to push it before continuing.\n\n- `PREV_TAG` is the tag name exactly as found (e.g. `v1.4.2`). Strip any leading `v`\n  when doing arithmetic; preserve it when naming things.\n- If **no tags exist at all**, treat `PREV_TAG` as `(none)`, set `PREV_SHA` to the\n  first commit, and default the new version to `1.0.0` (skip Step 4 versioning logic;\n  go straight to Step 5).\n- If the tag does not point to a real commit (orphaned tag), fall back to\n  `git rev-list --max-parents=0 HEAD` and warn the user.\n\n```bash\nPREV_SHA=$(git rev-list -n 1 \"$PREV_TAG\" 2>/dev/null || git rev-list --max-parents=0 HEAD)\n```\n\n---\n\n### Step 3 � Analyse what changed since the last release\n\nThis step uses **two complementary signals**. The code diff is the primary source of\ntruth; commit messages provide supporting context about intent.\n\n#### 3a � Code diff (primary signal)\n\n```bash\n# Focused diff on the public source path, excluding noise\ngit diff \"$PREV_SHA\"..HEAD -- \"$PUBLIC_PATH\" \\\n  ':(exclude)tests/' ':(exclude)test/' ':(exclude)spec/' \\\n  ':(exclude)__tests__/' ':(exclude)docs/' \\\n  ':(exclude)*.lock' ':(exclude)*-lock.json' ':(exclude)*.sum'\n```\n\n```PowerShell\n# Focused diff on the public source path, excluding noise\ngit diff \"$($prevSha)..HEAD\" -- $publicPath `\n  ':(exclude)tests/' ':(exclude)test/' ':(exclude)spec/' `\n  ':(exclude)__tests__/' ':(exclude)docs/' `\n  ':(exclude)*.lock' ':(exclude)*-lock.json' ':(exclude)*.sum'\n```\n\nRead the full diff output. For each changed file, identify:\n\n1. **Removed symbols** � functions, classes, methods, constants, exported names that\n   existed before and are now gone. ? Strong signal for MAJOR.\n2. **Changed signatures** � functions that exist in both versions but with different\n   parameters, return types, or thrown errors. ? Strong signal for MAJOR.\n3. **New exported symbols** � public functions, classes, constants that didn't exist\n   before. ? Signal for MINOR.\n4. **Internal-only changes** � modifications that don't touch any public interface\n   (private helpers, unexported functions, algorithm internals). ? PATCH.\n5. **Bug fixes** � corrections to logic that was provably wrong (e.g. off-by-one,\n   null check, wrong condition), without changing the public API. ? PATCH.\n\nIf the diff is very large (thousands of lines), first run the stat summary to\nprioritise which files to read in full:\n\n```bash\ngit diff \"$PREV_SHA\"..HEAD --stat -- \"$PUBLIC_PATH\"\n```\n\nFocus your detailed reading on files with the most changes and files whose names\nsuggest they define public interfaces (e.g. `index.*`, `api.*`, `exports.*`,\n`public.*`, `mod.*`, `__init__.*`).\n\n#### 3b � Commit log (secondary signal)\n\n```bash\ngit log \"$PREV_SHA\"..HEAD --oneline --no-merges\n```\n\nUse this to:\n- Understand the **intent** behind code changes that aren't self-explanatory from\n  the diff alone (e.g. a one-line security fix labelled as such).\n- Catch changes that may be in paths outside `PUBLIC_PATH` but are still user-visible\n  (e.g. a CLI flag change in a `cmd/` directory).\n- Fill in context for changelog entries where the code alone doesn't tell the whole\n  story.\n\nSee `references/commit-classification.md` for mapping message patterns to change types.\n\n#### 3c � Reconcile the two signals\n\nWhen signals agree ? use that classification with confidence.\n\nWhen signals conflict ? **prefer the code diff**. Examples:\n- Commit says `fix: typo` but the diff shows a removed public method ? treat as MAJOR.\n- Commit says `feat: new API` but the diff only touches private internals ? treat as PATCH.\n- Commit says `chore: refactor` but the diff adds new exported symbols ? treat as MINOR.\n\nDocument any conflicts you notice � flag them to the user during the changelog review\nin Step 6.\n\n---\n\n### Step 4 � Determine the next SemVer version\n\nApply these rules to your analysis from Step 3 (full rules in `references/semver-rules.md`):\n\n| Condition | Bump |\n|---|---|\n| Any breaking change to public API (removal, signature change, behaviour change) | MAJOR |\n| New exported symbol or feature, no breaking changes | MINOR |\n| Bug fix, perf improvement, security fix, docs, chore only | PATCH |\n\nWhen a release contains a mix, the **highest precedence wins**:\n`MAJOR > MINOR > PATCH`.\n\nCompute `NEXT_VERSION`:\n- Split `PREV_TAG` into `MAJOR.MINOR.PATCH` integers.\n- Apply the appropriate bump.\n- Format as `vMAJOR.MINOR.PATCH`.\n\n**Present the proposed version to the user** with a brief rationale that cites\nspecific code findings, not just commit messages. Example:\n\n> *\"I'm proposing v2.1.0. The diff shows two new exported functions (`NewClient` and\n> `WithTimeout`) in `src/client.go`, and no existing public symbols were removed or\n> changed. Commit messages corroborate this as feature additions.\"*\n\nAsk: *\"Does this version look right, or would you like to adjust it?\"*\nWait for confirmation before proceeding.\n\n---\n\n### Step 5 � Create the release branch\n\nNow that the version is confirmed, create the branch with the correct name from the start:\n\n```bash\ngit checkout -b release/vX.Y.Z\ngit push -u origin release/vX.Y.Z\n```\n\n---\n\n### Step 6 � Update CHANGELOG.md\n\nRead the existing `CHANGELOG.md` (or create it if absent). Follow the\n[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format strictly.\n\n**Structure to insert** at the top (just below the `# Changelog` header):\n\n```markdown\n## [X.Y.Z] - YYYY-MM-DD\n\n### Added\n- ...\n\n### Changed\n- ...\n\n### Deprecated\n- ...\n\n### Removed\n- ...\n\n### Fixed\n- ...\n\n### Security\n- ...\n```\n\nRules:\n- Use today's date in `YYYY-MM-DD` format.\n- Omit sections that have no entries � don't leave empty headings.\n- Write entries in **plain English from a user's perspective**, derived primarily\n  from what the code diff shows, supplemented by commit message context.\n  Good: *\"Added `WithTimeout` option to HTTP client constructor.\"*\n  Bad: *\"feat: add timeout cfg param\"*\n- Map findings to sections:\n  - New exported symbol ? Added\n  - Breaking removal ? Removed\n  - Breaking change to existing API ? Changed (flag it as breaking)\n  - Bug/logic fix, perf ? Fixed\n  - Security fix ? Security\n  - Internal refactor, docs, chore, test ? omit unless user-visible\n- If a commit message revealed intent that the code diff alone wouldn't convey\n  (e.g. a security fix disguised as a one-line change), include that context in\n  the changelog entry.\n- Also update the diff link at the bottom of the file:\n  ```markdown\n  [X.Y.Z]: https://github.com/OWNER/REPO/compare/vPREV...vNEXT\n  ```\n\n**Show the user the proposed changelog section before writing it to disk.**\nIf any signal conflicts were found in Step 3c, flag them here so the user can verify.\nAsk: *\"Does this changelog look accurate? Any entries to add, remove, or reword?\"*\nIncorporate feedback, then write to disk.\n\n---\n\n### Step 7 � Commit and push\n\n```bash\ngit add CHANGELOG.md\ngit commit -m \"chore: release vX.Y.Z\"\ngit push origin release/vX.Y.Z\n```\n\nConfirm the push succeeded before moving on.\n\n---\n\n### Step 8 � Open a Pull Request\n\n**?? IMPORTANT:** Always use `--body-file` to pass PR body text, never `--body` with inline text.\nInline escape sequences like `\\n` are not interpreted as newlines by PowerShell and will appear\nas literal text in the PR. Using a file ensures proper markdown formatting.\n\n```bash\ngh pr create \\\n  --base main \\\n  --head release/vX.Y.Z \\\n  --title \"Release vX.Y.Z\" \\\n  --body \"$(cat <<'EOF'\n## Release vX.Y.Z\n\nThis PR prepares the **vX.Y.Z** release.\n\n### What's included\n<!-- paste the changelog section here -->\n\n### Checklist\n- [ ] Changelog reviewed\n- [ ] Version bump verified\n- [ ] CI passing\n\nAfter merging, create the tag on the merge commit:\n\\`\\`\\`\ngit tag vX.Y.Z <merge-commit-sha>\ngit push origin vX.Y.Z\n\\`\\`\\`\nEOF\n)\"\n```\n\n```PowerShell\n# Create PR body using here-string (preserves actual newlines, not escape sequences)\n$prBody = @\"\n## Release vX.Y.Z\n\nThis PR prepares the **vX.Y.Z** release.\n\n### What's included\n<paste changelog here>\n\n### Checklist\n- [ ] Changelog reviewed\n- [ ] Version bump verified\n- [ ] CI passing\n\nAfter merging, create the tag on the merge commit:\n``````\ngit tag vX.Y.Z <merge-commit-sha>\ngit push origin vX.Y.Z\n``````\n\"@\n\n# Write to file and use --body-file (do NOT use inline --body with escape sequences)\n$prBody | Out-File -FilePath release_pr_body.md -Encoding utf8 -NoNewline\ngh pr create --base main --head release/vX.Y.Z --title \"Release vX.Y.Z\" --body-file release_pr_body.md\n```\n\nPaste the changelog section into the PR body's \"What's included\" block (or leave placeholder for manual review).\n\n\n---\n\n### Step 9 � Hand off to the user\n\nTell the user:\n\n> **Release PR is open! ??**\n>\n> New version: **vX.Y.Z**\n>\n> Once the PR is reviewed and merged, you'll need to **create the tag yourself** on\n> the merge commit:\n>\n> ```bash\n> git tag vX.Y.Z <merge-commit-sha>\n> git push origin vX.Y.Z\n> ```\n>\n> Then go to GitHub Releases and publish the release from that tag. You can copy the\n> changelog section directly into the release notes.\n\n---\n\n## Error handling\n\n| Situation | What to do |\n|---|---|\n| `gh auth status` fails | Stop; tell user to run `gh auth login` |\n| Not inside a git repo | Stop; tell user to `cd` into their repo |\n| Working tree is dirty | Warn; ask if they want to stash or abort |\n| No commits since last tag | Tell user there's nothing to release |\n| Tag exists but points to no commit | Use first commit as diff base; warn user |\n| Latest tag exists locally but not on remote | Warn user; ask if they want to push the tag first or continue anyway |\n| Diff is empty for `PUBLIC_PATH` but commits exist | Warn; all changes may be internal; ask if they still want to proceed |\n| `git push` fails (e.g. protected branch rules) | Report the error verbatim; suggest they check branch protection settings |\n\n---\n\n## Troubleshooting in PowerShell\n\n- If a command that works locally prints gh usage or treats a subcommand as separate token, ensure you're\n  invoking the gh.exe on PATH (Get-Command gh) and avoid passing unexpanded nested substitutions; use the PowerShell \n  patterns above.\n- Recommend tests: gh --version; git fetch --tags; run the PowerShell snippet to set $prevTag and run git diff --name-only $prevSha..HEAD -- src/\n\n---\n\n## Limitations\n\n- Requires the `gh` CLI to be installed and authenticated.\n- Requires git tags to determine current version.\n\n---\n\n## Reference files\n\n- `references/semver-rules.md` � Extended SemVer decision rules and edge cases\n- `references/commit-classification.md` � Heuristics for classifying commit messages into change types","tags":["github","release","awesome","copilot","agent-skills","agents","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"capabilities":["skill","source-github","skill-github-release","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/github-release","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (14,066 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:13.240Z","embedding":null,"createdAt":"2026-04-30T00:52:04.088Z","updatedAt":"2026-05-18T18:52:13.240Z","lastSeenAt":"2026-05-18T18:52:13.240Z","tsv":"'-1':461 '-9':455,457,459 '/dev/null':696 '/en/1.1.0/)':1357 '/owner/repo/compare/vprev...vnext':1527 '0':454,456,458,537,678,704 '1':67,321,515,526,692,816 '1.0.0':645 '1.10.0':439,493 '1.9.0':440,494 '2':355,695,836 '3':707,858,1167 '3a':737 '3b':976 '3c':1070,1548 '4':68,648,874,1153 '5':82,348,655,894,1306 '6':1151,1338 '7':1577 '8':1603 '9':288,1811 'abort':1920 'absent':1349 'accur':1562 'actual':237,1711 'ad':1377,1429,1449 'add':1128,1438,1566,1583 'addit':1286 'adjust':1298 'agre':1077 'algorithm':891 'alon':1009,1054,1490 'alphabet':443,497 'also':1512 'alway':1609 'analys':708 'analysi':46,1164 'answer':248 'anyway':1969 'api':917,971,1110,1179,1457 'appear':579,1638 'appli':1159,1227 'appropri':1229 'aren':1001 'arithmet':615 'artefact':286 'ask':209,313,1287,1557,1913,1958,1985 'auth':171,1884,1893 'authent':175,2084 'author':49 'autom':33 'automat':27 'avoid':2041 'b':1330 'back':669 'bad':1436 'base':1656,1780,1945 'bash':153,169,328,413,556,684,742,941,981,1327,1581,1652,1846 'behaviour':1183 'behind':997 'block':163,1803 'bodi':1612,1617,1620,1663,1705,1758,1764,1788,1798 'body-fil':1611,1757,1787 'bottom':1519 'branch':116,343,1310,1319,1997,2006 'break':1175,1192,1450,1453,1462 'brief':1243 'bug':895,1195 'bug/logic':1463 'build':285 'bump':110,1173,1230,1681,1732 'case':2101 'casual':136 'cat':1664 'catch':1020 'cd':1904 'cfg':1440 'chang':710,813,837,878,914,959,999,1021,1040,1068,1176,1182,1184,1193,1279,1378,1454,1458,1504,1981,2109 'changelog':25,48,119,1049,1147,1354,1369,1510,1533,1560,1678,1729,1793,1870 'changelog.md':1340,1344,1584 'check':196,570,910,2005 'checklist':1677,1728 'checkout':330,1329 'chore':1123,1202,1473,1588 'ci':1683,1734 'cite':1246 'class':820,864 'classif':1080 'classifi':2105 'clean':193 'cli':59,1038,2079 'client':1434 'cmd':1043 'code':224,722,738,998,1053,1088,1248,1420,1488 'command':302,2014,2038 'comment':283 'commit':638,665,730,977,1091,1106,1121,1252,1280,1425,1482,1578,1586,1693,1744,1845,1922,1939,1942,1977,2106 'complementari':719 'comput':1218 'condit':912,1172 'confid':1082 'confirm':88,315,353,1302,1316,1595 'conflict':1085,1137,1543 'constant':822,865 'constructor':1435 'consum':236 'contain':216,1208 'context':734,1047,1427,1507 'continu':207,597,1968 'convey':1493 'copi':1868 'correct':441,495,897,1322 'corrobor':1282 'creat':113,345,386,1307,1317,1346,1655,1687,1703,1738,1779,1838 'creation':52 'current':424,478,2090 'cut':102 'd':508,509,510 'date':327,1387 'dd':1376,1392 'decis':2097 'default':640 'defin':966 'deprec':1379 'deriv':1415 'detail':952 'determin':1154,2089 'didn':867 'diff':233,264,723,739,744,753,777,786,809,921,943,1008,1089,1097,1113,1127,1260,1421,1489,1515,1944,1970,2068 'differ':847 'direct':404,1872 'directori':215,1044 'dirti':1911 'disguis':1498 'disk':1539,1575 'doc':270,768,799,1201,1472 'document':1135 'doesn':1055 'e':452 'e.g':225,607,904,969,1010,1036,1494,1995 'echo':462 'edg':2100 'edit':281 'els':528 'empti':253,396,1403,1972 'encod':1774 'end':16,18 'end-to-end':15 'english':1409 'ensur':322,420,474,1648,2028 'enter':240 'entri':1050,1399,1406,1511,1564 'environ':168 'eof':1665,1701 'error':853,1877,2001 'escap':1625,1714,1766 'even':130,397 'ever':385 'everi':294 'exact':604 'exampl':149,1090,1254 'exclud':259,750,759,761,763,765,767,769,771,773,783,790,792,794,796,798,800,802,804 'exclus':55 'exist':401,549,624,826,841,869,1273,1343,1456,1934,1950,1978 'expandproperti':516 'explanatori':1005 'explicit':318 'export':823,860,972,1130,1187,1264,1447 'extend':2095 'face':222 'fail':197,1886,1994 'fall':668 'feat':1108,1437 'featur':1190,1285 'feedback':1571 'fetch':414,426,468,480,2056 'file':275,276,814,936,955,961,1522,1613,1647,1754,1759,1771,1789,2093 'filepath':1772 'fill':1045 'find':428,482,1249,1443 'first':514,637,928,1941,1966 'fix':205,896,1016,1093,1196,1200,1381,1464,1466,1468,1497 'flag':1039,1140,1459,1549 'focus':231,743,776,950 'follow':1350 'format':26,1231,1358,1393,1651 'found':606,1545 'full':35,808,940,1168 'function':819,839,863,890,1265 'generat':117,274 'get':2037 'get-command':2036 'gh':57,170,176,363,391,1653,1777,1883,1892,2019,2039,2053,2078 'gh.exe':2033 'git':61,187,329,332,375,382,406,425,446,479,499,521,530,557,671,687,697,752,785,942,982,1328,1332,1582,1585,1591,1694,1697,1745,1748,1847,1850,1898,1992,2055,2067,2086 'github':2,13,28,43,58,127,185,366,388,1857 'github-releas':1 'github.com':1526 'github.com/owner/repo/compare/vprev...vnext':1525 'go':651,1855 'gone':831 'good':1428 'grab':356 'grep':451,563 'guid':4 'hand':1812 'handl':19,438,492,1878 'hasn':586 'head':460,538,679,705,756,788,946,986,1404,1658,1782,2073 'header':282,1370 'helper':888 'here-str':1707 'heurist':2103 'highest':1212 'http':1433 'ia':5 'identifi':815 'import':1608 'improv':1198 'includ':151,1505,1676,1727,1802 'incorpor':1570 'index':970 'init':975 'inlin':1622,1624,1763 'insert':1362 'insid':183,1896 'instal':2082 'integ':1226 'intent':736,996,1485 'interfac':886,968 'intern':876,892,1117,1470,1984 'internal-on':875 'interpret':1631 'invok':2031 'json':179 'keep':23,1352 'keepachangelog.com':1356 'keepachangelog.com/en/1.1.0/)':1355 'label':1017 'larg':924 'last':713,1924 'latest':358,430,463,484,542,1948 'layer':371 'lead':611 'leav':1402,1805 'let':138 'lib':227 'librari':14,218 'like':137,1296,1627 'limit':2075 'line':517,927,1014,1503 'link':1516 'list':365,393,524,533,674,690,700 'liter':1640 'll':1835 'local':421,475,555,583,1951,2017 'local-on':582 'lock':271,770,801 'lock.json':272,772,803 'log':978,983 'logic':650,899 'login':1894 'look':1291,1561 'ls':559 'ls-remot':558 'm':1256,1587 'main':323,331,335,338,1657,1781 'major':835,857,1105,1185,1215 'major.minor.patch':1225 'mani':377 'manual':1808 'map':1064,1442 'markdown':1371,1523,1650 'max':535,676,702 'max-par':534,675,701 'may':591,1023,1982 'merg':990,1686,1692,1737,1743,1833,1844 'messag':731,1065,1253,1281,1426,1483,2107 'method':821,1102 'minor':873,1134,1194,1216 'mix':1210 'mm':1375,1391 'mod':974 'modif':879 'move':1600 'must':173,181 'n':525,691,1628 'name':603,619,824,963,1323,2070 'name-on':2069 'namewithown':180 'need':65,1836 'nest':2044 'never':1619 'new':9,104,108,142,642,859,1109,1129,1186,1263,1446,1824 'newclient':1266 'newlin':1633,1712 'next':1156,1219 'no-merg':988 'nois':751,784 'none':631 'nonewlin':1776 'note':319,1876 'noth':74,572,1930 'notic':1139 'null':909 'number':86 'object':513 'off-by-on':905 'omit':1394,1475 'one':212,908,1013,1502 'one-lin':1012,1501 'onelin':987 'open':121,1604,1823 'option':370,1431 'order':297 'origin':334,562,1335,1593,1699,1750,1852 'orphan':666 'out-fil':1769 'output':310,541,810 'outsid':1027 'packag':42 'param':1441 'paramet':848 'parent':536,677,703 'pass':1615,1684,1735,2042 'past':1791 'patch':893,918,1120,1204,1217 'path':251,255,261,749,758,782,949,1026,1029,1975,2035 'pattern':1066,2049 'paus':311 'perf':1197,1465 'perspect':1414 'pkg':228 'placehold':1806 'plain':1408 'point':661,1936 'powershel':155,162,467,775,1635,1702,2011,2048,2060 'pr':51,124,1616,1644,1654,1669,1704,1720,1778,1797,1821,1829 'prbodi':1716,1768 'preced':1213 'prefer':160,1086 'prepar':1670,1721 'prerequisit':148 'present':1234 'preserv':616,1710 'press':239 'prev':444,465,565,598,628,633,685,693,754,944,984,1222 'prevsha':520,529,787,2072 'prevtag':498,519,527,544,2064 'primari':726,740 'primarili':1416 'print':2018 'prioritis':934 'privat':887,1116 'proceed':1304,1991 'proper':1649 'propos':1236,1257,1532 'protect':1996,2007 'provabl':902 'provid':732 'public':221,250,254,747,757,780,862,885,916,948,967,973,1028,1101,1178,1274,1974 'public-fac':220 'publicpath':789 'publish':106,1860 'pull':333,1606 'push':589,594,1333,1580,1592,1597,1698,1749,1851,1963,1993 'question':213 'rational':1244 're':304,2030 'read':71,402,806,938,953,1341 'read-on':70 'real':664 'recommend':2051 'reconcil':1071 'reconnaiss':73 'refactor':1124,1471 'refer':2092 'references/commit-classification.md':1062,2102 'references/semver-rules.md':1171,2094 'refnam':437,450,491,503 'refs/tags':564 'regardless':265 'releas':3,7,29,36,105,115,123,147,290,342,364,367,380,389,392,714,1207,1309,1589,1661,1666,1673,1717,1724,1785,1820,1858,1862,1875,1932 'release/vx.y.z':1331,1336,1594,1659,1783 'release_pr_body.md':1773,1790 'reli':54 'reliabl':409 'remot':418,472,552,560,569,1955 'remov':817,1100,1180,1277,1380,1451,1452,1567 'repo':79,177,186,245,257,378,1899,1907 'report':1999 'repositori':44,128 'request':1607 'requir':2076,2085 'return':395,571,849 'rev':523,532,673,689,699 'rev-list':522,531,672,688,698 'reveal':1484 'review':1148,1679,1730,1809,1831 'reword':1569 'right':1292 'root':258 'rule':1161,1169,1383,1998,2098 'run':307,929,1891,2058,2066 'say':134,1092,1107,1122 'scan':242 'secondari':979 'section':1395,1445,1534,1794,1871 'secur':1015,1199,1382,1467,1469,1496 'see':238,1061 'select':505,512 'select-object':511 'select-str':504 'self':1004 'self-explanatori':1003 'semant':434,488 'semver':20,1157,2096 'separ':2026 'sequenc':1626,1715,1767 'set':632,2008,2063 'sha':634,686,755,945,985 'ship':140 'show':298,1098,1261,1422,1528 'signal':720,741,833,855,871,980,1074,1076,1084,1542 'signatur':838,1181 'sinc':711,1923 'singl':41 'single-packag':40 'situat':1879 'skill':30,32,93,96 'skill-github-release' 'skip':646 'snippet':2061 'someth':135 'sort':433,435,448,487,489,501 'sourc':223,410,727,748,781 'source-github' 'spec':268,764,795 'specif':1247 'split':1221 'src':226,2074 'src/client.go':1270 'start':165,1326 'stash':1918 'stat':931,947 'status':172,188,1885 'stay':336 'step':66,81,289,295,320,347,354,647,654,706,716,1150,1152,1166,1305,1337,1547,1576,1602,1810 'still':1032,1988 'stop':198,1887,1900 'store':246 'stori':1060 'straight':652 'strict':1359 'string':506,1709 'strip':609 'strong':832,854 'structur':1360 'subcommand':2024 'substitut':2045 'succeed':1598 'suggest':964,2003 'sum':273,774,805 'summari':932 'supplement':1423 'support':733 'symbol':818,861,1131,1188,1275,1448 'tag':360,376,379,383,400,403,416,427,432,445,447,464,466,470,481,486,500,543,548,561,566,578,599,602,623,629,658,667,694,1223,1689,1695,1740,1746,1840,1848,1865,1925,1933,1949,1965,2057,2087 'tell':200,1057,1817,1888,1901,1926 'test':266,267,269,760,762,766,791,793,797,1474,2052 'text':1618,1623,1641 'thing':620 'thousand':925 'thrown':852 'time':145 'timeout':1439 'titl':1660,1784 'today':1385 'token':2027 'tool':64 'top':373,1365 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'touch':883,1115 'treat':627,1103,1118,1132,2022 'tree':190,1909 'trigger':129 'troubleshoot':2009 'truth':412,729 'two':718,1073,1262 'type':850,1069,2110 'typo':1094 'u':1334 'understand':994 'unexpand':2043 'unexport':889 'unless':1476 'unlik':442,496 'updat':1339,1513 'usag':2020 'use':91,94,229,717,991,1078,1384,1610,1645,1706,1756,1762,1940,2046 'user':99,133,158,202,211,300,575,683,1034,1144,1240,1412,1478,1530,1554,1816,1819,1889,1902,1927,1947,1957 'user-vis':1033,1477 'utf8':1775 'v':453,612 'v1.4.2':608 'v2.1.0':1258 'variant':156 'verbatim':2002 'verifi':166,546,1556,1682,1733 'version':10,21,85,109,112,143,351,359,399,431,436,449,485,490,502,643,649,844,1158,1220,1237,1290,1314,1680,1731,1825,2054,2091 'view':178,422,476 'visibl':1035,1479 'vmajor.minor.patch':1233 'vv':507 'vx.y.z':1590,1662,1667,1672,1696,1700,1718,1723,1747,1751,1786,1826,1849,1853 'wait':1300 'want':100,592,1916,1961,1989 'warn':573,681,1912,1946,1956,1979 'whenev':97 'whole':244,1059 'whose':962 'win':1214 'window':157 'without':384,913 'withtimeout':1268,1430 'work':189,292,1908,2016 'workflow':37,291 'would':1294 'wouldn':1491 'write':540,1405,1536,1573,1752 'write-output':539 'written':76 'wrong':903,911 'x.y.z':1372,1524 'yyyi':1374,1390 'yyyy-mm-dd':1373,1389","prices":[{"id":"19de7b6a-f947-4a43-b82f-845a7ccaa2e9","listingId":"f4226284-48a6-4b9a-a05b-7adf893ccb14","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-30T00:52:04.088Z"}],"sources":[{"listingId":"f4226284-48a6-4b9a-a05b-7adf893ccb14","source":"github","sourceId":"github/awesome-copilot/github-release","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/github-release","isPrimary":false,"firstSeenAt":"2026-04-30T00:52:04.088Z","lastSeenAt":"2026-05-18T18:52:13.240Z"}],"details":{"listingId":"f4226284-48a6-4b9a-a05b-7adf893ccb14","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"github-release","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"90424ecc018c35ad8d75756e7f4ae682fbfc3b20","skill_md_path":"skills/github-release/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/github-release"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"github-release","description":"Guides IA through releasing a new version of a GitHub library end-to-end.  Handles SemVer versioning and Keep a Changelog formatting automatically.","compatibility":"requires: gh CLI and git"},"skills_sh_url":"https://skills.sh/github/awesome-copilot/github-release"},"updatedAt":"2026-05-18T18:52:13.240Z"}}