CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

draft-release-notes

Use this skill to draft or update the [Unreleased] section of CHANGELOG.md from the actual changes since the last tag. Run this at any point during development to keep a working copy of the release narrative. Does NOT bump versions or create tags.

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

86%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A tight, executable, single-file skill: concrete git and gh commands, an exact output template with style rules, and explicit edge-case handling. The only weaknesses are minor repetition of the anytime/non-destructive point and the absence of a post-edit verification step.

DimensionReasoningScore

Conciseness

The body is lean and assumes Claude's competence — no padding explaining what a changelog is or how git works. Minor redundancy keeps it below a 5: the 'run anytime / non-destructive' point is stated in Goal ('run it as many times as you want'), echoed in Workflow step 4 ('Do NOT commit, tag, or bump versions'), and restated in Notes ('The agent can be asked to run this skill at any point — mid-feature, before a PR, or right before cutting a release').

4 / 5

Actionability

Fully executable, copy-paste-ready commands cover the workflow: `git tag --list "v*" --sort=-v:refname | head -n 1`, `git log --oneline "$LAST_TAG"..HEAD`, a complete `gh api repos/:owner/:repo/releases/generate-notes` invocation with flags and `--jq '.body'`, and `git diff --stat`. The edit operation is precisely bounded ('Replace everything between `## [Unreleased]` and the next `## [` heading') and a concrete markdown template plus the empty-log branch cover the common cases.

5 / 5

Workflow Clarity

A clear 4-step sequence with a real checkpoint for the empty-log case ('If `git log "$LAST_TAG"..HEAD` is empty, leave the `[Unreleased]` section empty and tell the user'). Not a 5: there is no post-edit verification that stamped release sections were preserved, and the requirement that the `[Unreleased]` section 'must always exist' gives no instruction for when CHANGELOG.md lacks one. Not a 3: the operation is explicitly framed as non-destructive and idempotent, so the destructive/batch validation cap does not apply.

4 / 5

Progressive Disclosure

A single, well-sectioned file (Goal, Workflow, Release Story Format, Style Guidelines, When There Are No Changes, Notes) with no nested or dangling references — no references/, scripts/, or assets/ exist and none are needed at this size. Every section is core workflow material, so nothing belongs in a separate file, and navigation is trivial.

5 / 5

Total

18

/

20

Passed

Description

78%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A specific, well-bounded description with concrete actions, explicit non-goals, and a clear niche. It loses points for imperative rather than third-person voice, omission of the most natural trigger phrase 'release notes', and a when-clause that describes timing instead of user-triggering requests.

Suggestions

Rewrite the capability statement in third person, e.g. 'Drafts or updates the [Unreleased] section of CHANGELOG.md from the actual changes since the last tag.'

Add explicit trigger phrases using the skill's own vocabulary: 'Use when the user asks to draft release notes or update the changelog's [Unreleased] section.'

Replace 'Run this at any point during development' with a use-when clause mapping to the concrete moments already listed in the body: mid-feature, before a PR, or right before cutting a release.

DimensionReasoningScore

Specificity

'draft or update the [Unreleased] section of CHANGELOG.md from the actual changes since the last tag' names concrete actions with a precise target, source, and explicit non-goals ('Does NOT bump versions or create tags') — comprehensive for its domain (a 5), but the imperative 'Use this skill to draft...' and 'Run this at any point' voice is not the third person the guidelines require, costing 1 point. Not a 3: it lists several specific actions with full domain coverage, not just 1-2.

4 / 5

Completeness

Both what and when are explicit: 'Use this skill to draft or update the [Unreleased] section... from the actual changes since the last tag' plus 'Run this at any point during development to keep a working copy of the release narrative', with a negative scope boundary. Not a 5: the when-clause gives timing rather than concrete user trigger phrases ('Use when the user asks to draft release notes or update the changelog'). Not a 3: an explicit use-when equivalent is present, so the completeness cap does not apply.

4 / 5

Trigger Term Quality

Good natural-keyword coverage: 'CHANGELOG.md', '[Unreleased]', 'draft', 'release narrative', 'last tag', 'versions', 'tags'. Not a 5 because the most natural user phrase — 'release notes', the skill's own name — never appears, nor do synonyms like 'changelog entry'. Not a 3: coverage goes well beyond one or two generic keywords.

4 / 5

Distinctiveness Conflict Risk

Clear niche (drafting the unreleased changelog section) with distinct triggers and an explicit exclusion — 'Does NOT bump versions or create tags' — that cleanly separates it from the nearest competing skill (release-bump). Minimal conflict risk; no anchor above fits.

5 / 5

Total

17

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

jamiepine/voicebox

Path

.agents/skills/draft-release-notes/SKILL.md

Reviewed

Table of Contents

Is this your skill?

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.