Cutting A Release
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
A skill your agent uses for OpenIAP documentation generation work, especially the release-note card each PR carries in packages/docs/src/pages/docs/updates/releases.tsx, written as already published…
$ npx skills add hyodotdev/openiap --skill generate-doc -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hyodotdev/openiap generate-doc --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hyodotdev/openiap.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/generate-doc .claude/skills/generate-doc && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "generate-doc" agent skill from https://github.com/hyodotdev/openiap/tree/main/.codex/skills/generate-doc into .claude/skills/generate-doc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-doc", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hyodotdev/openiap/tree/main/.codex/skills/generate-docType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hyodotdev/openiap --skill generate-doc -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hyodotdev/openiap generate-doc --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hyodotdev/openiap.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/generate-doc .agents/skills/generate-doc && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generate-doc" agent skill from https://github.com/hyodotdev/openiap/tree/main/.codex/skills/generate-doc into .agents/skills/generate-doc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-doc", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hyodotdev/openiap --skill generate-doc -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hyodotdev/openiap generate-doc --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hyodotdev/openiap.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/generate-doc .cursor/skills/generate-doc && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "generate-doc" agent skill from https://github.com/hyodotdev/openiap/tree/main/.codex/skills/generate-doc into .cursor/skills/generate-doc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-doc", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hyodotdev/openiap.git --path .codex/skills/generate-doc--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hyodotdev/openiap --skill generate-doc -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hyodotdev/openiap generate-doc --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hyodotdev/openiap.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/generate-doc .gemini/skills/generate-doc && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "generate-doc" agent skill from https://github.com/hyodotdev/openiap/tree/main/.codex/skills/generate-doc into .gemini/skills/generate-doc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-doc", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hyodotdev/openiap generate-docInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hyodotdev/openiap --skill generate-doc -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hyodotdev/openiap.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/generate-doc .github/skills/generate-doc && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "generate-doc" agent skill from https://github.com/hyodotdev/openiap/tree/main/.codex/skills/generate-doc into .github/skills/generate-doc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-doc", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hyodotdev/openiap --skill generate-doc -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hyodotdev/openiap generate-doc --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hyodotdev/openiap.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/generate-doc .opencode/skills/generate-doc && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "generate-doc" agent skill from https://github.com/hyodotdev/openiap/tree/main/.codex/skills/generate-doc into .opencode/skills/generate-doc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-doc", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
generate-docA skill your agent uses for OpenIAP documentation generation work, especially the release-note card each PR carries in packages/docs/src/pages/docs/updates/releases.tsx, written as already published…
Generate Doc is an agent skill from hyodotdev/openiap. Use for OpenIAP documentation generation work, especially the release-note card each PR carries in packages/docs/src/pages/docs/updates/releases.tsx, written as already published with the expected native and framework versions and their future GitHub Release links, updating an existing unreleased train instead of creating a duplicate.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Development, covering Changelog and release notes and React components. It works with GitHub. The repository describes itself as: Standardized protocol for in-app purchases across all platforms — backed by Meta & Amazon. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 64158e8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bungitbunxnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, bunx and npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Generate Doc loads about 2.7k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 1,361 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from hyodotdev/openiap at commit 64158e8, republished under its MIT licence (© hyodotdev). 1,361 words, ~2,701 tokens.
.claude/skills/generate-doc/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this skill when the user asks to generate or update OpenIAP docs, and for
the release card every PR into main that changes a published package carries.
Before editing docs, read:
AGENTS.md or CLAUDE.mdpackages/docs/CONVENTION.mdknowledge/internal/05-docs-patterns.mdknowledge/internal/06-git-deployment.mdknowledge/internal/07-docs-consistency.mdIf the task also changes package/library behavior, use openiap-workflows and
read the package or library convention file before editing that code.
A PR into main writes its release card before the release, as already
published; "Docs Ship With The Change" in
knowledge/internal/05-docs-patterns.md is the canonical rule.
Use knowledge/internal/05-docs-patterns.md#release-note-completeness-gate
to inventory the full PR and selected release train. Complete the gate after
writing or updating the card, including after scope changes.
RC and npm next releases live on the on-demand next branch and do not get a
release-history entry. Gather their changes as source material, but add the
consolidated docs entry only when the train is promoted to a stable release on
main. Production npm run deploy is stable-only.
Write every card this way:
Package Releases, not Planned Package Releases.(planned) labels.After the train publishes, compare each version and link with the published releases and correct only what differs.
Before adding a release card, inspect the newest entries and package tags.
Package Releases at the
bottom (see Editing Release Notes).Package Releases list.Never infer framework versions from adjacent release notes or from
openiap-versions.json. Read the metadata paths and tag formats from
knowledge/internal/06-git-deployment.md#release-docs-version-guard, including
the independently versioned Client Protocol, Commerce Protocol, and CLI. Do
not derive their versions from native or framework releases.
When workflows will bump versions after the docs are written, resolve expected versions in this order:
clientProtocol value
actually committed in openiap-versions.json, which mirrors
specs/client/package.json — so a plan naming a target the manifest does not
carry is a stop-and-ask, not a value to compute your way out of.Before naming any package's next major, inspect the canonical deprecation and migration schedule. The release train must include every public removal already scheduled for that major, or stop for maintainer direction to reschedule the contract; never announce a major while claiming APIs scheduled for that major remain available.
Write every resolved target into the release card with its expected tag link.
Do not leave versionless package bullets, (planned) labels, or a
Planned Package Releases list. Ask for confirmation
only when repository evidence names conflicting target versions or it is unclear
whether work belongs to the existing train.
Release notes live in:
packages/docs/src/pages/docs/updates/releases.tsx
Follow the existing card pattern:
Add the newest note near the top of allNotes.
Use a stable kebab-case id with the date.
Use new Date('YYYY-MM-DD').
Use AnchorLink for the heading.
Keep package links in a Package Releases list.
Name the expected version once per package behavior group and in the linked
Package Releases list.
Link issues and PRs when they exist.
Do not edit packages/docs/src/generated/version-metadata.json manually; it
is produced by ./scripts/sync-versions.sh.
Register the card's package tags as aliases and render their hidden anchors:
aliases: MY_RELEASES.map((release) => release.tag),
// and, first thing inside the card's <div>:
{MY_RELEASES.map((release) => (
<span key={release.tag} id={release.tag} aria-hidden="true" />
))}Release workflows link a version's own anchor
(/docs/updates/releases#godot-iap-3.5.1). The page paginates and resolves a
hash only against a note's id or aliases, so a card without them leaves
those links on page one — a dead link that still looks alive. bun run audit:docs fails when a card lists Package Releases without them.
Card section layout (mandatory for multi-package cards):
Common changesProtocols and native packagesFramework librariesIntegration notes (or migration notes)Package Releases blockh5 heading per platform or framework (no Apple, Google,
React Native, Expo, ... headings). Use one parent <li> per package,
following the package-specific grouping rule in
knowledge/internal/05-docs-patterns.md: put <strong>package version</strong>
once, then one inline change or a nested <ul> for multiple changes.
Never repeat the package/version label on each nested change.Protocols and native packages holds Client Protocol, Commerce Protocol,
openiap-apple, and openiap-google bullets; Framework libraries holds the
framework SDK bullets. Omit the section when it would be empty.Package Releases. Do not manufacture one boilerplate bullet per wrapper.openiap-major-api-cleanup-2026-07-29) and the
August 4, 2026 card (amazon-rvs-user-data-patch-train-2026-08-04) are the
reference implementations of this layout.Apply the canonical standard in
knowledge/internal/05-docs-patterns.md#reader-first-writing-standard to every
new or edited release card. Render the result and remove repeated facts,
wrapper-only dependency boilerplate, and sections with no reader action.
The consolidated release page remains the release-note SSOT, but a release that ships several packages must still be readable package by package. This is the project decision recorded from issue #206.
For docs-only release-note edits, run:
# Subshells: a bare `cd` would leave the next line inside packages/docs, where
# the second `cd` fails and the root audits do not resolve.
set -e
(cd packages/docs && bunx prettier --check "src/**/*.{ts,tsx,js,jsx,css,json}")
(cd packages/docs && bun run build)
bun run audit:docs
bun run audit:release-state
git diff --checkIf Prettier fails, format only the touched docs files and rerun the checks.
Before committing to main, pull first:
git pull --ff-only origin main© hyodotdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .codex/skills/generate-doc of hyodotdev/openiap.
Open the folder on GitHubat commit 64158e8
Generate Doc next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Generate Doc this skillhyodotdev/openiap | 154 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Cutting A ReleaseTriliumNext/Trilium | 38k | — | ~3.2k | Automated safety check: Pass | AGPL-3.0 | |
| Mole CLI Release Flowtw93/Mole | 69k | — | ~2.5k | Automated safety check: Pass | GPL-3.0 | |
| Draft Release Notesjamiepine/voicebox | 57k | — | ~941 | Automated safety check: Pass | MIT | |
| Mole Release Notes Publishertw93/Mole | 69k | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Release Bumpjamiepine/voicebox | 57k | — | ~1.1k | Automated safety check: Pass | MIT |
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
tw93/Mole
Runbook for assessing and executing a Mole CLI release: distribution channels, pre-flight checks, capital-V tags, build artifacts and the handoff to curated release notes.
jamiepine/voicebox
Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.
tw93/Mole
Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.
jamiepine/voicebox
Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.
jfernandez/bpftop
Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
hyodotdev/openiap
Run the full OpenIAP device matrix — six frameworks across iOS, Google Play, Amazon Appstore, Meta Horizon, and VegaOS — driving real hardware over adb and xcrun, and report one row per cell with…
hyodotdev/openiap
Manage OpenIAP's OpenCollective presence, including profile copy, slug/link migrations, sponsor/backer recognition, update posts, and README/docs sponsor assets.
hyodotdev/openiap
Run IAPKit local receipt-validation E2E with the dev.hyo.martie React Native or Expo examples, the compiled packages/kit server, real Convex, and Apple or Google sandbox purchases.
hyodotdev/openiap
Run the Apple half of the OpenIAP device matrix — six frameworks plus the native package on iOS — on a physical iPhone and report one row per cell with evidence.
hyodotdev/openiap
Run the Android half of the OpenIAP device matrix — six frameworks across Google Play, Amazon Appstore, and Meta Horizon, plus VegaOS — on real hardware and report one row per cell with evidence.
hyodotdev/openiap
A skill your agent uses for IAPKit product sync E2E testing in packages/kit with the Petgu React Native app, localhost dashboard, App Store Connect, and Google Play Console.
Works with
Categories
A skill your agent uses for OpenIAP documentation generation work, especially the release-note card each PR carries in packages/docs/src/pages/docs/updates/releases.tsx, written as already published…. Generate Doc is an agent skill from hyodotdev/openiap.tsx, written as already published with the expected native and framework versions and their future GitHub Release links, updating an existing unreleased train instead of creating a duplicate.
Generate Doc fits situations like: openIAP documentation generation work; especially the release-note card each PR carries in packages/docs/src/pages/docs/updates/releases.tsx; written as already published with the expected native and framework versions and their future GitHub Release links; updating an existing unreleased train instead of creating a duplicate.
Run `npx skills add hyodotdev/openiap --skill generate-doc -a claude-code`. Or copy the skill folder (.codex/skills/generate-doc in hyodotdev/openiap) into .claude/skills/generate-doc in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hyodotdev/openiap --skill generate-doc -a codex`. Or copy the skill folder (.codex/skills/generate-doc in hyodotdev/openiap) into .agents/skills/generate-doc in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hyodotdev/openiap --skill generate-doc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-doc, .gemini/skills/generate-doc, .github/skills/generate-doc and .opencode/skills/generate-doc in your project.
Going by SKILL.md and its folder, Generate Doc needs the command-line tools its instructions call (bun, git, bunx and npm).
SKILL.md contains no URLs. Its commands use git and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Generate Doc is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Generate Doc: Cutting A Release (TriliumNext/Trilium, 38k stars), Mole CLI Release Flow (tw93/Mole, 69k stars), Draft Release Notes (jamiepine/voicebox, 57k stars) and Mole Release Notes Publisher (tw93/Mole, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hyodotdev (a GitHub organization) maintains it in hyodotdev/openiap, which has 154 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 6, 2026.
Source: hyodotdev/openiap on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.