Verdaccio Pull Request Workflow
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
Pulls a GitHub release and every linked pull request, then writes polished, factual release notes from the combined set of changes.
$ npx skills add tailcallhq/forgecode --skill write-release-notes -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tailcallhq/forgecode write-release-notes --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tailcallhq/forgecode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.forge/skills/write-release-notes .claude/skills/write-release-notes && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "write-release-notes" agent skill from https://github.com/tailcallhq/forgecode/tree/main/.forge/skills/write-release-notes into .claude/skills/write-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-release-notes", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tailcallhq/forgecode/tree/main/.forge/skills/write-release-notesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tailcallhq/forgecode --skill write-release-notes -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tailcallhq/forgecode write-release-notes --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tailcallhq/forgecode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.forge/skills/write-release-notes .agents/skills/write-release-notes && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-release-notes" agent skill from https://github.com/tailcallhq/forgecode/tree/main/.forge/skills/write-release-notes into .agents/skills/write-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-release-notes", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tailcallhq/forgecode --skill write-release-notes -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tailcallhq/forgecode write-release-notes --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tailcallhq/forgecode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.forge/skills/write-release-notes .cursor/skills/write-release-notes && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "write-release-notes" agent skill from https://github.com/tailcallhq/forgecode/tree/main/.forge/skills/write-release-notes into .cursor/skills/write-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-release-notes", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tailcallhq/forgecode.git --path .forge/skills/write-release-notes--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tailcallhq/forgecode --skill write-release-notes -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tailcallhq/forgecode write-release-notes --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tailcallhq/forgecode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.forge/skills/write-release-notes .gemini/skills/write-release-notes && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "write-release-notes" agent skill from https://github.com/tailcallhq/forgecode/tree/main/.forge/skills/write-release-notes into .gemini/skills/write-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-release-notes", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tailcallhq/forgecode write-release-notesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tailcallhq/forgecode --skill write-release-notes -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tailcallhq/forgecode.git skills-src && mkdir -p .github/skills && cp -r skills-src/.forge/skills/write-release-notes .github/skills/write-release-notes && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "write-release-notes" agent skill from https://github.com/tailcallhq/forgecode/tree/main/.forge/skills/write-release-notes into .github/skills/write-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-release-notes", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tailcallhq/forgecode --skill write-release-notes -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tailcallhq/forgecode write-release-notes --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tailcallhq/forgecode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.forge/skills/write-release-notes .opencode/skills/write-release-notes && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "write-release-notes" agent skill from https://github.com/tailcallhq/forgecode/tree/main/.forge/skills/write-release-notes into .opencode/skills/write-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-release-notes", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
write-release-notesPulls a GitHub release and every linked pull request, then writes polished, factual release notes from the combined set of changes.
This skill runs a bundled script that fetches a release's metadata and every linked pull request's title, body, labels, author and merge date from GitHub in one call, then groups the pull requests into Features, Bug Fixes, Performance, Refactors and Maintenance by their conventional-commit prefix or label, folding dependency bumps into Maintenance and skipping any PR the script could not find.
From that grouped data it writes a Markdown document with a one-sentence summary, a tagline following a version-and-theme formula, and short, specific paragraphs that lead with what changed rather than who did it, translate internal jargon into plain language, and credit contributors by handle.
Style guidance explicitly rules out vague marketing adjectives in favor of naming the concrete improvement, such as describing exactly what a performance fix stopped doing rather than just calling the result fast.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 92a5699. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
bashghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release Notes Writer loads about 1.4k tokens when it runs. Until then it costs about 118 tokens; SKILL.md has 503 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from tailcallhq/forgecode at commit 92a5699, republished under its Apache-2.0 licence (© tailcallhq). 503 words, ~1,395 tokens.
.claude/skills/write-release-notes/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Generate clear, informative, and enthusiastic release notes by pulling live data from GitHub and synthesizing every PR into a cohesive narrative.
Run the bundled script to pull the release metadata and all linked PR details in one shot:
bash .forge/skills/write-release-notes/scripts/fetch-release-data.sh <version> [owner/repo]<version>: The release tag (e.g. v1.32.0)[owner/repo]: Optional. Defaults to the current repo detected via gh repo view.The script outputs two sections:
### RELEASE METADATA ### — tag name, publish date, release name, raw body### PR DETAILS ### — one JSON object per PR with: number, title, body, labels, author, mergedAt, urlGroup PRs by their conventional commit prefix or label:
| Category | Prefixes / Labels |
|---|---|
| Features | feat, type: feature |
| Bug Fixes | fix, type: fix |
| Performance | perf |
| Refactors | refactor |
| Maintenance | chore, docs, ci, build, deps |
Dependency bumps (e.g. Dependabot PRs) go into Maintenance. Skip PRs with error: "not found".
Produce a Markdown document with the following structure. Keep the tone informative and enthusiastic — explain what changed and why it matters, without resorting to marketing fluff.
# [Product Name] [Version] — [Descriptive Tagline]
> One-sentence summary of what this release focuses on.
## What's New
[2-4 sentence narrative covering the biggest features and fixes.
Describe what changed and what users can now do. Use active voice. Be factual but upbeat.]
## Highlights
### [Feature/Fix Category]
**[PR Title rephrased as a clear description of the change]**
[1-2 sentences expanding on the PR description. Explain what changed and what users can now do differently.
If the PR body has useful context, distill it. If empty, infer from the title.]
[Repeat for each significant PR — skip pure chores/dep bumps unless noteworthy]
## Bug Fixes & Reliability
[Bullet list of fixes, each with a brief impact statement]
## Under the Hood
[Brief paragraph or bullet list covering refactors, maintenance, and dep updates —
keep it light, acknowledge the work without boring the reader]
## Contributors
A huge thank you to everyone who made this release happen: [list @handles — exclude bots like @dependabot]
---
**Full changelog**: [GitHub Release link][Version] — [Factual Theme Description] (e.g. "v1.32.0 — Terminal Context, File Drop Support, Windows Performance")Only include external contributors in the Contributors section — exclude the core team:
@tusharmath@amitksingh1490@laststylebender14@dependabot)If no external contributors exist, omit the Contributors section entirely.
After writing the release notes, run the bundled validation script to confirm the output is under 2000 characters:
echo "<release notes>" | bash .forge/skills/write-release-notes/scripts/validate-release-notes.shIf it prints FAIL, trim the draft and re-run until it prints PASS:
Print the final release notes directly in the chat. Do not write to a file unless the user explicitly asks.
gh CLI automatically.gh api repos/<owner>/<repo>/compare/<prev_tag>...<version> --jq '.commits[].commit.message'© tailcallhq, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in .forge/skills/write-release-notes of tailcallhq/forgecode.
Open the folder on GitHubat commit 92a5699
Release Notes Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release Notes Writer this skilltailcallhq/forgecode | 7.6k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Plannotator Release Preparationbacknotprop/plannotator | 9.2k | — | ~4.6k | Automated safety check: Pass | Apache-2.0 | |
| Ansible Pull Request Reviewansible/ansible | 71k | — | ~570 | Automated safety check: Pass | GPL-3.0 | |
| Plane Release Notes Generatormakeplane/plane | 60k | — | ~2.5k | Automated safety check: Pass | AGPL-3.0 | |
| Pair GitHub PRNVIDIA/Personal-AI-Router | 1.6k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
backnotprop/plannotator
Drafts Plannotator release notes with full contributor credit, bumps versions in dependency order, builds, and starts the tag-driven release pipeline, in four reviewed phases.
ansible/ansible
Reviews an Ansible pull request by number, following the steps in the project's CLAUDE.md, with early checks for changelog fragments and tests.
makeplane/plane
Builds categorized release notes for a Plane release pull request from its commits and writes them into the PR description, for both the plane-cloud and plane-ee repos.
NVIDIA/Personal-AI-Router
Fills GitHub pull request descriptions with the required PAIR pair-release-intent:v1 block so the release-intent check passes.
handsontable/handsontable
Decides whether a code change needs a changelog entry and creates the JSON file in .changelogs with the right type, framework and user-facing title.
tailcallhq/forgecode
Resolves Git merge conflicts with a plan-first workflow that keeps both sides' intent, regenerates lock files and backs up deleted-but-modified files.
tailcallhq/forgecode
Gives a systematic process for debugging the forge CLI: build in debug mode, check the latest help output, test with the non-interactive -p flag, and clone conversations before reproducing bugs.
tailcallhq/forgecode
Finds every FIXME comment in a codebase, groups related ones across files into one task, implements the work they describe and removes the comments once it is done.
tailcallhq/forgecode
Checks that ReasoningConfig fields are serialized into the right provider-specific JSON for OpenRouter, Anthropic, GitHub Copilot and Codex requests.
tailcallhq/forgecode
Writes a structured Markdown implementation plan with checkbox tasks, verification criteria and risks, then checks it with a validation script; no code changes.
tailcallhq/forgecode
Guidance for creating and updating agent skills: what skills provide, keeping context lean, choosing how specific to be, and how SKILL.md and bundled resources are laid out.
Works with
Categories
Pulls a GitHub release and every linked pull request, then writes polished, factual release notes from the combined set of changes. This skill runs a bundled script that fetches a release's metadata and every linked pull request's title, body, labels, author and merge date from GitHub in one call, then groups the pull requests into Features, Bug Fixes, Performance, Refactors and Maintenance by their conventional-commit prefix or label, folding dependency bumps into Maintenance and skipping any PR the script could not find.
Release Notes Writer fits situations like: writing release notes for a tagged version; turning a batch of merged PRs into a readable changelog entry; summarizing what changed in the latest release for users.
Run `npx skills add tailcallhq/forgecode --skill write-release-notes -a claude-code`. Or copy the skill folder (.forge/skills/write-release-notes in tailcallhq/forgecode) into .claude/skills/write-release-notes in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tailcallhq/forgecode --skill write-release-notes -a codex`. Or copy the skill folder (.forge/skills/write-release-notes in tailcallhq/forgecode) into .agents/skills/write-release-notes in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tailcallhq/forgecode --skill write-release-notes -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-release-notes, .gemini/skills/write-release-notes, .github/skills/write-release-notes and .opencode/skills/write-release-notes in your project.
Going by SKILL.md and its folder, Release Notes Writer needs a shell for the scripts in its folder and the command-line tools its instructions call (bash and gh). Our summary lists: GitHub CLI authenticated against the repository.
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Release Notes Writer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Release Notes Writer: Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), Plannotator Release Preparation (backnotprop/plannotator, 9.2k stars), Ansible Pull Request Review (ansible/ansible, 71k stars) and Plane Release Notes Generator (makeplane/plane, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tailcallhq (a GitHub organization) maintains it in tailcallhq/forgecode, which has 7,642 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.
Source: tailcallhq/forgecode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.