Release for this repo — CalVer tag + narrative prepend.
57
67%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/release/SKILL.mdCreates a CalVer tagged release with a hand-written narrative prepended to the body CI generates via scripts/package.js. Overrides the global /release skill for this repo.
release.yml) runs scripts/package.js to build ZIPs + produce dist/release-notes.md, then gh release create --draft --notes-file attaches itmain (or user-specified branch)gh authenticated with push access to the target remote (fork or upstream)zlib.crc32)git describe --tags --abbrev=0 (excludes drafts, gives last tagged commit)YYYY.MM.DD from current datev{YYYY.MM.DD}, or v{YYYY.MM.DD}.{N+1} if same-day tag exists.Ngit tag <tag>git push origin <tag> → triggers release.ymlgh run list --workflow=release.yml --limit 1 --json status,conclusion,databaseId every 5s, max 12 attempts (60s total)status=completed and conclusion=success, fetch draft: gh release view <tag> --json body,urlin_progress after 60s: surface run URL and ask user whether to keep waitinggh run view <id> --log-failed, do not proceed to Phase 4. Remediation: fix the cause and retag with .N increment, or clean up the pushed tag with git push origin :refs/tags/<tag> before retryingAnalyze commits since previous tag:
git log --oneline <prev-tag>..HEADSelect 3-4 highest-impact changes. Prioritize:
feat: with new SKILL.md)rules/, CLAUDE.md, axiom tier changes)Deprioritize:
Theme axis enumeration (conditional on commit set complexity):
When the commit set admits multiple plausible theme axes — distinct ways to group the same commits under different unifying frames — enumerate ALL axes before drafting. Trigger: no single dominant change carries the release on its own; 5+ semantically distinct change clusters in the commit range is a heuristic signal of this condition, not the trigger by itself.
For each candidate axis, present as a numbered list (text output, not a gate option set — the user's response is free-form selection, supplement, or a new axis):
Include a brief epistemic observation on which axes preserve the commit set's actual shape vs. which apply heavier grouping. When the commit set admits a single dominant theme — one frame is uniquely the best fit and other framings would feel like post-hoc reframing — skip axis enumeration and proceed directly to drafting.
After enumeration, draft narrative using the axis the agent judges best-fit; the gate at Phase 5 lets the user pick a different axis if preferred.
Draft narrative using this template (Korean, matching repo's PR body convention):
> **Background**
>
> {experiential / contextual narrative — the lived origin and why this release matters; 1-3 paragraphs. Background IS pure context — the theme sentence belongs in the 무엇이 새로운가요? section below.}
>
> ---
>
> **무엇이 새로운가요?**
>
> 이번 릴리스의 핵심은 **{theme}** — {one sentence summarizing the release}.
>
> - {emoji} **`/command`** 또는 **{feature name}** — {user-facing narrative, 1-2 sentences}
> - {emoji} **...** — ...
> - {emoji} **...** — ...
> - {emoji} **...** — ...
>
> ---
{script-generated body, with its leading `# Epistemic Protocols vX` H1 line removed so it starts at `## Highlights`}The narrative splits into two blockquoted sections, matching the repo's prior-release convention:
**Background**: a grandfathered exception to the Korean-narrative convention, carried forward from earlier releases (v2026.05.18, v2026.05.15) for visual continuity. The change-section label **무엇이 새로운가요?** stays Korean.이번 릴리스의 핵심은 **{theme}** — ...), then the change bullets.Both sections, and the close before the script body, are bounded by in-blockquote dividers (> ---). Each > --- must be preceded by a blank > line: in CommonMark a --- placed flush against paragraph text parses as a setext H2 underline, which would render the preceding line as a heading instead of a divider — the blank > line keeps it a thematic break.
The script body's leading # Epistemic Protocols vX H1 is stripped: the GitHub release title already renders the version, so a body H1 would surface a duplicate title. After stripping, the body begins at ## Highlights.
Emoji selection is descriptive: choose an emoji whose visual semantic matches the change class. The same change class may take different emoji across releases — match the release's framing, not a fixed table.
Context (emit before the gate, as text output):
> --- inside the blockquote) + script-generated body with its leading # Epistemic Protocols vX H1 stripped (begins at ## Highlights)Experiential elicitation (emit as part of context):
Background narratives benefit from the user's experiential grounding — the lived origin that motivated the release. The AI draft maps commit shape; the user supplies the grounding that makes the shape readable. Explicitly invite the user to supplement Background; supplementation is optional. When the AI draft already captures the origin from commit content alone, the invitation can be lightweight — but it must still be surfaced so the option is recognized rather than recalled.
Question: Apply the drafted narrative, supplement with experiential context, modify other elements, or skip?
Options:
This gate is mandatory even if the narrative seems obvious — theme choice and origin framing are constitutive judgments the user owns.
Horizon fusion sub-protocol (engaged when user selects Add experiential context):
/realign.> --- inside the blockquote) + CI body with its leading # Epistemic Protocols vX H1 stripped (begins at ## Highlights) — prevents a duplicate title alongside the GitHub release titlegh release edit <tag> --notes-file <tmp-path>scripts/package.js); the skill does not replace or regenerate those sections.gh release edit <tag> --notes-file <path> against the existing draft. Release creation is owned by CI (via tag push trigger); publish-to-public is owned by the user via the GitHub web UI.> blockquote in fetched body), ask before overwriting.release.yml typically completes in <15s. If status=in_progress after 60s, surface the run URL and let user decide whether to wait or abort.git status output..N suffix — cannot overwrite a published release..N.3ffe94c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.