Ownplate Release
This skill drafts a release note for Nakajima-Foundation/ownplate following the project's docs/news/ convention, then runs the workflow that publishes it to docs/RELEASES.md and src/app/admin/News/data.ts.
Use this when the user asks to "リリースノートをつくって" / "v_X.Y.Z_ を出したい" / "make a release note" in this repo.
How the project's release-note machinery works (read once, then follow)
docs/news/current.md is the template skeleton (:title: placeholder + empty - 管理系 / - ユーザー系 headers). It stays in the repo unchanged and is the shape every release copies from. Do not write the release content into current.md.
- For each release, create a new file
docs/news/YYYYMMDD.md with the actual content. Line 1 = title (e.g. vX.Y.Z をリリースしました。), rest = markdown body.
yarn makenews runs batch/news.js, which:
- Concatenates every
YYYYMMDD.md file (sorted desc, ignoring current.md) into docs/RELEASES.md
- Writes a structured array to
src/app/admin/News/data.ts (consumed by the admin News page)
docs/NEWS.md documents this — re-read it if you suspect the format changed. (Note: its wording about "editing current.md over time" is aspirational; in practice releases are written directly into the dated file.)
Pre-release checks
Confirm we're in the ownplate repo and on a clean tree:
git rev-parse --show-toplevel
git status
git branch --show-current
The working tree should be clean and on main (or whatever feature branch the user is preparing the release on — confirm with them).
Get current version + last release tag:
jq -r .version package.json
git tag --list 'v*' --sort=-v:refname | head -3
Ask the user: which version (patch / minor / major) and what's the headline of this release. The headline drives the intro paragraph and the order of bullets.
Confirm the release date with the user. Never assume "today". Releases at this project are typically cut 翌朝 (the next morning) or on a scheduled date, not the moment the note is drafted. Ask: "リリース日はいつですか?(翌朝?)" and use the answer for both the filename (YYYYMMDD.md) and the heading (## vX.Y.Z (YYYY/MM/DD)). Default assumption: 翌朝 = date -v+1d.
Drafting the release note
Resolve the release date (use the date the user gave in the pre-check; if they said "明日朝", run date -v+1d "+%Y/%m/%d" and date -v+1d "+%Y%m%d"). Always cross-check with date — never guess from session context.
Survey changes since the last release tag to figure out what to include:
LAST=$(git tag --list 'v*' --sort=-v:refname | head -1)
git log "$LAST"..HEAD --pretty=format:"%h %s" --no-merges | head -80
Read every line. Then filter aggressively for end-user impact before writing anything (see "User-perspective filter" below). The release note is read by 加盟店 owners and customers via the in-app News page (/admin/news), not by engineers — so most commits in git log will not make the cut.
User-perspective filter — what to include vs. drop:
Include (things a non-technical user notices when using the site):
- New features visible in the UI (new pages, new buttons, new options, new languages)
- Behavior changes the user experiences (flow changes, payment screen changes, new required fields)
- Bug fixes the user actually hit (visible errors, broken displays, wrong data)
- Important announcements (sunset notices, terms changes, scheduled breaking changes)
- Pricing / fee / payment-handling changes
Drop (engineer-only / invisible to users):
- Dependency bumps (
Bump xxx from ... to ..., package updates)
- Build/runtime upgrades (Node.js / TypeScript / Vite / Tailwind / rollup versions)
- Internal refactors (
refactor: remove any, refactor: improve type safety)
- Lint / ESLint rule changes
- Test additions (Playwright E2E, unit tests)
- CI/CD changes (GitHub Actions, deploy cache)
- Internal tooling (batch scripts, code generators, regen workflows)
- Translation infrastructure / batch tooling (the added languages are user-facing; the tooling that produced them is not)
When in doubt, ask: "would 加盟店オーナー or an ordinary customer notice the difference if this change were reverted?" If no, drop it.
Create docs/news/YYYYMMDD.md directly — do NOT modify docs/news/current.md. Use the release date (from step 1), not today's date. Shape (see docs/news/20251129.md, 20250123.md, 20240731.md for reference):
vX.Y.Z をリリースしました。
## vX.Y.Z (YYYY/MM/DD)
(任意の導入文:major リリースは入れる、patch は省略可。1〜2文で十分)
- ユーザー系
- …
- 管理系
- …
- 共通
- …
Rules:
- Line 1 is the title —
news.js reads it as title. Do not skip.
- Use Japanese. Match the terse style of past entries; one bullet per change, no over-explaining.
- Omit any section that has no bullets after filtering. It's fine for a release to have only
- ユーザー系 (e.g., a UI-only release) or to skip - 共通 entirely. Past releases regularly have just one section.
- For behavior changes or anything that affects existing flows, add a sub-bullet explaining the new flow (see v3.0.7 for the gold-standard format).
- Image references like
 are allowed; place the image under public/images/news/YYYYMMDD/.
Show the draft to the user and stop. Do not run makenews, tag, or push until they approve. Major releases especially deserve a review pass — the user will often ask to drop infra/internal items even after filtering.
After approval — prepare the release-note PR
Cut a release branch from main (never commit the release note directly on main or on an unrelated feature branch):
git fetch origin
git checkout -b release-vX.Y.Z origin/main
Then write the new docs/news/<RELEASE_YYYYMMDD>.md file on this branch (see the "Drafting" section — draft on whatever branch was convenient, but the final committed copy lives on the release branch).
Run yarn makenews to regenerate docs/RELEASES.md and src/app/admin/News/data.ts from all YYYYMMDD.md files:
yarn makenews
Verify both files now include the new entry at the top. The generated data.ts entry's title is line 1 of the news file; confirm it reads vX.Y.Z をリリースしました。.
Run yarn format to prettify the generated data.ts (it's machine-emitted so prettier often normalizes it). Important:
yarn format
yarn format runs project-wide and may also touch unrelated files that were left unformatted on main. Keep the release-note commit scoped — only stage docs/news/<date>.md + the regenerated outputs. If format touched other files, revert them with git checkout -- <paths> so they don't pollute the release PR. Those are a separate hygiene concern.
Commit on the release branch. Everything goes into one commit (the news file + the regenerated outputs). Do not stage docs/news/current.md. Add files individually, never git add -A:
git add docs/news/<RELEASE_YYYYMMDD>.md docs/RELEASES.md src/app/admin/News/data.ts
git commit -m "chore: add vX.Y.Z release note"
git push -u origin release-vX.Y.Z
(If yarn format produces further data.ts-only churn after the commit, amend with git commit --amend --no-edit + git push --force-with-lease. Since the release branch only has one commit and the user has explicitly asked for a tight release-note commit, amend is acceptable here.)
Open a PR so the release note gets reviewed before merge:
gh pr create --base main --title "chore: add vX.Y.Z release note" --body "<release-note body or summary>"
After the PR is merged — tag & GitHub release
The user often does this themselves right before the release goes live. Only run these if they explicitly ask.
Bump package.json version to the new vX.Y.Z on main (usually a separate tiny commit directly on main or another PR):
# edit package.json "version" field
git add package.json
git commit -m "chore: bump version to X.Y.Z"
Tag from the merge commit and push:
git checkout main && git pull
git tag vX.Y.Z
git push origin --tags
Create GitHub release with the news entry as the body:
gh release create vX.Y.Z --repo Nakajima-Foundation/ownplate \
--title "vX.Y.Z" \
--notes-file docs/news/<RELEASE_YYYYMMDD>.md
(Or pass --notes with a hand-crafted English summary if the audience is broader than Japanese-only. Ask the user.)
Important rules
- MUST run
date for the date — never guess from session context.
- MUST confirm the release date with the user (not today's date). Default: 翌朝.
- MUST NOT push, tag, or run
makenews until the user has approved the draft.
- MUST add files individually (never
git add -A / git add .).
- MUST keep section names exactly
ユーザー系 / 管理系 / 共通 so that data.ts stays consistent with past entries.
- MUST write only user-visible changes in the release note (see "User-perspective filter"). Infra / refactor / deps bumps do not belong here.
- MUST NOT amend a previous release's news file after
makenews has shipped — write a follow-up entry instead.
- MUST NOT include unrelated format churn from
yarn format in the release-note commit — revert those files and let them be cleaned up separately.
- If
package.json and the release tag drift apart, fix package.json first and tag from that commit; never force-push a tag.
Source: Nakajima-Foundation/ownplate — distributed by TomeVault.
1---2name: ownplate3description: Draft a release note and run the release workflow for the ownplate / Omochikaeri.com project (uses docs/news/current.md convention) Use when this capability is needed.4---56## Ownplate Release78This skill drafts a release note for `Nakajima-Foundation/ownplate` following the project's `docs/news/` convention, then runs the workflow that publishes it to `docs/RELEASES.md` and `src/app/admin/News/data.ts`.910Use this when the user asks to "リリースノートをつくって" / "v_X.Y.Z_ を出したい" / "make a release note" in this repo.1112### How the project's release-note machinery works (read once, then follow)1314- `docs/news/current.md` is the **template skeleton** (`:title:` placeholder + empty `- 管理系` / `- ユーザー系` headers). It stays in the repo unchanged and is the shape every release copies from. **Do not write the release content into `current.md`.**15- For each release, create a **new file** `docs/news/YYYYMMDD.md` with the actual content. Line 1 = title (e.g. `vX.Y.Z をリリースしました。`), rest = markdown body.16- `yarn makenews` runs `batch/news.js`, which:17 - Concatenates every `YYYYMMDD.md` file (sorted desc, ignoring `current.md`) into `docs/RELEASES.md`18 - Writes a structured array to `src/app/admin/News/data.ts` (consumed by the admin News page)19- `docs/NEWS.md` documents this — re-read it if you suspect the format changed. (Note: its wording about "editing current.md over time" is aspirational; in practice releases are written directly into the dated file.)2021### Pre-release checks22231. **Confirm we're in the ownplate repo and on a clean tree**:24 ```bash25 git rev-parse --show-toplevel26 git status27 git branch --show-current28 ```29 The working tree should be clean and on `main` (or whatever feature branch the user is preparing the release on — confirm with them).30312. **Get current version + last release tag**:32 ```bash33 jq -r .version package.json34 git tag --list 'v*' --sort=-v:refname | head -335 ```36373. **Ask the user**: which version (patch / minor / major) and what's the **headline** of this release. The headline drives the intro paragraph and the order of bullets.38394. **Confirm the release date with the user.** Never assume "today". Releases at this project are typically cut **翌朝 (the next morning)** or on a scheduled date, not the moment the note is drafted. Ask: "リリース日はいつですか?(翌朝?)" and use the answer for both the filename (`YYYYMMDD.md`) and the heading (`## vX.Y.Z (YYYY/MM/DD)`). Default assumption: 翌朝 = `date -v+1d`.4041### Drafting the release note42431. **Resolve the release date** (use the date the user gave in the pre-check; if they said "明日朝", run `date -v+1d "+%Y/%m/%d"` and `date -v+1d "+%Y%m%d"`). Always cross-check with `date` — never guess from session context.44452. **Survey changes since the last release tag** to figure out what to include:46 ```bash47 LAST=$(git tag --list 'v*' --sort=-v:refname | head -1)48 git log "$LAST"..HEAD --pretty=format:"%h %s" --no-merges | head -8049 ```50 Read every line. Then **filter aggressively for end-user impact** before writing anything (see "User-perspective filter" below). The release note is read by 加盟店 owners and customers via the in-app News page (`/admin/news`), not by engineers — so most commits in `git log` will not make the cut.51523. **User-perspective filter** — what to include vs. drop:5354 **Include** (things a non-technical user notices when using the site):55 - New features visible in the UI (new pages, new buttons, new options, new languages)56 - Behavior changes the user experiences (flow changes, payment screen changes, new required fields)57 - Bug fixes the user actually hit (visible errors, broken displays, wrong data)58 - Important announcements (sunset notices, terms changes, scheduled breaking changes)59 - Pricing / fee / payment-handling changes6061 **Drop** (engineer-only / invisible to users):62 - Dependency bumps (`Bump xxx from ... to ...`, package updates)63 - Build/runtime upgrades (Node.js / TypeScript / Vite / Tailwind / rollup versions)64 - Internal refactors (`refactor: remove any`, `refactor: improve type safety`)65 - Lint / ESLint rule changes66 - Test additions (Playwright E2E, unit tests)67 - CI/CD changes (GitHub Actions, deploy cache)68 - Internal tooling (batch scripts, code generators, regen workflows)69 - Translation infrastructure / batch tooling (the *added languages* are user-facing; the *tooling that produced them* is not)7071 When in doubt, ask: "would 加盟店オーナー or an ordinary customer notice the difference if this change were reverted?" If no, drop it.72734. **Create `docs/news/YYYYMMDD.md` directly** — do NOT modify `docs/news/current.md`. Use the **release date** (from step 1), not today's date. Shape (see `docs/news/20251129.md`, `20250123.md`, `20240731.md` for reference):74 ```markdown75 vX.Y.Z をリリースしました。7677 ## vX.Y.Z (YYYY/MM/DD)7879 (任意の導入文:major リリースは入れる、patch は省略可。1〜2文で十分)8081 - ユーザー系82 - …8384 - 管理系85 - …8687 - 共通88 - …89 ```90 Rules:91 - Line 1 is the title — `news.js` reads it as `title`. Do not skip.92 - Use Japanese. Match the terse style of past entries; one bullet per change, no over-explaining.93 - **Omit any section that has no bullets after filtering.** It's fine for a release to have only `- ユーザー系` (e.g., a UI-only release) or to skip `- 共通` entirely. Past releases regularly have just one section.94 - For behavior changes or anything that affects existing flows, add a sub-bullet explaining the new flow (see v3.0.7 for the gold-standard format).95 - Image references like `` are allowed; place the image under `public/images/news/YYYYMMDD/`.96975. **Show the draft to the user and stop**. Do not run `makenews`, tag, or push until they approve. Major releases especially deserve a review pass — the user will often ask to drop infra/internal items even after filtering.9899### After approval — prepare the release-note PR1001011. **Cut a release branch from `main`** (never commit the release note directly on `main` or on an unrelated feature branch):102 ```bash103 git fetch origin104 git checkout -b release-vX.Y.Z origin/main105 ```106 Then write the new `docs/news/<RELEASE_YYYYMMDD>.md` file on this branch (see the "Drafting" section — draft on whatever branch was convenient, but the final committed copy lives on the release branch).1071082. **Run `yarn makenews`** to regenerate `docs/RELEASES.md` and `src/app/admin/News/data.ts` from all `YYYYMMDD.md` files:109 ```bash110 yarn makenews111 ```112 Verify both files now include the new entry at the top. The generated `data.ts` entry's `title` is line 1 of the news file; confirm it reads `vX.Y.Z をリリースしました。`.1131143. **Run `yarn format`** to prettify the generated `data.ts` (it's machine-emitted so prettier often normalizes it). Important:115 ```bash116 yarn format117 ```118 `yarn format` runs project-wide and may also touch unrelated files that were left unformatted on `main`. **Keep the release-note commit scoped** — only stage `docs/news/<date>.md` + the regenerated outputs. If format touched other files, revert them with `git checkout -- <paths>` so they don't pollute the release PR. Those are a separate hygiene concern.1191204. **Commit on the release branch.** Everything goes into one commit (the news file + the regenerated outputs). Do **not** stage `docs/news/current.md`. Add files individually, never `git add -A`:121 ```bash122 git add docs/news/<RELEASE_YYYYMMDD>.md docs/RELEASES.md src/app/admin/News/data.ts123 git commit -m "chore: add vX.Y.Z release note"124 git push -u origin release-vX.Y.Z125 ```126 (If `yarn format` produces further data.ts-only churn after the commit, amend with `git commit --amend --no-edit` + `git push --force-with-lease`. Since the release branch only has one commit and the user has explicitly asked for a tight release-note commit, amend is acceptable here.)1271285. **Open a PR** so the release note gets reviewed before merge:129 ```bash130 gh pr create --base main --title "chore: add vX.Y.Z release note" --body "<release-note body or summary>"131 ```132133### After the PR is merged — tag & GitHub release134135The user often does this themselves right before the release goes live. Only run these if they explicitly ask.1361371. **Bump `package.json` version** to the new vX.Y.Z on `main` (usually a separate tiny commit directly on main or another PR):138 ```bash139 # edit package.json "version" field140 git add package.json141 git commit -m "chore: bump version to X.Y.Z"142 ```1431442. **Tag from the merge commit** and push:145 ```bash146 git checkout main && git pull147 git tag vX.Y.Z148 git push origin --tags149 ```1501513. **Create GitHub release** with the news entry as the body:152 ```bash153 gh release create vX.Y.Z --repo Nakajima-Foundation/ownplate \154 --title "vX.Y.Z" \155 --notes-file docs/news/<RELEASE_YYYYMMDD>.md156 ```157 (Or pass `--notes` with a hand-crafted English summary if the audience is broader than Japanese-only. Ask the user.)158159### Important rules160161- MUST run `date` for the date — never guess from session context.162- MUST confirm the **release date** with the user (not today's date). Default: 翌朝.163- MUST NOT push, tag, or run `makenews` until the user has approved the draft.164- MUST add files individually (never `git add -A` / `git add .`).165- MUST keep section names exactly `ユーザー系` / `管理系` / `共通` so that data.ts stays consistent with past entries.166- MUST write only **user-visible** changes in the release note (see "User-perspective filter"). Infra / refactor / deps bumps do not belong here.167- MUST NOT amend a previous release's news file after `makenews` has shipped — write a follow-up entry instead.168- MUST NOT include unrelated format churn from `yarn format` in the release-note commit — revert those files and let them be cleaned up separately.169- If `package.json` and the release tag drift apart, fix `package.json` first and tag from that commit; never force-push a tag.170171---172> Source: [Nakajima-Foundation/ownplate](https://github.com/Nakajima-Foundation/ownplate) — distributed by [TomeVault](https://tomevault.io).173<!-- tomevault:4.0:skill_md:2026-07-04 -->