Upgrade Notes Skill
Create comprehensive, action-oriented upgrade documentation for a major Hoist React release. This skill produces two artifacts and validates them via dry-run simulation.
Version: $ARGUMENTS
Phase 0: Setup
- •Parse the version from
$ARGUMENTS. Normalize tovNNshort form andNN.x.xfull form. - •Identify the prior major version by reading
CHANGELOG.mdto find the entry immediately before the target version (e.g. if target is v79, prior is v78.x). - •Determine the git tag range for diffing:
v{prior}..v{target}(e.g.v78.1.4..v79.0.0). List available tags withgit tag -l 'v*'to find exact tag names. - •Read template.md for the upgrade notes document template.
- •Read
docs/changelog-format.mdfor CHANGELOG entry conventions.
Phase 1: Research
Gather all information needed to write accurate documentation. Launch parallel research agents where possible.
1a. Git History Analysis
- •Run
git diff --stat {prior_tag}..{target_tag}to understand scope of changes. - •Run
git log --oneline {prior_tag}..{target_tag}to see all commits in the release. - •Read the existing CHANGELOG entry for the target version to understand what's already documented.
1b. Source File Analysis
Read key source files that commonly change between major versions:
- •
package.json— dependency versions, resolutions - •
core/XH.ts— singleton API, app-level getters - •
core/HoistBase.ts— base class lifecycle, decorators - •
cmp/grid/— GridModel, Column, grid infrastructure - •
cmp/form/— FormModel, FieldModel, FormField - •
cmp/tab/— TabContainerModel, TabSwitcher - •
cmp/layout/— layout components, LayoutProps - •
data/— Store, Field, Filter, Cube, View - •
styles/— CSS variables, SCSS mixins - •
kit/blueprint/— Blueprint wrappers and re-exports - •
security/— HoistAuthModel, auth clients - •
desktop/cmp/dash/— DashContainerModel, DashCanvasModel - •
desktop/cmp/panel/— Panel, PanelModel
1c. Sample App Upgrade Analysis
Review upgrade commits in sample applications to understand real-world app-level changes required. These apps are available locally (see CLAUDE.local.md for paths):
- •Toolbox (
../toolbox) — canonical reference app, always upgraded first - •Additional sample/customer applications listed in
CLAUDE.local.md
For each app, search git log for commits referencing the target version:
git -C ../toolbox log --oneline --all --grep="v{NN}" --grep="hoist" --grep="{NN}.0"
Read the key files from upgrade commits: package.json, tsconfig.json, Bootstrap.ts,
and any files touching changed APIs.
Important: Only reference Toolbox by name in the upgrade notes (it's the public demo app). Do not mention other sample or customer applications by name — use them only for research and abstracted patterns.
1d. Framework Documentation
If the upgrade involves a major library version change, fetch the official upgrade guide for reference:
- •Blueprint:
https://github.com/palantir/blueprint/wiki/Blueprint-{N}.0 - •AG Grid:
https://www.ag-grid.com/react-data-grid/upgrading-to-ag-grid-{N}/ - •Highcharts:
https://www.highcharts.com/blog/changelog/
Phase 2: Write the CHANGELOG Entry
Audit the Existing Entry
Read the current CHANGELOG entry for the target version. Evaluate against these criteria:
- • Structure: Uses standard emoji-prefixed section headers (💥 Breaking Changes,
🎁 New Features, 🐞 Bug Fixes, ⚙️ Technical, ✨ Styles, 📚 Libraries) — see
docs/changelog-format.md - • Breaking Changes: All required app changes are listed as individual bullets (not buried in prose under Technical or other sections)
- • Completeness: Changes that affect behavior, APIs, or configuration are accounted for (trivial formatting, internal refactors, or tooling changes can be omitted)
- • Accuracy: Class names, method names, file paths are correct
- • Tense: Past-tense, action-driven voice ("Enhanced", "Fixed", "Added") — exception: developer instructions use imperative ("Update", "Adjust")
- • Conciseness: Each bullet is 1-2 lines; detailed instructions belong in upgrade notes
- • Libraries section: Present for major version bumps with
old → newformat
Write or Rewrite the Entry
If the entry needs significant changes, rewrite it following the format in
docs/changelog-format.md. Key principles:
- •Breaking Changes section should have a difficulty rating and list every required app change
- •Each bullet names the specific action concisely — the upgrade notes handle the detail
- •Include a link to the upgrade notes file:
docs/upgrade-notes/v{NN}-upgrade-notes.md - •Include a link to the relevant framework upgrade guide (if applicable)
- •Libraries section lists major dependency version bumps in
old → newformat
Phase 3: Write the Upgrade Notes
Create docs/upgrade-notes/v{NN}-upgrade-notes.md following the template in
template.md.
Content Requirements
Each upgrade step must include:
- •What to change — explicit file paths from project root
- •Before/after code blocks — with appropriate language tags (
typescript,json,scss,bash, etc.) - •Search commands —
grep -r "pattern" client-app/src/to help developers find affected files - •Why — brief explanation of what changed and why (one sentence is usually enough)
- •Verification — how to confirm the step was done correctly (where applicable)
Writing Guidelines
- •Be specific and concrete. Name exact files, classes, methods, and property names.
- •Use code blocks generously. Developers copy-paste from upgrade guides.
- •Before/after examples should show realistic code, not pseudocode.
- •Use element factory style in code examples (not JSX), consistent with Hoist conventions.
- •Reference Toolbox as the canonical example where helpful (it's the public demo app).
- •Do not mention sample or customer applications by name, with the exception of Toolbox.
- •Keep prose minimal between code blocks — this is a recipe, not an essay.
- •Steps should be ordered logically (build system first, then source code, then cleanup).
- •The verification checklist at the end should cover all critical functionality.
Update the docs/README.md Index
Add a row to the table in docs/README.md for the new version.
Phase 4: Dry-Run Validation
After writing both artifacts, launch an independent validation agent. This agent stress-tests the upgrade notes by simulating a real upgrade.
Agent Setup
Launch a Task agent (subagent_type: "general-purpose") with these instructions:
You are an "App Upgrade Advisor" agent. Your job is to evaluate upgrade documentation by simulating its use against a real application.
- •
Setup: Check out Toolbox (at
../toolbox) at a commit BEFORE the target hoist-react version was applied. Usegit log --onelineto find the last commit before the upgrade. Create a temporary branch for the dry run.- •
Dry run: Working solely from the upgrade notes file at
docs/upgrade-notes/v{NN}-upgrade-notes.mdand the app's current source, walk through each step as if advising on a real upgrade. For each step, evaluate:
- •Is the instruction clear and unambiguous?
- •Does the "Before" code match what's actually in the app?
- •Are there files or patterns in the app not covered by the guide?
- •Would a developer know exactly what to do?
- •
Report: Produce a structured report with:
- •Gaps: Steps or changes not covered by the guide
- •Ambiguities: Instructions that could be misinterpreted
- •Inaccuracies: Before/after examples that don't match reality
- •Suggestions: Ways to improve clarity Rate each finding as HIGH / MEDIUM / LOW priority.
- •
Cleanup: Restore Toolbox to its original state (checkout original branch, delete temp branch). Do NOT leave any changes behind.
IMPORTANT: Do NOT modify any files in the upgrade notes or CHANGELOG — only report findings.
Handling the Report
Review the agent's findings. Address all HIGH and MEDIUM priority items by updating the upgrade notes and/or CHANGELOG entry. LOW priority items are at your discretion.
Phase 5: Finalize
- •Re-read both artifacts one final time to check for consistency between the CHANGELOG entry and the upgrade notes (same version numbers, same list of changes, matching links).
- •Verify the
docs/README.mdindex is updated. - •Present a summary to the user of what was created/changed and offer to commit.
Important Notes
- •This skill produces documentation — it does NOT modify application source code.
- •The CHANGELOG is a consolidated file appended to on each release. Balance completeness with conciseness. The upgrade notes file is where expanded detail lives.
- •Always verify code examples against actual source files. Never guess at class names, method signatures, or file paths.
- •The dry-run validation phase is critical — it catches gaps that are invisible when writing documentation from the "inside out". Do not skip it.