finalize-us
End-of-user-story procedure — commit, push, PR, merge, version bump, roadmap update, wiki sync, branch cleanup
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
End-of-user-story procedure — commit, push, PR, merge, version bump, roadmap update, wiki sync, branch cleanup
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Reference pack for Open Garden Planner's SHIPPED 3D + sun/shade subsystems (Phase 14, v1.24.5 – v1.24.12 — complete; epic #255 closed). Load this skill when MAINTAINING or debugging any of it: 3D view, Qt3D usage, sun path or solar position math, shadow projection/casting, shade or hours-of-sun heatmaps, object height property, seasonal/time-of-day sun animation, first-person walkthrough, or growth visualization. It is a reference, NOT a plan — its "TO BUILD" markers are historical and that code already exists. Also load when someone says "sun study", "shade map", "solar", "azimuth", "elevation angle", "shadow length", "height of fence/wall/tree", or asks which 3D engine to use. Contains verified repo asset inventory, the NOAA solar formulas with pinned reference numbers, Y-axis discipline for azimuth→scene conversion, and GO/NO-GO gates for the 3D engine spike.
The load-bearing architecture contract for Open Garden Planner: the invariant table, the module dependency map, the command-pattern write path, and the known weak points. Load this BEFORE designing any feature, adding a module or package, or touching serialization (.ogp / FILE_VERSION), undo/redo, layers, beds/containers/plant-parents, task status, plant sizing, rotation/resize geometry, or the agent_api (MCP) surface — and whenever you are asking "is this allowed architecturally?", "does an ADR already cover this?", or "which predicate / write path / chokepoint do I use?". Also load it before reviewing someone else's design.
Load when doing anything outward-facing for Open Garden Planner: writing or editing the README, release notes, announcements, wiki pages, or any public claim about capabilities; adding or upgrading a dependency (license-compatibility check); integrating or documenting an external service (Google Maps, plant APIs, weather); answering licensing questions (GPLv3, PyQt6, asset/texture licensing); positioning the project against other tools; or publishing benchmarks / accuracy claims. This skill is the anti-oversell guardian — it defines what may be claimed today, what must not be, and the trust obligations (checksums, unsigned installer, CI-owned releases) that come with every release.
The ambition map for Open Garden Planner — five open research/engineering frontiers where THIS project could advance the state of the art, each with the verified in-repo asset that makes it credible, the first three concrete steps, and a falsifiable "you have a result when…" milestone. Load this when: picking the next big direction; evaluating whether an idea is genuinely novel or already solved elsewhere; scoping Package D2/D3 (agent write tools, domain intelligence) or Phase-15+ ambitions (visual refresh, Phase 16 platform work); someone asks "what should this project do next" or "where is the frontier here"; or you are about to resurrect a retired idea and need to check whether it was deliberately killed. Everything in here is OPEN or CANDIDATE work — nothing in this file is shipped unless explicitly marked as an existing asset.
Evidence-based debugging via targeted verbose instrumentation. Apply at the first sign of any non-obvious bug — before theorising. Grows with each bug fixed in this project.
Catalog of every configuration axis in Open Garden Planner: QSettings keys (AppSettings), UI-state persistence (UiStateStore), environment variables (.env / OGP_GOOGLE_MAPS_KEY / QT_QPA_PLATFORM / PYTHONUTF8), project-file version + per-plan settings, hidden-feature toggles in code, tooling config (pyproject/ruff/mypy/pytest/pins/ogp.spec), and CI knobs. Load this when: adding or changing a setting or flag; wondering what a settings key does or what its default is; configuring environment variables or .env; touching the Preferences dialog; deciding whether a change needs a FILE_VERSION bump; or a feature seems mysteriously disabled (hidden panel, missing API key, default-off snap mode). Includes the "how to add a setting" checklist.
| name | finalize-us |
| description | End-of-user-story procedure — commit, push, PR, merge, version bump, roadmap update, wiki sync, branch cleanup |
| user_invocable | true |
| argument | US number and PR title, e.g. 'US-11.2 Plant spacing circles' |
Run the full post-approval wrap-up for a completed user story. This skill assumes the code is already approved and all tests pass. All issues identified and corrected during implementation and manual testing must be documented in the arc42 docs before this step.
master; work from the feature branch first.gh pr checks --watch --fail-fast for PR checks, and a release-tag change (top tagName differs from the one captured before merge) for releases. Never grep $(date ...): local-vs-UTC createdAt mismatches and same-day re-runs make date matching unreliable, and a date match cannot detect failure (issue #229).gh.exe path: "C:\Program Files\GitHub CLI\gh.exe".Verify branch and clean scope
git status
git branch --show-current
git diff --stat
Confirm you are on the intended feature branch and understand exactly what will ship.
Run final local quality checks
Use the checks required by CLAUDE.md for the touched feature. At minimum, run the relevant tests and lint checks; if UI strings changed, include translation validation.
Run an independent PR review
Launch the local .claude/agents/senior-reviewer.md agent in a fresh, isolated worktree to review the branch as if it were an external reviewer. The review should look for correctness issues, regressions, missing tests, translation misses, and security concerns. Treat the result as an input to the finalization decision, not as a rubber stamp.
Apply any fixes from review Re-run the affected checks after fixes. If the reviewer found nothing actionable, note that in the PR summary.
Commit all staged/unstaged changes on the feature branch:
git add <changed files>
git commit -m "feat(US-X.X): <description>"
Include Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>.
Push the feature branch:
git push -u origin feature/US-X.X-short-description
Create PR via GitHub CLI:
"C:\Program Files\GitHub CLI\gh.exe" pr create --title "feat(US-X.X): Title" --body "..."
Body must include ## Summary (bullet points), ## Test plan (checklist), and the Claude Code footer. Include a short note if an independent PR review was run and whether it produced changes.
Gate on CI, capture the current tag, then merge.
First wait for the PR's checks to pass — --fail-fast exits non-zero on the first failure, so a red CI is surfaced instead of silently waited on. Do not merge if this fails; stop and report the failing check.
"C:\Program Files\GitHub CLI\gh.exe" pr checks <PR#> --watch --fail-fast
Then capture the latest release tag before merging (the merge is what triggers release.yml), so step 9 can wait on the tag changing rather than on a date:
before_tag=$("C:\Program Files\GitHub CLI\gh.exe" release list --limit 1 --json tagName --jq '.[0].tagName')
Then merge via GitHub CLI (--admin covers branch protection / draft→ready; checks are already green):
"C:\Program Files\GitHub CLI\gh.exe" pr merge <PR#> --squash --delete-branch --admin
Wait for the CI release by tag transition — the CI release workflow (release.yml) auto-creates a release + tag on every non-chore push to master. Default is patch bump; for minor/major add the minor or major label to the PR before merging.
Poll until the top tag differs from before_tag (timezone-independent; also correct when two releases land the same day). Never match on $(date ...) — local-vs-UTC createdAt mismatches make date matching unreliable (issue #229).
new_tag="$before_tag"
for _ in $(seq 1 40); do # ~10 min ceiling; the release runs in ~3 min
new_tag=$("C:\Program Files\GitHub CLI\gh.exe" release list --limit 1 --json tagName --jq '.[0].tagName')
[ "$new_tag" != "$before_tag" ] && break
sleep 15
done
if [ "$new_tag" = "$before_tag" ]; then
echo "No new release after merge — check the release workflow before continuing."; exit 1
fi
"C:\Program Files\GitHub CLI\gh.exe" release list --limit 1
If no new tag appears, stop and report — do not run the version bump against the stale tag.
Version bump — sync source files to the CI-created release:
"C:\Program Files\GitHub CLI\gh.exe" release list --limit 1 --json tagName --jq '.[0].tagName'
Update pyproject.toml and src/open_garden_planner/__init__.py to match.
CLAUDE.md: change the Phase progress row to ✅../open-garden-planner.wiki/Roadmap.md: mark the same story completegit add pyproject.toml src/open_garden_planner/__init__.py CLAUDE.md
git commit -m "chore: sync version to vX.Y.Z after US-X.X PR #NNN"
git push origin master
cd ../open-garden-planner.wiki
git add Roadmap.md && git commit -m "Update roadmap: US-X.X complete" && git push
git branch -d feature/US-X.X-short-description