๐Ÿท๏ธ GitHub Labels Setup Guide

November 26, 2025 ยท View on GitHub

This document describes how to set up and maintain GitHub labels for the project. These labels help organize issues and make it easier for contributors to find work that matches their skills.

Priority Labels

LabelColorDescription
priority: critical#b60205Critical issues that need immediate attention
priority: high#d93f0bHigh priority issues
priority: medium#fbca04Medium priority issues
priority: low#0e8a16Low priority issues

Type Labels

LabelColorDescription
bug#d73a4aSomething isn't working
enhancement#a2eeefNew feature or request
documentation#0075caImprovements or additions to documentation
question#d876e3Further information is requested
dependencies#0366d6Pull requests that update a dependency

Status Labels

LabelColorDescription
status: awaiting response#fef2c0Waiting for response from issue author
status: blocked#b60205Blocked by another issue or external factor
status: in progress#fbca04Someone is actively working on this
status: needs investigation#edededNeeds more investigation
status: ready#0e8a16Ready to be worked on
needs testing#fbca04Released on dev, needs testing before production โšก Auto-added
released on @dev#edededReleased on dev branch
released#edededReleased on main branch

Difficulty Labels (For Contributors)

LabelColorDescription
good first issue#7057ffGood for newcomers - well-defined, small scope
help wanted#008672Extra attention is needed from the community
advanced#5319e7Requires advanced knowledge of the codebase

Special Labels

LabelColorDescription
breaking change#b60205Changes that break backward compatibility
security#ee0701Security-related issues
wontfix#ffffffThis will not be worked on
duplicate#cfd3d7This issue or pull request already exists
invalid#e4e669This doesn't seem right

Area Labels (Optional)

LabelColorDescription
area: sensors#1d76dbRelated to sensor entities
area: coordinator#1d76dbRelated to data coordinator
area: config flow#1d76dbRelated to configuration flow
area: services#1d76dbRelated to Home Assistant services
area: translations#1d76dbRelated to translations

๐Ÿš€ How to Apply Labels

Automatically (via GitHub CLI)

# Create all recommended labels
gh label create "good first issue" --color "7057ff" --description "Good for newcomers"
gh label create "help wanted" --color "008672" --description "Extra attention is needed"
gh label create "priority: high" --color "d93f0b" --description "High priority"
gh label create "priority: critical" --color "b60205" --description "Critical issues"
gh label create "breaking change" --color "b60205" --description "Breaking changes"
gh label create "area: sensors" --color "1d76db" --description "Related to sensor entities"
gh label create "area: coordinator" --color "1d76db" --description "Related to data coordinator"
gh label create "area: config flow" --color "1d76db" --description "Related to configuration flow"
gh label create "area: services" --color "1d76db" --description "Related to services"
gh label create "advanced" --color "5319e7" --description "Requires advanced knowledge"

Manually (via GitHub UI)

  1. Go to your repository on GitHub
  2. Click on "Issues" tab
  3. Click "Labels" button
  4. Click "New label"
  5. Fill in the name, description, and color
  6. Click "Create label"

๐ŸŽฏ How to Mark Issues as "Good First Issue"

When creating or triaging issues, consider marking them as "good first issue" if they:

โœ… Criteria for "Good First Issue"

  • Clear Scope: Well-defined and focused on a single task
  • Documentation: Has clear description and acceptance criteria
  • Self-Contained: Doesn't require deep knowledge of entire codebase
  • Low Risk: Changes won't affect critical functionality
  • Guided: Includes hints, examples, or links to relevant code
  • Testable: Easy to verify the fix works correctly

๐Ÿ“ Good First Issue Template

When creating a good first issue, include:

## ๐ŸŽฏ Description
[Clear description of what needs to be done]

## ๐Ÿ’ก Hints
- File to edit: `custom_components/spoolman/sensor.py`
- Look at line 123 for similar implementation
- Related documentation: [link]

## โœ… Acceptance Criteria
- [ ] Criteria 1
- [ ] Criteria 2
- [ ] Tests added/updated
- [ ] Documentation updated if needed

## ๐Ÿš€ Getting Started
1. Fork the repository
2. Set up development environment (see CONTRIBUTING.md)
3. Make your changes
4. Run tests: `pytest tests/`
5. Submit a pull request

## ๐Ÿ“š Resources
- [Relevant documentation](link)
- [Similar implementation](link)

๐Ÿ” Examples of Good First Issues

Example 1: Documentation

Title: Add example automation for low filament alert
Labels: good first issue, documentation
Description: Add a practical example to README.md showing how to create
an automation that sends a notification when filament is low.

Example 2: Simple Enhancement

Title: Add unit test for weight conversion helper
Labels: good first issue, enhancement, area: tests
Description: Add missing unit test for the weight_to_grams() helper
function in helpers/units.py

Example 3: Small Bug Fix

Title: Fix typo in German translation
Labels: good first issue, bug, area: translations
Description: Correct spelling error in de.json translation file

๐Ÿ”„ Label Workflow

For Maintainers

When a new issue is created:

  1. Add type label (bug/enhancement/documentation/question)
  2. Add priority label if urgent
  3. Add area label to categorize
  4. Consider if it's a "good first issue"
  5. Add "help wanted" if community help is welcome

When work begins:

  1. Add "status: in progress"
  2. Assign to the person working on it

When PR is submitted:

  1. Link PR to issue
  2. Review and provide feedback
  3. Merge when approved

When issue is closed:

  1. Remove "status: in progress"
  2. Ensure issue is properly labeled for future reference

๐Ÿ“Š Using Labels to Track Progress

Find issues to work on:

  • Good first issues: is:open is:issue label:"good first issue"
  • Help wanted: is:open is:issue label:"help wanted"
  • High priority bugs: is:open is:issue label:bug label:"priority: high"

Track project health:

  • Open bugs: is:open is:issue label:bug
  • Feature requests: is:open is:issue label:enhancement
  • Documentation needs: is:open is:issue label:documentation

๐ŸŽ“ Best Practices

  1. Be Consistent: Use the same labels for similar issues
  2. Be Specific: Don't over-label; 3-5 labels per issue is usually enough
  3. Keep Updated: Remove labels that no longer apply
  4. Communicate: Use labels to signal status to contributors
  5. Review Regularly: Audit labels monthly to ensure they're still relevant

๐Ÿค– Automated Label Workflows

This repository uses GitHub Actions to automatically manage labels:

Auto-Label Workflow (.github/workflows/auto-label.yml)

Automatic "needs testing" Label:

  • โœ… When released on @dev is added โ†’ needs testing is automatically added
  • โœ… When released is added โ†’ needs testing is automatically removed

This ensures that:

  1. Features/fixes released on dev branch are flagged for testing
  2. Once promoted to main (production), the testing flag is cleared
  3. No manual label management needed for the testing workflow

How it works:

Issue/PR โ†’ Add "released on @dev" โ†’ GitHub Action โ†’ Auto-add "needs testing"
Issue/PR โ†’ Add "released" โ†’ GitHub Action โ†’ Auto-remove "needs testing"

๐Ÿ”— Resources