Problem
Version badges in README.md and CLAUDE.md require manual updates, leading to drift between actual state and documented state. This was caught during PR #137 review where badges showed v0.10.1 and 310 tests instead of v0.11.2 and 440 tests.
Proposed Solution
Implement a GitHub Actions workflow that automatically updates badges after:
- Test suite runs (update test count)
- Releases are published (update version)
Implementation Plan
Phase 1: Test Count Automation
Create .github/workflows/update-badges.yml:
name: Update Badges
on:
push:
branches: [main]
workflow_run:
workflows: ["CI"]
types: [completed]
branches: [main]
jobs:
update-badges:
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success' || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Get test count
run: |
TEST_COUNT=$(npm test 2>&1 | grep -c "^ok " || echo "0")
echo "TEST_COUNT=$TEST_COUNT" >> $GITHUB_ENV
- name: Update badges if changed
run: |
# Update README.md test badge
sed -i "s/tests-[0-9]*%20passing/tests-${TEST_COUNT}%20passing/" README.md
# Update CLAUDE.md test count
sed -i "s/Tests\*\*: [0-9]* passing/Tests**: ${TEST_COUNT} passing/" CLAUDE.md
- name: Check for changes
id: changes
run: |
if git diff --quiet; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Commit changes
if: steps.changes.outputs.changed == 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add README.md CLAUDE.md
git commit -m "chore: update test count badge to ${TEST_COUNT}"
git push
Phase 2: Version Automation (Future)
When GitHub Releases are adopted:
- Trigger on
release: [published]
- Extract version from release tag
- Update version badges in README.md, CLAUDE.md
- Consider using shields.io dynamic badges:

Files to Update
| File |
Badge Type |
Current Format |
| README.md |
Version |
 |
| README.md |
Tests |
 |
| CLAUDE.md |
Both |
**Version**: vX.X.X | **Tests**: XXX passing |
Acceptance Criteria
Future Enhancements
Related
Problem
Version badges in README.md and CLAUDE.md require manual updates, leading to drift between actual state and documented state. This was caught during PR #137 review where badges showed
v0.10.1and310 testsinstead ofv0.11.2and440 tests.Proposed Solution
Implement a GitHub Actions workflow that automatically updates badges after:
Implementation Plan
Phase 1: Test Count Automation
Create
.github/workflows/update-badges.yml:Phase 2: Version Automation (Future)
When GitHub Releases are adopted:
release: [published]Files to Update
**Version**: vX.X.X | **Tests**: XXX passingAcceptance Criteria
Future Enhancements
Related