Official agent skill

Adding Skill Program

by PostHog in PostHog/wizard

Add a PostHog wizard capability backed by context-mill content.

OfficialMITAuto-check passed

Install Adding Skill Program

skills CLI
$ npx skills add PostHog/wizard --skill adding-skill-program -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install PostHog/wizard adding-skill-program --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/PostHog/wizard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/adding-skill-program .claude/skills/adding-skill-program && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
adding-skill-program
GitHub stars
197
Token cost
~2.6k tokens
SKILL.md length
1,180 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Add a PostHog wizard capability backed by context-mill content.

  • Works in 5 steps: Add the program folder src/programs//.… → Supply the flow's seed and task prompts… → Register the config: import it as → …
  • SKILL.md covers Choose the contribution surface, Build a native orchestrator…, Simple linear programs and… and Screens, prerequisites, and…, plus 1 more section
  • Calls pnpm and tsc

What it does

Adding Skill Program is an agent skill from PostHog/wizard, published by the product's own GitHub organization. Add a PostHog wizard capability backed by context-mill content. Choose a skill command or native program, configure an orchestrator flow, and wire any required CLI, screens, or prerequisites.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Designed for coding agents working on the PostHog wizard codebase.

It works with PostHog and TypeScript. The repository describes itself as: Quickly add PostHog to your project using the setup wizard ✨. The licence is MIT.

Example prompts

  • “/adding-skill-program”

Requirements

  • Compatibility (from SKILL.md): Designed for coding agents working on the PostHog wizard codebase.

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Add the program folder src/programs//. Its index.ts is the only
  2. Supply the flow's seed and task prompts in context-mill, including the task
  3. Register the config: import it as
  4. For a standalone native command, create a command module in
  5. Check the program's OAuth scopes against the tools it needs. Add

What it can do on your machine

Read from SKILL.md and the folder at commit 08c70dd. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • tsc

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for coding agents working on the PostHog wizard codebase.

    From compatibility in the SKILL.md frontmatter.

Context cost

Adding Skill Program loads about 2.6k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 1,180 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from PostHog/wizard at commit 08c70dd, republished under its MIT licence (© PostHog). 1,180 words, ~2,600 tokens.

