feat(skills): add report-framework-issue skill #2109
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| # | |
| --- | |
| name: prek | |
| on: # yamllint disable-line rule:truthy | |
| pull_request: | |
| push: | |
| branches: [main] | |
| permissions: {} | |
| jobs: | |
| prek: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| persist-credentials: false | |
| # `uv` brings its own Python and is required by both: | |
| # - the four `workspace-*` prek hooks in | |
| # `.pre-commit-config.yaml`, which call | |
| # `tools/dev/run-workspace-check.sh` to iterate over every | |
| # workspace member declared in the root pyproject's | |
| # `[tool.uv.workspace] members` list and invoke ruff / | |
| # mypy / pytest in each via `uv run --directory`; | |
| # - the `uv tool install prek` step below. | |
| # Minimum uv version is pinned in the root `pyproject.toml` | |
| # (`[tool.uv] required-version`). | |
| - uses: astral-sh/setup-uv@f98e06938123ccabd21905ea5d0069192241f9f1 # v8.3.1 | |
| with: | |
| enable-cache: true | |
| # Sync the uv workspace with the dev group so that | |
| # `ruff`, `mypy`, and `pytest` (declared at workspace root) | |
| # are present in the shared `.venv`. The `workspace-*` hooks | |
| # in `.pre-commit-config.yaml` call | |
| # `tools/dev/run-workspace-check.sh`, which invokes | |
| # `uv run --directory <member> <check>`; without the explicit | |
| # sync, the auto-sync uv runs on `uv run` only resolves | |
| # member runtime deps and the dev tools are missing. | |
| - name: Sync workspace (installs ruff / mypy / pytest from root dev group) | |
| # `--all-packages` is required — without it `uv sync` only | |
| # installs the root project's deps, and the root has | |
| # `package = false` so member packages and their | |
| # `[project.scripts]` entry points would be skipped. | |
| run: uv sync --all-packages --group dev | |
| # Cache prek's hook environments. The `lychee` hook is | |
| # `language: rust` with `additional_dependencies: [cli:lychee:…]`, | |
| # so prek `cargo install`s lychee into a hook env under | |
| # `~/.cache/prek` — a multi-minute compile. Caching that dir | |
| # reuses the built binary (and every other hook env) across runs; | |
| # keyed on the prek config so a hook/version change busts it. | |
| - name: Cache prek hook environments | |
| uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: ~/.cache/prek | |
| key: prek-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }} | |
| restore-keys: | | |
| prek-${{ runner.os }}- | |
| # Restore the lychee result cache so external-URL checks reuse | |
| # results across runs (`.lychee.toml` sets `max_cache_age = "7d"`). | |
| - name: Cache lychee link-check results | |
| uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .lycheecache | |
| key: cache-lychee-${{ github.sha }} | |
| restore-keys: | | |
| cache-lychee- | |
| # Install prek via uv (rather than via the `j178/prek-action` | |
| # action) so the `[tool.uv] exclude-newer` cooldown in the | |
| # root `pyproject.toml` applies to the prek install as well. | |
| - name: Install prek | |
| run: uv tool install prek | |
| - name: Run prek | |
| # GITHUB_TOKEN lets the `lychee` hook authenticate its | |
| # github.com link checks — unauthenticated requests get | |
| # rate-limited (429) once a run checks more than a handful of | |
| # GitHub URLs. lychee reads GITHUB_TOKEN automatically; the | |
| # job's `contents: read` scope is sufficient for link checking. | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # `--skip workspace-pytest`: pytest already runs in CI as the | |
| # dedicated, path-filtered `tests` workflow matrix | |
| # (`.github/workflows/tests.yml`). Running it a second time here | |
| # (bundled across every workspace member) is pure duplication in | |
| # CI, so skip it — the hook still runs locally on `git commit` / | |
| # `prek run`, where there is no separate matrix. | |
| # | |
| # `--verbose`: without it prek renders a progress UI that a | |
| # non-TTY CI log buffers and only flushes at the end, so a long | |
| # run shows nothing while it works. Verbose prints each hook's | |
| # result and output as it completes, giving live progress in the | |
| # Actions log. | |
| run: >- | |
| prek run --show-diff-on-failure --color=always --all-files | |
| --verbose --skip workspace-pytest |