authoring-scouts

Author, customize, and test PostHog Signals scouts that write scheduled inbox reports.

713|118|Updated Aug 11, 2020
One-click install
npx skills add https://github.com/PostHog/posthog-foss --skill authoring-scouts
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: authoring-scouts
Source: https://github.com/PostHog/posthog-foss/tree/main/products/signals/skills/authoring-scouts
Command: npx skills add https://github.com/PostHog/posthog-foss --skill authoring-scouts

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

PostHog Signals scouts are scheduled agents that scan a project and file reports into the Signals inbox, but adapting the canonical fleet to a specific project — or writing a new scout for an uncovered surface — requires knowing the scout SKILL.md anatomy, the report contract, dedupe and memory conventions, config posture, and the test loop. This Skill encodes all of that so an agent can author or tune a scout correctly on the first pass.

Core Features & Use Cases

  • Adapt or author scouts: Narrow a canonical scout's scope, retune thresholds, add disqualifiers, or scaffold a new signals-scout-* skill from the closest canonical template for a surface the fleet doesn't cover.
  • Configure run posture: Set schedule, enabled, dry-run (emit=false), network access, tags, and structured-output schemas via scout-create-prepare/scout-config-update, and steer scouts without edits using scout notes.
  • Build measurement scouts: Create LLM-judge scouts that record structured $scout_structured_output events on a schedule for custom metrics no query can compute.
  • Use Case: You want a scout that watches your checkout-funnel event for conversion drops. The Skill walks you through profiling the project, copying the closest canonical scout, writing a signal-vs-noise discriminator, dogfooding the queries by hand, and spending one scout-run-now to validate end-to-end.

Quick Start

Ask the agent to create a new PostHog Signals scout that watches a specific event or surface in your project and files reports to the Signals inbox.

Frequently Asked Questions about authoring-scouts

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a new PostHog Signals scout?

Create a skill named signals-scout-<scope> with emit_report and edit_report in allowed_tools, then call posthog:scout-create-prepare with the body and nested config, show the confirmation, and finish with scout-create-execute. The harness discovers it by globbing the signals-scout-* prefix.

How do I customize a canonical scout for my project?

Edit the per-team skill row with posthog:skill-update using find/replace edits, or duplicate the canonical scout into a new signals-scout-<scope> name to avoid divergence. Editing a canonical row marks it diverged and stops upstream sync updates.

Can I test a scout without writing reports to the inbox?

Yes, set emit=false in the scout's config for dry-run mode; it runs and logs what it would have written, visible via scout-runs-list and scout-runs-retrieve. You can also trigger a disabled scout manually with scout-run-now before enabling it.

What is the signals-scout name prefix requirement?

The harness discovers scouts by globbing signals-scout-* over the project's skills, so the skill name must start with that prefix. A skill named anything else never runs as a scout, regardless of its body content.

How do I make a scout that scores or measures something on a schedule?

Build a measurement scout by setting structured_output_schema on its config; each run submits records via scout-record-output, stored as $scout_structured_output events chartable in insights. The skill body defines the rubric, sampling recipe, and subject per record.

Why does my scout keep filing duplicate reports?

The emit_report channel is not idempotent, so the scout must check inbox-reports-list before authoring and record a report:<domain>:<entity> scratchpad entry with the report_id after filing. Never retry an emit_report call that may have succeeded.