changelog — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited changelog (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are in AUTONOMOUS MODE. Do NOT ask questions. Parse the git history and produce a well-structured CHANGELOG.md.
INPUT: $ARGUMENTS
Accepted arguments:
since vX.Y.Z or since <tag>: generate only entries since that tag/version.unreleased: generate only the Unreleased section since the last tag.update: read existing CHANGELOG.md, append only new entries since last documented version.============================================================ PHASE 1: GIT HISTORY EXTRACTION ============================================================
Step 1.1 -- Identify Version Boundaries
Run:
git tag --sort=-version:refname to list all tags (newest first)git log --format="%H|%ai|%s|%b|%D" --reverse to get all commits with refsFor each tag, record:
If no tags exist, group commits by time periods (monthly or weekly).
Step 1.2 -- Parse Commits
For each commit between version boundaries, parse the message:
| Prefix | Category |
|---|---|
feat: feat(scope): | Features |
fix: fix(scope): | Bug Fixes |
docs: docs(scope): | Documentation |
refactor: refactor(scope): | Refactoring |
perf: perf(scope): | Performance |
test: test(scope): | Tests |
chore: chore(scope): | Chores |
ci: ci(scope): | CI/CD |
style: style(scope): | Style |
build: build(scope): | Build |
revert: | Reverts |
BREAKING CHANGE: in body | Breaking Changes |
! after type (e.g., feat!:) | Breaking Changes |
For non-conventional commits (no prefix), classify by content:
Step 1.3 -- Extract Metadata
For each commit, also extract:
(#123), Merge pull request #123)fixes #45, closes #78)============================================================ PHASE 2: CHANGELOG GENERATION ============================================================
Step 2.1 -- Read Existing Changelog
If CHANGELOG.md exists:
Step 2.2 -- Format Entries
Use keep-a-changelog format (https://keepachangelog.com):
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [X.Y.Z] - YYYY-MM-DD
### Breaking Changes
- Description of breaking change ([#PR](url))
### Added
- New feature description ([#PR](url))
### Fixed
- Bug fix description ([#PR](url))
### Changed
- Change description ([#PR](url))
### Deprecated
- Deprecation notice ([#PR](url))
### Removed
- Removal description ([#PR](url))
### Security
- Security fix description ([#PR](url))Category mapping from conventional commits to changelog sections:
Step 2.3 -- Group and Deduplicate
mention only the feature (the fix was part of getting it right)
(unless they are the only changes in a version)
Step 2.4 -- Link Generation
If the project has a git remote, generate comparison links:
[Unreleased]: https://github.com/owner/repo/compare/v1.2.0...HEAD
[1.2.0]: https://github.com/owner/repo/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/owner/repo/releases/tag/v1.1.0Detect the remote URL from git remote get-url origin.
============================================================ PHASE 3: WRITE AND VERIFY ============================================================
Step 3.1 -- Write CHANGELOG.md
Step 3.2 -- Verify
============================================================ SELF-HEALING VALIDATION (max 2 iterations) ============================================================
After producing documentation, validate completeness:
IF VALIDATION FAILS:
============================================================ OUTPUT ============================================================
| Version | Date | Added | Fixed | Changed | Breaking |
|---|---|---|---|---|---|
| Unreleased | -- | N | N | N | N |
| vX.Y.Z | YYYY-MM-DD | N | N | N | N |
| ... | ... | ... | ... | ... | ... |
============================================================ SELF-EVOLUTION TELEMETRY ============================================================
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
~/.claude/projects/skill-telemetry.md in that memory directoryEntry format:
### /changelog — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
============================================================ DO NOT ============================================================
the project has no user-facing changes at all.
NEXT STEPS:
After generating the changelog:
/document to check overall documentation health."/readme to update the README with the latest version info."~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.