Audit and harden a software repo against supply-chain and workflow risks. Use when a user asks to audit a repo, harden CI, pin GitHub Actions, freeze installs, reduce bot workflow risk, review lockfile/package-manager discipline, or create repo-local security investigation artifacts. Supports Node, Python, GitHub Actions, GitLab CI, and mixed-stack repos. On-demand via /repo-audit and /repo-harden.
Use this skill to run a deterministic repo inventory, write reusable hardening artifacts into the target repo, and then drive a concrete remediation pass with evidence-backed verification.
This skill's default artifact location is .repo-hardening/, with an optional override when the repo already has a preferred location.
Use this skill when:
.repo-hardening/ unless the repo already has an established security artifact location.Default output directory in the target repo:
.repo-hardening/
Default generated files:
inventory.jsonaudit.mdhardening-plan.mdIf the repo already uses a canonical location such as security/, you may override the output path explicitly. See references/artifact-layout.md.
python3 skills/repo-hardening/scripts/repo_inventory.py <repo-path>
Optional incident-package checks:
python3 skills/repo-hardening/scripts/repo_inventory.py <repo-path> --package axios --package litellm
Optional output override:
python3 skills/repo-hardening/scripts/repo_inventory.py <repo-path> --out-dir security
inventory.json for raw evidenceaudit.md for findingshardening-plan.md for prioritized workLoad references/hardening-matrix.md for stack-specific remediation choices.
Explain the findings in this order:
current exposure
highest-value fixes
residual risk
pnpm install --frozen-lockfile or npm ci, pinned packageManager, pinned GitHub Action SHAsuv sync --frozen or hash-verified requirements installspermissions:, no mutable uses: refslatest and curl | sh style flows with pinned or verified retrievalWhen returning results to the user:
When updating the repo-local artifacts:
python3 skills/repo-hardening/scripts/repo_inventory.py <repo-path> after changes so the repo-local artifacts reflect the post-change state.uses: refs and no missing top-level permissions: blocks..repo-hardening/ by default./repo-audit/repo-hardenreferences/hardening-matrix.mdreferences/artifact-layout.md