skills-ws
Version:
87 agent skills for AI coding assistants — marketing, growth, web3, dev, design & operations. Built for OpenClaw, Claude Code, Cursor, and Codex.
140 lines (114 loc) • 4.97 kB
Markdown
## Contents
- Dependency Security
- Supply Chain Attack Prevention
- Provenance & Attestations (SLSA / Sigstore)
- Renovate Configuration
## Dependency Security
### Supply Chain Attack Prevention
```bash
# 1. Lock file integrity — always commit package-lock.json
npm ci # Never npm install in CI
# 2. Audit regularly (npm 10/11: --production is gone, use --omit=dev)
npm audit --omit=dev --audit-level=moderate
# 3. Pin exact versions for critical deps
# package.json: "express": "4.18.2" (not "^4.18.2")
# 4. Use Socket.dev for supply chain analysis
npx socket npm info express # Check for suspicious patterns
# 5. Enable npm provenance (verify package comes from expected source)
npm publish --provenance # For package authors
```
### Provenance & Attestations (SLSA / Sigstore)
SLSA (Supply-chain Levels for Software Artifacts) is a graded framework; the
levels you actually target in mid-2026:
| SLSA level | What it guarantees | How to reach it |
|-----------|--------------------|-----------------|
| L1 | Build is scripted + provenance exists | CI builds, emit provenance |
| L2 | Provenance is signed by the build service | Hosted CI (GitHub Actions) signs |
| L3 | Build runs in a hardened, isolated runner; provenance is non-forgeable | Use the official SLSA generator / reusable workflow; no self-hosted runner reuse |
**Publish with trusted publishing (consumers can then verify origin).** npm's
trusted publishing uses GitHub Actions OIDC: no long-lived token in CI, and a
Sigstore provenance attestation binding the package to the exact repo, commit,
and workflow is generated automatically. Configure a trusted publisher for the
package on npmjs.com (GitHub Actions repo + workflow), then publish with no token:
```yaml
# .github/workflows/publish.yml
permissions:
id-token: write # REQUIRED for OIDC trusted publishing + Sigstore provenance
contents: read
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v6
with: { node-version: 24, registry-url: 'https://registry.npmjs.org' }
- run: npm ci
- run: npm publish # no NODE_AUTH_TOKEN: OIDC auth, provenance published automatically
```
Requires npm 11.5.1+ and Node 22.14.0+ (Node 24 bundles a new enough npm; on
Node 22 add `npm install -g npm@latest` first). `npm publish --provenance` with a
`NODE_AUTH_TOKEN` remains only as a fallback for legacy token-based flows: classic
tokens are revoked and granular write tokens are capped at 90 days, so trusted
publishing is the durable path.
**Verify provenance before installing** (block deps that lack a trusted attestation):
```bash
# npm: audit the signatures/attestations of your whole tree
npm audit signatures # fails if installed pkgs lack valid registry signatures
# Sign & verify arbitrary build artifacts/containers with cosign (keyless):
cosign sign --yes ghcr.io/acme/app:1.2.3 # OIDC keyless, no private key stored
cosign verify ghcr.io/acme/app:1.2.3 \
--certificate-identity-regexp 'https://github.com/acme/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
# Verify an attached SLSA provenance attestation (predicate type slsaprovenance):
cosign verify-attestation ghcr.io/acme/app:1.2.3 \
--type slsaprovenance \
--certificate-identity-regexp 'https://github.com/acme/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
# Verify a GitHub-built release artifact with the official SLSA verifier:
slsa-verifier verify-artifact app.tar.gz \
--provenance-path app.intoto.jsonl \
--source-uri github.com/acme/app
```
**Enforce in CI** so unverified artifacts never deploy:
```bash
# Gate the pipeline: cosign exits non-zero on a failed/missing attestation.
cosign verify-attestation "$IMAGE" --type slsaprovenance \
--certificate-identity-regexp "$EXPECTED_IDENTITY" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
|| { echo "::error::Unverified artifact — refusing to deploy"; exit 1; }
```
> Generate L3 provenance for your own builds with the official
> `slsa-framework/slsa-github-generator` reusable workflow. For container/SBOM
> policy enforcement at admission time, layer in Sigstore **policy-controller**
> (Kubernetes) or **Kyverno** image-verification rules.
### Renovate Configuration
```json
// renovate.json
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"packageRules": [
{
"matchUpdateTypes": ["patch"],
"automerge": true,
"automergeType": "pr"
},
{
"matchUpdateTypes": ["minor"],
"automerge": true,
"automergeType": "pr",
"schedule": ["after 10am on Monday"]
},
{
"matchUpdateTypes": ["major"],
"automerge": false,
"labels": ["major-update"]
}
],
"vulnerabilityAlerts": {
"enabled": true,
"labels": ["security"]
}
}
```