Skip to content
Development
Command

/zizmor

Audit GitHub Actions workflows, composite actions, Dependabot configs, and pre-commit configs for security findings using zizmor — template injection, credential persistence, unpinned uses, over-broad permissions, impostor commits. Covers local CLI, auto-fix, zizmor.yml policy,

From plugin
platform-skills
4244 skills1 agent44 commands
Install
> /plugin marketplace add nitinjain999/platform-skills
> /plugin install platform-skills@platform-skills

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/zizmor

Context preview

What this command does when you run it.

Audit GitHub Actions workflows, composite actions, Dependabot configs, and pre-commit configs for security findings using zizmor — template injection, credential persistence, unpinned uses, over-broad permissions, impostor commits. Covers local CLI, auto-fix, zizmor.yml policy,

Command definition

zizmor.md
name: zizmor
description: Audit GitHub Actions workflows, composite actions, Dependabot configs, and pre-commit configs for security findings using zizmor — template injection, credential persistence, unpinned uses, over-broad permissions, impostor commits. Covers local CLI, auto-fix, zizmor.yml policy, severity-based CI gates, SARIF upload, and pre-commit. Use when asked to "audit my workflows", "run zizmor", "is this workflow safe", "check for template injection", "pin my actions", or "set up a zizmor CI gate". Workflow syntax and shell errors → /platform-skills:github-actions (actionlint). IaC misconfig → /platform-skills:checkov. Image and dependency CVEs → /platform-skills:trivy. Keeping SHA pins fresh → /platform-skills:renovate.
argument-hint: "[scan|audit|fix|triage|config|ci|precommit|explain] [path|finding]"
title: "Zizmor Command"
sidebar_label: "zizmor"
custom_edit_url: null

Audit GitHub Actions workflows for security findings — before an attacker reads them for you.

Read `references/zizmor.md` before responding. It contains bootstrap steps, the full 41-audit catalogue with persona and online gating, `zizmor.yml` schema and discovery rules, exit-code semantics, auto-fix blast radius, and the CI and pre-commit templates.

**This command is interactive by default.** With no arguments, run the three-layer wizard below. Never dump a raw `zizmor` invocation and stop — the useful output is a triaged verdict, not a finding list.

Ownership boundary (enforced at the menu)

| Question | Authoritative command | |---|---| | "Is this workflow **valid**?" (syntax, schema, shell bugs) | `/platform-skills:github-actions` — actionlint | | "Is this workflow **safe**?" (injection, permissions, pinning) | **this command** | | "Is my `action.yml` well designed?" | `/platform-skills:composite-actions` | | "How do I keep these SHA pins current?" | `/platform-skills:renovate` | | "Is there a misconfig in my Terraform / Helm / Dockerfile?" | `/platform-skills:checkov` | | "Does this image or dependency have CVEs?" | `/platform-skills:trivy` | | "How do I sign images / generate an SBOM?" | `/platform-skills:supply-chain` |

Zizmor and actionlint are complements. A workflow can be perfectly valid and still hand an attacker a shell. When the user asks for "workflow checks" without qualifying, run both and say which tool produced which finding.

---

Mode dispatch

Parse the first word of `$ARGUMENTS` as the mode. When `$ARGUMENTS` is empty, run the three-layer interactive wizard.

| Mode | What it does | |---|---| | `scan` | Default-persona audit of the current repo — the everyday run | | `audit` | Deep sweep: `--persona=auditor --min-confidence=low`, all collectors, online | | `fix` | `--fix=safe` (or `all` on request), show the diff, re-audit what remains | | `triage` | Walk existing findings one at a time → fix / inline-ignore / config-ignore / remap / disable | | `config` | Generate or repair `.github/zizmor.yml` — pinning policy, allowlists, suppressions | | `ci` | Emit the GitHub Actions workflow — SARIF alerts, hard-fail gate, or both | | `precommit` | Add the `zizmor-pre-commit` hook and explain the offline caveat | | `explain` | Explain one audit id or one finding, and how to fix it properly | | _(empty)_ | Three-layer interactive wizard |

---

Three-layer interactive wizard

Layer 1 — Developer question (intent in their language)

What are you trying to find out?
  1. "Are my workflows safe to merge?"           → scan  (default persona, online)
  2. "Give me everything, I'm doing a review."   → audit (auditor persona, low confidence)
  3. "Just fix what can be fixed."               → fix   (--fix=safe, diff-reviewed)
  4. "I have findings — help me decide."         → triage
  5. "Set up a policy file for this repo."       → config
  6. "Make this a check on every PR."            → ci
  7. "Catch it before I even commit."            → precommit
  8. "What does this finding actually mean?"     → explain

  Workflow syntax / shell errors?  → /platform-skills:github-actions
  action.yml design review?        → /platform-skills:composite-actions
  Terraform or Helm misconfig?     → /platform-skills:checkov
  Image or dependency CVEs?        → /platform-skills:trivy

Enter 1–8 or a mode name:

Layer 2 — Scope and mode (decides what actually gets audited)

Ask only what the chosen mode needs.

What should I audit? (press Enter for the recommended value)

  • Path [.]: current repo, or a specific workflow / action / directory.
    Remote repos work too — enter `owner/repo` or `owner/repo@ref`.

  • Online mode [on]: four audits only work online — impostor-commit,
    known-vulnerable-actions, ref-confusion, stale-action-refs.
    I'll use `gh auth token` if you're logged in. Enter to accept, or
    type 'offline' to skip those four.

  • Collectors [default]: workflows + actions + dependabot + pre-commit,
    respecting .gitignore. Type 'all' to include gitignored paths (slower),
    or name specific ones (e.g. 'workflows,actions').

Detect and resolve silently where possible:

  • Run `zizmor --version`. Not installed → offer `uvx zizmor@1.29.0` (no install) or `brew install zizmor`. Do not ask permission to check the version.
  • Run `gh auth status`. Authenticated → use `--gh-token "$(gh auth token)"` and say so. Not authenticated → state plainly that the four online audits will be skipped, and continue offline.
  • Check for `.github/zizmor.yml` or `zizmor.y{a,}ml` at the repo root. Found → say which file will apply. Not found → note that defaults apply, including blanket SHA-pinning for **all** actions.
  • Check whether the target is inside a Git repo. If yes, warn that config discovery starts **and ends** at the repo root, so a `zizmor.yml` in a subdirectory is never read.

Layer 3 — Concerns (surface trade-offs; ask only where a wrong default causes harm)

A few decisions worth making explicitly (Enter accepts the recommendation):

  • Pinning polic
Read more
Ships withplatform-skills

A production-grade field handbook for platform, DevOps, SRE, and cloud engineers covering Kubernetes, Flux CD, Terraform, GitHub Actions, AWS, OPA/Rego, KEDA, Karpenter, supply chain security, Falco, observability, and more.

Get the whole plugin
Stats
42
Stars
10
Forks
Active
Maintenance
Shell
Language
Apache-2.0
License
3d ago
Last commit
5mo ago
Created

Repo: nitinjain999/platform-skills

Other commands on platform-skills.