Skip to content
Back to skills

Managing Github Actions Secrets

ASecurity

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/`.

  • 40,048 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 1, 2026
developmentgoshellgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 1, 2026

npx -y skills add PostHog/posthog --skill managing-github-actions-secrets --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Managing Github Actions Secrets?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Managing Github Actions Secrets
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/posthog-managing-github-actions-secrets-posthog/badge)](https://www.skillsdirectory.com/skills/posthog-managing-github-actions-secrets-posthog)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: managing-github-actions-secrets
description: >
  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/`.
---

# Managing GitHub Actions secrets for PostHog

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.

## The rule

- **Always** create secrets on the `posthog` org, not on a repo.
- Grant the secret to specific repos via the org-level access control
  (selected repositories). Do not make it available to all repos by default
  unless the secret is genuinely meant to be shared org-wide.
- Never paste secret values into chat, PR descriptions, commit messages, or
  files. Pipe them in, or paste them only into the GitHub UI's secret field.

## Creating or updating a secret via `gh` CLI

Pipe 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:

```sh
# Read from clipboard / a pipe / a file — never inline as an argument
pbpaste | gh secret set POSTHOGOS_PACKAGER_KEY --org posthog
```

Common variants:

```sh
# 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:

```sh
gh secret list --org posthog | grep POSTHOGOS_PACKAGER_KEY
```

## Creating or updating a secret via the GitHub UI

1. Open <https://github.com/organizations/PostHog/settings/secrets/actions>.
2. Click **New organization secret** (or the existing secret to update it).
3. Set the **Name** (SCREAMING_SNAKE_CASE, descriptive, like `POSTHOGOS_PACKAGER_KEY`).
4. Paste the **Value**.
5. Under **Repository access**, choose **Selected repositories** and pick the
   exact repos that need it. Avoid **All repositories** unless the secret is
   safe to expose to every repo in the org.
6. Click **Add secret** / **Update secret**.

## What not to do

- Do not run `gh secret set NAME` without `--org posthog` — that creates a
  repo-level secret on whatever repo `gh` is currently pointed at.
- Do not navigate to `Settings → Secrets and variables → Actions` on an
  individual 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).
- Do not echo secret values in commands, logs, or files. If a value was
  accidentally exposed, rotate it immediately.

## When the user asks "where do I add this secret?"

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).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…