Download SKILL.mdSave it as .claude/skills/adding-skill-program/SKILL.md (or your agent's skills folder).
name
adding-skill-program
description
Add a PostHog wizard capability backed by context-mill content. Choose a skill command or native program, configure an orchestrator flow, and wire any required CLI, screens, or prerequisites.
compatibility
Designed for coding agents working on the PostHog wizard codebase.
metadata.author
posthog
metadata.version
4.0.1

Adding a Skill-Based Program

Read wizard-development for the shared design policy. Use Pi for new agent work and prefer an orchestrator flow. Linear runs are for very simple work and existing flows. The Anthropic SDK remains a supported legacy fallback, deprecated as the default for new work; the shared guide owns the fallback criteria and gateway model/effort/system-prompt contract.

These are contribution defaults. A program whose config sets no binding runs on DEFAULT_BINDING, Pi and linear.

Choose the contribution surface

  • Content-only capability: use the existing skill command machinery when it can express the workflow. Context-mill owns skill content and cliEntries. A new skill-backed child of an existing family ships through context-mill; inspect family dispatch. Unpromoted skills run through the skill command.
  • Native program: use a ProgramConfig when the wizard needs its own flow, screens, detection, composition, or other native behavior. Keep product instructions in context-mill.

Command names, program id, context-mill agentFlow, and skillId have different roles. Use the full product name for public commands. The config field is id.

Build a native orchestrator program

Use metrics as the current Pi/orchestrator example and read the runner architecture when changing execution behavior.

  1. Add the program folder src/programs/<id>/. Its index.ts is the only entry: it exports the ProgramConfig as config, and any detectors or keys the TUI and CLI need. No other file in the folder is named index.ts. Copy a sibling's tsconfig.json into the folder, unchanged, and add { "path": "<id>" } to references in src/programs/tsconfig.json. The folder is one project, its tests included, and pnpm typecheck (tsc -b) builds it. Without the reference, the registry's import fails with TS6307. Keep tests in <id>/__tests__; they reach other layers through their entries only. Shared program code goes in src/programs/shared/, detection/, warehouse-sources/, frameworks/ or oauth/, never in another program's folder, and has no index.ts. A program imports its own files and the shared program code by relative path, such as ../shared/skill-program. Set agentFlow when its context-mill flow differs from id; setting it explicitly also documents the content dependency. Keep a run definition so runProgram executes agent work.
  2. Supply the flow's seed and task prompts in context-mill, including the task dependencies and applicable skill variants. The orchestrator loads agentFlow ?? id, requires a seed prompt, and checks task-skill variants before running. run.skillId alone does not define this flow.
  3. Register the config: import it as import { config as <name> } from '@programs/<id>' in program-registry.ts and add it to PROGRAM_REGISTRY. Set the config's binding to Pi and the orchestrator. ProgramId is a string.
  4. For a standalone native command, create a command module in src/cli/commands with nativeCommandFactory and register it in runCli in src/cli/index.ts. A native family child uses the handlers in family dispatch. Program registration derives screen sequences and store lookup, not the top-level CLI .use() chain.
  5. Check the program's OAuth scopes against the tools it needs. Add oauthScopeAdditions to the config only when the base set is insufficient. Keep a program's own set in its folder, as replay-vision does; sets several programs share live in program-scopes.ts.

Model and effort selections in flow frontmatter must be supported by the wizard and gateway. Follow the cross-repo procedure in wizard-development before introducing a model or changing gateway-required prompt material.

Simple linear programs and existing flows

For a very simple linear flow, use createSkillProgram to configure installation of one skill. Register the native program as above. The factory sets no binding, so the program runs on DEFAULT_BINDING unless you add one to the config it returns. Read SkillProgramOptions for required fields; audit demonstrates factory customization and a dynamic run(session) that seeds a ledger. Revenue analytics builds its config directly and adds prerequisite detection.

ProgramRun.customPrompt, abortCases, postRun, and buildOutroData are consumed by the linear sequence. postRun runs after success; buildOutroData receives session and credentials, with host information inside credentials. The orchestrator currently uses its own task prompts, failure handling, and outro, and does not invoke those hooks. Check this limitation before migrating a linear flow; setting an orchestrator binding does not preserve these behaviors automatically.

Show full SKILL.md (516 more words)Show less

Screens, prerequisites, and composition

The program's UI lives in src/tui/programs/<id>/: flow.ts, deck/, screens/, screen-ids.ts, and an index.ts(x) entry whose TUI_PROGRAMS maps each program id it serves to a TuiProgram (flow, deck, tips and screens). Outside the folder, the TUI program registry imports and spreads the entry. A program with no entry runs AGENT_SKILL_STEPS: intro, health check, auth, run, outro, and keep-skills, with the skill deck. Map its steps to swap in your own intro screen, as audit's flow does. Auth also applies the shared AI opt-in gate, withAiOptInGate(config, flow), for agent programs. Set healthCheck: false on the config when the run skips the PostHog readiness check, and leave the health-check step out of its flow. Flow steps are FlowSteps. Override screenId when adapting one. A new screen needs an id in the folder's screen-ids.ts, a component, and an entry in its entry's screens; the screen registry mounts every program's screens. State only the TUI reads, such as a screen's answer, lives in TuiState and is written through a store setter, such as store.setIntegrate. The folder is its own tsconfig project: it may import the TUI core, through @tui/* and never by relative path, @programs, @programs/types and its own @programs/<id>, never another program's folder or the registry. Besides its line in src/tui/programs/index.ts, a new folder needs a tsconfig.json copied from a sibling, unchanged, and { "path": "programs/<id>" } in references in src/tui/tsconfig.json. Then run pnpm typecheck. Without both, the registry's @tui/programs/<id> import fails with TS6307.

Follow ink-tui for rendering and store usage. If the program is team-owned, add both folders to CODEOWNERS.

Use the config's onReady(ctx) for session-dependent detection, then render structured frameworkContext.detectError data in the intro. A step's onInit runs when the TUI starts rendering with its initial session. onReady runs after the real session is assigned: runTui calls runReadyHooks in store.ts before the intro, and detectProgram runs it as the detection of a run whose store has none, as in headless. Set ciPreRun only when a CI session needs a different prerequisite strategy: detectProgram runs it in place of onReady for a CI session. Programs read a ProgramSession and never use the UI: run gets a RunnerContext, ciPreRun gets a CiRunnerContext and a run step's onRunPrep gets the runner's log (runner-context.ts).

requires currently records metadata; it does not execute or enforce prior programs. Compose real work through runSteps, keyed by the flow step id, with runProgramId, onRunPrep and targetDir when needed. Self-driving runs posthog-integration composed at its integrate-run step. Composed sub-runs are structurally linear; orchestrators cannot nest. A run step without runProgramId can set targetDir and onRunPrep to scope the program's own agent to a picked project and keep its sequence, as error-tracking does for its run step.

Validate the affected path

Reuse the relevant registry, binding, detection, or routing checks. Add a focused behavioral test only for a meaningful gap; avoid tests that repeat configuration fields. Check that the selected CLI route resolves the intended program and that its context-mill flow is available. Use the exploration guide for a warranted end-to-end run against a disposable app. Follow wizard-development for proportionate checks; documentation-only changes need source/link verification.

© PostHog, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/adding-skill-program of PostHog/wizard.

Open the folder on GitHubat commit 08c70dd

Compare with similar skills

Adding Skill Program next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Adding Skill Program compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Adding Skill Program this skillPostHog/wizard197—~2.6kAutomated safety check: PassMIT
Opik Analytics Instrumentationcomet-ml/opik22k—~4.4kAutomated safety check: PassApache-2.0
Compare Array Bundle SizePostHog/posthog-js613—~599Automated safety check: PassCustom licence
Develop ExtensionPostHog/posthog-js613—~2.3kAutomated safety check: PassCustom licence
Replay Incident RiskPostHog/posthog-js613—~1.1kAutomated safety check: PassCustom licence
Integration Astro Staticwill-be-done/will-be-done152—~636Automated safety check: PassAGPL-3.0

Similar skills

  • Shows how to add product analytics events to Opik's frontend, Java backend and Python SDK, all reporting through Segment to PostHog with an opik_ name prefix.

    22k GitHub stars~4.4k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Compare Array Bundle Size

    PostHog/posthog-js

    Official

    Quickly compare the posthog-js array.js bundle size in the current working tree against a git baseline using the repository's esbuild proxy.

    613 GitHub stars~599 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Develop Extension

    PostHog/posthog-js

    Official

    Author a new PostHog browser extension, or port a posthog-js v1 extension, against the @posthog/browser-common Client/Extension contract.

    613 GitHub stars~2.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Replay Incident Risk

    PostHog/posthog-js

    Official

    Cross-reference a posthog-js or rrweb change against past incident patterns before writing, reviewing, or merging it.

    613 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Integration Astro Static

    will-be-done/will-be-done

    PostHog integration for static Astro sites using SSG. An agent skill from will-be-done/will-be-done.

    152 GitHub stars~636 tokensUpdated 5 days ago
    Frontend & DesignAuto-check passed
  • Official

    Help users debug PostHog Error Tracking stack-trace symbolication for any supported platform — JavaScript/TypeScript web, React Native (Hermes), Android (Proguard / R8), or iOS / macOS (dSYM).

    721 GitHub stars~2.2k tokensUpdated today
    MobileAuto-check passed

More from PostHog/wizard

  • Ink Tui

    PostHog/wizard

    Official

    Build or modify the PostHog wizard's Ink screens, primitives, keyboard interactions, and session-driven screen flow.

    197 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Official

    Add or extend language and framework support in the PostHog wizard, including detection, framework configuration, registration, and matching context-mill content.

    197 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Exploring The Wizard

    PostHog/wizard

    Official

    Drive the PostHog wizard headlessly against a throwaway app through wizard-ci MCP tools, inspect decisions, and capture the real TUI.

    197 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Wizard Development

    PostHog/wizard

    Official

    Architectural guidance for changes to the PostHog Wizard: program and framework boundaries, agent routing, gateway admission, security, and TUI state.

    197 GitHub stars~2.4k tokensUpdated today
    Auto-check passed

Questions about Adding Skill Program

What does Adding Skill Program do?

Add a PostHog wizard capability backed by context-mill content. Adding Skill Program is an agent skill from PostHog/wizard, published by the product's own GitHub organization. Add a PostHog wizard capability backed by context-mill content.

How do I install Adding Skill Program in Claude Code?

Run `npx skills add PostHog/wizard --skill adding-skill-program -a claude-code`. Or copy the skill folder (.claude/skills/adding-skill-program in PostHog/wizard) into .claude/skills/adding-skill-program in your project. Claude Code loads it when a task matches its description.

How do I install Adding Skill Program in Codex?

Run `npx skills add PostHog/wizard --skill adding-skill-program -a codex`. Or copy the skill folder (.claude/skills/adding-skill-program in PostHog/wizard) into .agents/skills/adding-skill-program in your project. Codex loads it when a task matches its description.

Can I use Adding Skill Program in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PostHog/wizard --skill adding-skill-program -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adding-skill-program, .gemini/skills/adding-skill-program, .github/skills/adding-skill-program and .opencode/skills/adding-skill-program in your project.

What does Adding Skill Program need to run?

Going by SKILL.md and its folder, Adding Skill Program needs the command-line tools its instructions call (pnpm and tsc). Compatibility (from SKILL.md): Designed for coding agents working on the PostHog wizard codebase..

Does Adding Skill Program access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Adding Skill Program safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Adding Skill Program use?

Adding Skill Program is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Adding Skill Program use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Adding Skill Program?

Skills that share tags, products or a category with Adding Skill Program: Opik Analytics Instrumentation (comet-ml/opik, 22k stars), Compare Array Bundle Size (PostHog/posthog-js, 613 stars), Develop Extension (PostHog/posthog-js, 613 stars) and Replay Incident Risk (PostHog/posthog-js, 613 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Adding Skill Program?

PostHog (a GitHub organization, an official publisher) maintains it in PostHog/wizard, which has 197 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.

Source: PostHog/wizard on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.