Official agent skill

Writing Dataclasses

by PostHog in PostHog/posthog

House rules for Python dataclasses in PostHog: when to reach for one instead of a tuple or dict[str, Any], which decorator to use (@frozen from posthog.dataclasses), how to name, construct, consume…

OfficialCustom licenceAuto-check passedBackend & APIs

Install Writing Dataclasses

skills CLI
$ npx skills add PostHog/posthog --skill writing-dataclasses -a claude-code

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

GitHub CLI
$ gh skill install PostHog/posthog writing-dataclasses --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/posthog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/writing-dataclasses .claude/skills/writing-dataclasses && 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
writing-dataclasses
GitHub stars
40k
Token cost
~1.8k tokens
SKILL.md length
825 words
Files
1
Skills in repo
252
Repo updated
First seen
Licence
Custom licence

At a glance

House rules for Python dataclasses in PostHog: when to reach for one instead of a tuple or dict[str, Any], which decorator to use (@frozen from posthog.dataclasses), how to name, construct, consume…

  • Works in 3 steps: Invariants win over mirroring. Never… → Wire signatures keep their shape.… → Facade contracts that are also request…
  • Changing a dataclass
  • SKILL.md covers When a dataclass, when not, Which decorator, Naming and Constructing and enforcing…, plus 4 more sections
  • Calls python

What it does

Writing Dataclasses is an agent skill from PostHog/posthog, published by the product's own GitHub organization. House rules for Python dataclasses in PostHog: when to reach for one instead of a tuple or dict[str, Any], which decorator to use (@frozen from posthog.dataclasses), how to name, construct, consume and evolve them, how to keep secrets out of repr, and when a function should accept a dataclass instead of its unpacked fields. Use when adding or changing a dataclass, returning or passing several values from a function, converting a tuple or dict payload, deciding frozen=/slots=/kwonly=, or passing a facade contract…

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Backend development. It works with PostHog, Python, Django and Pydantic. The repository describes itself as: :hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error…

When your agent uses it

  • Changing a dataclass
  • Passing several values from a function
  • Converting a tuple
  • Deciding frozen=/slots=/kwonly=

Example prompts

  • “/writing-dataclasses”

Requirements

  • Python 3

Workflow steps

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

  1. Invariants win over mirroring. Never pass a wider type into a callee that needs a narrower one. If the dataclass has url: str | None and…
  2. Wire signatures keep their shape. Temporal @activity.defn/@workflow.run and celery task boundaries take what they take; the helper behind…
  3. Facade contracts that are also request bodies are wire signatures too. A contract in facade/contracts.py backed by DataclassSerializer and…

What it can do on your machine

Read from SKILL.md and the folder at commit 10f9ad7. 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:

    • python

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

  • Network

    No URLs in SKILL.md.

    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.

Context cost

Writing Dataclasses loads about 1.8k tokens when it runs. Until then it costs about 167 tokens; SKILL.md has 825 words of instructions outside code blocks.

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

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

Its licence (Custom licence) doesn't allow us to republish the file, so here is its outline and opening line. It has 825 words (~1,754 tokens).

“The point of every rule here is the same: values that share a type get swapped silently, and a positional tuple or a dict[str, Any] lets that happen. A named, frozen dataclass makes the swap a typecheck failure instead of…”

— opening of SKILL.md by PostHog, Custom licence
name
writing-dataclasses

Read the full SKILL.md on GitHub

Files

Just SKILL.md in .agents/skills/writing-dataclasses of PostHog/posthog.

Open the folder on GitHubat commit 10f9ad7

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in PostHog/posthog, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Writing Dataclasses 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.

Writing Dataclasses compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Writing Dataclasses this skillPostHog/posthog40k—~1.8kAutomated safety check: PassCustom licence
Framework Migration AssistantArabelaTso/Skills-4-SE253—~1.9kAutomated safety check: PassApache-2.0
Djangoericrisco/rsc-harness167—~3.1kAutomated safety check: PassMIT
Fastapiericrisco/rsc-harness167—~5kAutomated safety check: NotesMIT
Pytestmathiasertl/django-ca158—~924Automated safety check: PassGPL-3.0
Fastcrudbenavlabs/fastcrud1.6k—~5kAutomated safety check: PassMIT

