CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

changelog-scan

Scan merged PRs and commits since a given reference, extract titles, labels, types, and signals. Produces structured input for release notes drafting.

Quality

68%

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

Fix and improve this skill with Tessl

tessl review fix ./starters/changelog-drafter-opencode/skills/changelog-scan/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

65%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 lean, well-organized instruction body whose safety rules and output contracts are concrete, but whose core scanning workflow is under-specified: only one of three scan sources has an executable command and nothing verifies the draft's completeness. The structure and discipline are strong; the executable detail is thin.

Suggestions

Add executable commands for the remaining scan sources, e.g. `gh pr list --state merged --base main --json title,labels,milestone --search "merged:>$(git describe --tags --abbrev=0)"`, so all three sources are actionable.

Number the workflow steps (scan → extract → categorize → write draft → update state file) and add a verification step such as comparing the draft's entry count against `git rev-list --count <last-tag>..HEAD`.

Specify how to resolve `<last-tag>` (e.g., `git describe --tags --abbrev=0`) and how each category maps from PR labels or commit-message conventions.

DimensionReasoningScore

Conciseness

The body is tight bullet-lists with no concept explanations and dense operational rules (including the safety block). Minor trimmable redundancy: the opening line restates the frontmatter description, and "L1: draft only — no PRs, no tags" overlaps "Never publish or tag without explicit human approval". Efficient but not perfectly lean, so 4 rather than 5.

4 / 5

Actionability

One executable command (`git log --merges --oneline <last-tag>..HEAD`) and named output files (RELEASE_NOTES_DRAFT.md, changelog-drafter-state.md) give some concrete guidance, but there is no command for gathering "PR labels and milestones" (e.g., a gh pr invocation), no way to determine `<last-tag>`, and no method for the extract/categorize steps. Incomplete concrete guidance matches the 3 anchor.

3 / 5

Workflow Clarity

The scan → categorize → write-draft sequence is implicit in the section order but never numbered as steps, and there are no validation checkpoints (e.g., verifying the draft covers every merge in the window). This batch scan lacks any verification step, capping workflow clarity at 3.

3 / 5

Progressive Disclosure

At ~42 lines with well-organized headers and no need for external reference files (none exist in the bundle), this is the simple-skill case: well-organized sections alone warrant a 5.

5 / 5

Total

15

/

20

Passed

Description

58%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-scoped description with a clear third-person "what", undermined by the complete absence of "when to use it" guidance and by missing the most natural trigger term ("changelog"). It would surface reliably only for users already saying "release notes".

Suggestions

Add an explicit trigger clause, e.g. "Use when asked to draft release notes or a changelog, or when summarizing what changed since the last release or tag."

Include the synonyms "changelog" and "release" among the trigger terms so users who never say "release notes" still match.

Define or drop the vague word "signals" in favor of a concrete list of extracted fields (e.g., authors, files, linked issues).

DimensionReasoningScore

Specificity

"Scan merged PRs and commits since a given reference", "extract titles, labels, types, and signals", and "Produces structured input for release notes drafting" list several concrete third-person actions with only minor gaps ("signals" is never defined). Not 5 because coverage is not comprehensive; not 3 because it goes well beyond 1-2 actions.

4 / 5

Completeness

The "what" is clear (scan merges, extract fields, produce structured release-notes input), but there is no "Use when..." clause or equivalent trigger guidance, which caps completeness at 3 per the judging guidelines. Not 2 because the "what" is explicit and concrete.

3 / 5

Trigger Term Quality

Relevant keywords like "merged PRs", "commits", and "release notes" are present, but the most natural user term "changelog" (the skill's own name) is absent, as are common phrasings like "since the last tag/release" or "summarize changes". Missing common variations and synonyms matches the 3 anchor better than the 4 anchor.

3 / 5

Distinctiveness Conflict Risk

The changelog/release-notes drafting niche is distinct with specific triggers (merged PRs, commits since a reference). Minor overlap risk with commit-message-writing or PR-summary skills that also trigger on "commits" and "PRs", so not 5.

4 / 5

Total

14

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

14

/

16

Passed

Repository

cobusgreyling/loop-engineering

Path

starters/changelog-drafter-opencode/skills/changelog-scan/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.