UNPKG

skills-ws

Version:

87 agent skills for AI coding assistants — marketing, growth, web3, dev, design & operations. Built for OpenClaw, Claude Code, Cursor, and Codex.

44 lines (37 loc) • 2.1 kB
## Secrets & OIDC Prefer **OIDC over long-lived static cloud keys**: the workflow mints a short-lived token at runtime, so there is no secret to leak or rotate. `id-token: write` is required for OIDC and must be granted explicitly (it is *not* in the `contents: read` default). ```yaml # Repository / org secrets (Settings -> Secrets and variables -> Actions) env: DATABASE_URL: ${{ secrets.DATABASE_URL }} jobs: # Environment-scoped secrets + manual gate. Secrets here are isolated from CI jobs. deploy: environment: production # add "Required reviewers" + secrets on this environment permissions: id-token: write # mint the OIDC token contents: read steps: # OIDC — no stored cloud keys. Configure the trust policy on the cloud side # to only accept tokens from THIS repo + ref (and ideally THIS environment). - uses: aws-actions/configure-aws-credentials@v6 with: role-to-assume: arn:aws:iam::123456789012:role/deploy aws-region: us-east-1 - run: ./deploy.sh ``` **Trust-policy scoping (do this — a wildcard `repo:*` subject is a takeover risk):** ```jsonc // AWS IAM trust policy condition — bind to exactly your repo, ref, and environment "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com", "token.actions.githubusercontent.com:sub": "repo:your-org/your-repo:environment:production" } } ``` **Secret rules:** - Never `echo`/`print` a secret; GitHub masks known values but interpolation can defeat masking. - Never pass secrets into actions triggered by `pull_request` from forks (use `pull_request_target` only with extreme care — it runs with write scope against untrusted code). - Prefer the auto-provisioned `GITHUB_TOKEN` (scoped, short-lived) over a PAT. If you need a PAT, use a fine-grained token with minimal repo/permission scope and a short expiry. - Rotate any unavoidable static credential on a schedule and alert on use from unexpected IPs (`step-security/harden-runner@v2` can enforce egress allowlists).