update-description
Updates GitHub Release notes with human-readable summaries AFTER release-please creates a release. Use when user says "update release description", "improve release notes", or after merging a release-please PR. NEVER modifies the release PR body (breaks parsing).
What this skill does
# Update Release-Please Description This skill creates human-readable summaries for release-please GitHub Releases. ## ⚠️ CRITICAL: Never Modify the Release PR Body **DO NOT edit the release-please PR body.** Release-please parses specific patterns from the PR body to extract version information. Modifying the PR body (especially wrapping content in `<details>` tags or changing headers) will break version parsing and result in: - `⚠ Failed to find version in release notes` - `⚠ Failed to parse releases` - Empty GitHub Release body Reference: [release-please PR body parsing](https://github.com/googleapis/release-please/blob/main/src/util/pull-request-body.ts) expects `<summary>` tags to contain version patterns like `1.1.0` or `component: 1.1.0`. ## Correct Workflow 1. **Let release-please create the PR** - don't touch it 2. **Merge the PR** - release-please creates the GitHub Release 3. **Run this skill** - update the GitHub Release notes with a human-readable summary ## EXECUTION CHECKLIST **You MUST complete each step in order. Mark each complete before proceeding.** ### [ ] STEP 1: Find the Release to Update ```bash # List recent releases gh release list --limit 5 ``` Look for releases with empty or minimal descriptions. Check a specific release: ```bash gh release view <TAG> --json body,tagName,name ``` **Checkpoint:** State the release tag (e.g., "Updating Release myapp-v1.1.0") If the release body already has good content, confirm with user before overwriting. --- ### [ ] STEP 2: Get Changelog & Extract PR Numbers Get the version's changelog section from CHANGELOG.md: ```bash # Read CHANGELOG.md and find the version section cat CHANGELOG.md ``` Extract ALL `(#N)` references from the version section: ```bash # Example: extract PR numbers from changelog content echo '<CHANGELOG_SECTION>' | grep -oE '\(#[0-9]+\)' | grep -oE '[0-9]+' | sort -u -n ``` **Checkpoint:** Report "Found N PRs: #X, #Y, #Z..." --- ### [ ] STEP 3: Fetch ALL Referenced PR Bodies ⚠️ **CRITICAL: Fetch the actual PR descriptions, not just titles!** For EACH PR number from Step 2, fetch full details: ```bash gh pr view <NUMBER> --json number,title,body ``` Run in parallel for efficiency. **Checkpoint:** List each PR with its title AND a snippet of its body: ``` Fetched N PR descriptions: - #84 "Add row numbers column": "## Summary\nAdded row numbers to help users track position..." - #87 "Add pagination": "## Changes\n- New Pagination component\n- Supports page size selection..." ``` **VIOLATION CHECK:** - ❌ If you only have commit messages from the changelog → GO BACK - ❌ If you only have PR titles without bodies → GO BACK - ✅ You should have fetched `gh pr view` for EACH `#N` reference --- ### [ ] STEP 3b: Self-Check Before Proceeding **STOP. Answer these questions before continuing:** 1. How many PRs did Step 2 identify? ___ 2. How many `gh pr view` calls did you make in Step 3? ___ 3. Do these numbers match? ___ **If the numbers don't match, you skipped PRs. Go back to Step 3.** --- ### [ ] STEP 4: Categorize Changes Using PR BODIES, categorize: **User-facing (include):** - New capabilities - Noticeable improvements - UX bug fixes - Perceptible performance gains **Internal-only (exclude):** - Refactors - Test/CI changes - Docs changes **Checkpoint:** List what's included vs excluded. --- ### [ ] STEP 5: Write Summary **Audience:** Users, PMs, executives — NOT developers. **Forbidden:** component, SSR, tRPC, virtualization, CLS, refactor, robust, seamless, enhanced **Format:** ```markdown ### What's New - [2-4 bullets, plain language, what users can DO] ### What's Changed - [2-4 bullets, improvements/fixes users notice] ``` **Translations:** | PR Body Says | You Write | |--------------|-----------| | "Virtualized grid for 1000+ items" | "Large lists load faster" | | "Eliminated CLS with SSR skeletons" | "Pages no longer jump during load" | | "Refactored Button variants" | (OMIT) | **Checkpoint:** Draft complete. --- ### [ ] STEP 6: Update GitHub Release Update the GitHub Release notes directly using `gh release edit`: ```bash gh release edit <TAG> --notes '### What'\''s New - First bullet - Second bullet ### What'\''s Changed - First bullet - Second bullet --- <details> <summary>Full Changelog</summary> ## [X.Y.Z](compare-link) (date) ### Features - feature 1 - feature 2 ### Bug Fixes - fix 1 - fix 2 </details>' ``` **Important:** The full changelog from CHANGELOG.md goes inside the `<details>` block. --- ### [ ] STEP 7: Verify ```bash gh release view <TAG> --json body -q '.body' | head -30 ``` **Checkpoint:** Summary at top, full changelog in collapsible section. --- ## ANTI-PATTERNS (VIOLATIONS) These indicate you skipped steps or did something wrong: | If you did this... | You violated... | |--------------------|-----------------| | Modified the release PR body | CRITICAL - breaks release-please parsing | | Used `git log` for commit info | Step 3 - must fetch PR bodies | | Wrote summary from PR titles | Step 3 - titles are insufficient | | Didn't list fetched bodies | Step 3 checkpoint | | Jumped to writing summary | Steps 2-4 | | Used forbidden words | Step 5 rules |
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.