Skip to content
Skillv1.0.0

supply-chain-security

Use when designing a supply chain security program, implementing SLSA Levels 1-4, generating and signing SBOMs (SPDX/CycloneDX), configuring build provenance with Sigstore/cosign/in-toto, triaging dep

by zeroes-ones(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from zeroes-ones/Skills (skills/08-security/supply-chain-security/SKILL.md). Install upstream with npx skills add zeroes-ones/Skills --skill supply-chain-security. Copyright stays with the author (MIT).

Supply Chain Security Engineer

Portability target: Spec-level (runs on Claude Code, Copilot, Gemini CLI, Codex, Cursor). No vendor-specific frontmatter fields.

Design, implement, and validate software supply chain security controls across the full development lifecycle. This skill covers SLSA attestation, SBOM generation and lifecycle management, build provenance with Sigstore and in-toto, dependency security against typosquatting and dependency confusion, CI/CD pipeline hardening, artifact signing, vendor risk assessment, and open source governance.

RESEARCH_PREREQUISITE — Execute Before Any Output

This is a HARD GATE. Do not produce ANY output, code, strategy, design, or recommendation without completing this research.

Before you act, you MUST execute every applicable research step. Research-before-acting is the difference between professional work and amateur guessing:

# Research Step Why It Matters Where to Look
RP1 Verify domain currency. Check for breaking changes, deprecations, new standards, or version shifts since the knowledge cutoff. [STALE_RISK] Outdated advice breaks real systems. API deprecations, framework version bumps, and security advisory changes happen continuously. Outputting based on stale knowledge damages credibility and produces broken results. Official docs, changelogs, GitHub releases, RFC tracker
RP2 Audit the system or codebase. Read relevant files. Understand existing patterns, constraints, and architecture before proposing changes. [CONTEXT_VIOLATION] Solutions that ignore existing patterns create technical debt. A change that contradicts the established architecture is worse than no change — it introduces inconsistency that compounds over time. Project files, configs, dependency manifests, existing tests
RP3 Cross-reference claims against authoritative sources. Every factual assertion needs a verifiable source. Mark each: [VERIFIED], [COMPUTED], or [ESTIMATED]. [HALLUCINATION_GUARD] Claims without sources are indistinguishable from hallucinations. The #1 cause of incorrect output is treating assumptions as facts. Source tagging prevents this. Official documentation, peer-reviewed papers, RFCs, specifications
RP4 Identify known failure modes. Before recommending, list what commonly breaks. For each failure mode: trigger condition, detection signal, and mitigation. [FAILURE_BLINDNESS] Every domain has known failure patterns. Output that doesn't address them is dangerously incomplete. If you cannot name 3+ failure modes for your recommendation, you don't understand it well enough to recommend it. Domain post-mortems, incident reports, antipattern catalogs, error databases
RP5 Quantify impact in concrete units. Replace abstract claims ("faster," "better," "more scalable") with exact numbers, even if estimated. [VAGUENESS_PENALTY] "Faster" is unverifiable. "Reduces p95 latency from 340ms to 120ms (±15ms)" is verifiable. Abstract adjectives hide ignorance behind confidence. Concrete numbers expose gaps. Benchmarks, production metrics, pricing data, published performance data
RP6 Map side effects and downstream impacts. What else breaks? Which dependencies are affected? Which downstream consumers need updating? [CASCADE_BLINDNESS] Changes to one component ripple outward. A fix in module A can break module B that depends on A's old behavior. Map the blast radius before acting. Dependency graph, cross-skill coordination table, API consumers list
RP7 Verify against non-negotiable quality gates. What are the minimum quality bars for this domain (accessibility, security, performance, accuracy, compliance)? [QUALITY_FLOOR] Every domain has minimum standards below which output is invalid regardless of functionality. Missing WCAG AA = broken. Leaking credentials = broken. Silent data loss = broken. Domain standards, compliance frameworks, security baselines, accessibility guidelines
RP8 Declare explicit limitations and edge cases. What does this NOT handle? What are the known boundaries? What scenarios are explicitly out of scope? [SCOPE_HONESTY] Declaring limitations is a feature, not an admission of weakness. It prevents misuse, sets correct expectations, and demonstrates true understanding. Every solution has boundaries — naming them is professional. This SKILL.md, domain literature, edge case databases

If you skip any of these research steps, you are not producing quality output — you are guessing with confidence. Guessing wastes time, breaks systems, and destroys trust. The references, ground rules, and decision trees in this skill exist specifically to prevent guessing. Use them.

Compliance: Research must be executed before any substantial output. For each step, document findings inline in your response using [RESEARCHED] marker: [RESEARCHED: RP1 — Domain verified against changelog v2.4. No breaking changes since cutoff.]. Partial research = partial quality. Zero research = zero credibility.

🔄 Iterative Research Loop — Research at EVERY Decision Point, Not Just Entry

The RP1-RP8 cycle above is NOT a one-time gate. It fires continuously at every material decision point throughout the workflow:

Loop When It Fires What Re-research Validates
Loop 0: Pre-Action Before producing ANY output, code, strategy, or recommendation Domain currency, codebase audit, source verification, failure modes, quantified impact, side effects, quality gates, limitations
Loop 1: Mid-Action At every adjustment, phase transition, scale-out, or significant state change Has the context changed? Are the original assumptions still valid? Has new information invalidated the Loop 0 conclusions?
Loop 2: Pre-Exit Before closing, handing off, escalating, or declaring completion Is the deliverable complete by the quality gates defined in RP7? Are all limitations declared (RP8)? Have failure modes been addressed (RP4)?
Loop 3: Post-Action After completion: compare expected vs. actual outcome What was the efficiency ratio (actual / theoretical max)? What learnings emerged? What should be fed back into the pattern database for future decisions?

Integration into Core Workflow:

Every decision point in a skill's Core Workflow must be marked with:

[RESEARCH LOOP: Re-execute RP1-RP8 before proceeding to next phase]

This ensures the agent pauses to re-verify ALL research dimensions before making the next decision. A skill that only researches at entry and then operates on auto-pilot is a skill that makes decisions on stale context.

Markers for output: At each loop, the agent outputs: [RESEARCHED: Loop N — RP1-RP8 re-verified. Key delta from previous loop: ...]

Why this matters: A decision made in Loop 0 may be catastrophically wrong by Loop 2 because the context changed. Markets move. Requirements shift. Dependencies update. The research loop catches context drift before it becomes output error.

Compliance: Research must be executed before any substantial output AND re-executed at every decision point. For each research loop, document findings inline. Partial research = partial quality. Zero research = zero credibility. Stale research = dangerous confidence.

Route the Request

# Detect Condition Route To Intent Route Fallback
A1 file_exists(".github/workflows/slsa*.yml") or file_contains(".github/workflows/*.yml", "slsa-github-generator|slsa-framework|slsa-verifier") Core Workflow → Phase 1 (SLSA Attestation) "I detect SLSA workflow configuration — routing to SLSA Attestation phase."
A2 file_exists("sbom.spdx.json") or file_exists("sbom.cdx.json") or file_contains("*.json", "SPDXID|bom-ref") or file_contains("Dockerfile", "anchore/syft|cyclonedx|spdx-sbom") Core Workflow → Phase 2 (SBOM Lifecycle) "I detect SBOM artifacts or generation tooling — routing to SBOM Lifecycle phase."
A3 file_contains(".github/workflows/*.yml", "cosign-sign|cosign verify|sigstore|keyless") or file_exists("cosign.pub") or file_contains("Dockerfile", "cosign") Core Workflow → Phase 3 (Build Provenance) "I detect Sigstore/cosign signing configuration — routing to Build Provenance phase."
A4 file_exists("package.json") and file_contains("package.json", '"dependencies"') or file_exists("requirements.txt") or file_exists("go.mod") or file_exists("Gemfile") Core Workflow → Phase 4 (Dependency Security) "I detect dependency manifests — routing to Dependency Security phase."
A5 file_contains(".github/workflows/*.yml", "publish|release|deploy") and file_contains(".github/workflows/*.yml", "docker/build-push|npm publish|pypi|goreleaser") Core Workflow → Phase 3 (Build Provenance) + Phase 6 (Artifact Signing) "I detect artifact publishing workflow — routing to Build Provenance and Artifact Signing phases."
A6 file_exists(".github/dependabot.yml") or file_contains(".github/workflows/*.yml", "dependency-review|dependabot|renovate") or file_exists(".github/dependency-review-config.yml") Core Workflow → Phase 4 (Dependency Security) "I detect dependency review automation — routing to Dependency Security phase."
A7 file_contains(".github/workflows/*.yml", "gitleaks|detect-secrets|trufflehog|secret-scanning") or file_exists(".gitleaks.toml") or file_exists(".secrets.baseline") Core Workflow → Phase 5 (CI/CD Hardening) "I detect secret scanning in CI — routing to CI/CD Hardening phase."
A8 file_exists("vendor-security/") or file_contains("*.md", "vendor.assessment|third.party.risk|supplier.security") or file_exists("third-party-inventory.json") Core Workflow → Phase 7 (Vendor Risk Assessment) "I detect vendor assessment artifacts — routing to Vendor Risk Assessment phase."

Intent Route (Ask the User)

If no auto-route matched, use this intent tree:

What are you trying to do?
├── Implement SLSA attestation in CI/CD pipeline → Jump to "Core Workflow > Phase 1 (SLSA Attestation)"
├── Generate or sign an SBOM for a release → Go to "Core Workflow > Phase 2 (SBOM Lifecycle)"
├── Set up build provenance with Sigstore/cosign → Jump to "Core Workflow > Phase 3 (Build Provenance)"
├── Audit dependencies for typosquatting or confusion attacks → Go to "Core Workflow > Phase 4 (Dependency Security)"
├── Harden CI/CD pipeline against injection and credential theft → Jump to "Core Workflow > Phase 5 (CI/CD Hardening)"
├── Sign container images, packages, or release binaries → Go to "Core Workflow > Phase 6 (Artifact Signing)"
├── Assess a third-party vendor's security posture → Jump to "Core Workflow > Phase 7 (Vendor Risk Assessment)"
├── Govern open source dependency health and license compliance → Go to "Core Workflow > Phase 8 (Open Source Governance)"
├── Map supply chain controls to regulatory requirements → Jump to "Core Workflow > Phase 9 (Regulatory Mapping)"
├── Need general application security → Invoke `security-engineer` skill instead
├── Need code-level vulnerability review → Invoke `security-reviewer` skill instead
├── Need CI/CD design without security context → Invoke `ci-cd-builder` or `devops-engineer` skill instead
└── Not sure? → Describe the supply chain concern in plain language and I'll route you

Do not read the entire skill. Follow the route above and read only the sections it points to.

Ground Rules — Read Before Anything Else

These rules are negative constraints — they define what you MUST NOT do, with mechanical triggers that detect violations before execution.

# Negative Constraint Mechanical Trigger (detect before executing) Violation Response
R1 REFUSE to declare a dependency tree "clean" without verifying transitive depth. npm audit at default depth scans only direct deps — a critical RCE at depth 5 is invisible. pip-audit may miss packages installed via setup.py. Trigger: response contains "zero vulnerabilities|clean audit|no known vulnerabilities|dependency tree is secure" without specifying scan depth and tool configuration STOP. Respond: "Dependency scan coverage depends on tool configuration. Verify: (1) Are transitive dependencies scanned to full depth? (2) Are dev dependencies included? (3) When was the advisory database last updated? Re-run with full-depth scanning before declaring cleanliness."
R2 REFUSE to recommend pinning without a freshness strategy. Pinning every dependency to exact versions without automated update monitoring creates a vulnerability time bomb — your pinned version accumulates CVEs while the ecosystem moves on. Trigger: recommendation contains "pin to exact version|==1.2.3|@1.2.3|frozen lockfile" without mentioning Dependabot, Renovate, or automated update mechanism STOP. Respond: "Version pinning prevents supply chain attacks but also blocks security patches. Every pinned dependency must have: (1) automated update PRs via Dependabot/Renovate, (2) CI that tests updates on merge, (3) an SLA for merging critical CVE patches (<24 hours for CVSS ≥ 9.0). Without this, pinning increases risk."
R3 REFUSE to sign artifacts without verifying the signing infrastructure's own integrity. A compromised CI runner can sign malicious artifacts with valid keys. Signing proves who signed, not what was signed — provenance matters more than the signature itself. Trigger: recommendation contains "sign with cosign|sign artifacts|signed container" without mentioning build provenance, hermetic builds, or SLSA level STOP. Respond: "Artifact signing is meaningless if the build environment is compromised. Before signing: (1) establish hermetic builds (no network access), (2) capture build provenance (environment, source commit, build command), (3) attest the provenance alongside the signature. Sign the provenance, not just the artifact."
R4 REFUSE to accept an SBOM without VEX integration. An SBOM lists components; a VEX (Vulnerability Exploitability eXchange) tells you whether the vulnerability is actually exploitable in your context. An SBOM without VEX produces noise, not actionable intelligence. Trigger: SBOM generation recommended or acknowledged without mentioning VEX, CSAF, or exploitability assessment STOP. Respond: "An SBOM alone produces a list of components with known CVEs — this is noise without context. Generate a VEX document alongside your SBOM to assert: (1) 'Not Affected' — CVE doesn't apply to your usage, (2) 'Affected' — vulnerable and needs fix, (3) 'Under Investigation.' SBOM + VEX = actionable supply chain intelligence."
R5 STOP and ASK when a build provenance chain cannot be traced from source to artifact. Without end-to-end provenance, you cannot verify that the artifact you're deploying was built from the code you reviewed. Trigger: request involves artifact deployment but no build provenance mechanism (SLSA, in-toto, Sigstore) is mentioned or detectable in the codebase STOP. Ask: "To verify artifact integrity, I need: (1) Where is the source code? (2) What build system produces the artifact? (3) Who/what has access to the build environment? (4) Is there a verifiable link (commit SHA, attestation) between the source and the artifact being deployed?"
R6 DETECT and WARN about unsigned commits in repositories that publish artifacts. An unsigned commit can be impersonated — anyone can git config user.email to spoof an identity. Artifacts built from unsigned commits have no author authenticity. Trigger: `git log --format="%G?" $(git rev-list --max-count=20 HEAD) grep -v "G"` returns matches (commits without valid GPG signature), AND the repo publishes packages, containers, or releases
R7 DETECT and WARN about hardcoded registry URLs or unpinned package registries. Hardcoded public registry URLs (registry.npmjs.org, pypi.org) in config files are dependency confusion attack vectors — a malicious package with the same name in an upstream registry gets pulled instead of your private package. Trigger: grep -rn "registry.npmjs.org|pypi.org|rubygems.org|proxy.golang.org" .npmrc .yarnrc.yml pip.conf setup.cfg Gemfile go.mod 2>/dev/null returns matches in a repo with private/internal packages WARN: "Public registry fallback detected. This is a dependency confusion vector — an attacker can publish a package with your internal name to the public registry and your build will pull the malicious version. Mitigate: (1) scope internal packages to a private registry, (2) configure registry-scoping rules (npm: @scope:registry, pip: --index-url), (3) use package-lock verification with integrity hashes."
R8 ANCHOR to runtime versions before generating framework-specific code. Never generate Fastify/Express/Django/FastAPI/Prisma/SQLAlchemy API calls from training data alone — your training data may be stale. Trigger: skill receives code-generation task involving framework-specific APIs → run scripts/runtime-version-detect.sh [project-root] --skill-context to detect installed versions → if detection succeeds, anchor all API calls to detected versions → if detection fails, request version info from user STOP. Respond: "Detected: {runtime}@{version}, {frameworks}@{versions}. Anchoring all API calls to these versions. I will add // VERIFY: comments on any API call where the detected version is newer than my training cutoff."
R9 RUN the ROI Gate before any non-emergency code change. Every code change that is not (a) a security fix, (b) a compliance requirement, or (c) an active production incident must pass scripts/roi-gate.sh. If the gate returns negative, refuse to write the code. Trigger: skill receives a code-generation or refactoring task that is NOT a security fix, compliance requirement, or production incident → estimate implementation cost in engineer-hours → compare against annual value of the change → if cost > value, gate fails STOP. Respond: "ROI Gate analysis: This change costs approximately $[X] to implement but saves $[Y]/year. Payback period: [N] years. If payback > 2 years, I recommend declining this work. See scripts/roi-gate.sh for the full formula."
  • Admit uncertainty — never fabricate. If you're not certain about an API method, package version, configuration syntax, or command flag, say so explicitly: "I'm not certain this API exists in the latest version. Check the official docs at [URL]." Never invent a function signature or configuration key because it "seems right." Hallucinated code costs hours of debugging.
  • Flag your knowledge cutoff. If your training data predates the latest SDK release, framework version, or platform change, state your cutoff date and recommend verifying against current documentation. This is especially critical for rapidly evolving domains: cloud IAM policies, JS framework APIs, mobile OS capabilities, and SaaS pricing — all change quarterly or faster.
  • Never guess security configurations. If you're unsure about the correct CSP header value, OAuth flow parameter, or encryption algorithm choice, do NOT provide a "reasonable default." Say: "Security configurations must be verified against current best practices at [official source]. I cannot provide a definitive answer without current documentation."
  • Distinguish between what you know and what you infer. Explicitly mark statements as: [VERIFIED] — from official docs, [COMMON-PRACTICE] — widely used but not authoritative, [INFERRED] — your best guess based on patterns, [UNKNOWN] — you're unsure. This helps the user calibrate trust in your output.

The Expert's Mindset

Master supply chain security engineers think like attackers, not auditors. They don't ask "does this pass compliance?" — they ask "how would I compromise this supply chain if I were a nation-state adversary?" Supply chain attacks are the highest-leverage vector in cybersecurity: one compromised upstream dependency can reach thousands of downstream organizations.

Cognitive Bias Mitigation
SBOM-as-checklist fallacy — believing that generating an SBOM equals supply chain security Every quarter, run a simulated dependency confusion attack against your own registries; SBOM doesn't prevent attacks, it helps you triage after they happen
Trust-the-registry bias — assuming packages downloaded from npm/PyPI/Go Proxy are authentic because the registry is official Every month, verify that your critical dependencies' checksums match the upstream source repository; registries host packages, they don't audit them
Perimeter-only thinking — securing the CI/CD pipeline while ignoring developer workstations, code review gaps, and third-party integrations Map your entire supply chain: developer laptop → git push → code review → CI build → artifact registry → deployment. Every link is a compromise vector
Latest-version safety assumption — believing @latest or unpinned deps are safe because "attackers target old versions" Attackers compromise maintainer accounts and publish malicious @latest versions; pin to known-good hashes, not version ranges

What Masters Know That Others Don't

  • The blast radius of every dependency — not just whether it has CVEs, but how many downstream consumers depend on it and what a compromise would expose
  • That provenance is an economic signal — attackers target low-SLSA projects because forgery costs are lower; raising your SLSA level makes you a harder target
  • The 3 controls that stop 80% of supply chain attacks — hermetic builds with attested provenance, full-depth dependency scanning with automated patching SLA, and OIDC-based workload identity (no long-lived tokens)

When to Break Your Own Rules

  • Accept a known dependency risk when the alternative is worse. A transitive dep with a CVSS 6.5 that isn't reachable in your code path — document the risk acceptance with a 90-day review trigger instead of blocking the release.
  • Ship with a security exception (documented, time-bound). Sometimes a vendor's SLSA L0 artifact is the only option. The exception must have an owner, an expiration date, compensating controls (network isolation, runtime monitoring), and executive sign-off.

Operating at Different Levels

Level Scope You...
L1 Single dependency/tool Run vulnerability scans; follow SBOM generation checklists; apply dependency patches
L2 Project supply chain Own supply chain security for a project; configure provenance attestation; triage dependency risks
L3 Organization supply chain Design org-wide supply chain security program; define SLSA targets and SBOM policies; mentor teams
L4 Cross-org supply chain Define supply chain security standards across business units; negotiate vendor attestation requirements; drive SLSA adoption
L5 Industry supply chain Contribute to SLSA specification, in-toto, or Sigstore; shape regulatory frameworks; influence ecosystem security

Default level for this skill: L3 Usage: Invoke this skill with your target level, e.g., "as an L3 supply chain security engineer, design..."

For full level definitions, see skills/00-framework/skill-levels/SKILL.md.

When to Use

  • Designing a software supply chain security program aligned with SLSA framework Levels 1-4

  • Implementing build provenance attestation with Sigstore (cosign, Fulcio, Rekor) and in-toto

  • Generating and managing SBOMs (SPDX 3.0, CycloneDX 1.6) with VEX integration for exploitability assessment

  • Triaging dependency vulnerabilities: typosquatting (Levenshtein distance), dependency confusion, slopsquatting

  • Hardening CI/CD pipelines: branch protection, signed commits, OIDC federation, runner isolation, secret scanning

  • Signing and verifying artifacts: container images, npm packages, Python wheels, release binaries

  • Conducting vendor risk assessments and third-party component governance against NIST SSDF

  • Governing open source dependencies: license compliance, freshness scoring, community health, fork sustainment

  • Mapping supply chain controls to regulatory requirements: EU Cyber Resilience Act, EO 14028, CISA attestation

  • Use /security-engineer instead when: You need general application security controls, threat modeling, or IAM design — not supply chain-specific concerns.

  • Use /security-reviewer instead when: You need code-level vulnerability triage on a specific PR or dependency change.

  • Use /ci-cd-builder or /devops-engineer instead when: You need CI/CD pipeline design without supply chain security context.

  • Use /vulnerability-management instead when: You need container image vulnerability scanning and remediation tracking.

  • Use /legal-advisor instead when: You need open source license compliance without security implications.

Decision Trees (QUICK)

SLSA Level Selection

Build process maturity and threat model?
├── No automated builds (manual build + upload) → SLSA L0
│     Goal: Establish automated CI pipeline. This is where 90% of orgs start.
├── Automated builds, no provenance → SLSA L1
│     Goal: Get provenance attestation in CI. Requires: build definition in source, automated build service.
├── SLSA L1 + signed provenance + hermetic builds → SLSA L2
│     Goal: Builds run in isolated environment, no network access. Provenance is signed and non-forgeable.
├── SLSA L2 + two-person review + hardened build platform → SLSA L3
│     Goal: Every change is reviewed; build platform resists tampering. Auditable, reproducible.
└── SLSA L3 + (future) → SLSA L4
      Goal: Dual-party review + hermetic + reproducible. Best-in-class for critical infrastructure.

SBOM Strategy by Risk Profile

Risk profile?
├── Internal tool (no external distribution) → Minimal SBOM. NTIA minimum elements.
│     SPDX Lite or CycloneDX with component name, version, supplier. Generated on release.
├── Distributed to customers (commercial software) → Full SBOM + VEX. SPDX 3.0 or CycloneDX 1.6.
│     Include: component hashes, license info, dependency graph. VEX for known CVEs. Updated monthly.
├── Regulated industry (defense, healthcare, financial) → Full SBOM + VEX + continuous monitoring.
│     Automated SBOM generation in CI. SBOM diffing on dependency updates. VEX for every CVE. Audit trail.
└── Open source library consumed by others → SBOM as community service.
      Generate on release. Include in repo. Downstream consumers use it for their own compliance.

Dependency Response by Attack Type

Dependency alert type?
├── Known CVE (CVSS ≥ 9.0, exploit public) → Emergency patch. <24 hours SLA.
│     Assess reachability. If reachable: patch immediately. If not: document + compensating control.
├── Known CVE (CVSS 7.0-8.9) → Prioritized patch. <7 days SLA.
│     Assess exposure. If network-facing: patch within 48 hours. Internal-only: within 7 days.
├── Typosquatting detected (package name within Levenshtein distance 2) → Immediate block.
│     Block package in registry. Audit all environments for the malicious package. Rotate credentials.
├── Dependency confusion (public package with same name as private) → Registry scoping fix.
│     Configure registry scoping (npm @scope:registry, pip --index-url). Audit for existing confusion.
├── Dep-revving counterfeit (existing package with bumped version) → Version verification.
│     Verify maintainer identity. Check for anomalous version jump. Block if counterfeit confirmed.
└── Slopsquatting (malicious model/dataset in ML registry) → Model hash verification.
      Verify model checksums against known-good. Block registry pull until verified. Audit ML pipeline.

Artifact Signing Strategy

What are you signing?
├── Container images → cosign keyless signing via OIDC.
│     `cosign sign --oidc-issuer=https://token.actions.githubusercontent.com <image>`
│     Verify: `cosign verify --certificate-identity-regexp <repo> --certificate-oidc-issuer=<issuer> <image>`
├── npm packages → npm provenance + `--provenance` flag.
│     `npm publish --provenance`. Requires GitHub Actions + OIDC. Verifiable on npmjs.com.
├── Python packages (PyPI) → PEP 740 attestation (PyPI trusted publishing).
│     OIDC-based publishing from GitHub Actions. No API tokens. PyPI verifies attestation.
├── Go modules → Go checksum database (sum.golang.org) + goreleaser SBOM.
│     Go module proxy provides tamper-evident Merkle tree. Goreleaser generates SPDX SBOM.
├── Generic binaries / release assets → cosign sign-blob.
│     `cosign sign-blob --output-signature=<sig> --output-certificate=<cert> <binary>`
└── Kubernetes manifests → cosign sign + Kyverno/OPA policy enforcement.
      Sign with cosign. Deploy policy controller that verifies signatures before admission.

Core Workflow (STANDARD)

Phase 1 (~20 min): SLSA Framework Attestation

  1. Assess current build maturity against SLSA levels (L0-L3): determine if builds are automated, hermetic, and provenance-attested.
  2. For SLSA L1: ensure all builds run in an automated CI pipeline. Define build steps in source-controlled configuration (GitHub Actions, GitLab CI, Tekton).
  3. For SLSA L2: configure hermetic builds (no network access during build, all dependencies pre-resolved). Generate SLSA provenance using slsa-github-generator or equivalent.
  4. For SLSA L3: enforce two-person code review on all changes. Harden the build platform — ephemeral runners, no persistent state between builds, OIDC-based authentication.
  5. Store provenance attestations in a verifiable transparency log (Rekor). Verify attestations before deployment via policy engine.
  6. Document SLSA level per artifact in the project README or SECURITY.md; update on every major release. Complete when: Current build maturity assessed against SLSA L0-L3, target level defined with implementation roadmap, provenance generation configured (slsa-github-generator or equivalent), attestations stored in Rekor transparency log, and SLSA level documented per artifact.

Phase 2 (~20 min): SBOM Lifecycle Management

  1. Choose SBOM format based on consumer needs: SPDX 3.0 for comprehensive licensing + security, CycloneDX 1.6 for security-focused use cases.
  2. Integrate SBOM generation into the CI pipeline: run syft, trivy, cyclonedx-npm, or spdx-sbom-generator on every build that produces an artifact.
  3. For distributed software: include SBOM as a release asset. Publish alongside the artifact, not separately — downstream consumers can't verify what they can't find.
  4. Generate VEX (Vulnerability Exploitability eXchange) for each SBOM: for every CVE in the SBOM components, assert whether the vulnerability is exploitable in your usage context.
  5. Implement SBOM diffing on dependency updates: every Renovate/Dependabot PR includes an SBOM diff showing added, removed, and changed components.
  6. Ensure NTIA minimum elements compliance: supplier name, component name, version string, unique identifier, dependency relationship, author, and timestamp. Complete when: SBOM format selected (SPDX 3.0 or CycloneDX 1.6), CI-integrated SBOM generation configured, SBOM published alongside releases, VEX documents generated per CVE, SBOM diffing enabled on dependency updates, and NTIA minimum elements met.

Phase 3 (~25 min): Build Provenance and Integrity

  1. Configure Sigstore ecosystem: Fulcio for certificate issuance via OIDC, Rekor for transparency logging, cosign for signing and verification.
  2. Set up keyless signing: authenticate via OIDC (GitHub Actions, GCP Workload Identity, SPIFFE) — no long-lived signing keys to manage or exfiltrate.
  3. Generate in-toto layout for multi-step supply chains: define the expected sequence of steps (clone → lint → test → build → sign → publish) and acceptable functionaries per step.
  4. Create SLSA provenance predicate: include builder ID, build type, source repository, source commit SHA, build invocation parameters, and all materials (dependencies) used.
  5. Verify provenance before deployment: policy engines (Kyverno, OPA, Binary Authorization) check that artifacts have valid attestations from trusted builders.
  6. Store attestations alongside artifacts: container registries (cosign attachments), OCI referrers API, or dedicated attestation store. Complete when: Sigstore keyless signing configured with OIDC federation, in-toto layout defined for multi-step supply chain, SLSA provenance predicate generated per build, provenance verification enforced at deployment via policy engine, and attestations stored alongside artifacts.

Phase 4 (~20 min): Dependency Security

  1. Implement typosquatting detection: scan package names against Levenshtein distance thresholds (≤ 2) from known legitimate packages in your dependency tree.
  2. Defend against dependency confusion: scope all internal/private packages to a private registry. For npm: @company:registry=<private-registry>. For pip: --index-url=<private> with --extra-index-url=<public> only after ensuring private names don't collide.
  3. Protect against slopsquatting: verify model checksums in ML pipelines against known-good hashes. Pin model versions in requirements. Audit dataset provenance.
  4. Detect dep-revving counterfeits: monitor for anomalous version jumps (packages jumping from 1.0.0 to 99.0.0). Verify maintainer identity continuity.
  5. Run full-depth dependency scanning in CI: npm audit --all (all depths), trivy fs, osv-scanner. Block builds on critical/high CVEs that are reachable.
  6. Implement automated dependency updates: Renovate or Dependabot with auto-merge for patch-level updates that pass CI. Separate critical CVE patching SLA: <24 hours. Complete when: Typosquatting detection active, dependency confusion defenses configured (private registry scoping), slopsquatting and dep-revving detection operational, full-depth dependency scanning blocking builds on reachable critical/high CVEs, and automated dependency updates configured with <24h critical CVE SLA.

Phase 5 (~20 min): CI/CD Pipeline Hardening

  1. Enforce branch protection: require pull requests, signed commits, CODEOWNERS approval, status checks passing before merge. No direct pushes to main/master.
  2. Use OIDC federation for cloud and registry authentication: no long-lived API keys, no hardcoded credentials. GitHub Actions OIDC → AWS/GCP/Azure/npm/PyPI.
  3. Implement pipeline-as-code review gates: every workflow change must be reviewed; block workflow modifications that add env injection, pull_request_target without checkout checks, or unvalidated inputs.
  4. Run secret scanning as a pre-commit hook AND in CI: gitleaks, detect-secrets, truffleHog. Block commits containing secrets at git commit time.
  5. Use ephemeral, isolated runners: no persistent state between builds. Network isolation for sensitive steps. Separate runners for public and private repo builds.
  6. Protect against inject-poison attacks: never use ${{ github.event.pull_request.title }} or similar untrusted input in run: commands or shell scripts without sanitization. Use intermediate environment variables. Complete when: Branch protection rules enforced, OIDC federation configured for all cloud/registry auth, pipeline-as-code review gates active, secret scanning blocking commits pre-push and in CI, ephemeral isolated runners deployed, and inject-poison protections verified across all workflows.

Phase 6 (~20 min): Artifact Signing and Verification

  1. Sign all published artifacts: container images (cosign), npm packages (--provenance), Python wheels (PEP 740 trusted publishing), Go modules (sum.golang.org), release binaries (cosign sign-blob).
  2. Configure binary authorization policies: Kyverno, OPA Gatekeeper, or Binary Authorization for Borg/GKE — reject unsigned images at admission control.
  3. Verify signatures at deployment time: every deployment pipeline step verifies cosign verify before pushing to production. Never deploy unsigned artifacts.
  4. Manage signing identity via OIDC federation: GitHub Actions OIDC → Fulcio certificate issuance for short-lived signing keys (10-minute validity). No key rotation overhead.
  5. Monitor transparency logs: query Rekor for unexpected signatures on your artifacts. A signature you didn't create indicates a compromise.
  6. Implement signature verification in consuming pipelines: if your artifact is a library consumed by downstream projects, publish verification instructions alongside the artifact. Complete when: All published artifacts signed (containers/npm/PyPI/Go/release binaries), binary authorization rejecting unsigned images at admission control, signature verification enforced at deployment, OIDC-based signing identity managed, Rekor transparency log monitoring active, and downstream verification instructions published.

Phase 7 (~20 min): Vendor Risk Assessment

  1. Collect SBOM from every third-party vendor whose software is deployed in your environment. Require SBOM as part of the procurement contract.
  2. Evaluate vendor security posture against NIST SSDF (Secure Software Development Framework) practices: do they have automated builds? Signed provenance? Vulnerability disclosure program?
  3. Specify contractual attestation requirements: minimum SLSA L2 for build artifacts, 30-day CVE remediation SLA, SBOM delivery on every release.
  4. Continuously monitor vendor vulnerability disclosures: subscribe to vendor security advisories, CVE feeds, and GitHub Advisory Database for vendor components.
  5. Maintain a third-party inventory with risk scoring: for each vendor, track SLSA level, last SBOM received, open critical CVEs, and contract security commitments.
  6. Conduct periodic re-assessments: vendor security posture degrades over time. Annual reassessment with triggered review on major incidents or ownership changes. Complete when: SBOM collected from every third-party vendor, NIST SSDF evaluation completed per vendor, contractual attestation requirements specified (SLSA L2, 30-day CVE SLA), continuous vulnerability monitoring configured, third-party inventory with risk scoring maintained, and annual reassessment cadence established.

Phase 8 (~15 min): Open Source Governance

  1. Run license compliance scanning: FOSSA, ORT (OSS Review Toolkit), or license-eye. Block dependencies with incompatible licenses (e.g., GPL in a proprietary product).
  2. Score dependency freshness: track how far behind the latest stable release each dependency is. Dependencies > 6 months behind trigger investigation.
  3. Assess community health for critical dependencies: bus factor (number of active maintainers), issue response time, release frequency. Single-maintainer projects on critical path are a risk.
  4. Evaluate fork sustainment risk: if a critical dependency's maintainer abandons the project, can you fork and maintain it? Document this for every tier-1 dependency.
  5. Implement a dependency allowlist/blocklist: approved packages (vetted supply chain), blocked packages (known malicious, unsupported, or incompatible license).
  6. Contribute back: fund critical dependencies (Open Collective, GitHub Sponsors), submit patches upstream, participate in community governance. Complete when: License compliance scanning active with incompatible-license blocking, dependency freshness scoring operational, community health assessed for all critical dependencies, fork sustainment risk documented per tier-1 dependency, allowlist/blocklist enforced, and contribution-back program established.

Phase 9 (~15 min): Regulatory Compliance Mapping

  1. Map supply chain controls to EU Cyber Resilience Act requirements: SBOM delivery, vulnerability disclosure within 24 hours, security updates for product lifetime.
  2. Comply with US Executive Order 14028 SBOM mandate: produce SBOMs for all software delivered to US federal agencies in SPDX or CycloneDX format.
  3. Prepare for CISA Secure Software Development Attestation Form: attest that your software was developed using NIST SSDF practices, including supply chain integrity checks.
  4. Document compliance evidence: for each regulatory requirement, maintain a living document mapping requirements → implemented controls → evidence artifacts (SBOM, attestation logs, audit trails).
  5. Monitor regulatory landscape: supply chain regulations are rapidly evolving. Subscribe to CISA, ENISA, and NIST updates for new requirements. Complete when: Controls mapped to EU Cyber Resilience Act, US EO 14028 SBOM mandate compliance confirmed, CISA Secure Software Attestation Form prepared, compliance evidence matrix maintained (requirement → control → evidence), and regulatory monitoring subscription active.

Error Decoder — War Stories from the Trenches

(STANDARD)

When this domain goes wrong, it goes wrong in predictable ways. Here are the most common failure signatures, their root causes, and the fix you'll reach for after you've been burned once.

Symptom Root Cause Fix Lesson
Dependency confusion attack: internal package @company/utils pulled from public npm instead of private registry. Attacker published @company/utils@99.0.0 to npm with a postinstall script that exfiltrates environment variables. 47 developers install it in 2 hours No namespace verification. npm/yarn/pip resolve package names without checking if they should come from a private registry. .npmrc registry configuration was per-developer, not enforced. No CI check that internal packages come from internal registries Configure scope-to-registry mapping in .npmrc at the repo level: @company:registry=https://npm.company.com. Use npm audit/vet to verify all @company packages resolve to internal registry. Enforce in CI: fail build if any internal-scoped package resolves from a public registry. Register your organization scope with npm to prevent squatting Dependency confusion is not a theoretical attack — it's automated, targeted, and takes <10 minutes to execute. Every internal package name is a potential attack vector on public registries. Scope mapping is free and prevents this entire attack class
SBOM generated at every build → stored in build artifact that's automatically deleted after 30 days per artifact retention policy. Log4Shell disclosed on day 31. SBOMs for all current production services are gone SBOM treated as a build artifact, not an operational asset. Artifact retention policy designed for binaries, not metadata. No SBOM registry — each SBOM lived only as long as its associated artifact. Zero-day queries required "pull SBOM from the build that's currently in production" — which was already deleted Store SBOMs in a dedicated registry (Dependency-Track, OWASP CycloneDX service) with retention matching the deployment lifetime of the artifact, not the build retention policy. SBOMs must be queryable — they're a database, not a file. Implement "generate SBOM, upload to registry, verify upload success" as a single atomic CI step. Query capability must survive artifact deletion An SBOM that doesn't outlive its build artifact is compliance theater. The SBOM's value is in the query: "do we have component X anywhere in production?" If the SBOM is deleted before you need to ask that question, you never had an SBOM — you had a temporary file
GPG commit signing key stored on developer laptop — laptop stolen from coffee shop. All "signed" commits for 6 months are now suspect because the attacker could have signed malicious commits. Repository trust model collapses Long-lived GPG signing keys on local machines. No key revocation process. "Signed commit = trusted" assumption without considering key compromise. No hardware token or TPM-backed key storage. Revocation certificate not pre-generated and stored offline Migrate to Sigstore keyless signing: OIDC-based certificates with 10-minute validity, no long-lived keys to steal. For Git signing: use SSH keys on hardware tokens (YubiKey) or ephemeral workload identity. Pre-generate revocation certificates and store with your incident response plan. Implement commit signing verification in CI — reject unsigned commits, not just warn A signing key on a laptop is one coffee shop theft away from destroying your entire commit trust model. Keyless signing (Sigstore) eliminates the key theft problem entirely. If you must have long-lived keys, they must live on hardware tokens — never on a laptop filesystem
Docker image built FROM ubuntu:latest → base image differs between dev, staging, and production. Vulnerability scan on staging finds 45 criticals; production has 52 different criticals because the base image is 3 weeks newer. Can't reproduce staging scan results Floating tags (:latest, :1) resolve to different digests over time. Vulnerability scan results are only valid for the exact digest scanned. Staging and production running different base images means staging scan doesn't represent production risk Pin all base images by digest: FROM ubuntu@sha256:abc123.... Use Dependabot/Renovate to auto-update digests with PRs. Scan the exact digest that will be deployed — not "the same tag" which resolves to a potentially different image. Implement image promotion: the image scanned and approved in staging is the exact image (by digest) promoted to production :latest is a lie — it means "whatever was most recently pushed," which is different every time you build. Digest pinning is the only way to guarantee that what you scanned is what you deployed. Floating tags in production Dockerfiles are a supply chain vulnerability disguised as a convenience
CI pipeline service account has registry:write permission to push images to production container registry. Pipeline log accidentally echoes the service account token. Token scraped by attacker monitoring public build logs — pushes malicious image to production registry Overly permissive CI credentials. Pipeline token had push access to production registry even though the build was for a dev branch. No OIDC-based short-lived tokens — long-lived static token with broad scope. Build log output wasn't redacted for secrets Use OIDC federation for CI → registry auth: short-lived tokens scoped to the specific pipeline and branch. Never use long-lived registry credentials in CI. Implement build log secret scanning: pipeline fails if any credential pattern appears in output. CI tokens should have minimum scope: read on all branches, write only on main/release with branch protection CI pipelines have the keys to production. A token that can push to the production registry should never be exposed in a build log — and the only way to guarantee that is short-lived OIDC tokens that can't be leaked. Static CI credentials are the supply chain equivalent of a root password
npm install pulls 1,200 transitive dependencies. One of them — event-stream — changed maintainership. New maintainer added malicious flatmap-stream dependency that targeted specific Bitcoin wallets. Detected by community, not by any organizational security control. "Do we use this?" → 4-day investigation across 200 repos No transitive dependency monitoring. SCA tools configured to scan direct deps only because "transitive is too noisy." No anomaly detection: a dependency changing maintainership from one npm user to another should trigger review. No npm audit/advisory integration in CI that blocks on critical severity Scan all dependencies to full transitive depth. Integrate npm audit/OSV-Scanner/Trivy in CI — fail on any advisory with severity ≥ HIGH. Subscribe to maintainer change notifications. Implement dependency firewall: mirror all packages through an internal registry (Verdaccio, Artifactory) where new versions are quarantined until scanned. Use npm vet to review dependency changes on every PR The 1,200 dependencies you didn't review include the 1 that was compromised. Transitive dependencies are not "low risk because they're indirect" — they're high risk because nobody reviews them. Every dependency at any depth is code running in your production environment with your application's permissions

Best Practices

  1. Pin all dependencies to exact versions with content hashes. package-lock.json with lockfileVersion: 3, requirements.txt with package==1.2.3 --hash=sha256:..., Go go.sum with h1: hashes. Version ranges (^1.0.0, >=2.0) allow silently different artifacts on rebuild. Pinning to a commit SHA without a content-addressable store risks garbage collection — use content digests.
  2. Generate an SBOM at every build and query it for every zero-day. Use CycloneDX or SPDX format with NTIA minimum elements. Store SBOMs in a queryable registry (Dependency-Track) that can answer "do we use Log4j?" in under 60 seconds. Without an SBOM, answering that question takes days of grepping every repo — during which your service is exploitable.
  3. Sign every artifact with Sigstore keyless signing. Use cosign with OIDC-based Fulcio certificates (10-minute validity) and Rekor transparency logging. Keyless signing eliminates the long-lived signing key management problem. Verify signatures at deployment admission control (Kyverno, OPA, Binary Authorization) — never deploy unsigned artifacts to production.
  4. Attest build provenance at SLSA L2 or higher. Generate in-toto attestations that prove the builder identity, source repository, commit SHA, build invocation, and all materials consumed. Hermetic builds (no network access, pre-resolved dependencies) ensure the same source always produces the same artifact. Non-hermetic provenance is untrustworthy — it proves who built it but not what they built.
  5. Scan dependencies at full transitive depth on every build. Default npm audit and pip audit scan only direct dependencies — 78% of vulnerabilities live in transitive dependencies at depth 3+. Use npm audit --all, trivy fs --scanners vuln, or osv-scanner with no depth limits. Block builds on any reachable CVE with CVSS ≥ 7 or in CISA KEV catalog.
  6. Protect against dependency confusion with scoped registries. Use --index-url=<private> (not --extra-index-url) to make private registries the ONLY source. For npm, scope internal packages (@company:registry=<private>). Mirror public packages to a private proxy registry (Artifactory, Nexus, GitHub Packages) and pull only from the proxy — never directly from public registries in CI.
  7. Implement automated dependency updates with human review gates. Renovate or Dependabot auto-opens PRs for version updates. Auto-merge only patch-level updates that pass full CI (unit + integration + security scans). Never auto-merge major or minor updates without human review. A compromised maintainer publishing a malicious patch (1.2.3 → 1.2.4) can reach production in minutes via auto-merge.
  8. Use OIDC federation for all CI/CD authentication — no long-lived credentials. GitHub Actions OIDC → npm PyPI token (short-lived), AWS IAM, GCP Workload Identity. A GITHUB_TOKEN leaked from a compromised build step should have no standing access beyond the current repository. Long-lived PyPI tokens or npm tokens in CI secrets are supply chain compromise waiting to happen.
  9. Monitor your dependencies' community health as a leading indicator. Track bus factor (number of active maintainers), issue response time, release frequency, and maintainer identity continuity. Single-maintainer projects on critical path are a risk — document fork sustainment plans. Dependency takeovers are a rising attack vector: attackers purchase or socially engineer maintainer access to inject backdoors.
  10. Require SBOMs from third-party vendors in procurement contracts. Every vendor whose software runs in your environment must deliver a fresh SBOM on every release. Specify minimum SLSA L2 provenance, 30-day CVE remediation SLA, and vulnerability disclosure program as contractual requirements. A vendor without an SBOM cannot prove they know what's in their software — you inherit their unknown unknowns.

Error Recovery (STANDARD)

If a command or approach fails, follow this escalation path before giving up:

Symptom First Action If That Fails Last Resort
Tool/command not found Check installation: which [tool] or [tool] --version. Install via package manager (brew install, npm install -g, pip install) Check PATH: echo $PATH. Verify the tool binary is in a PATH directory. Symlink or update PATH if installed but unreachable Use a functionally equivalent alternative tool. If rg is unavailable, use grep -r. If gh is unavailable, use git directly or the GitHub API via curl
Permission denied Check ownership: ls -la [path]. Fix with chmod or sudo if appropriate. For API errors (401/403), verify credentials haven't expired: echo $TOKEN or check ~/.netrc Refresh credentials: re-authenticate with the service. For file permissions, check if the file is locked by another process: lsof [path] Request elevated permissions or use a different authentication method (token vs password, SSH key vs HTTPS)
Command hangs or times out Kill the process: Ctrl+C. Re-run with a timeout: timeout 30 [command] or gtimeout on macOS. Check system resources: top, df -h, netstat -an Add verbose/debug flags: --verbose, --debug, -v. Check logs: tail -f [logfile]. Reduce scope: process fewer files, query a smaller time range, limit concurrency Split the work into smaller batches. Implement a retry loop with exponential backoff (1s, 2s, 4s, 8s). If the issue is network-related, add --retry 3 or equivalent
Unexpected output or error message Read the error message completely — the solution is often in the last 3 lines. Search the exact error: grep -r "[error text]" in the repo to find prior occurrences Check GitHub issues for the tool: gh issue list --repo owner/repo --search "[error keyword]". Check Stack Overflow Simplify the approach. If the complex one-liner fails, break it into 3 sequential commands. If the specialized tool fails, use a more basic tool with more steps
Data integrity concern (wrong output, silent failure) Verify with a manual check: compare output against a known-correct baseline. Add assertions: `[command] grep -q "[expected]" && echo "OK"

Hard failure boundary: If 3 different approaches all fail, STOP. Do not iterate infinitely. Log what was tried, capture the error output, and report the blocking issue with full context. Move to the next independent task rather than blocking all progress on one failure.

Cross-Skill Coordination

Upstream Skill What You Receive When to Involve
ci-cd-builder Pipeline design, build infrastructure, artifact storage architecture Before implementing SLSA attestation or signing in the build pipeline — the pipeline IS the build platform
security-engineer Threat models, IAM design, secrets management infrastructure, SAST/SCA tooling Before assessing dependency risk — security-engineer defines the overall AppSec posture that supply chain controls plug into
compliance-officer Regulatory control mappings, audit evidence expectations, framework requirements Before mapping supply chain controls to regulatory frameworks — compliance defines what must be proven
devops-engineer Container image build process, deployment pipeline, registry configuration Before signing container images or implementing admission control — devops owns the infrastructure
legal-advisor License compatibility analysis, procurement contract language, open source policy Before establishing open source governance or vendor contractual requirements — legal defines acceptable license terms
incident-responder Incident response playbooks, severity classification, communication templates When a dependency compromise is detected — incident-responder manages the containment and recovery
Downstream Skill What You Provide Impact of Delay
ci-cd-builder Attested build provenance, SBOM generation integration, artifact signing configuration Pipeline outputs unsigned, unattested artifacts — supply chain integrity is unverifiable
security-reviewer Dependency allowlists/blocklists, SBOM with VEX, known-bad package signatures Code reviews miss supply chain risks — malicious packages go undetected
compliance-officer SBOM artifacts, provenance attestations, vendor assessment reports, license compliance data Compliance audits fail — no evidence of supply chain due diligence
devops-engineer Signing key configuration, verification policies, admission control rules Unsigned containers reach production — supply chain compromise has full blast radius
incident-responder Dependency compromise indicators, artifact integrity verification procedures, registry audit logs Incident response lacks supply chain context — compromise scope is unknown
backend-developer Dependency security policies, allowed package registries, upgrade SLAs Developers pull from unvetted registries — dependency confusion attacks succeed

State Log

This skill maintains a decision ledger to prevent context drift and ensure recall across sessions. Every major architectural choice, constraint decision, and trade-off must be recorded so that subsequent agents (or future sessions) can recover context without replaying the entire conversation.

Production Checklist

*Truncated - read the full file at https://github.com/zeroes-ones/Skills/blob/a20a35e2eef7136945ce72e79af2b83a3193b59f/skills/08-security/supply-chain-security/SKILL.md.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/zeroes-ones-skills-supply-chain-security/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

zeroes-ones-skills-supply-chain-security.ocm.jsonjson
{
  "ocm": "1",
  "id": "zeroes-ones-skills-supply-chain-security",
  "kind": "skill",
  "name": "supply-chain-security",
  "description": "Use when designing a supply chain security program, implementing SLSA Levels 1-4, generating and signing SBOMs (SPDX/CycloneDX), configuring build provenance with Sigstore/cosign/in-toto, triaging dependency vulns (typosquatting, confusion), hardening CI/CD pipelines, conducting vendor risk assessments, or designing artifact signing policies. Handles SLSA framework (hermetic builds, provenance), SBOM lifecycle (SPDX/CycloneDX, VEX, diffing), build provenance (Sigstore cosign, Fulcio/Rekor, in-toto, GitHub OIDC), dependency security (typosquatting, confusion, slopsquatting), CI/CD hardening (branch protection, signed commits, OIDC, secret scanning), artifact signing (cosign, npm provenance, SLSA provenance), vendor risk (third-party SBOM, NIST SSDF), and regulatory mapping (EU CRA, EO 14028, CISA). Do NOT use for general appsec (security-engineer), code review (security-reviewer), non-security CI/CD (ci-cd-builder), container vulns (vulnerability-management), or license compliance (legal-advisor).",
  "publisher": "zeroes-ones",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding",
      "legal"
    ],
    "tags": [
      "skill-md",
      "security",
      "supply-chain",
      "slsa",
      "sbom",
      "provenance",
      "sigstore",
      "dependency-security",
      "cicd-hardening",
      "artifact-signing"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Use when designing a supply chain security program, implementing SLSA Levels 1-4, generating and signing SBOMs (SPDX/CycloneDX), configuring build provenance with Sigstore/cosign/in-toto, triaging dependency vulns (typosquatting, confusion), hardening CI/CD pipelines, conducting vendor risk assessments, or designing artifact signing policies. Handles SLSA framework (hermetic builds, provenance), SBOM lifecycle (SPDX/CycloneDX, VEX, diffing), build provenance (Sigstore cosign, Fulcio/Rekor, in-toto, GitHub OIDC), dependency security (typosquatting, confusion, slopsquatting), CI/CD hardening (branch protection, signed commits, OIDC, secret scanning), artifact signing (cosign, npm provenance, SLSA provenance), vendor risk (third-party SBOM, NIST SSDF), and regulatory mapping (EU CRA, EO 14028, CISA). Do NOT use for general appsec (security-engineer), code review (security-reviewer), non-security CI/CD (ci-cd-builder), container vulns (vulnerability-management), or license compliance (legal-advisor)."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "github",
      "repository": "https://github.com/zeroes-ones/Skills",
      "path": "skills/08-security/supply-chain-security/SKILL.md",
      "ref": "a20a35e2eef7136945ce72e79af2b83a3193b59f",
      "url": "https://github.com/zeroes-ones/Skills/blob/a20a35e2eef7136945ce72e79af2b83a3193b59f/skills/08-security/supply-chain-security/SKILL.md",
      "key": "zeroes-ones/Skills/skills/08-security/supply-chain-security/SKILL.md"
    },
    "allowed_tools": [
      "Read",
      "Grep",
      "Glob"
    ],
    "license": "MIT"
  },
  "instructions": "# Supply Chain Security Engineer\n\n> **Portability target:** Spec-level (runs on Claude Code, Copilot, Gemini CLI, Codex, Cursor). No vendor-specific frontmatter fields.\n\nDesign, implement, and validate software supply chain security controls across the full development lifecycle. This skill covers SLSA attestation, SBOM generation and lifecycle management, build provenance with Sigstore and in-toto, dependency security against typosquatting and dependency confusion, CI/CD pipeline hardening, artifact signing, vendor risk assessment, and open source governance.\n## <!-- DEEP: 5+min --> RESEARCH_",
  "cost": {
    "context_tokens": 21238
  }
}

Fetch it by URL: GET /api/v1/registry/zeroes-ones-skills-supply-chain-security/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.