๐Ÿค– GitHub Automations Overview

November 26, 2025 ยท View on GitHub

This document describes all automated workflows in this repository to help maintain code quality, streamline contributions, and reduce manual work.

๐Ÿ“‹ Active Automations

1. ๐Ÿท๏ธ Auto Label (auto-label.yml)

Triggers: When labels are added to issues/PRs

What it does:

  • โœ… Automatically adds needs testing when released on @dev is added
  • โœ… Automatically removes needs testing when released is added

Why: Ensures proper testing workflow without manual label management.


2. ๐ŸŽฏ Auto Assign Area Labels (auto-assign-area-labels.yml)

Triggers: Issues opened/edited, PRs opened/edited/synchronized

What it does:

  • Analyzes PR file changes or issue content
  • Automatically adds relevant area labels:
    • area: sensors - Changes to sensor files
    • area: coordinator - Changes to coordinator
    • area: config flow - Changes to config/options flow
    • area: services - Changes to services
    • documentation - Documentation or translation changes

Why: Saves maintainers time organizing issues and makes filtering easier.


3. ๐Ÿšซ Check PR Target Branch (check-pr-target-branch.yml)

Triggers: PRs targeting main branch

What it does:

  • โœ… Detects PRs incorrectly targeting main instead of dev
  • โœ… Posts helpful comment explaining the branching strategy
  • โœ… Adds needs information label
  • โœ… Fails the check to prevent accidental merges

Why: Enforces branching strategy (dev โ†’ main) and prevents production issues.


4. ๐Ÿ“ PR Size Labeler (pr-size-labeler.yml)

Triggers: PRs opened/synchronized

What it does:

  • Calculates lines changed (additions + deletions)
  • Adds size labels:
    • ๐Ÿ”น size:XS - < 10 lines
    • ๐Ÿ”ธ size:S - 10-29 lines
    • ๐ŸŸ  size:M - 30-99 lines
    • ๐ŸŸก size:L - 100-499 lines
    • ๐Ÿ”ด size:XL - 500-999 lines
    • ๐Ÿ”ด๐Ÿ”ด size:XXL - 1000+ lines
  • Comments on large PRs (500+ lines) with tips

Why: Helps reviewers prioritize and provides feedback on PR size.


Triggers: PRs opened/edited

What it does:

  • Checks if PR description links to an issue using keywords:
    • Fixes #123, Closes #123, Resolves #123
  • Posts reminder comment if no issue is linked
  • Provides guidance on how to link issues

Why: Ensures traceability and automatically closes issues when PRs merge.


6. ๐Ÿ“ Conventional Commit Checker (check-conventional-commits.yml)

Triggers: PRs opened/edited

What it does:

  • โœ… Validates PR title follows Conventional Commits format
  • โœ… Posts helpful comment with examples if format is wrong
  • โœ… Fails check if format doesn't match
  • Accepts: feat, fix, docs, style, refactor, perf, test, chore, ci, build

Why: Enables automatic versioning and changelog generation.


7. ๐Ÿ‘‹ Welcome New Contributors (welcome.yml)

Triggers: First-time issue or PR from a user

What it does:

  • Welcomes new contributors with friendly message
  • Provides links to contributing guide
  • Explains what happens next
  • Offers help and encouragement

Why: Makes new contributors feel welcome and guides them through the process.


8. ๐Ÿงน Stale Good First Issues (stale-good-first-issues.yml)

Triggers: Daily at 00:00 UTC

What it does:

  • Finds good first issue labels with no activity for 60 days
  • Marks as stale and comments
  • Closes after 7 more days of inactivity
  • Exempts: In Progress, priority: high, priority: critical

Why: Keeps issue list fresh and relevant for new contributors.


9. ๐Ÿงช Validate (validate.yml)

Triggers: Manual, workflow call

What it does:

  • Runs Home Assistant's hassfest validation
  • Runs HACS validation
  • Ensures integration meets HA standards

Why: Catches integration issues early before release.


10. ๐Ÿ”„ Update Contributors (update-contributors.yml)

Triggers: Push to main branch

What it does:

  • Automatically updates contributor list in README
  • Uses contrib.rocks for visual contributor display
  • No manual maintenance needed

Why: Recognizes all contributors automatically.


11. ๐Ÿš€ Semantic Release (semantic_release.yml)

Triggers: Push to main/master branch

What it does:

  • Analyzes conventional commit messages
  • Automatically determines version bump
  • Generates changelog
  • Creates GitHub release
  • Publishes assets

Why: Fully automated release process based on commits.


12. ๐Ÿงช PR Tests (pr_tests.yml)

Triggers: Pull requests

