Generate Release Notes
teambit/bit
Generate comprehensive release notes for Bit from git commits and pull requests.
Follow the Photofield release process: batch changelog entries, create the release commit and tag, and push.
$ npx skills add SmilyOrg/photofield --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SmilyOrg/photofield release --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/SmilyOrg/photofield.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release .claude/skills/release && 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 "release" agent skill from https://github.com/SmilyOrg/photofield/tree/main/.agents/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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/SmilyOrg/photofield/tree/main/.agents/skills/releaseType 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 SmilyOrg/photofield --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SmilyOrg/photofield release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SmilyOrg/photofield.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/release .agents/skills/release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release" agent skill from https://github.com/SmilyOrg/photofield/tree/main/.agents/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 SmilyOrg/photofield --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SmilyOrg/photofield release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SmilyOrg/photofield.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/release .cursor/skills/release && 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 "release" agent skill from https://github.com/SmilyOrg/photofield/tree/main/.agents/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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/SmilyOrg/photofield.git --path .agents/skills/release--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 SmilyOrg/photofield --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SmilyOrg/photofield release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SmilyOrg/photofield.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/release .gemini/skills/release && 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 "release" agent skill from https://github.com/SmilyOrg/photofield/tree/main/.agents/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 SmilyOrg/photofield releaseInstalls 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 SmilyOrg/photofield --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SmilyOrg/photofield.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/release .github/skills/release && 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 "release" agent skill from https://github.com/SmilyOrg/photofield/tree/main/.agents/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 SmilyOrg/photofield --skill release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SmilyOrg/photofield release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SmilyOrg/photofield.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/release .opencode/skills/release && 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 "release" agent skill from https://github.com/SmilyOrg/photofield/tree/main/.agents/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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.
releaseFollow the Photofield release process: batch changelog entries, create the release commit and tag, and push.
Release is an agent skill from SmilyOrg/photofield. Follow the Photofield release process: batch changelog entries, create the release commit and tag, and push. Use when the user says "release", "cut a release", "create a release", or "prepare vX.Y.Z". Always ask before pushing.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Deployment and Changelog and release notes. It works with Vue.js and Go. The repository describes itself as: A self-hosted non-invasive single-binary photo gallery with a focus on speed and simplicity. The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ea0c7c9. 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.
Shell commands in SKILL.md call:
gitcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.github.comFrom 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 loads about 1.6k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 496 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); files beside SKILL.md are not scanned.
The full file from SmilyOrg/photofield at commit ea0c7c9, republished under its MIT licence (© SmilyOrg). 496 words, ~1,567 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder).Follow these steps to create a new Photofield release.
Before starting, verify all of these:
# Must be on main
git branch --show-current | grep -q '^main$'# Working directory must be clean
git diff-index --quiet HEAD -- || { echo "NOT CLEAN"; exit 1; }# CI must be passing on current HEAD
curl -s "https://api.github.com/repos/SmilyOrg/photofield/commits/$(git rev-parse HEAD)/status" | grep -q '"state":"success"' && echo "CI PASSING" || echo "CI NOT PASSING"If any check fails, stop and report the issue to the user. Do not proceed.
ls -la .changes/unreleased/If the directory contains only .gitkeep, there are no unreleased entries.
Tell the user: "No unreleased changelog entries found. Nothing to release."
List each entry for the user (read the YAML files):
for f in .changes/unreleased/*.yaml; do [ -e "$f" ] || continue
kind=$(grep '^kind:' "$f" | sed 's/kind: //')
body=$(grep '^body:' "$f" | sed 's/body: //')
echo "- [$kind] $body"
doneChangie's auto-bump rules (from .changie.yaml):
| Kind | Bump type | Semantic meaning (at 0.x) |
|---|---|---|
Breaking Changes | minor | 0.X.0 → 0.(X+1).0 |
Added | minor | 0.X.0 → 0.(X+1).0 |
Removed | minor | 0.X.0 → 0.(X+1).0 |
Deprecated | minor | 0.X.0 → 0.(X+1).0 |
Fixed | patch | 0.X.Y → 0.X.(Y+1) |
Security | patch | 0.X.Y → 0.X.(Y+1) |
Rule: If any entry is a minor-bump kind, bump minor. Otherwise bump patch.
CURRENT=$(changie latest | sed 's/^v//')
MAJOR=$(echo "$CURRENT" | cut -d. -f1)
MINOR=$(echo "$CURRENT" | cut -d. -f2)
PATCH=$(echo "$CURRENT" | cut -d. -f3)Check if any entry is a minor-bump kind:
# Sets BUMP to "MINOR" if any entry is a minor-bump kind, otherwise "PATCH"
BUMP=$(grep -l -E '^kind: (Breaking Changes|Added|Removed|Deprecated)' .changes/unreleased/*.yaml 2>/dev/null | grep -qv '^$' && echo "MINOR" || echo "PATCH")if [ "$BUMP" = "MINOR" ]; then
NEXT="v${MAJOR}.$((MINOR+1)).0"
else
NEXT="v${MAJOR}.${MINOR}.$((PATCH+1))"
fiShow the user:
$CURRENT)$NEXT)Do not proceed until the user confirms.
Replace the default date-based title with a descriptive one:
| Release type | Title convention |
|---|---|
| Patch | "Security patches", "Bug fixes and dependency updates", "Stability improvements" |
| Minor | Short phrase summarizing the main feature(s) |
Example edit for .changes/$NEXT.md:
oldText: "## [$NEXT] - 2026-06-16"
newText: "## [$NEXT] - Security patches"# Merge unreleased fragments into version file
changie batch "$NEXT"
# Review the generated file
cat .changes/$NEXT.md
# Set a descriptive title (see §5)
# Use edit to replace the title line in .changes/$NEXT.md
# Merge into CHANGELOG.md
changie merge⚠️ The task release target has changie batch and changie merge
commented out — it expects the agent to run them first. Do not run
task release (it will fail on a dirty tree).
git add CHANGELOG.md .changes/$NEXT.md
git commit -m "Release $NEXT"
git tag -a "$NEXT" -m "Release $NEXT"git show HEAD
task release:changelogVerify:
Show the review output to the user.
Always ask before pushing. Show:
Release ready to push:
- Commit: <hash> — Release $NEXT
- Tag: $NEXT
- Changelog: <summary>
Push? (yes/no)Once confirmed:
git push
git push --tagsThen report:
Release pushed ✓
- Commit:
<hash>→main- Tag:
$NEXT- CI running: https://github.com/SmilyOrg/photofield/actions
git tag -d "$NEXT"
git reset --hard HEAD~1git tag -d "$NEXT"
git push origin :refs/tags/$NEXT
git reset --hard HEAD~1
git push --force-with-lease origin mainThen fix the issue and restart from §6.
| Command | Purpose |
|---|---|
changie latest | Get current latest version |
ls .changes/unreleased/ | List unreleased entries |
changie batch <v> | Batch entries into version file |
changie merge | Merge into CHANGELOG.md |
changie new -k <kind> -b <body> | Create a changelog entry inline |
git add CHANGELOG.md .changes/<v>.md | Stage for commit |
git commit -m "Release <v>" | Create release commit |
git tag -a <v> -m "Release <v>" | Create annotated tag |
git push && git push --tags | Push release |
task release:changelog | Preview changelog |
task release:undo | Undo last release (only if not pushed) |
task release will fail. Stage and commit
changie outputs first..changes/<v>.md — This file must be committed alongside
CHANGELOG.md.-e flag — changie new -e opens an editor. Use -b to set
body inline: changie new -k Fixed -b "Fix description".git push bypasses branch rules — The repo requires PRs for non-release
commits. The release commit is exempted (remote logs "Bypassed rule
violations for refs/heads/main"). This is expected.© SmilyOrg, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/release of SmilyOrg/photofield.
Open the folder on GitHubat commit ea0c7c9
Release 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 this skillSmilyOrg/photofield | 608 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Generate Release Notesteambit/bit | 18k | — | ~2.2k | Automated safety check: Pass | Custom licence | |
| Go-Redis Release Preparationredis/go-redis | 22k | — | ~1.1k | Automated safety check: Pass | BSD-2-Clause | |
| Cline Desktop App Releasecline/cline | 70k | — | ~4.5k | Automated safety check: Pass | Apache-2.0 | |
| Golang Documentationunxed/f4 | 241 | 3 repos | ~3.5k | Automated safety check: Pass | MIT | |
| EverOS Release WorkflowEverMind-AI/EverOS | 13k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
teambit/bit
Generate comprehensive release notes for Bit from git commits and pull requests.
redis/go-redis
Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.
cline/cline
Covers preparing, tagging and publishing a Cline desktop app release on the stable, beta or nightly channel through the desktop-publish GitHub workflow.
unxed/f4
Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.
EverMind-AI/EverOS
Walks through cutting a versioned everos release: bump the version, update the changelog, tag it, and review the drafted GitHub Release page before publishing.
zhitongblog/solomd
Publish a SoloMD release to the stores that have no usable submission API — Google Play Console and Microsoft Partner Center — by driving them through the local Unzoo Browser REST API.
SmilyOrg/photofield
Run, test, and debug the photofield server locally. An agent skill from SmilyOrg/photofield.
SmilyOrg/photofield
Check and apply security updates across the photofield project (api/Go, ui/npm, docs/npm, e2e/npm).
Categories
Follow the Photofield release process: batch changelog entries, create the release commit and tag, and push. Release is an agent skill from SmilyOrg/photofield. Follow the Photofield release process: batch changelog entries, create the release commit and tag, and push.
Release fits situations like: the user says release; create a release.
Run `npx skills add SmilyOrg/photofield --skill release -a claude-code`. Or copy the skill folder (.agents/skills/release in SmilyOrg/photofield) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SmilyOrg/photofield --skill release -a codex`. Or copy the skill folder (.agents/skills/release in SmilyOrg/photofield) into .agents/skills/release 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 SmilyOrg/photofield --skill release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git and curl).
SKILL.md names 1 domain. In commands or code: api.github.com; the agent is likely to contact it when it follows the instructions. 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. Review the folder before installing.
Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.3k 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: Generate Release Notes (teambit/bit, 18k stars), Go-Redis Release Preparation (redis/go-redis, 22k stars), Cline Desktop App Release (cline/cline, 70k stars) and Golang Documentation (unxed/f4, 241 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SmilyOrg (a GitHub user) maintains it in SmilyOrg/photofield, which has 608 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on August 17, 2026.
Source: SmilyOrg/photofield on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.