CtrlK
BlogDocsLog inGet started
Tessl Logo

adding-ingestion-warnings

How to add a new ingestion warning type to the event ingestion pipeline. Use when emitting a new warning from nodejs ingestion code (emitIngestionWarning, captureIngestionWarning, pipeline `warnings` arrays, `drop()` with warnings), when adding a warning type, category, or severity, or when a typecheck error says a string is not assignable to IngestionWarningType. Covers the INGESTION_WARNING_TYPES registry (the single source of truth for type, category, and severity), the details-key conventions that ClickHouse v2 materializes into columns, debouncing, and the downstream surfaces to keep in sync (v1 UI map, resolving-ingestion-warnings skill, docs, v2 API).

66

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

73%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 strong, expert-oriented skill body: concrete, well-sequenced, with validation feedback loops and clean section structure. The main weakness is verbosity in the Rust producer section, where long run-on sentences bundle config detail that could be trimmed or moved to a reference file.

Suggestions

Tighten the 'Best-effort, fire-and-forget' and weld-test passages: split the run-on sentences and move exact Kafka config constants (acks=1, retries=0, linger.ms=100, queue sizes) into a short table or a reference file so the inline prose stays scannable.

Add a complete, copy-paste nodejs emit example (e.g. emitIngestionWarning(outputs, teamId, { type, details, key })) alongside the Rust snippet so both emit paths are equally actionable.

Consider extracting the Rust capture-produced routing rules (from_tag vs DIRECT_EMIT criteria) into a references/ file, leaving SKILL.md with the decision rule and a one-level link.

DimensionReasoningScore

Conciseness

The guide is dense and assumes competence (no concept tutorials), but several passages are run-on and padded with config minutiae — e.g. the ~180-word 'Best-effort, fire-and-forget' bullet and the long weld-test sentence — that could be tightened; this fits 'mostly efficient but could be tightened' better than the 'minor instances' of anchor 4.

3 / 5

Actionability

Provides concrete numbered steps, an exact details-key→column table, a copy-paste Rust snippet, and exact commands (pnpm gen:ingestion-warning-types); falls just short of 5 because the nodejs emit calls are named but not shown as complete copy-paste signatures.

4 / 5

Workflow Clarity

Multi-step processes are clearly sequenced with explicit validation checkpoints and feedback loops — the no-drift CI test ('fails CI whenever the committed artifact and the generator output diverge: rebase, regenerate, recommit'), the nodejs-before-capture deploy order, and a closing downstream checklist — matching the top anchor.

5 / 5

Progressive Disclosure

No bundle dirs exist; all links are one-level-deep repo source paths clearly signaled and organized under topical sections (registry, emitting, Rust, rollout, checklist). Good structure and easy navigation, but nearly all guidance is inline (some Rust config detail could arguably split to a reference), so just below a 5 that expects content split into reference files.

4 / 5

Total

16

/

20

Passed

Description

87%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.

The description precisely scopes a narrow task with explicit 'Use when' triggers, including a typecheck-error trigger, and names the key APIs and surfaces to keep in sync. It is specific, complete, and low-conflict, with only minor room to broaden trigger synonyms.

DimensionReasoningScore

Specificity

Lists multiple concrete actions (register type/category/severity, emit via emitIngestionWarning/captureIngestionWarning, debounce, sync downstream surfaces) with specific API names; comprehensive but a few items are domain labels rather than discrete actions, so just below a 5.

4 / 5

Completeness

Clearly states both what ('How to add a new ingestion warning type... Covers the INGESTION_WARNING_TYPES registry... details-key conventions... debouncing... downstream surfaces') and when ('Use when emitting... when adding... or when a typecheck error says...') with concrete trigger phrases, matching the top anchor.

5 / 5

Trigger Term Quality

Natural triggers are present ('Use when emitting a new warning...', 'when adding a warning type, category, or severity', and the literal typecheck-error phrasing 'a string is not assignable to IngestionWarningType'), with concrete API names; lacks broader synonyms beyond the canonical vocabulary, so not a 5.

4 / 5

Distinctiveness Conflict Risk

Highly specific niche tied to IngestionWarningType / INGESTION_WARNING_TYPES / emitIngestionWarning with distinct 'adding' triggers; only minor adjacency to the named resolving-ingestion-warnings skill, so conflict risk is minimal.

5 / 5

Total

18

/

20

Passed

Validation

87%

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

Validation14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 5 suspicious

Warning

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

14

/

16

Passed

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.