Purpose
Use this skill to add or update the OpenWork release tracker using release history from _repos/openwork.
The tracker is split into files named release-tracker-{YYYY-MM-DD}.md in _repos/openwork/changelog/, where the date is the first release date in that file; append to the latest file, or create a new one (dated today) when the latest file already has 25 entries.
Output Contract
- The output file must be plain markdown sections.
- Keep release sections sorted oldest to newest so new versions append at the end.
- If the tracker file already exists, preserve its formatting and append or edit
## <version>sections in place. - Each subsection inside a release must start and use a
####heading. - Use plain text under scalar subsections unless a subsection explicitly allows multiple markdown structures.
- Include a lines-of-code subsection and a release-importance subsection for every release.
- Include a
Titlesubsection for every release. - The
Titlemust be concise, publish-ready, and reusable almost verbatim in the public changelog. - The
Title,One-line summary, andMain changesmust complement each other instead of repeating the same wording at different lengths. Main changesmay use the best-fit markdown structure described below instead of a fixed bullet count.
Inputs
- One or more release tags such as
v0.11.101 - Optional output file path; default to the latest
_repos/openwork/changelog/release-tracker-{YYYY-MM-DD}.mdfile (or a new one if it has 25 entries)
Steps
Work from a dedicated worktree and confirm the tracker file path.
In
_repos/openwork, gather release metadata for each tag:gh release view <tag> --repo different-ai/openwork --json tagName,publishedAt,body git rev-list -n 1 <tag> git log --oneline --no-merges <previous-tag>..<tag> git diff --shortstat <previous-tag>..<tag>Read nearby published entries in
_repos/openwork/packages/docs/changelog.mdxbefore drafting language so the tracker entry matches the current public changelog voice.Inspect any commit that looks user-facing before summarizing it:
git show --stat --summary <sha>Derive release values with these rules:
Commit: use the tag commit fromgit rev-list -n 1 <tag>, shortened to 8 characters.Title: write one concise publish-ready line that states the release's core substance up front.- The
Titleshould usually be 4-10 words, in sentence case, and focus on the most important user-facing or developer-facing outcome. - Lead the
Titlewith the primary workflow, product surface, or capability that changed, not with a generic verb likeImproves several areas. - The
Titlemust be reusable almost verbatim as the release-level headline sentence in_repos/openwork/packages/docs/changelog.mdx, even though the public file does not have a separateTitlefield. - The
Titleshould sound like a strong changelog headline: concrete, direct, and outcome-first. - Avoid version numbers, release-process wording, and filler such as
This release,Shipped,Various,Several, orMiscellaneous. - Avoid internal-only implementation terms unless they are visible to users or directly relevant to developers, such as APIs, CLI flows, providers, MCP setup, or documented product surfaces.
- Prefer visible nouns and surfaces such as
workspace switching,session loading,Settings,Cloud sign-in,skill editing,API auth, orMCP connectionsover repo mechanics or internal package names. - If the public changelog entry is going to be a minor release, focus on the
Title, which should usually be close to that final sentence and theOne-line summarywhich adds a bit more scope. - If the public changelog is a major, use the
Titleas the release-level headline that introduces theMain changessection without awkwardly compressing every bullet into one overloaded sentence. One-line summary: write exactly one sentence that expands theTitlewith the main outcome first, then adds the most relevant scope or secondary effects.- The
One-line summaryshould add context, not restate theTitlewith only a few extra adjectives. - Keep the
One-line summarybetween 10-25 words unless the release is unusually simple. Main changes: choose exactly one best-fit structure for the section instead of defaulting to a fixed number of bullets.- Keep the entire natural-language content of
Main changesunder 80 words total, including labels such asAlso released:. - Prefer concrete workflow outcomes over internal implementation details. State what the release lets users do, what became clearer, or what became more reliable.
- Only mention implementation details when they materially matter to developers using a visible surface such as the CLI, API, MCP configuration, auth providers, or documented settings.
- Valid
Main changesstructures:Compact bullets: 2-4 short bullets ordered by user impact.Lead paragraph + bullets: one short lead sentence or paragraph for the primary announcement, followed by a short list such asAlso released:with 1-3 bullets.Compact paragraph: one short paragraph when the release is cohesive enough that bullets would feel artificial.Paragraph + tiny code example: one short paragraph plus one very small indented code snippet only when a command, API shape, setting name, or developer-facing surface is itself the important change.
- The chosen
Main changesstructure must be the best fit for the release and must fully conform to one of the valid structures above. - Use
Compact bulletsfor mixed but comparable improvements. - Use
Lead paragraph + bulletswhen one primary announcement leads the story and the remaining changes are supporting additions. - Use
Compact paragraphwhen the release reads more naturally as one tightly scoped explanation. - Use
Paragraph + tiny code exampleonly when the code itself communicates something user-facing or developer-facing that prose would make less clear. - If you use bullets, the bullets do not need to be exactly parallel or verb-first, but they must still be concise and easy to scan.
- If you use a code snippet, keep it tiny and subordinate to the prose. Do not turn
Main changesinto a long reference block. - Count prose words toward the 80-word cap. Ignore the code tokens in a tiny indented snippet, but keep the overall section brief enough to scan in one glance.
- Example valid
Main changesstructures:Compact bulletsexample:- Fixed workspace switching so reconnects land in the right session.
- Improved provider auth prompts so setup fails less often.
- Cleaned up Settings copy around remote workers.
Lead paragraph + bulletsexample: Released GPT-5.4 and GPT-5.4 pro across the main API surfaces. Also released:- Tool search for large tool surfaces.
- Built-in computer use support.
- 1M token context and native compaction.
Compact paragraphexample: Stabilizes sharing and session startup so reconnects, loading states, and worker handoffs feel steadier across the app.Paragraph + tiny code exampleexample: Added a simpler local launch flow for the CLI and made the new entrypoint easier to discover. openwork dev
Lines of code changed since previous release: usegit diff --shortstat <previous-tag>..<tag>and rewrite it asN lines changed since \` (A insertions, D deletions).`- If git reports only insertions or only deletions, write the missing side as
0so the sentence stays structurally consistent. Release importance: always write exactly one sentence in one of these two forms:Minor release: <core reason this was released in one line>.Major release: <core reason it is a major release in one line>.
- Do not decide major vs minor from line count alone.
- Mark a release as
Major release:when the user experience changes substantially, a major refactor or architecture/runtime change lands, a key security vulnerability is patched, multiple core features are deprecated/removed, or several shipped changes materially alter how users use OpenWork. - Mark a release as
Minor release:for focused bug fixes, UX polish, isolated feature additions, local workflow improvements, packaging refreshes, or changes that improve reliability without materially changing the product's overall shape. Major Improvements: set toTrueonly for net-new user-facing capabilities or materially expanded workflows; max 5 items.Major Bugs Resolved: set toTrueonly for user-facing or release-blocking fixes; max 5 items.Deprecated Features: set toTrueonly when a user-facing feature or functionality was intentionally retired or replaced.- Ignore version bumps, lockfiles, screenshots, docs-only changes, and packaging-only changes when counting improvements or bugs.
- If the release is mostly packaging, republishing, or metadata synchronization, say that directly instead of inventing user-visible impact.
- Prefer present-tense, outcome-first changelog language similar to strong public changelogs: direct, concrete, and easy to scan.
- Prefer parallel lists such as
Cleans up X, reduces Y, and fixes Zover sequential framing such asfirst, then. - Sequential framing is still acceptable when the release genuinely has a primary change followed by supporting changes and that ordering is important to the story.
- Use developer-friendly language when the change is visible to developers, but keep it anchored to a workflow they actually touch.
- Do not let the
Title,One-line summary, andMain changescollapse into three copies of the same sentence. - When a boolean is
False, set the paired count to0. - When a details section has no items, write
None.as plain text under its####heading.
Write or update the tracker as direct markdown text in this order:
- File title:
# Release Changelog Tracker - Intro line:
Internal preparation file for release summaries. This is not yet published to the changelog page or docs. - Keep the file-level intro line as-is even if some individual releases inside the tracker are already published.
- One
## <version>section per release - Inside each release section, include these
####headings in this exact order:#### Commit#### Released at#### Title#### One-line summary#### Main changesfollowed by one validMain changesstructure#### Lines of code changed since previous release#### Release importance#### Major improvements#### Number of major improvements#### Major improvement detailsfollowed by bullets only if needed#### Major bugs resolved#### Number of major bugs resolved#### Major bug fix detailsfollowed by bullets only if needed#### Deprecated features#### Number of deprecated features#### Deprecated detailsfollowed by bullets only if needed
- Under each heading, write the value on the next line with no blank line between the heading and the value.
- File title:
Match the current OpenWork tracker format. A valid release block looks like this in the final file:
## v0.11.101 #### Commit `87fda845` #### Released at `2026-02-19T21:26:55Z` #### Title Local recovery and Soul controls land with cleaner app chrome. #### One-line summary Improves local session reliability while adding clearer Soul controls and cleaner settings and sidebar actions. #### Main changes Added a local recovery flow for broken OpenCode database migrations so local startup can repair itself. Also released: - Clearer Soul starter steering and observability controls. - Cleaner compact action buttons across settings and sidebars. #### Lines of code changed since previous release 1248 lines changed since `v0.11.100` (933 insertions, 315 deletions). #### Release importance Minor release: improves local recovery, Soul steering, and interface clarity without changing the product's core architecture. #### Major improvements True #### Number of major improvements 2 #### Major improvement details - Added a repair flow for failed local OpenCode database migrations from onboarding and Settings > Advanced. - Added stronger Soul starter steering and observability controls, including clearer status and improvement actions. #### Major bugs resolved True #### Number of major bugs resolved 1 #### Major bug fix details - Fixed a local startup failure path by letting users recover from OpenCode migration issues instead of getting stuck on a broken local flow. #### Deprecated features False #### Number of deprecated features 0 #### Deprecated details None.Validate before committing:
git diff --check- confirm there are no lines starting with
|in the tracker file - confirm subsection labels are
####headings, not- Label:bullets - confirm every release block includes
#### Title - confirm the
Titleis publish-ready, specific, and not just a shorter duplicate of theOne-line summary - confirm the
One-line summaryexpands theTitleinstead of repeating it - confirm the
Main changessection uses exactly one valid structure and that the structure is the best fit for the release - confirm the
Main changessection stays under 80 words - confirm the
Main changescontent adds concrete workflow detail that is not already fully captured by theTitle - confirm
#### Release importancestarts with eitherMinor release:orMajor release:
Common Gotchas
- The final file is markdown text, not a markdown table embedded inside a markdown file.
- Subsection headings are required so entries are easier to target programmatically.
- Do not treat the release bump commit as a feature by itself.
- Use the release body to anchor the summary, but use commit inspection to verify the real user-facing changes.
- Keep
Main changesuser-facing or developer-facing in a visible way; avoid internal implementation details unless they matter to the actual workflow. - Do not write a vague
TitlelikeImproves reliability and fixes bugs; the title should identify the actual workflow or surface that changed. - Do not make the
Title,One-line summary, and openingMain changescontent say the same thing three times with minor wording changes. - When a release has little visible product impact, say that plainly instead of inflating the language.
- Do not force
Main changesinto 3 bullets when a short paragraph or lead-plus-list structure is clearer. - Do not use an indented code snippet unless the code itself is part of the user-facing or developer-facing story.
- Do not let
Main changesexceed 80 words just because the release was large; choose a tighter structure or move detail to another field.