What it does:

  • Runs test suite
  • Checks code coverage
  • Validates code quality
  • Reports results

Why: Ensures code quality before merge.


13. ๐ŸŽจ Lint (lint.yml)

Triggers: Pull requests, pushes

What it does:

  • Runs ruff/pylint checks
  • Validates Python code style
  • Checks formatting

Why: Maintains consistent code style.


14. ๐ŸŽ‰ Celebrate First Contribution (celebrate-first-contribution.yml)

Triggers: When a PR is merged

What it does:

  • โœ… Detects if this is the author's first merged PR
  • โœ… Posts celebratory comment congratulating the contributor
  • โœ… Adds first contribution ๐ŸŽ‰ label to the PR
  • โœ… Encourages further contributions

Why: Makes contributors feel valued and celebrates their achievement.


15. โœจ Enhance Changelog with First Contributors (enhance-changelog-contributors.yml)

Triggers: When a release is published

What it does:

  • โœ… Identifies first-time contributors in the release
  • โœ… Adds "๐ŸŽ‰โœจ First contribution!" badge to their entries
  • โœ… Creates a special "New Contributors" section in release notes
  • โœ… Lists and thanks all first-time contributors

Why: Publicly recognizes new contributors and encourages community growth.

Example output in changelog:

* **sensors:** add new temperature sensor (@newcontributor) ๐ŸŽ‰โœจ First contribution!

## ๐ŸŽ‰ New Contributors
Welcome to our amazing new contributors! Thank you for making your first contribution!
@newcontributor, @anotheruser

๐ŸŽฏ Benefits

For Maintainers

  • โฑ๏ธ Saves Time: Automatic labeling, size checking, and validation
  • ๐ŸŽฏ Better Organization: Area labels applied automatically
  • ๐Ÿ›ก๏ธ Prevents Mistakes: Branch checks, commit format validation
  • ๐Ÿ“Š Better Insights: Size labels, automatic linking

For Contributors

  • ๐Ÿ‘‹ Welcoming: Friendly messages for first-timers
  • ๐ŸŽ‰ Recognition: First contributions are celebrated publicly
  • ๐Ÿ“– Guidance: Helpful comments explain what's needed
  • โœ… Clear Expectations: Automatic checks show what needs fixing
  • ๐Ÿš€ Faster Reviews: Well-organized PRs get reviewed faster
  • ๐ŸŒŸ Visibility: Contributors featured in changelogs and README

For the Project

  • ๐Ÿ“ˆ Better Quality: Automated testing and validation
  • ๐Ÿ“ Clean History: Conventional commits enable automatic changelogs
  • ๐ŸŽฏ Issue Management: Stale issues cleaned, good first issues fresh
  • ๐Ÿค Community Growth: Welcoming automation encourages contributions

๐Ÿ”ง Maintenance

Updating Workflows

All workflows are in .github/workflows/. To modify:

  1. Edit the YAML file
  2. Test changes on a fork first
  3. Submit PR with changes
  4. Document changes in this file

Adding New Automations

Consider these questions:

  • Does it save manual work?
  • Does it improve contributor experience?
  • Does it maintain code quality?
  • Is it well-documented?

Monitoring

  • Check Actions tab for failed workflows
  • Review workflow logs for issues
  • Update as GitHub Actions features evolve

๐Ÿ“š Resources


๐ŸŽŠ First Contribution Workflow

Here's how we celebrate new contributors:

  1. New contributor submits PR โ†’ Welcomed by automation
  2. PR gets merged โ†’ ๐ŸŽ‰ Celebratory comment posted
  3. first contribution ๐ŸŽ‰ label added โ†’ Easy to track
  4. Release is created โ†’ Changelog enhanced with badges
  5. Release notes published โ†’ First-timers get special section
  6. README updated โ†’ Contributor appears in contributor list

Example celebration comment:

๐ŸŽ‰๐ŸŽŠ CONGRATULATIONS @username! ๐ŸŽŠ๐ŸŽ‰

This is your FIRST MERGED CONTRIBUTION to the Spoolman Home Assistant Integration!

You're now officially part of our contributor community! ๐ŸŒŸ

๐Ÿ’ก Ideas for Future Automations

Want to add more? Consider:

  • ๐ŸŽ–๏ธ Auto-assign reviewers based on file changes
  • ๐Ÿ“Š Generate monthly contributor reports
  • ๐Ÿ† Recognize top contributors with milestone badges
  • ๐Ÿ” Auto-detect security vulnerabilities
  • ๐Ÿ“ธ Auto-generate screenshots for UI changes
  • ๐ŸŒ Auto-update translations via Crowdin
  • ๐ŸŽ‚ Birthday messages for repository anniversary

Last Updated: November 26, 2025