Use when long-lived agents, project memories, system prompts, or playbooks are repeatedly summarized, rewritten, or optimized and risk losing domain detail, provenance, or execution learnings.
日本語の概要は準備中です。原文の説明を表示しています。
Use when preparing a release PR for a single-package GitHub library with git and the GitHub CLI, including SemVer selection and Keep a Changelog updates.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Attribution: Adapted from github/awesome-copilot (
skills/github-release) by GitHub Community, licensed MIT. Modified for this collection.
This skill automates the full release workflow for a single-package GitHub repository,
from analysis through changelog authoring and PR creation. It relies exclusively on
gh (GitHub CLI) and git — no other tools needed.
Step 1 synchronizes the local default branch with a fast-forward-only update. Steps 2–4 are read-only reconnaissance. No release branch or release content is created until Step 5, once the version number is confirmed.
Use this skill whenever the user wants to cut a new release, publish a new version, bump a version, create a release branch, generate a changelog, or open a release PR on a GitHub repository. Trigger even if the user says something casual like "let's ship a new version" or "time to release".
Do not use this workflow for monorepos with independently versioned packages, release automation that publishes directly from tags, or repositories whose release policy is already encoded in a tool such as Changesets, semantic-release, or Release Please. Follow that repository's documented release process instead.
Examples below include both Bash and PowerShell variants; Windows users should prefer the PowerShell blocks.
Before starting, verify the environment:
gh auth status # must be authenticated
gh repo view --json nameWithOwner # must be inside a GitHub repo
git status # working tree should be clean
If any check fails, stop and tell the user what to fix before continuing.
Then ask the user one question:
"Which directory contains your library's public-facing source code? (e.g.
src/,lib/,pkg/— used to focus the diff on what consumers actually see. Press Enter to scan the whole repo.)"
Store the answer as PUBLIC_PATH. If empty, PUBLIC_PATH is . (repo root).
Exclude these paths from all diffs regardless: tests/, test/, spec/,
__tests__/, docs/, *.lock, *-lock.json, *.sum, generated files
(files with a "do not edit" header comment), and build artefacts.
Work through every step in order. Show the user what command you're about to run and its output. Pause and ask for confirmation only when explicitly noted.
DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
git switch "$DEFAULT_BRANCH"
git fetch origin "$DEFAULT_BRANCH"
git merge --ff-only "origin/$DEFAULT_BRANCH"
$defaultBranch = gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'
git switch $defaultBranch
git fetch origin $defaultBranch
git merge --ff-only "origin/$defaultBranch"
if ($LASTEXITCODE -ne 0) { throw "Default-branch fast-forward failed" }
Stay on the default branch for now. The release branch is created in Step 5, after the version is confirmed. Stop if the fast-forward fails; do not merge or rebase unrelated local work as part of a release.
Why not
gh release list? GitHub Releases are an optional layer on top of Git tags. Many repos tag releases withgit tagwithout ever creating a GitHub Release, sogh release listcan return empty even when version tags exist. Reading tags directly from git is the reliable source of truth.
# Fetch all tags from remote to ensure local view is current
git fetch --tags
# Find the latest version tag, sorted semantically
# --sort=-version:refname handles 1.10.0 > 1.9.0 correctly (unlike alphabetical)
PREV_TAG=$(git tag --sort=-version:refname | grep -E '^v?[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
echo "Latest tag: $PREV_TAG"
# Fetch all tags from remote to ensure local view is current
git fetch --tags
# Find the latest version tag, sorted semantically
# --sort=-version:refname handles 1.10.0 > 1.9.0 correctly (unlike alphabetical)
$prevTag = git tag --sort='-version:refname' | `
Select-String '^[vV]?\d+\.\d+\.\d+$' | `
Select-Object -First 1 -ExpandProperty Line
if ($prevTag) {
$prevSha = git rev-list -n 1 $prevTag
} else {
$prevSha = git rev-list --max-parents=0 HEAD
}
Write-Output "Latest tag: $prevTag"
Then verify the tag exists on the remote (not just locally):
git ls-remote --tags origin | grep "refs/tags/$PREV_TAG$"
If the remote check returns nothing, warn the user that the tag appears to be local-only and hasn't been pushed — they may want to push it before continuing.
PREV_TAG is the tag name exactly as found (e.g. v1.4.2). Strip any leading v
when doing arithmetic; preserve it when naming things.PREV_TAG as (none), set PREV_SHA to the
first commit, and default the new version to 1.0.0 (skip Step 4 versioning logic;
go straight to Step 5).git rev-list --max-parents=0 HEAD and warn the user.PREV_SHA=$(git rev-list -n 1 "$PREV_TAG" 2>/dev/null || git rev-list --max-parents=0 HEAD)
This step uses two complementary signals. The code diff is the primary source of truth; commit messages provide supporting context about intent.
# Focused diff on the public source path, excluding noise
git diff "$PREV_SHA"..HEAD -- "$PUBLIC_PATH" \
':(exclude)tests/' ':(exclude)test/' ':(exclude)spec/' \
':(exclude)__tests__/' ':(exclude)docs/' \
':(exclude)*.lock' ':(exclude)*-lock.json' ':(exclude)*.sum'
# Focused diff on the public source path, excluding noise
git diff "$($prevSha)..HEAD" -- $publicPath `
':(exclude)tests/' ':(exclude)test/' ':(exclude)spec/' `
':(exclude)__tests__/' ':(exclude)docs/' `
':(exclude)*.lock' ':(exclude)*-lock.json' ':(exclude)*.sum'
Read the full diff output. For each changed file, identify:
If the diff is very large (thousands of lines), first run the stat summary to prioritise which files to read in full:
git diff "$PREV_SHA"..HEAD --stat -- "$PUBLIC_PATH"
Focus your detailed reading on files with the most changes and files whose names
suggest they define public interfaces (e.g. index.*, api.*, exports.*,
public.*, mod.*, __init__.*).
git log "$PREV_SHA"..HEAD --oneline --no-merges
Use this to:
PUBLIC_PATH but are still user-visible
(e.g. a CLI flag change in a cmd/ directory).See references/commit-classification.md for mapping message patterns to change types.
When signals agree → use that classification with confidence.
When signals conflict → prefer the code diff. Examples:
fix: typo but the diff shows a removed public method → treat as MAJOR.feat: new API but the diff only touches private internals → treat as PATCH.chore: refactor but the diff adds new exported symbols → treat as MINOR.Document any conflicts you notice — flag them to the user during the changelog review in Step 6.
Apply these rules to your analysis from Step 3 (full rules in references/semver-rules.md):
| Condition | Bump |
|---|---|
| Any breaking change to public API (removal, signature change, behaviour change) | MAJOR |
| New exported symbol or feature, no breaking changes | MINOR |
| Bug fix, perf improvement, security fix, docs, chore only | PATCH |
When a release contains a mix, the highest precedence wins:
MAJOR > MINOR > PATCH.
Compute NEXT_VERSION:
PREV_TAG into MAJOR.MINOR.PATCH integers.vMAJOR.MINOR.PATCH.Present the proposed version to the user with a brief rationale that cites specific code findings, not just commit messages. Example:
"I'm proposing v2.1.0. The diff shows two new exported functions (
NewClientandWithTimeout) insrc/client.go, and no existing public symbols were removed or changed. Commit messages corroborate this as feature additions."
Ask: "Does this version look right, or would you like to adjust it?" Wait for confirmation before proceeding.
Now that the version is confirmed, create the branch with the correct name from the start:
git checkout -b release/vX.Y.Z
git push -u origin release/vX.Y.Z
Read the existing CHANGELOG.md (or create it if absent). Follow the
Keep a Changelog format strictly.
Structure to insert at the top (just below the # Changelog header):
## [X.Y.Z] - YYYY-MM-DD
### Added
- ...
### Changed
- ...
### Deprecated
- ...
### Removed
- ...
### Fixed
- ...
### Security
- ...
Rules:
YYYY-MM-DD format.WithTimeout option to HTTP client constructor."
Bad: "feat: add timeout cfg param"[X.Y.Z]: https://github.com/OWNER/REPO/compare/vPREV...vNEXT
Show the user the proposed changelog section before writing it to disk. If any signal conflicts were found in Step 3c, flag them here so the user can verify. Ask: "Does this changelog look accurate? Any entries to add, remove, or reword?" Incorporate feedback, then write to disk.
git add CHANGELOG.md
git commit -m "chore: release vX.Y.Z"
git push origin release/vX.Y.Z
Confirm the push succeeded before moving on.
IMPORTANT: Always use --body-file to pass PR body text, never --body with inline text.
Inline escape sequences like \n are not interpreted as newlines by PowerShell and will appear
as literal text in the PR. Using a file ensures proper markdown formatting.
PR_BODY=$(mktemp)
trap 'rm -f "$PR_BODY"' EXIT
cat >"$PR_BODY" <<'EOF'
## Release vX.Y.Z
This PR prepares the **vX.Y.Z** release.
### What's included
<!-- paste the changelog section here -->
### Checklist
- [ ] Changelog reviewed
- [ ] Version bump verified
- [ ] CI passing
After merging, create the tag on the merge commit:
```
git tag vX.Y.Z <merge-commit-sha>
git push origin vX.Y.Z
```
EOF
gh pr create \
--base "$DEFAULT_BRANCH" \
--head release/vX.Y.Z \
--title "Release vX.Y.Z" \
--body-file "$PR_BODY"
# Create PR body using here-string (preserves actual newlines, not escape sequences)
$prBody = @"
## Release vX.Y.Z
This PR prepares the **vX.Y.Z** release.
### What's included
<paste changelog here>
### Checklist
- [ ] Changelog reviewed
- [ ] Version bump verified
- [ ] CI passing
After merging, create the tag on the merge commit:
```
git tag vX.Y.Z <merge-commit-sha>
git push origin vX.Y.Z
```
"@
# Write to file and use --body-file (do NOT use inline --body with escape sequences)
$prBody | Out-File -FilePath release_pr_body.md -Encoding utf8 -NoNewline
gh pr create --base $defaultBranch --head release/vX.Y.Z --title "Release vX.Y.Z" --body-file release_pr_body.md
Paste the changelog section into the PR body's "What's included" block (or leave placeholder for manual review).
Tell the user:
Release PR is open.
New version: vX.Y.Z
Once the PR is reviewed and merged, you'll need to create the tag yourself on the merge commit:
git tag vX.Y.Z <merge-commit-sha> git push origin vX.Y.ZThen go to GitHub Releases and publish the release from that tag. You can copy the changelog section directly into the release notes.
| Situation | What to do |
|---|---|
gh auth status fails | Stop; tell user to run gh auth login |
| Not inside a git repo | Stop; tell user to cd into their repo |
| Working tree is dirty | Warn; ask if they want to stash or abort |
| No commits since last tag | Tell user there's nothing to release |
| Tag exists but points to no commit | Use first commit as diff base; warn user |
| Latest tag exists locally but not on remote | Warn user; ask if they want to push the tag first or continue anyway |
Diff is empty for PUBLIC_PATH but commits exist | Warn; all changes may be internal; ask if they still want to proceed |
git push fails (e.g. protected branch rules) | Report the error verbatim; suggest they check branch protection settings |
gh CLI to be installed and authenticated.references/semver-rules.md — Extended SemVer decision rules and edge casesreferences/commit-classification.md — Heuristics for classifying commit messages into change typesreferences/evaluations.md — Routing prompts and deterministic regression assertionsAdapted from the
github-release skill
in github/awesome-copilot, licensed under MIT. This repository's maintenance adds
UTF-8 normalization, default-branch detection, exact stable-tag matching, explicit
non-activation guidance, and consistent gh pr create --body-file usage.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when long-lived agents, project memories, system prompts, or playbooks are repeatedly summarized, rewritten, or optimized and risk losing domain detail, provenance, or execution learnings.
日本語の概要は準備中です。原文の説明を表示しています。
Use this skill when the user explicitly asks to map, document, or onboard into an existing codebase. Trigger for prompts like "map this codebase", "document this architecture", "onboard me to this repo", or "create codebase docs". Do not trigger for routine feature implementation, bug fixes, or narrow code edits unless the user asks for repository-level discovery.
日本語の概要は準備中です。原文の説明を表示しています。
Adds educational comments to a code file so it becomes a learning resource, asking for the file (with a list of close matches) if none is given. Use when preparing code for learners, onboarding, or teaching.
日本語の概要は準備中です。原文の説明を表示しています。
Write, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate documents, layers, paths, text frames, colors, symbols, artboards, or any Illustrator DOM objects. Covers the complete JavaScript object model, coordinate system, measurement units, export workflows, and scripting best practices.
日本語の概要は準備中です。原文の説明を表示しています。
Patterns and techniques for adding governance, safety, and trust controls to AI agent systems. Use this skill when: - Building AI agents that call external tools (APIs, databases, file systems) - Implementing policy-based access controls for agent tool usage - Adding semantic intent classification to detect dangerous prompts - Creating trust scoring systems for multi-agent workflows - Building audit trails for agent actions and decisions - Enforcing rate limits, content filters, or tool restrictions on agents - Working with any agent framework (PydanticAI, CrewAI, OpenAI Agents, LangChain, AutoGen)
日本語の概要は準備中です。原文の説明を表示しています。
Check any AI agent codebase against the OWASP Agentic Security Initiative (ASI) Top 10 risks. Use this skill when: - Evaluating an agent system's security posture before production deployment - Running a compliance check against OWASP ASI 2026 standards - Mapping existing security controls to the 10 agentic risks - Generating a compliance report for security review or audit - Comparing agent framework security features against the standard - Any request like "is my agent OWASP compliant?", "check ASI compliance", or "agentic security audit"
日本語の概要は準備中です。原文の説明を表示しています。