Agent skill

Release

by SmilyOrg in SmilyOrg/photofield

Follow the Photofield release process: batch changelog entries, create the release commit and tag, and push.

MITAuto-check passedDevelopment

Install Release

skills CLI
$ npx skills add SmilyOrg/photofield --skill release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install SmilyOrg/photofield release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
release
GitHub stars
608
Token cost
~1.6k tokens
SKILL.md length
496 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Follow the Photofield release process: batch changelog entries, create the release commit and tag, and push.

  • Works in 10 steps: Prerequisites → Check for Unreleased Changes → Determine Next Version → …
  • The user says release
  • SKILL.md covers 1. Prerequisites, 2. Check for Unreleased Changes, 3. Determine Next Version and 4. Ask the User, plus 8 more sections
  • Calls git and curl; reaches api.github.com

What it does

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.

When your agent uses it

  • The user says release
  • Create a release

Example prompts

  • “release”
  • “cut a release”
  • “create a release”
  • “/release”

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Prerequisites
  2. Check for Unreleased Changes
  3. Determine Next Version
  4. Ask the User
  5. Set Release Title
  6. Batch and Merge
  7. Commit and Tag
  8. Review
  9. Push (Only With Approval)
  10. Undo Procedures

What it can do on your machine

Read from SKILL.md and the folder at commit ea0c7c9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from SmilyOrg/photofield at commit ea0c7c9, republished under its MIT licence (© SmilyOrg). 496 words, ~1,567 tokens.

Download SKILL.mdSave it as .claude/skills/release/SKILL.md (or your agent's skills folder).
name
release
description
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.

Photofield Release Process

Follow these steps to create a new Photofield release.

1. Prerequisites

Before starting, verify all of these:

bash
# Must be on main
git branch --show-current | grep -q '^main$'
bash
# Working directory must be clean
git diff-index --quiet HEAD -- || { echo "NOT CLEAN"; exit 1; }
bash
# 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.

2. Check for Unreleased Changes

bash
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):

bash
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"
done

3. Determine Next Version

Changie's auto-bump rules (from .changie.yaml):

KindBump typeSemantic meaning (at 0.x)
Breaking Changesminor0.X.0 → 0.(X+1).0
Addedminor0.X.0 → 0.(X+1).0
Removedminor0.X.0 → 0.(X+1).0
Deprecatedminor0.X.0 → 0.(X+1).0
Fixedpatch0.X.Y → 0.X.(Y+1)
Securitypatch0.X.Y → 0.X.(Y+1)

Rule: If any entry is a minor-bump kind, bump minor. Otherwise bump patch.

bash
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:

bash
# 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")
bash
if [ "$BUMP" = "MINOR" ]; then
  NEXT="v${MAJOR}.$((MINOR+1)).0"
else
  NEXT="v${MAJOR}.${MINOR}.$((PATCH+1))"
fi

4. Ask the User

Show the user:

  • Current version ($CURRENT)
  • Unreleased entries (list each kind + body)
  • Suggested next version ($NEXT)
  • Suggested release title (see §5)

Do not proceed until the user confirms.

5. Set Release Title

Replace the default date-based title with a descriptive one:

Release typeTitle convention
Patch"Security patches", "Bug fixes and dependency updates", "Stability improvements"
MinorShort phrase summarizing the main feature(s)

Example edit for .changes/$NEXT.md:

yaml
oldText: "## [$NEXT] - 2026-06-16"
newText: "## [$NEXT] - Security patches"

6. Batch and Merge

bash
# 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

7. Commit and Tag

⚠️ 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).

bash
git add CHANGELOG.md .changes/$NEXT.md
git commit -m "Release $NEXT"
git tag -a "$NEXT" -m "Release $NEXT"

8. Review

bash
git show HEAD
task release:changelog

Verify:

  • Changelog looks correct and well-formatted
  • Tag message matches
  • Commit only contains expected files (CHANGELOG.md + .changes/$NEXT.md)

