CtrlK
BlogDocsLog inGet started
Tessl Logo

filtering-bot-traffic

Identify, measure, and exclude bot / crawler / AI-agent traffic in PostHog web and product analytics using the traffic classification surface (the isLikelyBot / getTrafficType HogQL functions and the $virt_* virtual properties). Use when the user asks to "exclude bots", "filter out crawlers", "remove bot traffic from my numbers", "how much of my traffic is bots / AI crawlers", "is GPTBot / ChatGPT / Claude hitting my site", "break down traffic by human vs bot", or wants clean human-only counts in an insight or dashboard. For the real-time Live tab bot tiles, use exploring-live-traffic instead.

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

—

The risk profile of this skill

SKILL.md
Quality
Evals
Security

Quality

Content

82%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A highly actionable, well-structured reference with executable JSON and SQL recipes and a valuable Gotchas section. The main gaps are mild trigger-phrase redundancy with the description and all content living inline despite the skill exceeding 50 lines.

Suggestions

Trim the "When to use this skill" bullet list, since its trigger phrasing largely duplicates the description's "Use when..." clause.

Consider moving the "Adding a bot PostHog doesn't know yet" and "Seeing bots that don't run JavaScript" sections into one-level-deep reference files (e.g. references/custom-bot-rules.md) and linking from the body.

Add an explicit validate-fix-retry sequence for custom bot rule creation (e.g. list rules, create, confirm the pattern compiled, iterate) rather than relying solely on PostHog's save-time rejection.

DimensionReasoningScore

Conciseness

The body is dense and largely assumes Claude's competence (no padding about what PostHog or a user agent is), but the intro bullets and "When to use this skill" section partly restate trigger phrasing already in the description, a minor redundancy that could be trimmed.

4 / 5

Actionability

Provides copy-paste-ready JSON filter objects, exact HogQL function signatures, and complete SQL recipes using the coalesce(nullIf(...)) pattern, covering the common cases (exclude, measure share, identify bots, AI-agent specifically).

5 / 5

Workflow Clarity

Recipes are sequenced by surface (virtual properties vs functions) and the mutating bot-rule section notes save-time rejection as a validation safeguard; the core analytics work is read-only so a destructive feedback loop is not required, but the rule-creation path lacks an explicit validate-fix-retry checklist.

4 / 5

Progressive Disclosure

Well-organized with clear section headers and no nested references, but at ~200 lines all content is inline with no bundle files; secondary topics (custom bot rules, JS-less bots) could arguably live in one-level-deep reference files.

4 / 5

Total

17

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description that states concrete capabilities, surfaces the exact HogQL functions and virtual properties, and provides explicit natural-language triggers. The closing pointer to exploring-live-traffic gives it excellent distinctiveness.

DimensionReasoningScore

Specificity

Names multiple concrete actions ("Identify, measure, and exclude bot / crawler / AI-agent traffic") and grounds them in specific surfaces (isLikelyBot / getTrafficType HogQL functions and $virt_* virtual properties), giving comprehensive coverage.

5 / 5

Completeness

Explicitly answers both what (identify/measure/exclude bot traffic via the classification surface) and when (an explicit "Use when..." clause listing concrete trigger phrases).

5 / 5

Trigger Term Quality

Embeds a rich set of natural phrases users would actually say ("exclude bots", "filter out crawlers", "remove bot traffic from my numbers", "is GPTBot / ChatGPT / Claude hitting my site", "break down traffic by human vs bot"), covering synonyms and variants.

5 / 5

Distinctiveness Conflict Risk

Occupies a clear PostHog-specific niche and actively disambiguates from the adjacent skill ("For the real-time Live tab bot tiles, use exploring-live-traffic instead"), minimizing wrong-skill triggering.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
PostHog/posthog
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.