.github/skills/publish-new-release/SKILL.md
Publishes a new DanceXR release to the documentation website. Creates English release notes from a CHANGELOG, generates all four localized versions, updates navigation for all locales, updates the homepage release card, and prepares platform-specific release notes for Steam, Google Play, and itch.io. Use this when asked to "publish release [version]" or "create release notes for [version]".
npx skillsauth add alloystorm/dvvr publish-new-releaseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A full release publication touches seven areas:
_data/navigation.yml for all five nav sectionsindex.md fileslayout: release (not layout: single) for all release note pagesnotes/[version]/The inputs you need before starting:
2026.4)Read the existing most-recent release file (e.g., dancexr/releases/2026.3.md) to understand the writing style and structure.
Create dancexr/releases/[version].md with this exact front matter:
---
layout: release
title: Release [version]
locale: en-US
nav_links:
- label: Intro
url: /dancexr
- label: Features
url: /dancexr/features
- label: Releases
url: /dancexr/releases
- label: Download
url: /dancexr/download
---
No language links line in the body — the release layout renders this automatically.
Writing guidelines for the body:
## for top-level sections and ### for sub-sections.### Bug Fixes section.For each of the four languages, create the corresponding file under the language prefix directory.
| Language | File path | locale | nav_links labels | nav_links URL prefix |
|---|---|---|---|---|
| Japanese | jp/dancexr/releases/[version].md | ja-JP | イントロ / 機能 / リリース / ダウンロード | /jp |
| Simplified Chinese | zh/dancexr/releases/[version].md | zh-CN | 简介 / 功能 / 发布 / 下载 | /zh |
| Traditional Chinese | tw/dancexr/releases/[version].md | zh-TW | 簡介 / 功能 / 發布 / 下載 | /tw |
| Korean | kr/dancexr/releases/[version].md | ko-KR | 소개 / 기능 / 출시 / 다운로드 | /kr |
Front matter template for each locale (example for Japanese):
---
layout: release
title: リリース [version]
locale: ja-JP
nav_links:
- label: イントロ
url: /jp/dancexr
- label: 機能
url: /jp/dancexr/features
- label: リリース
url: /jp/dancexr/releases
- label: ダウンロード
url: /jp/dancexr/download
---
No language links line in the body.
Translate the full body content of the English release notes into each target language. Follow all translation guidelines from the translate-docs skill:
_data/navigation.ymlSix navigation sections must each have the new release inserted at the top of their 2026 children list. Use multi_replace_string_in_file to update all six in a single call.
| Section key | Title format | URL format |
|---|---|---|
| releases (main docs nav — inside the docs nav entry) | "[version]" | /dancexr/releases/[version] |
| releases (standalone sidebar) | Release [version] | /dancexr/releases/[version] |
| releases-zh | 发布 [version] | /zh/dancexr/releases/[version] |
| releases-tw | 發布 [version] | /tw/dancexr/releases/[version] |
| releases-jp | リリース [version] | /jp/dancexr/releases/[version] |
| releases-kr | 출시 [version] | /kr/dancexr/releases/[version] |
The main docs nav entry is a short list under - title: Releases inside the docs: key. Insert the new entry as the first child there too, and remove any (Early Access) or similar suffixes from the previous release title at the same time.
Five index.md files each contain a <div class="release-card"> HTML block. Update all five in a single multi_replace_string_in_file call.
The block structure is:
<div class="release-card">
<p class="release-version">[LATEST_LABEL] — [version]</p>
<p class="release-headline">[MONTH_YEAR]</p>
<div class="release-items">
<div class="release-item">[highlight 1]</div>
<div class="release-item">[highlight 2]</div>
<div class="release-item">[highlight 3]</div>
<div class="release-item">[highlight 4]</div>
</div>
<a href="/[locale-prefix]dancexr/releases/[version]" class="btn-ghost">[NOTES_LABEL]</a>
</div>
Pick 3–4 user-facing highlights from the release notes (not bug fixes). Keep each item to a short phrase (5–8 words).
Per-language labels:
| File | latest label | notes link label |
|---|---|---|
| dancexr/index.md | Latest | Full release notes |
| jp/dancexr/index.md | 最新 | 完全なリリースノート |
| zh/dancexr/index.md | 最新 | 完整版本说明 |
| tw/dancexr/index.md | 最新 | 完整版本說明 |
| kr/dancexr/index.md | 최신 | 전체 릴리스 노트 |
The English card has no locale prefix in the URL (/dancexr/releases/[version]). All others use their locale prefix (/jp/dancexr/releases/[version], etc.).
layout: single for release note pages. Always use layout: release.toc: true or a sidebar: block — these are not used by layout: release.layout: single even if existing older pages use it — those are legacy.Create a notes/[version]/ directory and generate all 7 files in it. Study notes/2026.3/ as the reference for format and tone.
google.txt)Android audience only. Omit any feature that is Windows/VR/PC/DX12-exclusive (e.g. desktop VR mode, DX12, Steam-specific functionality). Focus on physics, character, and general simulation features that also run on Android.
Format: one short paragraph per language (≈500 characters), wrapped in language tags. All five languages in one file in this order:
<en-US>
…
</en-US>
<zh-CN>
…
</zh-CN>
<zh-TW>
…
</zh-TW>
<ja-JP>
…
</ja-JP>
<ko-KR>
…
</ko-KR>
Each paragraph ends with a localized link to the full release notes URL:
https://vrstormlab.com/[locale-prefix]dancexr/releases/[version]
(no prefix for English: https://vrstormlab.com/dancexr/releases/[version])
itchio.txt)No language-specific pages on itch.io — brief, all languages in one plain-text file. One short paragraph per language, separated by ---. Each paragraph starts with DanceXR [version] as a heading and ends with a localized link to the full release notes. Keep each paragraph to 3–5 sentences maximum.
One XML file per language, named:
steam_english.xmlsteam_japanese.xmlsteam_schinese.xmlsteam_tchinese.xmlsteam_korean.xmlEach file follows this exact XML structure:
<?xml version="1.0" encoding="UTF-8" ?>
<content>
<string id="title">[Localised title]</string>
<string id="subtitle">[Localised subtitle — key features, ≤120 chars]</string>
<string id="summary">[Localised summary — 1-2 sentences, ≤300 chars]</string>
<string id="body">[Localised body — 3-5 paragraphs of prose]
For full details, visit: [link text](https://vrstormlab.com/[locale]dancexr/releases/[version])</string>
</content>
Steam notes cover the full PC + VR feature set. The body should be engaging prose (not a bullet list), written as a product announcement. Escape & as & in XML attributes and content.
Per-language title formats:
| File | Title format |
|---|---|
| steam_english.xml | DanceXR Version [version] Released |
| steam_japanese.xml | DanceXR バージョン [version] をリリース |
| steam_schinese.xml | DanceXR 版本 [version] 发布 |
| steam_tchinese.xml | DanceXR 版本 [version] 發布 |
| steam_korean.xml | DanceXR 버전 [version] 출시 |
documentation
Updates DanceXR feature documentation pages and the master feature index based on a given release notes file. Use this when asked to "update feature documentation based on release [version] notes".
development
Translates DanceXR documentation pages into the localized website versions (Japanese, Korean, Traditional Chinese, Simplified Chinese). Use this when asked to translate pages, find missing translations, or update outdated translations.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.