with one click
secure-ci
Use when user asks to secure a repo's CI
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Use when user asks to secure a repo's CI
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Use when dropping a Python version from a project
Use when exploring, triaging, or categorizing all of a repository's GitHub issues, like finding verifiable bugs or grouping issues by topic
Use when a branch and PR is requested explicitly
Review code quality and packaging usuing sp-repo-review for Scientific Python projects
Add a minimum version test job to a noxfile
| name | secure-ci |
| description | Use when user asks to secure a repo's CI |
| license | MIT |
| compatibilty | Requires uvx (from uv) and npx (from nodejs). |
.pre-commit-config.yaml exists; don't add one if it's not already there.Fully pin GHA. Use npx actions-up -y --min-age=7 --style=sha --include-branches to update and pin. Make sure all the updates are to the
same or newer tags - the sorting mechanim for actions-up fails sometimes, like
going from year based releases to old SemVer releases, or grabbing a tag that's
not a normal release.
The repo should use zizmor. If .pre-commit-config.yaml exists, this is a good hook:
- repo: https://github.com/zizmorcore/zizmor-pre-commit
rev: a4727cbbcd26d7098e96b9cb738169b59711ae51 # frozen: v1.24.1
hooks:
- id: zizmor
files: "^\\.github"
args: [--persona=pendatic]
Run uvx zizmor --persona=pedantic .github directly. Fix up the problems reported.
You can request auto-fixes with --fix=safe or --fix=all for some of the checks.
Common problems / fixes:
.github/zizmor.yaml.Template expansion fix example, before:
- run: uv run noxfile.py -s test-${{ matrix.python }}
After:
- run: uv run noxfile.py -s test-$PYTHON
env:
PYTHON: ${{ matrix.python }}
If the user is using pre-commit, run prek auto-update --freeze --cooldown-days 7 to update and pin to sha.
If the user does not use .github/dependabot.yml, add one like this:
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
groups:
github-actions:
patterns:
- "*"
cooldown:
default-days: 7
The old alias "actions" can be updated to "github-actions".
If the package has a .pre-commit-config.yaml but there's no ci: field in
it, add this to .github/dependabot.yml:
- package-ecosystem: "pre-commit"
directory: "/"
schedule:
interval: "monthly"
groups:
pre-commit:
patterns:
- "*"
cooldown:
default-days: 7
If a user does have a ci: section in .pre-commit-config.yaml, but doesn't
have autoupdate_schedule set, set it.
All deploy jobs should run seperatly from build jobs, to minimize the number of packages that run with access to deploy permissions. Use artifact upload/download to provide the required files for the deploy job.
If this repo uses uv anywhere and has a pyproject.toml, add:
[tool.uv]
exclude-newer = "7 days"
If there's any sign this repo uses pixi, add exclude-newer = "7d" to the
tool pixi table in pyproject.toml or pixi.toml
Run prek -a --quiet if using pre-commit to make sure all changes pass.
Provide a concise bullet point summary of each change.