Skip to main content Inicio Creadores whyzsm tiny-agents harness-release
harness-release Generic release automation for projects using Keep a Changelog + GitHub. Single confirmation gate then end-to-end automation: bump detection, CHANGELOG promotion, PR/main merge, tag, GitHub Release. Trigger: release, version bump, publish. Do NOT load for: implementation, review, planning, setup.
Ir a la instalación Skills Marketplace Descubre y explora habilidades de IA creadas por la comunidad.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Copiar promptMostrar detalles del prompt Un comando directo omite el prompt de revisión. Revisa el origen antes de ejecutarlo.
npx skills add https://github.com/whyzsm/tiny-agents --skill harness-releaseEl comando permanece en una sola lÃnea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Descargar Zip Descargando... Más de este repositorio tech-tmax-backend-architect-team Single-Agent T-MAX Java backend architecture and engineering rule package. Use when Codex must design, implement, review, or diagnose T-MAX backend services involving Java 8, Spring Boot, Kylin, MyBatis XML, TiDB/MySQL, Apollo/Nacos, Feign, AnePageHelper, ResponseResult/DataGridResult, UEP export, Redis, RabbitMQ, or Maven multi-module repositories. Routes one Agent through repository intake, architecture decisions, API/data contracts, implementation diagnosis, quality/security review, and bounded evidence loops while keeping builds, tests, live calls, commits, and pushes as separate authority boundaries.
Create polished consulting-style single-file HTML research reports from messy business notes, screenshots, metrics, and iterative user feedback. Use this skill whenever the user asks for a åšè¯¢é£/èŸçåšè¯¢é£/ç ç©¶æ¥å/æ±æ¥æ¥å/HTMLæ¥å, wants business or AI landing-practice material turned into a management-facing report, asks to add charts/diagrams, or asks to update report metrics and keep the whole HTML report consistent.
harmonyos-app-store-self-check Audit HarmonyOS applications for AppGallery/AGC release readiness, including Huawei UX/HMI controls, system-feature integrations, and performance gates for multi-input interaction, latency, frame rate, content display, memory, and CPU. Use when users ask for éž¿èäžæ¶èªæ£ãåºçšåžåºå®¡æ žãAGCååžåæ£æ¥ãæ§ä»¶/ç³»ç»ç¹æ§/人æºäº€äº/çŸå/éç§/æé/æªåŸ/æ§èœæ žå¯¹æ release å
éšçŠ, especially for Stage-model projects with module.json5, build-profile.json5, hvigorw, and local-first data constraints.
Ocupaciones relacionadas SOC
Basado en la clasificación ocupacional SOC
Explorador de archivos
5 archivos name harness-release description Generic release automation for projects using Keep a Changelog + GitHub. Single confirmation gate then end-to-end automation: bump detection, CHANGELOG promotion, PR/main merge, tag, GitHub Release. Trigger: release, version bump, publish. Do NOT load for: implementation, review, planning, setup. description-en Generic release automation for projects using Keep a Changelog + GitHub. Single confirmation gate then end-to-end automation: bump detection, CHANGELOG promotion, PR/main merge, tag, GitHub Release. Trigger: release, version bump, publish. Do NOT load for: implementation, review, planning, setup. description-ja æ±çšãªãªãŒã¹èªååã¹ãã«ãKeep a Changelog ãš GitHub ã䜿ããããããããžã§ã¯ãã§åäœãåäžç¢ºèªã²ãŒãã§ bump å€å®ã»CHANGELOG ææ Œã»PR/main åæ ã»ã¿ã°ã»GitHub Release ãŸã§å
šèªåå®è¡ããããªãªãŒã¹ãããŒãžã§ã³ãã³ããã¿ã°äœæãå
¬éã§èµ·åãå®è£
ã»ã³ãŒãã¬ãã¥ãŒã»ãã©ã³ãã³ã°ã»ã»ããã¢ããã«ã¯äœ¿ããªãã kind workflow purpose Release projects through changelog, version, PR/main merge, tag, and GitHub Release gates trigger release, version bump, publish shape workflow role orchestrator pair harness-review owner harness-core since 2026-05-05 allowed-tools ["Read","Write","Edit","Bash","AskUserQuestion","Skill"] argument-hint [patch|minor|major|--dry-run] context fork effort high user-invocable true
Harness Release (æ±çš)
Keep a Changelog + GitHub ã䜿ããããããããžã§ã¯ãåã ã®æ±çšãªãªãŒã¹èªååã¹ãã«ã
èšèšåå : åäžç¢ºèªã²ãŒãããŠãŒã¶ãŒã¯ 1 åã ãå
šäœèšç»ãèŠãŠæ¿èªãããæ¿èªåŸã¯ãã¡ã€ã«æžãæã â commit â branch push â PR äœæ/æŽæ° â default branch ãž merge â default branch äžã§ tag â GitHub Release ãŸã§ãäžæãªãå®è¡ããã
Release complete ã®å®çŸ© : release ã¯ãtag ãš GitHub Release ãäœã£ããã ãã§ã¯å®äºã§ã¯ãªãã察象 work ãš release bump ã default branchïŒéåžž mainïŒã« merge æžã¿ã§ãrelease tag ã default branch å°éå¯èœ commit ãæããGitHub Release ããã® tag ãå
¬éããŠããç¶æ
ãå®äºãšããã
Literal invocation note : ãã® skill ã®å
¥å£ã¯ harness-release, /release, /release patch, /release --dry-run ã®ãã㪠literal command ããã®ãŸãŸäœ¿ãã
CC runtime hard floor ãšã®é¢ä¿
Claude Code 2.1.183+ ã® runtime hard floor 㯠GitHub CLI release publish ç³»ã³ãã³ããæ§é çã« deny ãã (Anthropic 補å仿§ãsettings.json ã® permissions.ask ã§èŠããªã)ãæ¬ skill 㯠publish èªäœãå®è¡ããã.github/workflows/release.yml (tag push trigger) ã«å§è²ãããskill 㯠tag push ãŸã§ã§è²¬åãå®äºãããã®åŸ scripts/release-verify-publish.sh ã§ workflow ã«ããå
¬éã verify ããã
Revert æ¡ä»¶ : CC ã runtime hard floor ã« user explicit approval path ãæäŸããããPost-Gate ã«çŽæ¥ publish step ãæ»ãããšãæ€èšããã
Bare invocation contract
if $ARGUMENTS == "":
â ãä»ãŸã§ã®äœæ¥ãã³ãããããPR/main åæ ãŸã§å®äºããŠãªãªãŒã¹ãããããšè§£éããReview Gate æ€åºãå®è¡ãã
â 察象 work ã 1 ã€ã«ç¢ºå®ã§ããå Žåã ã Step 0 (Review Gate) ãžèªåé²è¡ãã
â 察象ãäžæãŸã㯠review state ãç¡ãå Žå㯠AskUserQuestion ã§éžæè¢ãåºããŠããé²ãã
åŒæ°ãªãåŒã³åºãæã®æåã®å¿çã§å¿
ãæ¬¡ã® literal marker ãåºåãã:
RELEASE_AUTOSTART: target=<work-summary>, base_ref=<ref>, mode=<patch|minor|major|auto>
ãã¿ã¹ã¯ãäžæç¢ºããæç€ºãåŸ
ã¡ãŸãããã¿ã¹ã¯ããããŸãããã远å ã®æç€ºããåŸ
ã¡ããŸããã¯çŠæ¢è¡åã
Output Contract (P35: ãæ¢ãŸã£ãããã«èŠãããUX 察ç)
skill çµè«æã® output ã® æåŸã® 1 è¡ ã¯å¿
ã P35 footer ãå«ããfooter ã¯æ¬æ (user-facing prose) ãšåãèšèªã§åºåããïŒèšèªè§£æ±ºã¯æ¢åã®èšèªã«ãŒã«ã«åŸããfooter å¥çŽã¯èšèªãåå®çŸ©ããªãïŒããã㯠<local-command-stdout> çµç±ã®è¡šç€ºã§ user ããæ¢ãŸã£ãããšæãã UX åé¡ãžã®æç€ºç㪠instruction (patterns.md P35) ã§ãæå³ã¯èšèªã«äŸåããªããã literal ã¯èšèªããšã«åãæ¿ãã (#208):
ja: âãã®çµæã¯ Claude ãèŠçŽããŸããEnter ããŒã§æ¬¡ãžé²ãããæ°èŠ prompt ã§å¥ã®æç€ºãåºããŠãã ããã
en: âClaude will summarize this result. Press Enter to continue, or send a new prompt for a different instruction.
ãã®ä»ã®èšèª: åãæå³ã® 1 è¡ãæ¬æãšåãèšèªã§åºåãã
Language
User-facing prose follows the explicit session or project language.
If no language is configured, use English. Use Japanese only when
i18n.language: ja, , or an explicit session
instruction requests Japanese output.
Machine-readable values stay English.
CLAUDE_CODE_HARNESS_LANG=ja
harness-release / /release ã ããå
¥åãããå Žåãããã¯
ãä»ãŸã§ã®äœæ¥ãã³ãããããPR/main åæ ãŸã§å®äºããŠãªãªãŒã¹ãããã ãšããæå³ãšããŠæ±ãã
æ§è¡šçŸã® ãä»ãŸã§ã®äœæ¥ãã³ãããããŠãªãªãŒã¹ãããã ãåãæå³ã ããå®äºæ¡ä»¶ã«ã¯ PR/main åæ ãå¿
ãå«ããã
ãã¿ã¹ã¯ããããŸããããæç€ºãåŸ
ã¡ãŸããã§æ¢ãŸã£ãŠã¯ãããªãã
bare release ã§ã¯ãéåžžã® release preflight ã®åã« Review Gate ãš Work Commit Gate ãå®è¡ããã
git status --porcelain ãš git log @{upstream}..HEAD / main..HEAD ã確èªãããä»ãŸã§ã®äœæ¥ãã®å¯Ÿè±¡ãç¹å®ãã
.claude/state/review-result.json ãš .claude/state/review-approved.json ã確èªãã察象 work ã« APPROVE æžã¿ review ãããã確èªãã
APPROVE æžã¿ review ãç¡ãå Žå㯠AskUserQuestion ã§ç¢ºèªãã
ãŠãŒã¶ãŒããã¬ãã¥ãŒããéå§ããéžãã ããharness-review ãèµ·åããAPPROVE ã«ãªããŸã§ release ãžé²ãŸãªã
harness-review ã REQUEST_CHANGES ãè¿ããå Žå㯠release ãä¿çããharness-work ã§ä¿®æ£ããŠãã harness-review ãåå®è¡ãããããã APPROVE ãŸã§ã«ãŒããã
harness-review ã APPROVE ãè¿ããåŸãworking tree ã®äœæ¥ commit ãäœã
working tree clean ã«ãªã£ãŠããéåžžã® release preflight / confirmation gate / PR merge / tag / GitHub Release ãžé²ã
Review Gate AskUserQuestion harness-release å®è¡æã« review approval ã確èªã§ããªãå Žåã¯ãæšæž¬ã§ release ããªãã
次㮠Ask ãåºãã
question: "harness-release ã¯ä»ãŸã§ã®äœæ¥ãã³ãããããŠãªãªãŒã¹ããŸããããã®äœæ¥ã® APPROVE review ãèŠã€ãããŸãããã©ãé²ããŸããïŒ"
options:
- label: "ã¬ãã¥ãŒããéå§ (Recommended)"
description: "harness-review ãå®è¡ããAPPROVE ã«ãªã£ãå Žåã ã commit/release ãžé²ã¿ãŸãã"
- label: "release dry-run"
description: "ãã¡ã€ã«ãæžãæãããrelease èšç»ãšäžè¶³ gate ã ã確èªããŸãã"
- label: "äžæ¢"
description: "review ã release ãè¡ããæ¢ããŸãã"
ãŠãŒã¶ãŒããã¬ãã¥ãŒããéå§ããéžãã å Žåã¯ãåãã»ãã·ã§ã³å
ã§ harness-review ããå§ããã
harness-review ã®å¯Ÿè±¡æ±ºå®ã¯ harness-review åŽã® bare review contract ã«åŸãã
review ã APPROVE ãªãããã®ãŸãŸ harness-release ã® Work Commit Gate ãžæ»ãã
review ã REQUEST_CHANGES ãªã release ã¯ä¿çããharness-work ã§ä¿®æ£ããŠãã harness-review ãåå®è¡ããã
ãã®ä¿®æ£åŸåã¬ãã¥ãŒ loop 㯠APPROVE ãŸã§ç¶ç¶ããã
Persist Verdict after Review Gate (required / #218 fix) harness-review å§è²åŸãå¿
ã .claude/state/review-result.json ã« verdict ãæ°žç¶åãããŠãã
ããšã確èªãããharness-review åŽã® Persist Verdict step ãèžãŸããŠããã°æ¢ã«ä¿åæžã¿ã ãã
èžã¿å¿ãæã® äºæ®µé²åŸ¡ ãšããŠãReview Gate åŽã§ã次㮠check + è£å®ä¿åãè¡ãããããæ¬ ãããš
Work Commit Gate (Step 6) ã® git commit ã PreToolUse commit guard ã§ãããã¯ããã ã
if [ -f .claude/state/review-result.json ] \
&& [ "$(jq -r '.verdict // empty' .claude/state/review-result.json 2>/dev/null) " = "APPROVE" ]; then
echo "review-result.json already persisted with APPROVE"
else
mkdir -p .claude/state
cat > .claude/state/tmp-review-result.json <<'JSON'
{ "schema_version" : "review-result.v1" , "verdict" : "APPROVE" , ... }
JSON
bash "${HARNESS_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-$PWD } } /scripts/write-review-result.sh" \
.claude/state/tmp-review-result.json \
"$(git rev-parse --short HEAD 2>/dev/null || true) "
rm -f .claude/state/tmp-review-result.json
fi
multi-commit ã»ãŒããã£: Phase 94.1.3 ã§ PostToolUse commit-cleanup ã VERSION / .claude-plugin/plugin.json /
harness.toml / CHANGELOG.md ã®ã¿ã® bookkeeping commit ãèªèãæ¿èªåé€ã skip ããããã«ãªã£ãããã
Post-Gate ã® version bump commit (Step 11) 㯠harness-release ã®èªå commit ã§ãã®ãŸãŸééããã
ãã以åã®ããŒãžã§ã³ (4.15.0 以å) ã䜿ãå Žåã¯ãWork Commit Gate ãš version bump commit ã®éã«
å床 Persist Verdict ãè¡ãããšã
ãŠãŒã¶ãŒã«æ»ããŠããã®ã¯æ¬¡ã®å Žåã ãã
ä¿®æ£ã«ä»æ§æ£æ¬ / Plans.md / API / permission / migration / billing ãªã©ã®æææ±ºå®ãå¿
èŠã§ãAskUserQuestion ãå¿
èŠ
ä¿®æ£æ¹éãè€æ°ãããã©ããæ¡ããã§ãŠãŒã¶ãŒäŸ¡å€ãäºææ§ãå€ãã
ãŠãŒã¶ãŒã Ask ã§ release dry-run ãŸãã¯ äžæ¢ ãéžãã
REQUEST_CHANGES åäœãæçµåæ¢çç±ã«ããŠã¯ãããªãã
Work Commit Gate bare release ã§ working tree ã«æªã³ããã倿Žãããå Žåãrelease version bump commit ãšã¯å¥ã«ã
review æžã¿ work commit ãå
ã«äœãã
git status --short
git diff --stat
git add <reviewed files>
git commit -m "<type>: <summary>"
commit message 㯠review summary / Plans.md task / branch name ããçãçæããã
倿ã§ããªãå Žå㯠AskUserQuestion ã§ 2ã3 åã® commit message åè£ãåºãã
work commit äœæåŸã« .claude/state/review-result.json ã® commit_hash ã確èªãŸãã¯æŽæ°ãã
release preflight ãžé²ãã
éåžžã® release preflight ã«å
¥ã£ãåŸã¯ããããŸã§éã working tree dirty ã fail ãšããã
dirty tree ã®ãŸãŸ version bump / tag / GitHub Release ã«é²ãŸãªãã
Quick Reference /release
/release patch
/release minor
/release major
/release --dry-run
åææ¡ä»¶ ãã®ã¹ãã«ãåããããžã§ã¯ãã¯ä»¥äžãæºããå¿
èŠããããŸã:
CHANGELOG.md ã Keep a Changelog 圢åŒ
[Unreleased] ã»ã¯ã·ã§ã³ãååšãã
以äžã®ããããã® version file ãæã€:
VERSION (åç¬ãã¡ã€ã«)
package.json (npm)
pyproject.toml (Python, [project] ãŸã㯠[tool.poetry])
Cargo.toml (Rust, [package])
gh CLI ãã€ã³ã¹ããŒã«æžã¿ã§ãèªèšŒæžã¿
git ãªã¢ãŒã origin ã GitHub ãæã
Claude Code plugin project ã®å Žåã¯ãclaude CLI ã plugin tag ããµããŒãããŠãã
ããããæºããããªãå ŽåãPreflight ã§ detect ã㊠abort ããŸãã
prUrlTemplate ã«ãã multi-host review URL ã¯å°æ¥åè£ãšããŠèªèãããã
ãã®ã¹ãã«ã® release automation ã¯ä»ã gh CLI ãš GitHub remote ã primary path ãšããã
owner / branch / release asset / CI metadata ã®èªåååŸã¯ host ããšã®å·®ã倧ãããããPhase 56.2.3 ã§ã¯ docs-only ã«çããã
åäžã²ãŒããã㌠[Bare release only: äœæ¥ review/commit åæ®µ]
â
0. Review Gate (æªã¬ãã¥ãŒãªã AskUserQuestion â harness-review)
0.5 Work Commit Gate (review APPROVE æžã¿ work ã release bump ãšåã㊠commit)
â
[Pre-Gate: æ
å ±åéã®ã¿ããã¡ã€ã«æªå€æŽ]
â
1. Preflight (working tree clean / CHANGELOG / gh çã®ç¢ºèª)
2. Version file èªåæ€åº
3. çŸåšããŒãžã§ã³ã®èªã¿åã
4. Claude plugin tag preflight (plugin project ã®å Žåã®ã¿)
5. [Unreleased] å
容ã®è§£æ â bump level æšå®
6. æ°ããŒãžã§ã³ç®åº
7. CHANGELOG å·®åãã©ããäœæ (ã¡ã¢ãªäž)
8. GitHub Release notes ãã©ããäœæ (ã¡ã¢ãªäž)
â
ââââââ åäžç¢ºèªã²ãŒã âââââââ
ãŠãŒã¶ãŒã«å
šèšç»ã 1 åã ãæç€º:
- æ€åºããã version file
- çŸããŒãžã§ã³ â æ°ããŒãžã§ã³
- bump å€å®çç± ("[Unreleased] ã« ### Added ããããã minor" ç)
- CHANGELOG 倿Žãã¬ãã¥ãŒ
- GitHub Release notes ãã©ãã
- ã³ããã察象ãã¡ã€ã«äžèЧ
- æçµã¢ã¯ã·ã§ã³ (branch push + PR merge + tag + release publish)
ãŠãŒã¶ãŒå¿ç:
"yes" â Post-Gate ãžé²ã
"<ä¿®æ£æç€º>" â æç€ºã«å¿ã㊠draft ãåçæãå確èª
"cancel/no" â äœãããçµäº
â
ââââââââââââââââââââââââ
â
[Post-Gate: æ¿èªåŸãäžæãªã]
9. Version file æžãæã
10. CHANGELOG.md æžãæã ([Unreleased] â [X.Y.Z] ææ Œ + compare link)
11. git add + commit
12. release branch push
13. PR äœæ/æŽæ°
14. default branch ãž merge
15. default branch ã fetch/checkout ããrelease commit ãå°éå¯èœã§ããããšã確èª
16. Claude plugin tag validation + tag (plugin project ã®å Žåã®ã¿)
17. GitHub Release çš semver tag (å¿
èŠãª project ã®ã¿)
18. git push origin <default-branch> --tags
19. tag push åŸã`.github/workflows/release.yml` ã release ãå
¬éãã`release-verify-publish.sh` ã§ verify
20. å®äºå ±å
Pre-Gate 詳现
1. Preflight
command -v gh >/dev/null || { echo "gh CLI ããããŸãã" ; exit 1; }
command -v python3 >/dev/null || { echo "python3 ãå¿
èŠã§ã" ; exit 1; }
if [ -n "$(git status --porcelain) " ]; then
echo "working tree ã«æªã³ããã倿ŽããããŸã" ; exit 1;
fi
[ -f CHANGELOG.md ] || { echo "CHANGELOG.md ããããŸãã" ; exit 1; }
grep -q "^## \[Unreleased\]" CHANGELOG.md || { echo "[Unreleased] ã»ã¯ã·ã§ã³ããããŸãã" ; exit 1; }
scripts/release-preflight.sh
ãã® working tree clean check ã¯éåžž release preflight ã® gate ã§ããã
bare release ã§ãä»ãŸã§ã®äœæ¥ãã commit ãããå Žåã¯ããã® check ã®åã« Review Gate ãš Work Commit Gate ãå®äºãããã
æªã¬ãã¥ãŒã® dirty tree ããã® check ã ãã§ abort ããŠçµããããŠã¯ãããªãã
scripts/release-preflight.sh 㯠tag äœæåã« opencode/, skills-codex/, codex/.codex/skills/ ã® mirror drift ãæ€åºãããnode scripts/build-opencode.js ãå·®åãçæããå Žå㯠release ãæ¢ãããã®å·®åã commit ããŠãã tag ã«é²ãã
2. Version File èªåæ€åº 以äžãåªå
é ã§æ¢çŽ¢ãæåã«èŠã€ãã£ããã®ãæ£æ¬ãšãã:
import os, json, re
import tomllib
def detect_version_file ():
if os.path.exists("VERSION" ):
with open ("VERSION" ) as f:
return ("VERSION" , f.read().strip(), None )
if os.path.exists("package.json" ):
with open ("package.json" ) as f:
data = json.load(f)
return ("package.json" , data["version" ], None )
if os.path.exists("pyproject.toml" ):
with open ("pyproject.toml" , "rb" ) as f:
data = tomllib.load(f)
if "project" in data:
return ("pyproject.toml" , data["project" ]["version" ], "[project]" )
if "tool" in data and "poetry" in data["tool" ]:
return ("pyproject.toml" , data["tool" ]["poetry" ]["version" ], "[tool.poetry]" )
if os.path.exists("Cargo.toml" ):
with open ("Cargo.toml" , "rb" ) as f:
data = tomllib.load(f)
return ("Cargo.toml" , data["package" ]["version" ], "[package]" )
raise RuntimeError("No supported version file found" )
3. Claude Plugin Tag Preflight .claude-plugin/plugin.json ãååšãã project ã§ã¯ãéåžžã® GitHub Release tag ãšã¯å¥ã« Claude plugin release tag ãäœãã
ã²ãšããšã§èšããšãgit tag -a ãæã§çµã¿ç«ãŠãåã«ãClaude Code æ¬äœã® plugin validation ã«éããŠãã {plugin-name}--v{version} tag ãäœãã
Pre-Gate ã§ã¯ãã¡ã€ã«ãæžãæããã以äžã確èªããã
version sync 㯠grep / sed ã§æŸãããJSON 㯠structured parser ã§èªã:
command -v claude >/dev/null || { echo "claude CLI ããããŸãã" ; exit 1; }
claude plugin validate .claude-plugin/plugin.json
HARNESS_PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-.} "
python3 "${HARNESS_PLUGIN_ROOT} /scripts/check-release-version-sync.py" --root .
claude plugin tag .claude-plugin --dry-run
${HARNESS_PLUGIN_ROOT}/scripts/check-release-version-sync.py ã¯ãååšãã release surface ããã¹ãŠèªã¿åããcanonical ã VERSION > package.json > .claude-plugin/plugin.json > .codex-plugin/plugin.json ã®é ã§æ±ºããã
ãã®ããã§ã以äžã®äžäžèŽã»æ¬ èœã 1 ã€ã§ãããã° tag / release ã«é²ãŸãªã:
VERSION
package.json ã® .version
.claude-plugin/plugin.json ã® .version
.codex-plugin/plugin.json ã® .version
.claude-plugin/marketplace.json ã® .metadata.version
.claude-plugin/marketplace.json ã® .plugins[].versionïŒé
åå
ã®å plugin entryïŒ
äžäžèŽæã¯ãã©ã® surface ã canonical ãšéããããŸãã¯ã©ã® field ã missing / invalid ãã衚瀺ããã
æ©æ¢°åŠçã CI ã§èªãå Žå㯠--json ã䜿ã:
python3 "${HARNESS_PLUGIN_ROOT} /scripts/check-release-version-sync.py" --root . --json
ãã® check 㯠3 ã€ã®äºæ
ãé²ãããã«ãã:
VERSION ãš .claude-plugin/plugin.json ã® version ãããããŸãŸ tag ãåãäºæ
package.json / marketplace entry ã® version ãå€ããŸãŸ release workflow ã«é²ãäºæ
plugin manifest / marketplace entry ã® validation ãéãããããšã§ plugin install / update åŽã§è©°ãŸãäºæ
--dry-run ã§ã¯ claude plugin tag ãå®éã«äœã tag åãšå
éšã® git tag -a / push çžåœã³ãã³ããèŠãããããã§èŠãã command ã Confirmation Gate ã® plan ã«å«ããã
4. Bump èªåæšå® [Unreleased] çŽäžã®èŠåºããè§£æã㊠bump level ãæ±ºå®:
[Unreleased] å
ã®èŠåºã æšå® bump ### Breaking Changes ãŸã㯠### Removed ãå«ãmajor ### Added ãå«ã (Removed/Breaking ãªã)minor ### Fixed / ### Changed / ### Security ã®ã¿patch 空ã»ã¯ã·ã§ã³ error: ãªãªãŒã¹å¯Ÿè±¡ãªã
ãŠãŒã¶ãŒã /release patch|minor|major ã§æç€ºæå®ããå Žåã¯ãã¡ããåªå
ã
詳现: bump-detection.md
5. CHANGELOG ãã©ããäœæ (ã¡ã¢ãªäž) 以äžãèšç®ããŸã æžã蟌ãŸãªã:
## [Unreleased] ã®æ¬æãåãåºã
## [Unreleased] ãš ## [<previous>] ã®éã« ## [<new>] - YYYY-MM-DD ãæ¿å
¥ãã圢ãäœæ
æ«å°Ÿ compare link:
[Unreleased]: .../compare/v<prev>...HEAD â v<new>...HEAD
[<new>]: .../compare/v<prev>...v<new> ã远å
repo URL ã¯æ¢åã® [Unreleased]: è¡ããåçæœåº
6. Release Notes ãã©ããäœæ (ã¡ã¢ãªäž) ## [<new>] ã»ã¯ã·ã§ã³ã®å
容ãå
ã«ãGitHub Release çšã®ããŒã¯ããŠã³ãçæ:
## What's Changed
**<ãªãªãŒã¹ããŒã(1è¡)>**
### Before / After
<ããŒãã«>
### Added / Changed / Fixed / Removed
<該åœã»ã¯ã·ã§ã³ãã³ããŒ>
---
ð€ Generated with [Claude Code ](https://claude.com/claude-code )
Confirmation Gate ãã¹ãŠã®ãã©ãããæã£ããããŠãŒã¶ãŒã« 1 åã ãæç€º:
âââââââââââââââââââââââââââââââ
Release Plan: v<old> â v<new> (<bump>)
âââââââââââââââââââââââââââââââ
Version file: <detected file>
Bump reason: <why this level was chosen>
CHANGELOG changes:
[Unreleased] ã« <N> é
ç®ã®å€æŽãæ€åº
[<new>] - YYYY-MM-DD ãšããŠç¢ºå®
Compare link ã远å
GitHub Release notes preview:
<æåã® 10 è¡>
...
Files to modify:
- <version file>
- CHANGELOG.md
Final actions:
- git commit -m "chore: release v<new>"
- git push origin <release-branch>
- gh pr create/update + gh pr merge into <default-branch>
- git fetch origin <default-branch> && git checkout <default-branch>
- claude plugin tag .claude-plugin --push --remote origin # plugin project ã®å Žåãdefault branch äžã§å®è¡
- git tag -a v<new> # GitHub Release çš semver tag ãå¿
èŠãªå Žåãdefault branch äžã§äœæ
- git push origin <default-branch> --tags
- (tag push åŸã¯ GitHub Actions release workflow ãèªåã§ release å
Ž)
Proceed? [yes / cancel / <ä¿®æ£æç€º>]
Post-Gate 詳现 æ¿èªåŸã¯äžæãªãã§å®è¡ã倱ææã¯ä»¥äžã®æ¹é:
倱æç®æ åŸ©æ§ ãã¡ã€ã«æžãæã倱æ ããã§ abortãããŒã«ã«ã¯ dirty ãªãŸãŸäººéã倿 commit 倱æ hook æåŠçããŠãŒã¶ãŒã«åå ãæç€ºããŠä¿®æ£ãä¿ã PR äœæ/merge 倱æ release ãæªå®äºãšããŠåæ¢ãtag / GitHub Release ã«ã¯é²ãŸãªã plugin tag validation 倱æ VERSION / .claude-plugin/plugin.json / marketplace entry ã®äžäžèŽãä¿®æ£ããtag äœæã«ã¯é²ãŸãªãpush 倱æ ãªã¢ãŒãåŽã®åé¡ãããŒã«ã« commit/tag ã¯æ®ã
PR / Main Merge Gate Post-Gate ã® release commit åŸã¯ãtag ãäœãåã« GitHub PR ã default branch ãž merge ããã
release_branch="$(git branch --show-current) "
default_branch="${HARNESS_RELEASE_DEFAULT_BRANCH:-main} "
git push -u origin "$release_branch "
gh pr create --base "$default_branch " --head "$release_branch " --title "chore: release v<new>" --body "<release summary>"
gh pr merge --merge --delete-branch=false
git fetch origin "$default_branch " --tags
git checkout "$default_branch "
git pull --ff-only origin "$default_branch "
git merge-base --is-ancestor "<release-commit>" "origin/$default_branch "
æ¢å PR ãããå Žåã¯æ°èŠäœæãããæ¢å PR ã® body ãæŽæ°ã㊠merge ãããrepository policy ã squash merge ãèŠæ±ããå Žåã¯ãrelease commit hash ã§ã¯ãªã release bump ã®å
容ïŒversion files + CHANGELOG + source commitsïŒã default branch ã«å«ãŸããããšã確èªããã
tag ã¯ãã® Gate å®äºåŸãdefault branch ã® HEAD ããã㯠release commit å°éå¯èœãª commit ã«å¯ŸããŠäœããrelease branch äžã ãã«ååšãã commit ãæã tag ã§ GitHub Release ãäœã£ãŠã¯ãããªãã
Claude plugin project ã® tag äœæ .claude-plugin/plugin.json ããã project ã§ã¯ãPR/main merge åŸã« default branch äžã§ããäžåºŠ version sync ã確èªããŠãã plugin tag ãäœã:
HARNESS_PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-.} "
python3 "${HARNESS_PLUGIN_ROOT} /scripts/check-release-version-sync.py" --root .
claude plugin tag .claude-plugin --dry-run
claude plugin tag .claude-plugin --push --remote origin
claude plugin tag ãäœã tag 㯠{plugin-name}--v{version} 圢åŒãæ¢åã® GitHub Release workflow ã vX.Y.Z tag ãåæã«ããŠãã project ã§ã¯ãplugin tag ãšã¯å¥ã« git tag -a v<new> ãäœããplugin é
åžã® tag 㯠claude plugin tag ã«ä»»ããGitHub Release çš semver tag 㯠release automation ã®äºæ surface ãšããŠæ±ãã
Verify Workflow Publish Tag push åŸã.github/workflows/release.yml ã release ãèªåå
¬éãããskill ã¯ä»¥äžã§çµæã verify ãã:
OWNER="$(git remote get-url origin | sed 's|.*github.com[:/]\([^/]*/[^/]*\)\.git|\1|') "
bash scripts/release-verify-publish.sh "v${NEW_VERSION} " "${OWNER} "
ã¿ã€ã ã¢ãŠã: 5 ç§éé à 60 å = æå€§ 5 å pollingã
exit 0: PASS â draft=false äžã€ assets 4 platform æã£ãŠå
¬éæž
exit 2: WARN â timeout (tag 㯠push æžã®ãã abort ãã人é倿ãä¿ã)
exit 3: ERROR â API error (æš©é/èªèšŒåé¡ãæå調æ»ãå¿
èŠ)
Verify 㯠gh api çµç± (gh release prefix 㯠CC runtime hard floor ã§ deny ããããã)ã
--dry-run ã¢ãŒãPre-Gate å
šãŠãå®è¡ããConfirmation Gate ãŸã§ã®å
容ã衚瀺ããããgate ã§æ¢ãŸã Post-Gate ã«é²ãŸãªã ã
Claude plugin project ã®å Žåãdry-run ã§ã python3 "${HARNESS_PLUGIN_ROOT}/scripts/check-release-version-sync.py" --root . ãš claude plugin tag .claude-plugin --dry-run ãå®è¡ããå®éã«äœããã plugin tag åãš push 察象ã衚瀺ãããããã§ VERSION / package.json / .claude-plugin/plugin.json / .codex-plugin/plugin.json / .claude-plugin/marketplace.json ã® version surface ãäžäžèŽãŸãã¯æ¬ èœããŠããã°ãdry-run ã®æç¹ã§æ¢ããã
ç°å¢å€æ° ãããžã§ã¯ãããšã®èª¿æŽã«äœ¿çš:
倿° 説æ HARNESS_RELEASE_PROJECT_ROOTãªããžããªã«ãŒã (ããã©ã«ã: $(pwd)) HARNESS_RELEASE_BRANCHpush 察象ãã©ã³ã (ããã©ã«ã: çŸåšã®ãã©ã³ã) HARNESS_RELEASE_DEFAULT_BRANCHPR merge å
default branch (ããã©ã«ã: main) HARNESS_RELEASE_HEALTHCHECK_CMDPreflight ã§è¿œå å®è¡ããã³ãã³ã HARNESS_RELEASE_SKIP_GH1 ã§ GitHub Release äœæãã¹ããã
CHANGELOG æžãæ¹ã«ãŒã« [Unreleased] ã»ã¯ã·ã§ã³ã¯å¿
ã以äžã®ããããã®ãµãã»ã¯ã·ã§ã³ãæã€:
## [Unreleased]
### Added â minor
### Changed â patch
### Deprecated â minor
### Removed â major
### Fixed â patch
### Security â patch
### Breaking Changes â major (Keep a Changelog éæšæºã ãäžè¬ç)
ãã®ã¹ãã«ã¯ãããã®èŠåºããæ©æ¢°çã«è§£æãããããèŠåºãã®è¡šèšæºãïŒ### Fix / ### Bug Fixes çïŒã¯èªèã§ããŸãããKaCL æšæºã®èŠåºãã䜿çšããŠãã ããã
é¢é£ã¹ãã«
harness-release-internal - æ¬äœ claude-code-harness ã®ãªãªãŒã¹æã«è¿œå ã§èµ°ããã harness åºæ preflight/finalizationïŒé
åžå¯Ÿè±¡å€ïŒ
harness-plan - Plans.md 管ç
harness-review - ãªãªãŒã¹åã®ã³ãŒãã¬ãã¥ãŒ
èšèšææ³
åäžã²ãŒã : ãŠãŒã¶ãŒã®å€æã¿ã€ãã³ã°ã¯ 1 åã ããmini-confirmation ãæããšã©ããŒã¹ã¿ã³ãåããŠæå³ã倱ã
äºåã«å
šãŠæã : Post-Gate ã«å
¥ã£ãŠããã®ãèãçŽãããçŠãããGate åã«å
š draft ãæãã
main åæ ãå®äºæ¡ä»¶ : release tag / GitHub Release 㯠default branch åæ åŸã«ã ãäœããbranch-only release ã¯æªå®äºãšããŠæ±ã
倱æã¯ transparent : éäžã§å€±æãããèªåããŒã«ããã¯ã¯è©Šã¿ãããŠãŒã¶ãŒã«çŸç¶ãæç€ºããŠå€æããã
ãããžã§ã¯ãéäŸå : VERSION file 圢åŒãmirrorãresidue check ãªã©ç¹å®ç°å¢ã®åæãæããªããæ¬äœ harness åºæã®åŠç㯠harness-release-internal ã«åé¢