CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

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, 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.

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

73%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is exceptionally actionable, with executable commands, complete YAML, and well-sequenced workflows with real validation loops for the risky (fix) mode. Its two weaknesses are a missing bundle file — the repeatedly referenced references/zizmor.md does not exist, breaking the skill's core progressive-disclosure design — and systematic restatement of the same rules across sections.

Suggestions

Ship the missing references/zizmor.md (audit catalogue, triage decision tree, zizmor.yml schema notes, CI templates) or inline its essential content — the body instructs "Read references/zizmor.md before responding" and cites named sections of it, but no references/ directory exists in the bundle.

Collapse the three overlapping handoff tables (ownership boundary, Layer-1 wizard list, intent-classification table) into one authoritative routing table referenced from the other two spots.

State the GH_TOKEN/offline rule and the pinning-policy recommendation once each; each is currently repeated across 3-4 sections (Layer 2, scan mode, Never/Always lists, and config mode).

DimensionReasoningScore

Conciseness

Mostly efficient and free of explaining-known-concepts, but systematic redundancy could be tightened: the same handoff routing appears in three tables (ownership boundary, Layer-1 wizard, intent classification), and the token/offline rule ("zizmor reads GH_TOKEN, GITHUB_TOKEN or ZIZMOR_GITHUB_TOKEN from the environment itself") and the pinning-policy recommendation are each restated in 3-4 sections. The duplication goes beyond the 4 anchor's "minor instances that could be trimmed", fitting the 3 anchor's "could be tightened".

3 / 5

Actionability

Fully copy-paste ready: exact CLI invocations ("zizmor --strict-collection --offline .", "uvx zizmor@1.29.0", the git dirty-tree guard one-liner), complete YAML for all three pinning-policy shapes and the pre-commit hook, and exact suppression syntax ("# zizmor: ignore[id] <reason>") and triage outcome mechanisms. Not 4: there are no gaps in executable coverage across all eight modes.

5 / 5

Workflow Clarity

Clear mode dispatch and a three-layer wizard with explicit validation checkpoints and feedback loops for the file-editing (fix) mode: refuse on a dirty tree ("git status --porcelain | grep -q . && { echo 'commit or stash first'; exit 1; }"), show the diff, "run the audit again and report what remains", plus rollback ("git checkout -- ."). Validation is present for the in-place-editing operation, so the destructive/batch cap does not apply; not 4 because every checkpoint for every mode is explicit, including the SARIF exit-code trap.

5 / 5

Progressive Disclosure

The body's load-bearing reference is dangling: it opens with "Read `references/zizmor.md` before responding" and cites named sections of it ("Triage decision tree", "Repository patterns", "Worked baseline config", "CI integration", the 41-audit catalogue), but no references/ directory exists anywhere in the bundle, so the catalogue, decision tree, and CI templates the skill depends on are unreachable. Combined with a ~390-line body, this matches the 2 anchor (minimal effective structure / referenced material not actually available) rather than the 3 anchor's "references present".

2 / 5

Total

15

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An exemplary description: third person, concrete about inputs, finding types, and capabilities, with an explicit use-when clause of natural trigger phrases and explicit boundary routing to adjacent skills. No vagueness, padding, or over-claims.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions with comprehensive coverage: "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" plus "Covers local CLI, auto-fix, zizmor.yml policy, severity-based CI gates, SARIF upload, and pre-commit." The what is concrete at every level (inputs, finding types, capabilities), so it matches the 5 anchor rather than the 4 anchor's "minor gaps in coverage".

5 / 5

Completeness

Explicitly answers both questions: what ("Audit GitHub Actions workflows ... for security findings using zizmor — template injection, credential persistence, unpinned uses, over-broad permissions, impostor commits") and when ("Use when asked to 'audit my workflows', 'run zizmor', ...") with concrete trigger phrases. Both clauses are explicit, matching the 5 anchor.

5 / 5

Trigger Term Quality

Comprehensive natural phrasings a user would actually say: "audit my workflows", "run zizmor", "is this workflow safe", "check for template injection", "pin my actions", "set up a zizmor CI gate", including the tool name itself, config filename (zizmor.yml), and finding-level terms. Coverage includes synonyms at both the tool level and the task level, fitting the 5 anchor.

5 / 5

Distinctiveness Conflict Risk

Clear niche (GitHub Actions security auditing via zizmor) with distinct triggers, and it actively reduces conflict risk with explicit negative routing: "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." Minimal overlap risk.

5 / 5

Total

20

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

referenced_paths_exist

Referenced path issues: 7 missing

Warning

Total

14

/

16

Passed

Repository

nitinjain999/platform-skills

Path

skills/zizmor/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.