Show the review output to the user.

9. Push (Only With Approval)

Always ask before pushing. Show:

Release ready to push:
- Commit: <hash> — Release $NEXT
- Tag: $NEXT
- Changelog: <summary>

Push? (yes/no)

Once confirmed:

bash
git push
git push --tags

Then report:

Release pushed ✓

10. Undo Procedures

Before push
bash
git tag -d "$NEXT"
git reset --hard HEAD~1
Show full SKILL.md (198 more words)Show less
After push (Only With Explicit Approval)
bash
git tag -d "$NEXT"
git push origin :refs/tags/$NEXT
git reset --hard HEAD~1
git push --force-with-lease origin main

Then fix the issue and restart from §6.

Quick Reference

CommandPurpose
changie latestGet current latest version
ls .changes/unreleased/List unreleased entries
changie batch <v>Batch entries into version file
changie mergeMerge into CHANGELOG.md
changie new -k <kind> -b <body>Create a changelog entry inline
git add CHANGELOG.md .changes/<v>.mdStage for commit
git commit -m "Release <v>"Create release commit
git tag -a <v> -m "Release <v>"Create annotated tag
git push && git push --tagsPush release
task release:changelogPreview changelog
task release:undoUndo last release (only if not pushed)

Common Pitfalls

  1. Dirty working directory — task release will fail. Stage and commit changie outputs first.
  2. Wrong version bump — If you have any minor-bump entries but only bump patch, the version is wrong. Always check all entry kinds.
  3. Missing .changes/<v>.md — This file must be committed alongside CHANGELOG.md.
  4. Changie -e flag — changie new -e opens an editor. Use -b to set body inline: changie new -k Fixed -b "Fix description".
  5. 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

Files

Just SKILL.md in .agents/skills/release of SmilyOrg/photofield.

Open the folder on GitHubat commit ea0c7c9

Compare with similar skills

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.

Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release this skillSmilyOrg/photofield608—~1.6kAutomated safety check: PassMIT
Generate Release Notesteambit/bit18k—~2.2kAutomated safety check: PassCustom licence
Go-Redis Release Preparationredis/go-redis22k—~1.1kAutomated safety check: PassBSD-2-Clause
Cline Desktop App Releasecline/cline70k—~4.5kAutomated safety check: PassApache-2.0
Golang Documentationunxed/f42413 repos~3.5kAutomated safety check: PassMIT
EverOS Release WorkflowEverMind-AI/EverOS13k—~1.3kAutomated safety check: PassApache-2.0

Similar skills

  • Generate comprehensive release notes for Bit from git commits and pull requests.

    18k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Official

    Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.

    22k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Covers preparing, tagging and publishing a Cline desktop app release on the stable, beta or nightly channel through the desktop-publish GitHub workflow.

    70k GitHub stars~4.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.

    241 GitHub starsUsed in 3 repos~3.5k tokens
    DevelopmentAuto-check passed
  • EverOS Release Workflow

    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.

    13k GitHub stars~1.3k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Store Submit

    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.

    1.2k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check: notes

More from SmilyOrg/photofield

  • Local Dev

    SmilyOrg/photofield

    Run, test, and debug the photofield server locally. An agent skill from SmilyOrg/photofield.

    608 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Security Updates

    SmilyOrg/photofield

    Check and apply security updates across the photofield project (api/Go, ui/npm, docs/npm, e2e/npm).

    608 GitHub stars~808 tokensUpdated 1 mo ago
    Auto-check passed

Works with

Categories

Questions about Release

What does Release do?

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.

When should I use Release?

Release fits situations like: the user says release; create a release.

How do I install Release in Claude Code?

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.

How do I install Release in Codex?

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.

Can I use Release in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Release need to run?

Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git and curl).

Does Release access the network?

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.

Is Release safe to install?

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.

What licence does Release use?

Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release use?

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.

What are the alternatives to Release?

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.

Who maintains Release?

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.