Similar skills

  • Framework Migration Assistant

    ArabelaTso/Skills-4-SE

    Automatically migrate Python web applications between frameworks (Flask → FastAPI, Django → FastAPI).

    253 GitHub stars~1.9k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Django

    ericrisco/rsc-harness

    A skill your agent uses when building, reviewing, securing, testing or shipping a Django app — models, migrations, QuerySets/managers, FBV/CBV views, forms, the admin, settings split, and Django…

    167 GitHub stars~3.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Fastapi

    ericrisco/rsc-harness

    A skill your agent uses when building, reviewing, testing, securing or shipping a FastAPI / async Python service — routers, Pydantic v2 schemas, dependency injection, async SQLAlchemy 2.0…

    167 GitHub stars~5k tokensUpdated today
    Backend & APIsAuto-check: notes
  • Pytest

    mathiasertl/django-ca

    Instructions for running, writing, and maintaining tests in this project

    158 GitHub stars~924 tokensUpdated 4 days ago
    Testing & QAAuto-check passed
  • Fastcrud

    benavlabs/fastcrud

    A skill your agent uses when building or modifying CRUD endpoints with FastCRUD (the fastcrud PyPI package) in a FastAPI project — covers FastCRUD, crudrouter, EndpointCreator, FilterConfig…

    1.6k GitHub stars~5k tokensUpdated 13 days ago
    Backend & APIsAuto-check passed
  • Django Access Review

    getsentry/skills

    Official

    Django access control and IDOR security review. An agent skill from getsentry/skills.

    1k GitHub starsUsed in 3 repos~2.6k tokens
    Backend & APIsAuto-check: notes

More from PostHog/posthog

All 252 skills in this repo
  • Authoring Log Alerts

    PostHog/posthog

    Official

    Author useful, low-noise log alerts on services in a PostHog project.

    40k GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Official

    Operating procedure for the conflict-autoresolver agent: sweep open PostHog/posthog PRs that conflict with master, resolve the trivial conflicts (generated artifacts deterministically, source…

    40k GitHub stars~4.2k tokensUpdated today
    Auto-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).

    40k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Exploring Apm Traces

    PostHog/posthog

    Official

    Investigates distributed application performance using PostHog APM (OpenTelemetry span) data via MCP.

    40k GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Exploring LLM Traces

    PostHog/posthog

    Official

    Debug and inspect LLM/AI agent traces using PostHog's MCP tools.

    40k GitHub stars~4.4k tokensUpdated today
    Auto-check passed
  • Investigate Metric

    PostHog/posthog

    Official

    Diagnose why a product metric changed (dropped, spiked, or plateaued) by orchestrating breakdowns, actors, paths, lifecycle, retention, and annotations queries.

    40k GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Categories

Questions about Writing Dataclasses

What does Writing Dataclasses do?

House rules for Python dataclasses in PostHog: when to reach for one instead of a tuple or dict[str, Any], which decorator to use (@frozen from posthog.dataclasses), how to name, construct, consume…. Writing Dataclasses is an agent skill from PostHog/posthog, published by the product's own GitHub organization.dataclasses), how to name, construct, consume and evolve them, how to keep secrets out of repr, and when a function should accept a dataclass instead of its unpacked fields.

When should I use Writing Dataclasses?

Writing Dataclasses fits situations like: changing a dataclass; passing several values from a function; converting a tuple; deciding frozen=/slots=/kwonly=.

How do I install Writing Dataclasses in Claude Code?

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

How do I install Writing Dataclasses in Codex?

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

Can I use Writing Dataclasses 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/posthog --skill writing-dataclasses -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/writing-dataclasses, .gemini/skills/writing-dataclasses, .github/skills/writing-dataclasses and .opencode/skills/writing-dataclasses in your project.

What does Writing Dataclasses need to run?

Going by SKILL.md and its folder, Writing Dataclasses needs the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Writing Dataclasses access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Writing Dataclasses 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 Writing Dataclasses use?

Writing Dataclasses has a licence file (the repository's licence) that doesn't match a standard licence. Read it on GitHub before reusing the skill.

How many tokens does Writing Dataclasses use?

About 1.8k tokens (SKILL.md is roughly 7k 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 Writing Dataclasses?

Skills that share tags, products or a category with Writing Dataclasses: Framework Migration Assistant (ArabelaTso/Skills-4-SE, 253 stars), Django (ericrisco/rsc-harness, 167 stars), Fastapi (ericrisco/rsc-harness, 167 stars) and Pytest (mathiasertl/django-ca, 158 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Writing Dataclasses?

PostHog (a GitHub organization, an official publisher) maintains it in PostHog/posthog, which has 40,182 GitHub stars. The repository holds 252 skills in this directory. The repository was last updated on October 8, 2026.

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