Debugging MCP Analytics
PostHog/posthog-foss
Debug, support, and build PostHog MCP Analytics — product analytics for MCP servers (the @posthog/mcp and posthog.mcp SDKs plus the mcpanalytics product).
Query Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP.
$ npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install UsefulSoftwareCo/executor prod-telemetry --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/UsefulSoftwareCo/executor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/prod-telemetry .claude/skills/prod-telemetry && rm -rf skills-srcUse ~/.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/
Install the "prod-telemetry" agent skill from https://github.com/UsefulSoftwareCo/executor/tree/main/.claude/skills/prod-telemetry into .claude/skills/prod-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prod-telemetry", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/UsefulSoftwareCo/executor/tree/main/.claude/skills/prod-telemetryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install UsefulSoftwareCo/executor prod-telemetry --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UsefulSoftwareCo/executor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/prod-telemetry .agents/skills/prod-telemetry && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "prod-telemetry" agent skill from https://github.com/UsefulSoftwareCo/executor/tree/main/.claude/skills/prod-telemetry into .agents/skills/prod-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prod-telemetry", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install UsefulSoftwareCo/executor prod-telemetry --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UsefulSoftwareCo/executor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/prod-telemetry .cursor/skills/prod-telemetry && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "prod-telemetry" agent skill from https://github.com/UsefulSoftwareCo/executor/tree/main/.claude/skills/prod-telemetry into .cursor/skills/prod-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prod-telemetry", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/UsefulSoftwareCo/executor.git --path .claude/skills/prod-telemetry--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install UsefulSoftwareCo/executor prod-telemetry --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UsefulSoftwareCo/executor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/prod-telemetry .gemini/skills/prod-telemetry && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "prod-telemetry" agent skill from https://github.com/UsefulSoftwareCo/executor/tree/main/.claude/skills/prod-telemetry into .gemini/skills/prod-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prod-telemetry", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install UsefulSoftwareCo/executor prod-telemetryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/UsefulSoftwareCo/executor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/prod-telemetry .github/skills/prod-telemetry && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "prod-telemetry" agent skill from https://github.com/UsefulSoftwareCo/executor/tree/main/.claude/skills/prod-telemetry into .github/skills/prod-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prod-telemetry", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install UsefulSoftwareCo/executor prod-telemetry --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UsefulSoftwareCo/executor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/prod-telemetry .opencode/skills/prod-telemetry && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "prod-telemetry" agent skill from https://github.com/UsefulSoftwareCo/executor/tree/main/.claude/skills/prod-telemetry into .opencode/skills/prod-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prod-telemetry", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
prod-telemetryQuery Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP.
Prod Telemetry is an agent skill from UsefulSoftwareCo/executor. Query Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP. Use when investigating prod errors, latency, usage, churn signals, or verifying a deploy's telemetry; includes the dataset field layout, working APL recipes, and the error-attribution join.
Its SKILL.md is about 1.9k 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 Data & Analytics, covering Product analytics and MCP servers. It works with Model Context Protocol, PostHog, PlanetScale and PostgreSQL. The repository describes itself as: The missing integration layer for AI agents. Let them call any OpenAPI / MCP / GraphQL / custom js functions in secure environment. The licence is MIT.
Read from SKILL.md and the folder at commit 27dccb8. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are apl).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Prod Telemetry loads about 1.9k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 624 words of instructions outside code blocks.
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.
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.
The full file from UsefulSoftwareCo/executor at commit 27dccb8, republished under its MIT licence (© UsefulSoftwareCo). 624 words, ~1,865 tokens.
.claude/skills/prod-telemetry/SKILL.md (or your agent's skills folder).All three stores are queryable through the Executor MCP's connected
integrations — no dashboards or credentials needed. Verify the connection
exists with connections.list if a call fails.
axiom_mcp)Tool: axiom_mcp.user.axiomMcpOAuth.querydataset — the argument is apl
(NOT query). Dataset: ['executor-cloud'] (worker spans; browser spans
join the same traces via traceparent).
Field layout (the part you'd otherwise rediscover by failed queries):
['attributes.custom'],
NOT as top-level attributes.* columns. Read with
['attributes.custom']['mcp.tool.name']. A nonexistent top-level field is
a hard query error ("invalid field"), not an empty result.['status.code'] ("OK"/"ERROR"), ['status.message'].events column carries exception.type /
exception.stacktrace JSON.name, trace_id, span_id,
parent_span_id, duration, _time.Span names worth querying (and their custom attrs):
mcp.execute / mcp.execute.resume — mcp.execute.mode
(pausable/inline), mcp.execute.code_length, and
mcp.execute.outcome (ok/fail/paused) with, on failures,
mcp.execute.error_kind (type_error | reference_error |
syntax_error | range_error | tool_error | timeout |
resource_limit | serialization_error | thrown | unknown).
Sandbox script failures ride the MCP success channel, so status.code
stays OK — filter on these attributes, not span status. Spans from
before the attributes shipped carry neither; absence is not success.
Also mcp.execute.result_chars (compact-JSON size of the returned
value, pre-truncation; -1 = unmeasurable), mcp.execute.log_chars,
mcp.execute.emitted — the dump-vs-narrow signal (the model preview
truncates at 30k chars, so result_chars > 30000 means the model tried
to pull a truncated blob into context).executor.tool.execute — mcp.tool.name (full address), and since
PR #992: executor.tool.outcome (ok/fail),
executor.tool.error_code, executor.tool.error_status,
executor.tenant, executor.subject.mcp.tool.dispatch — mcp.tool.name (sandbox path),
mcp.tool.integration, same outcome attrs.plugin.openapi.invoke — plugin.openapi.method / path_template /
base_url, and since PR #992 http.status_code.mcp.request (outer) — mcp.auth.organization_id,
mcp.auth.account_id, mcp.tool.name, CF edge fields (cf.country…),
MCP client fingerprint (mcp.client.name…), and on managed-cloud
execute/execute-action calls mcp.execute.code (the script itself,
capped at 10k chars — cloud-only content capture; local/self-host
telemetry never records content).auth.authorize_organization — every membership authorization. Reads the
local membership mirror unconditionally; there is no per-request readiness
check and no WorkOS fallback, so this span carries no readiness attribute.
The mirror's write spans are workos_mirror.<op>; the reconciler run is
workos_events.sync. workos_sync.drained_at in the prod DB is the
reconciler heartbeat, and a stalled reconciler now raises its own error
from the cron (see below) rather than showing up as a fallback here.Recipe — reconciler heartbeat (ticks should land roughly every minute; a
gap wider than the 10-minute lag budget means the cron alert should already
have fired — see workos_events: reconciler stale below):
['executor-cloud']
| where _time > ago(1h) and name == "workos_events.sync"
| summarize n = count() by bin(_time, 1m)
| sort by _time descRecipe — stale-reconciler alerts (should be empty; each row is one paging event):
['executor-cloud']
| where _time > ago(1d) and ['status.message'] contains "workos_events: reconciler stale"
| project _time, trace_id, msg = tostring(['status.message'])
| sort by _time descRecipe — error signatures by class (the daily-digest query):
['executor-cloud']
| where _time > ago(1d)
| where ['status.code'] == "ERROR" and name == "executor.tool.execute"
| extend msg = substring(tostring(['status.message']), 0, 120)
| extend tool = tostring(['attributes.custom']['mcp.tool.name'])
| summarize n = count() by msg, tool
| sort by n descRecipe — attribute errors to orgs. Tool spans now carry
executor.tenant directly (post-#992). For spans from BEFORE that deploy,
join through the outer request span:
['executor-cloud']
| where name == "mcp.request" and isnotnull(['attributes.custom']['mcp.auth.organization_id'])
| project trace_id, org = tostring(['attributes.custom']['mcp.auth.organization_id'])
| join kind=inner (
['executor-cloud']
| where ['status.code'] == "ERROR" and name == "executor.tool.execute"
| project trace_id, msg = substring(tostring(['status.message']), 0, 60)
) on trace_id
| summarize n = count() by org, msg | sort by n descRecipe — upstream failure rate per integration (post-#992 attrs):
['executor-cloud']
| where _time > ago(1d) and name == "mcp.tool.dispatch"
| extend outcome = tostring(['attributes.custom']['executor.tool.outcome'])
| extend integration = tostring(['attributes.custom']['mcp.tool.integration'])
| where isnotnull(outcome)
| summarize calls = count(), fails = countif(outcome == "fail") by integration
| extend failRate = todouble(fails) / todouble(calls)
| sort by fails descKnown signal caveats (audited 2026-06-12):
ToolResult.fail outcomes (upstream 4xx/5xx, auth
rejections) are INVISIBLE — they rode the Effect success channel with no
span marker. Don't conclude "no errors" from old data.status.message (tagged errors
without a message field) — group those by events exception.type instead.[object Object] status messages are the pre-#992 formatting bug.planetscale_mcp)Read tool needs {organization: "answer-overflow", database: "executor", branch: "main"}. It returns ok: true even when the SQL failed — check the
result text for Error:. Use for tenant/integration/connection facts that
spans don't carry (row sizes, config shapes, counts).
posthog_api / mcp_posthog_com)Browser-side events only (the ~60-event typed catalog, PR #987; server-side
events not built). The org-key posthog_api connection covers the REST API;
the OAuth MCP connection covers the higher-level tools.
After deploying telemetry changes: run a known-failing tool call against
prod, then assert the expected attributes arrive in Axiom within ~1 min.
Absence of data looks identical to health — query for the NEW attribute
explicitly rather than eyeballing dashboards. The e2e equivalent runs on
every suite: e2e/cloud/telemetry-contract.test.ts via the Telemetry
service (motel /api/spans/search?attr.<key>=<value>).
© UsefulSoftwareCo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/prod-telemetry of UsefulSoftwareCo/executor.
Open the folder on GitHubat commit 27dccb8
Prod Telemetry 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Prod Telemetry this skillUsefulSoftwareCo/executor | 4.1k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Debugging MCP AnalyticsPostHog/posthog-foss | 721 | — | ~7.6k | Automated safety check: Pass | MIT | |
| Posthog Product Health Auditboardsesh/boardsesh | 163 | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Downloading Batch Export FilesPostHog/posthog-foss | 721 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Building A DashboardPostHog/posthog-foss | 721 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Databuddydatabuddy-analytics/Databuddy | 1.2k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 |
PostHog/posthog-foss
Debug, support, and build PostHog MCP Analytics — product analytics for MCP servers (the @posthog/mcp and posthog.mcp SDKs plus the mcpanalytics product).
boardsesh/boardsesh
Mine Boardsesh's PostHog telemetry (error tracking, session recordings, product analytics) with a multi-agent workflow, then file verified, deduplicated, severity-labelled GitHub issues.
PostHog/posthog-foss
Export PostHog events, persons, sessions, or the results of a HogQL query on demand and download the resulting files.
PostHog/posthog-foss
Build a new dashboard, or update an existing one, from a set of insights — the same job the in-app assistant does with its upsert-dashboard tool, but over MCP.
databuddy-analytics/Databuddy
Integrate Databuddy analytics using the SDK, REST API, or MCP.
google/skills
Manages clusters, instances, and backups for AlloyDB for PostgreSQL, and integrates with AlloyDB Model Context Protocol (MCP) tools for automated database operations.
UsefulSoftwareCo/executor
Pattern for wrapping third-party SDK clients (Stripe, Resend, AWS, etc.) with Effect.
UsefulSoftwareCo/executor
Runbook for releasing the executor CLI package (stable and beta).
UsefulSoftwareCo/executor
Pattern for implementing optimistic UI updates with effect-atom in this codebase.
UsefulSoftwareCo/executor
Testing Effect HttpApi services end-to-end. An agent skill from UsefulSoftwareCo/executor.
UsefulSoftwareCo/executor
Use the @executor-js/emulate service emulators (GitHub, Google, Stripe, Resend, WorkOS, …) to test integrations for real — full OpenAPI specs, working OAuth flows, mintable credentials, and a…
UsefulSoftwareCo/executor
Build modals/dialogs self-contained: form and in-flight state lives inside, closing unmounts it.
Categories
Query Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP. Prod Telemetry is an agent skill from UsefulSoftwareCo/executor. Query Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP.
Prod Telemetry fits situations like: investigating prod errors; verifying a deploys telemetry; includes the dataset field layout; working APL recipes.
Run `npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a claude-code`. Or copy the skill folder (.claude/skills/prod-telemetry in UsefulSoftwareCo/executor) into .claude/skills/prod-telemetry in your project. Claude Code loads it when a task matches its description.
Run `npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a codex`. Or copy the skill folder (.claude/skills/prod-telemetry in UsefulSoftwareCo/executor) into .agents/skills/prod-telemetry in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add UsefulSoftwareCo/executor --skill prod-telemetry -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/prod-telemetry, .gemini/skills/prod-telemetry, .github/skills/prod-telemetry and .opencode/skills/prod-telemetry in your project.
SKILL.md names no scripts, command-line tools or credentials: Prod Telemetry is instructions for the agent only.
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.
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.
Prod Telemetry is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Prod Telemetry: Debugging MCP Analytics (PostHog/posthog-foss, 721 stars), Posthog Product Health Audit (boardsesh/boardsesh, 163 stars), Downloading Batch Export Files (PostHog/posthog-foss, 721 stars) and Building A Dashboard (PostHog/posthog-foss, 721 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
UsefulSoftwareCo (a GitHub organization) maintains it in UsefulSoftwareCo/executor, which has 4,085 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 7, 2026.
Source: UsefulSoftwareCo/executor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.