RStudio What's New Page
rstudio/rstudio
Turns the current release's NEWS.md entries into the RStudio Desktop What's New page, picking only what Desktop users care about, then commits and opens a PR.
Writes PR descriptions, changelog entries, release notes and postmortems from the actual commits and diff, and saves each one in the right place.
$ npx skills add jsmastery-pro/skills --skill document -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jsmastery-pro/skills document --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/jsmastery-pro/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/document .claude/skills/document && 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 "document" agent skill from https://github.com/jsmastery-pro/skills/tree/main/skills/document into .claude/skills/document/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "document", 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/jsmastery-pro/skills/tree/main/skills/documentType 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 jsmastery-pro/skills --skill document -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jsmastery-pro/skills document --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jsmastery-pro/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/document .agents/skills/document && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "document" agent skill from https://github.com/jsmastery-pro/skills/tree/main/skills/document into .agents/skills/document/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "document", 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 jsmastery-pro/skills --skill document -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jsmastery-pro/skills document --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jsmastery-pro/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/document .cursor/skills/document && 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 "document" agent skill from https://github.com/jsmastery-pro/skills/tree/main/skills/document into .cursor/skills/document/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "document", 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/jsmastery-pro/skills.git --path skills/document--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 jsmastery-pro/skills --skill document -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jsmastery-pro/skills document --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jsmastery-pro/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/document .gemini/skills/document && 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 "document" agent skill from https://github.com/jsmastery-pro/skills/tree/main/skills/document into .gemini/skills/document/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "document", 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 jsmastery-pro/skills documentInstalls 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 jsmastery-pro/skills --skill document -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jsmastery-pro/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/document .github/skills/document && 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 "document" agent skill from https://github.com/jsmastery-pro/skills/tree/main/skills/document into .github/skills/document/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "document", 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 jsmastery-pro/skills --skill document -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jsmastery-pro/skills document --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jsmastery-pro/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/document .opencode/skills/document && 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 "document" agent skill from https://github.com/jsmastery-pro/skills/tree/main/skills/document into .opencode/skills/document/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "document", 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.
documentWrites PR descriptions, changelog entries, release notes and postmortems from the actual commits and diff, and saves each one in the right place.
Run it as /document with pr, changelog, release-note or postmortem, or let it ask which one you want. The agent writes from the record only: every sentence has to trace back to a commit, a diff or an incident fact you supplied, and it never invents a timeline entry, a cause or a change. A PR text comes from the branch commits compared with the base, and can optionally be created or edited with gh.
A changelog entry is appended to CHANGELOG.md in Keep a Changelog style, release notes go to docs/releases for a version range, and postmortems go to docs/postmortems under a date and slug, using template files that ship with the skill. For postmortems it asks for incident facts git cannot show. A very large diff may be read by a read-only scout subagent on a cheap model. Output is plain language without dashes, and the skill does not write code, tests or specs.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 43b69e4. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGrepGlobWriteEditAgentAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and 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.
Change Documentation Writer loads about 2.4k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 1,246 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Grep, Glob, Write, Edit, Agent, AskUserQuestionAutomated 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); files beside SKILL.md are not scanned.
The full file from jsmastery-pro/skills at commit 43b69e4, republished under its MIT licence (© jsmastery-pro). 1,246 words, ~2,392 tokens.
.claude/skills/document/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.<!-- OUTPUT-STYLE:START -->
Write everything this skill produces, files and messages alike, in plain simple language. Talk to the reader as you, warm and direct like a colleague, and present every step as a recommendation they may run or skip, never an order. Keep technical terms that carry real meaning; explain each in plain words. Never use a dash or a hyphen as punctuation: no em dash, no en dash, and no hyphenated compounds. Write read only, not read-only. Say it in simple words, or reword the sentence. Code, file paths, command flags, and values other skills match on keep their hyphens. Use short sentences, commas, or parentheses. Clear beats clever.
<!-- OUTPUT-STYLE:END -->
Your role: the technical writer who writes from the record, not from imagination, and for the reader, not the author. Every sentence traces to something that actually happened (a commit, a diff, an incident fact you were given), and every document is pitched at whoever has to act on it (audience column below). You never invent a timeline entry, a cause, or a change that isn't in the source.
Generates one of four document types from the real change history. The main thread writes the document itself; the only thing it may offload is reading, and only for a very large diff, to a read only scout subagent on the cheapest model (Claude Code: haiku):
| Type | Source | Audience | Output |
|---|---|---|---|
pr | branch commits + diff vs base | reviewers | PR title + body (chat; optionally gh pr create/edit) |
changelog | merged change | developers | entry appended to CHANGELOG.md (Keep a Changelog) |
release-note | a tag/version range | end users | docs/releases/<version>.md (or chat) |
postmortem | an incident (described by the engineer, plus any /debug record) | team | docs/postmortems/<date>-<slug>.md |
Acts. Asks at most one question (which type) when it can't be inferred, and (for postmortems) asks for the incident facts it can't read from git.
PR text, CHANGELOG.md, docs/releases/, docs/postmortems/ (owned by this skill). It writes nothing else.
Written for any Agent Skills client on macOS, Linux, or Windows:
git (and optionally gh) are the only CLIs, and behave the same on every OS, run the git lines as shown. Other shell snippets are POSIX reference, not literal scripts: don't assume find, grep, sed, cat, test/[ ], command -v, or node -e exist. Use your agent's own cross platform file tools (read, search/glob, write) for those, and apply branching logic yourself rather than via shell if/variables/redirects.agent-prompt.md and the one template for the chosen type.pr, changelog, release-note, postmortem): use it.pr; just tagged a version → release-note), then confirm or ask with one question. Mark the inferred type (recommended); the picker adds a free text custom slot last automatically. Present these as your agent's interactive option picker (AskUserQuestion on Claude Code), or as plain text options with the same choices (custom option last) if it has none:"What should I write?"
header: "Doc type"
options:
- label: "PR description" → pr # mark (recommended) if inferred
- label: "Changelog entry" → changelog
- label: "Release notes" → release-note
- label: "Postmortem" → postmortemCollect the lightweight history below, then read the diff and files yourself at write time (a scout subagent may do the reading for a very large diff).
Run these git/gh commands as shown; do the steps that are not commands with your agent's own file tools and your own branching logic.
# base branch: use `main` if it exists, otherwise `master`
git rev-parse --verify main
# current branch
git rev-parse --abbrev-ref HEAD
# pr / changelog: the branch change set (BASE = the base branch above)
git log --oneline "BASE..HEAD"
git diff --name-only "BASE...HEAD"
# release-note: needs tags. List them; if there are none, fall back gracefully (treat as NO_TAGS).
git tag --sort=-creatordatedocs/specs/ (names starting with a digit) and take the 3 most recently modified (paths only) using your file/glob tools.gh available on this system? (GH_INSTALLED)git remote; a result that is not empty means HAS_REMOTE.gh pr view --json number -q .number. If it prints a PR number, treat that as PR_EXISTS; if it errors/prints nothing, no PR exists.Per type edge handling the main thread resolves before writing:
release-note range: if tags exist, the range is <previous-tag>..<latest-tag> (or a range the engineer named). If NO_TAGS, don't guess, ask: "No version tags found. Give me a version name and range (e.g. v1.0.0, covering <commit>..HEAD), or I'll cover all commits since the first one." Pass the resolved range/version to the subagent.gh when GH_INSTALLED and HAS_REMOTE. If PR_EXISTS, the action is gh pr edit (update the body), not gh pr create. If gh isn't usable or no remote, the PR text is chat only, don't attempt gh. Always confirm before running gh and before any push (opening/updating a PR is an outward action): show the body, then ask. This holds regardless of the AGENTS.md ## Git setting; the setting decides whether the workflow drives PRs at all (integration: off → produce the text, never push or open a PR unless the engineer asks here)./debug output if it exists). Pass their account as the incident facts. The subagent must not invent timeline entries or causes beyond what they give.Resolve this skill's folder to an absolute path (you already resolve these relative paths, so you know the folder) and Read agent-prompt.md and the one template for the chosen type, templates/<type>.md, now (only now, at write time). Follow agent-prompt.md and write the document yourself. Do not spawn a writer; for a postmortem, the root cause synthesis is yours to reason through carefully on the main thread.
The inputs to apply:
scout subagent (haiku) that returns a compact summary by file group/feature, and write from thatAGENTS.md, or CLAUDE.md fallback, + recent spec paths for the "why"none (chat-only) | gh pr create | gh pr edit (from the GH_INSTALLED/HAS_REMOTE/PR_EXISTS checks)CHANGELOG.md format if the file exists (don't impose Keep a Changelog over a different established style)release-note: the resolved version + rangeLead with the type and where it landed; for pr the body IS the deliverable, so show it in full (per docs/conventions.md). Template:
## /document <pr | changelog | release-note | postmortem> · <PR body below | CHANGELOG.md | docs/releases/<v>.md | docs/postmortems/<file> | PR #N updated>
<for pr: the title + full body, ready to paste · always shown in chat so it works without gh>
<for the others: a 2 to 3 line preview>
Scope: ticked `Document it` (or "no scope row matched"; omit if not on the scope)This skill does not commit, push, or merge; it produces the prose (and ticks the Document it box per the closing gate above, the only scope edit it makes).
agent-prompt.md: the writing guide the main thread reads and follows at write time (Step 3)templates/: one structure file per type (pr.md, changelog.md, release-note.md, postmortem.md); the main thread reads only the chosen one at write time© jsmastery-pro, MIT. 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 6 other files in skills/document of jsmastery-pro/skills.
Open the folder on GitHubat commit 43b69e4
Change Documentation 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 |
|---|---|---|---|---|---|---|
| Change Documentation Writer this skilljsmastery-pro/skills | 1.4k | — | ~2.4k | Automated safety check: Notes | MIT | |
| RStudio What's New Pagerstudio/rstudio | 5.1k | — | ~2k | Automated safety check: Pass | Custom licence | |
| Technical Writingfrappe/skills | 146 | — | ~1.1k | Automated safety check: Pass | None | |
| Pull Requestcloudposse/atmos | 1.4k | — | ~3.5k | Automated safety check: Pass | Apache-2.0 | |
| Pull Request Title and Body Writeropeninterpreter/openinterpreter | 69k | 2 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Git Workflow and Versioningaddyosmani/agent-skills | 102k | 2 repos | ~3.5k | Automated safety check: Notes | MIT |
rstudio/rstudio
Turns the current release's NEWS.md entries into the RStudio Desktop What's New page, picking only what Desktop users care about, then commits and opens a PR.
frappe/skills
Write prose in "Simplified Technical English". An agent skill from frappe/skills.
cloudposse/atmos
PR workflow: pick the right semver label (no-release / patch / minor / major), decide when to add a changelog blog post, when to update the roadmap, and how to do each correctly.
openinterpreter/openinterpreter
Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.
addyosmani/agent-skills
Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.
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.
jsmastery-pro/skills
A gate before merge: verify runs the real app against the spec, and review has a different model do a senior code review, without editing code.
jsmastery-pro/skills
Runs a reproduce, localize, hypothesize, test, fix and verify loop to find a bug's root cause, applies the minimal fix and hands off a regression test.
jsmastery-pro/skills
Builds a feature, page, component, API or data layer from an approved spec and AGENTS.md, and sends you back to /architect when a key decision is missing.
jsmastery-pro/skills
Runs as the last step after a completed change to keep AGENTS.md files, the project scope and linked spec status lines current, using only small surgical edits.
jsmastery-pro/skills
Bootstraps a project's tool-agnostic AGENTS.md files for a greenfield project, an undocumented codebase or one area, adding only what is missing and never overwriting curated content.
jsmastery-pro/skills
Turns a product idea into a coarse, ordered scope kept in docs/scope, then keeps it current: plan a product, plan the next slice, enroll one feature or reconcile after shipping.
Works with
Categories
Writes PR descriptions, changelog entries, release notes and postmortems from the actual commits and diff, and saves each one in the right place. Run it as /document with pr, changelog, release-note or postmortem, or let it ask which one you want. The agent writes from the record only: every sentence has to trace back to a commit, a diff or an incident fact you supplied, and it never invents a timeline entry, a cause or a change.
Change Documentation Writer fits situations like: writing a pull request title and body from the branch commits; adding an entry to CHANGELOG.md after a change merges; drafting end-user release notes for a tagged version; writing up an incident as a postmortem.
Run `npx skills add jsmastery-pro/skills --skill document -a claude-code`. Or copy the skill folder (skills/document in jsmastery-pro/skills) into .claude/skills/document in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jsmastery-pro/skills --skill document -a codex`. Or copy the skill folder (skills/document in jsmastery-pro/skills) into .agents/skills/document 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 jsmastery-pro/skills --skill document -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/document, .gemini/skills/document, .github/skills/document and .opencode/skills/document in your project.
Going by SKILL.md and its folder, Change Documentation Writer needs the command-line tools its instructions call (git, gh and node). Our summary lists: A Git repository with the commits to describe; GitHub CLI (gh), only if the PR should be created or edited. Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob, Write, Edit, Agent, AskUserQuestion.
SKILL.md contains no URLs. Its commands use git and 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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Change Documentation Writer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.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 Change Documentation Writer: RStudio What's New Page (rstudio/rstudio, 5.1k stars), Technical Writing (frappe/skills, 146 stars), Pull Request (cloudposse/atmos, 1.4k stars) and Pull Request Title and Body Writer (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jsmastery-pro (a GitHub organization) maintains it in jsmastery-pro/skills, which has 1,429 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on August 9, 2026.
Source: jsmastery-pro/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.