ワンクリックで
smaqit-release-prepare-files
Validate git state and prepare all files (CHANGELOG.md, version files) for release
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Validate git state and prepare all files (CHANGELOG.md, version files) for release
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Creates a test playbook for a task — `task.test-create [id]`, `test.create [id]`, or any request to generate an E2E test runbook from a task file. Produces a complete, executable playbook under `.smaqit/user-testing/tests/` with build-gate, deploy-gate, and live-service E2E validation where the task touches live services.
End session by documenting the entire conversation. Use at session completion to create history entries.
Bootstrap or refresh a smaqit project by inferentially synchronizing Codex, Claude Code, and GitHub Copilot project instructions around a canonical root AGENTS.md, then creating the base project directories (docs/, assets/, assets/raw/). Use when the user asks to start, initialize, reinitialize, or refresh a smaqit project.
Execute git operations (commit, tag, push) for local releases
Produces a structured parity assessment comparing any two software systems — frameworks, libraries, platforms, or products. Identifies the current project from session context, studies the target system, checks domain compatibility, then outputs validated Mermaid diagrams and a written ASSESSMENT.md. Trigger phrase: `parity.assess <name>`.
Manages a live Q&A knowledge manifest at `.smaqit/compendium.md`. Invoked when the user says `list compendium`, `fetch from compendium [query]`, `update compendium [question]`, or `remove from compendium [question]`. Lists all Q&A entries grouped by category, semantically searches for relevant entries, upserts a Q&A pair (add or update), or removes an entry after confirmation.
| name | smaqit.release-prepare-files |
| description | Validate git state and prepare all files (CHANGELOG.md, version files) for release |
| metadata | {"version":"0.5.0"} |
Validate the repository state and prepare all necessary files for a release, including CHANGELOG.md and optional version files.
Use this skill after obtaining version approval and before executing git operations to:
A. Verify current branch:
git branch --show-current
main or user-specified release branchB. Check version doesn't exist in CHANGELOG.md:
grep "## \\[X.Y.Z\\]" CHANGELOG.md
grep "## \\[0.3.0\\]" CHANGELOG.md)Note: Uncommitted changes are acceptable - they will be handled during git operations step.
A. Collect all changes since last release (reconciliation source):
The release workflow always creates a commit named exactly "Prepare release vX.Y.Z". Use this commit as the authoritative boundary — it is more reliable than git tags (absent in shallow clones) and more precise than PR merge timestamps (which can be incorrectly ordered).
Step 2A-1 — Deepen the clone so the boundary commit is reachable:
git fetch --unshallow 2>/dev/null || git fetch --depth=2147483647 2>/dev/null || true
Step 2A-2 — Find the boundary SHA:
# List all "Prepare release" commits, most recent first
git log --format="%H %s" | grep -iE "^[0-9a-f]+ Prepare release v[0-9]"
Store as <boundary-sha>. Confirm:
git log -1 --oneline "<boundary-sha>"
Step 2A-3 — Collect commits after the boundary:
# PR merge commits (high-level summaries):
git log "<boundary-sha>..HEAD" --merges --pretty=format:"%h %s"
# Individual commits (feature details):
git log "<boundary-sha>..HEAD" --no-merges --pretty=format:"%h %s"
Filter out noise commits from both lists before analysing:
Initial plan — release workflow setup commitsPrepare release v — release boundary markers themselvesMerge pull request .*/copilot/release- — release PR mergesThe remaining commits are the real changelog delta.
Fallback (no "Prepare release" commits found): use git tags:
git fetch --tags --quiet 2>/dev/null || true
git tag --sort=-v:refname | head -1
# Then: git log <last-tag>..HEAD --merges/--no-merges
B. Reconcile [Unreleased] section with collected changes:
Build the authoritative list of changes using the commit delta from Step 2A and the smaqit.release-analysis changes list. The [Unreleased] section is a starting point only — treat it as incomplete.
For each non-noise commit found in the git log range:
[Unreleased]Added, Changed, Fixed, Removed, Deprecated, Security)Minimum completeness check before moving on:
The result should document every meaningful change — not just the version number bump.
C. Move reconciled [Unreleased] content to new version section:
Find the ## [Unreleased] section and move its content to a new version section with current date (YYYY-MM-DD):
## [Unreleased]
(empty or minimal content)
## [X.Y.Z] - YYYY-MM-DD
### Added
- Feature X
### Fixed
- Bug Y
D. Update comparison links at bottom of CHANGELOG.md:
Update the link structure:
[Unreleased]: https://github.com/owner/repo/compare/vX.Y.Z...HEAD
[X.Y.Z]: https://github.com/owner/repo/releases/tag/vX.Y.Z
[Previous]: https://github.com/owner/repo/releases/tag/vPrevious
E. If creating CHANGELOG.md from scratch:
Use Keep a Changelog format:
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [X.Y.Z] - YYYY-MM-DD
### Added
- Initial release
[Unreleased]: https://github.com/owner/repo/compare/vX.Y.Z...HEAD
[X.Y.Z]: https://github.com/owner/repo/releases/tag/vX.Y.Z
A. Ask user for version files:
Common version files by ecosystem:
package.jsonpyproject.toml, setup.py, __init__.pyCargo.tomlB. If repository has obvious version file:
C. If user confirms version files:
X.Y.Z, not vX.Y.Z)Example updates:
package.json:
{
"version": "0.3.0"
}
pyproject.toml:
[project]
version = "0.3.0"
D. If user declines or no version files exist:
Before completing:
Provide a summary of files prepared:
files_modified:
- CHANGELOG.md
- package.json
validation_passed: true
version_synced: true
Output fields:
files_modified: List of files changed during preparationvalidation_passed: Boolean indicating all validations passedversion_synced: Boolean indicating if version files were updated| Error | Suggested Action |
|---|---|
| Version already exists in CHANGELOG.md | Stop and report: "Version X.Y.Z already exists" |
| Not on main branch (local release) | Warn and request confirmation before proceeding |
| Version file has different format | Ask user how to update it (may need custom logic) |
| CHANGELOG.md doesn't exist | Create from scratch using Keep a Changelog template |
git checkout## [0.3.0]), but git tags use 'v' prefix (e.g., v0.3.0)git log[Unreleased] against the commit delta before promoting; the [Unreleased] section is often incomplete or emptyrelease-git-local handles commit grouping