Skip to content

fix: ruff lint and format violations in powerpoint skill break stable release pipeline #1047

@WilliamBerryiii

Description

@WilliamBerryiii

Summary

The release-stable.yml pipeline run #53 fails on the Python Lint (.github/skills/experimental/powerpoint) / Ruff Lint and Format Check job, which blocks the release-please job from creating a stable release PR.

Root Cause Analysis

This failure was exposed by PR #1043, which added -Force to Get-ChildItem calls in release-stable.yml and pr-validation.yml. Before that fix, Get-ChildItem -Recurse could not traverse hidden directories like .github/, so the discover-python-projects job never found the powerpoint skill and python-lint was always skipped.

With -Force in place, the powerpoint skill is now correctly discovered and linted. Pre-existing ruff violations in the skill cause the lint job to fail.

Why PR validation did not catch this

The python-lint reusable workflow is called with different parameters in each pipeline:

Pipeline changed-files-only Effect
pr-validation.yml true Only lints Python files changed in the PR
release-stable.yml false Lints all Python files in discovered skills

PR #1043 changed only YAML workflow files. With changed-files-only: true, zero Python files were linted during PR validation, so the pre-existing violations were invisible.

Dependency chain to release-please

The release-please job depends on python-lint via its needs: list. PR #1043 added an if: ${{ !cancelled() && !failure() }} guard to handle the skip case (no Python projects found). However, when python-lint genuinely fails (as in run #53), failure() returns true and release-please is correctly blocked.

Fixing the ruff violations resolves the genuine failure, allowing python-lint to pass and release-please to proceed.

Violations Found

ruff check (3 errors)

  • tests/test_build_deck.py:920 — E501 line too long (92 > 88)
  • tests/test_build_deck.py:940 — E501 line too long (92 > 88)
  • tests/test_build_deck.py:954 — E501 line too long (93 > 88)

ruff format (7 files)

  • scripts/build_deck.py
  • scripts/extract_content.py
  • scripts/pptx_colors.py
  • tests/test_build_deck.py
  • tests/test_render_pdf_images.py
  • tests/test_validate_deck.py
  • tests/test_validate_slides.py

All paths relative to .github/skills/experimental/powerpoint/.

Additional Discovery

The same hidden-directory bug (Get-ChildItem -Recurse without -Force) was present in two local linting scripts:

  • scripts/linting/Invoke-PythonLint.ps1 (line 38)
  • scripts/linting/Invoke-PythonTests.ps1 (line 44)

Running npm run lint:py locally produced "No Python skills found" before the fix. Adding -Force resolves this.

Fix

  • Apply ruff format to 7 Python files in the powerpoint skill
  • Apply ruff check --fix to resolve 3 E501 line-too-long violations
  • Add -Force to Get-ChildItem in Invoke-PythonLint.ps1 and Invoke-PythonTests.ps1

Branch: fix/ruff-lint-powerpoint-skill

Validation

All checks pass locally after the fix:

  • ruff check . — 0 errors
  • ruff format --check . — all files formatted
  • npm run lint:py — "Found 1 Python skill(s)", all passed
  • npm run lint:ps — 93 files, 0 issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions