posthog/managing-github-actions-secrets
> Creates and updates GitHub Actions secrets for PostHog workflows. Use when adding a new CI secret, rotating an existing secret, wiring a workflow to an API token, package registry credential, deploy key, or any value referenced via `${{ secrets.* }}` in `.github/workflows/`.
npx skills add https://github.com/PostHog/posthog --skill managing-github-actions-secrets
PostHog centralizes all GitHub Actions secrets at the organization level
and grants individual repositories access to them. Do not add secrets to a
single repo, even if the secret is only consumed by one workflow today.
posthog org, not on a repo.(selected repositories). Do not make it available to all repos by default
unless the secret is genuinely meant to be shared org-wide.
files. Pipe them in, or paste them only into the GitHub UI's secret field.
gh CLIPipe the secret value into gh secret set with --org posthog. The example
below reads the value from stdin so it never appears in shell history:
# Read from clipboard / a pipe / a file — never inline as an argument
pbpaste | gh secret set POSTHOGOS_PACKAGER_KEY --org posthog
Common variants:
# From a file
gh secret set POSTHOGOS_PACKAGER_KEY --org posthog < secret.txt
# Restrict to selected repositories at creation time
gh secret set POSTHOGOS_PACKAGER_KEY --org posthog \
--visibility selected --repos PostHog/posthog,PostHog/posthog-foss
# Update which repos can access an existing org secret
gh secret set POSTHOGOS_PACKAGER_KEY --org posthog \
--visibility selected --repos PostHog/posthog
Verify:
gh secret list --org posthog | grep POSTHOGOS_PACKAGER_KEY
POSTHOGOS_PACKAGER_KEY).exact repos that need it. Avoid All repositories unless the secret is
safe to expose to every repo in the org.
gh secret set NAME without --org posthog — that creates arepo-level secret on whatever repo gh is currently pointed at.
Settings → Secrets and variables → Actions on anindividual repo to add a secret. If a repo-level secret already exists for
something that should be org-level, migrate it (create at org, grant to the
repo, then delete the repo-level copy).
accidentally exposed, rotate it immediately.
Default answer: at the org level via gh secret set --org posthog, granted
to the specific repos that need it. Only deviate if the user explicitly
overrides this (e.g. for an environment-scoped secret on a deployment
environment, which is a different mechanism).
Take posthog/managing-github-actions-secrets from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.