Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Provides automated documentation updates by analyzing git changes between the current branch and the last release tag. Performs git diff analysis to identify modifications, then updates README.md, CHANGELOG.md following Keep a Changelog standard, and discovers documentation folders for contextual updates. Use when preparing a release, maintaining documentation sync, or before creating a pull request. Triggers on "update docs", "update changelog", "sync documentation", "update readme", "prepare r
.claude/skills/giuseppe-trisciuoglio-docs-updater/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 304% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 126% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 122% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 226% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 101% | 0% |
Analyzes git changes since the latest release tag and updates the documentation files that should change with them.
Use git history to identify release-relevant changes, then update README.md, CHANGELOG.md, and any relevant documentation folders. Keep the workflow focused on explicit user approval, precise edits, and repository-specific documentation structure.
Use this skill when:
Unreleased changelog updateREADME.md or documentation after feature work landsBefore starting, verify that the following conditions are met:
bash# Verify we're in a git repository git rev-parse --git-dir # Check that git tags exist git tag --list | head -5 # Verify documentation files exist test -f README.md || echo "README.md not found" test -f CHANGELOG.md || echo "CHANGELOG.md not found"
If no tags exist, inform the user that this skill requires at least one release tag to compare against.
Goal: Identify the latest released version to compare against.
Actions:
bashLATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null) if [ -z "$LATEST_TAG" ]; then echo "No git tags found. This skill requires at least one release tag." echo "Please create a release tag first (e.g., git tag -a v1.0.0 -m 'Initial release')" exit 1 fi CURRENT_BRANCH=$(git branch --show-current) VERSION=$(echo "$LATEST_TAG" | sed -E 's/^[^0-9]*([0-9]+\.[0-9]+\.[0-9]+).*/\1/') echo "Latest release tag: $LATEST_TAG" echo "Version detected: $VERSION" echo "Comparing: $LATEST_TAG -> $CURRENT_BRANCH"
Goal: Analyze all changes between the last release and current branch.
Actions:
bash# Get commit count between tag and HEAD COMMIT_COUNT=$(git rev-list --count ${LATEST_TAG}..HEAD 2>/dev/null || echo "0") echo "Commits since $LATEST_TAG: $COMMIT_COUNT" # Get file change statistics git diff --stat ${LATEST_TAG}..HEAD
bash# Get all commit messages in the range COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"%h|%s|%b" --reverse) # Display commits for review echo "$COMMITS"
bash# Get list of changed files CHANGED_FILES=$(git diff --name-only ${LATEST_TAG}..HEAD) # Show add/modify/delete status for quick categorization git diff --name-status ${LATEST_TAG}..HEAD
bash# Detect which components/areas changed echo "$CHANGED_FILES" | grep -E "^plugins/" | cut -d'/' -f2 | sort -u
Goal: Identify all relevant documentation locations in the project.
Actions:
bash# Check for common documentation locations DOC_FOLDERS=() [ -d "docs" ] && DOC_FOLDERS+=("docs/") [ -d "documentation" ] && DOC_FOLDERS+=("documentation/") [ -d "doc" ] && DOC_FOLDERS+=("doc/") # Find plugin-specific docs for plugin_dir in plugins/*/; do if [ -d "${plugin_dir}docs" ]; then DOC_FOLDERS+=("${plugin_dir}docs/") fi done echo "Documentation folders found:" printf ' - %s\n' "${DOC_FOLDERS[@]}"
bash# Check for standard doc files DOC_FILES=() [ -f "README.md" ] && DOC_FILES+=("README.md") [ -f "CHANGELOG.md" ] && DOC_FILES+=("CHANGELOG.md") [ -f "CONTRIBUTING.md" ] && DOC_FILES+=("CONTRIBUTING.md") [ -f "docs/GUIDE.md" ] && DOC_FILES+=("docs/GUIDE.md") echo "Documentation files found:" printf ' - %s\n' "${DOC_FILES[@]}"
Goal: Create categorized changelog entries following Keep a Changelog standard.
Actions:
Added, Changed, Fixed, Removed, and Security.See references/examples.md for detailed bash commands and changelog templates.
Goal: Update the main README with relevant high-level changes.
Actions:
Goal: Propagate changes to relevant documentation in docs/ folders.
Actions:
See references/examples.md for detailed discovery patterns and update strategies.
Goal: Show the user what will be updated before applying changes.
Actions:
markdown## Proposed Documentation Updates ### Version Information - Previous release: $LATEST_TAG - Current branch: $CURRENT_BRANCH - Commits analyzed: $COMMIT_COUNT ### Files to Update - [ ] CHANGELOG.md - Add new version section with categorized changes - [ ] README.md - Update [specific sections] - [ ] docs/[specific files] - Update documentation ### Summary of Changes **Added**: N new features **Changed**: N modifications **Fixed**: N bug fixes **Breaking**: N breaking changes
Goal: Write the approved updates, then verify they landed correctly.
Actions:
bash# Read current changelog CURRENT_CHANGELOG=$(cat CHANGELOG.md) # Prepend new section cat > CHANGELOG.md << 'EOF' # 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.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] [New content goes here] [Rest of existing changelog] EOF
bash# For each documentation file that needs updates # Use Edit tool to make precise changes
bash# Confirm key files still exist after editing test -f CHANGELOG.md && echo "CHANGELOG.md present" test -f README.md && echo "README.md present" # Review the scope of markdown changes git diff --stat -- '*.md' # Spot-check the actual content written git diff -- '*.md' | sed -n '1,240p'
User request: "Update docs for the new features I just added"
Output:
User request: "Prepare documentation for v2.5.0 release"
Output:
User request: "Sync docs, I've made some changes"
Output:
See references/examples.md for detailed session transcripts and troubleshooting.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 2,280 | 2,743 | +20% | 1 | 1 | 0% | 251 | 2,738 | +991% | 0 | 0 | — |
case-02 | fail→fail | 4,160 | 4,020 | -3% | 1 | 1 | 0% | 506 | 2,885 | +470% | 0 | 0 | — |
case-03 | fail→fail | 7,578 | 6,532 | -14% | 1 | 1 | 0% | 465 | 2,798 | +502% | 0 | 0 | — |
case-17 | fail→pass | 4,168 | 2,014 | -52% | 1 | 1 | 0% | 684 | 2,761 | +304% | 0 | 0 | — |
case-04 | fail→fail | 4,277 | 5,710 | +34% | 1 | 1 | 0% | 555 | 2,728 | +392% | 0 | 0 | — |
case-05 | pass→fail | 3,537 | 5,669 | +60% | 1 | 1 | 0% | 442 | 2,723 | +516% | 0 | 0 | — |
case-06 | fail→fail | 4,385 | 7,181 | +64% | 1 | 1 | 0% | 716 | 2,787 | +289% | 0 | 0 | — |
case-07 | fail→pass | 8,427 | 4,808 | -43% | 1 | 1 | 0% | 1,476 | 3,338 | +126% | 0 | 0 | — |
case-08 | fail→fail | 12,201 | 7,307 | -40% | 1 | 1 | 0% | 1,901 | 3,719 | +96% | 0 | 0 | — |
case-09 | pass→pass | 22,891 | 9,217 | -60% | 1 | 1 | 0% | 2,076 | 3,966 | +91% | 0 | 0 | — |
case-10 | fail→pass | 9,470 | 7,574 | -20% | 1 | 1 | 0% | 1,766 | 3,925 | +122% | 0 | 0 | — |
case-11 | pass→pass | 3,073 | 2,840 | -8% | 1 | 1 | 0% | 544 | 2,838 | +422% | 0 | 0 | — |
case-12 | pass→pass | 9,540 | 4,674 | -51% | 1 | 1 | 0% | 1,641 | 3,211 | +96% | 0 | 0 | — |
case-13 | pass→pass | 7,050 | 4,899 | -31% | 1 | 1 | 0% | 1,258 | 3,354 | +167% | 0 | 0 | — |
case-14 | pass→pass | 6,741 | 4,352 | -35% | 1 | 1 | 0% | 1,269 | 3,206 | +153% | 0 | 0 | — |
case-15 | fail→fail | 10,233 | 2,649 | -74% | 1 | 1 | 0% | 1,452 | 2,834 | +95% | 0 | 0 | — |
case-16 | fail→pass | 4,910 | 2,444 | -50% | 1 | 1 | 0% | 860 | 2,806 | +226% | 0 | 0 | — |
case-18 | pass→pass | 3,003 | 2,281 | -24% | 1 | 1 | 0% | 414 | 2,800 | +576% | 0 | 0 | — |
case-19 | pass→pass | 3,018 | 2,006 | -34% | 1 | 1 | 0% | 470 | 2,732 | +481% | 0 | 0 | — |
case-20 | fail→fail | 8,846 | 4,793 | -46% | 1 | 1 | 0% | 1,286 | 3,194 | +148% | 0 | 0 | — |
case-21 | fail→pass | 9,213 | 4,743 | -49% | 1 | 1 | 0% | 1,649 | 3,307 | +101% | 0 | 0 | — |
case-22 | fail→pass | 10,515 | 5,567 | -47% | 1 | 1 | 0% | 1,520 | 3,390 | +123% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 18 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.