telemetry-insights-narrate
Route the LLM edge of the cohort-telemetry insights layer: turn a generated insights.json into short prose for the report's reserved narrator slot (narrator)…
Skill by AI-Substrate
Chalk Labs
Need help deploying telemetry-insights-narrate?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ai-substrate-telemetry-insights-narrate
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, frontend, ml, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/telemetry-insights-narrate
What's inside
- Skill name
telemetry-insights-narrate- Description
- Route the LLM edge of the cohort-telemetry insights layer: turn a generated insights.json into short prose for the report's reserved narrator slot (narrator), or propose NEW deterministic generators as reviewable code (insight-smith). The one hard rule both obey: the LLM never computes a number that appears in a report — it restates computed numbers or writes tooling, never conclusions. Use when someone says "narrate the insights", "write up the telemetry report", "add prose to the insights HTML", or "propose a new insight generator".
- License
- MIT
- Instructions
- 89 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# /telemetry-insights-narrate
A **thin router** for the LLM edge (WS001 layer 4). The numbers are already
computed by `harness telemetry insights`; this skill only routes prose and
generator-authoring around them. It owns no analysis — the
[insights schema](../../../harness/cli/src/services/telemetry/insights.schema.json)
and [workshop 001 D7](../../../docs/plans/048-cohort-telemetry-insights/workshops/001-cohort-measures-and-insights-layer.md)
are the authority for what a row means and where the LLM may participate.
## The one hard rule
**The LLM never computes a number that appears in a report.** A narrator sentence
may restate a number **verbatim** from `insights.json`; it may never derive, sum,
average, round, or infer one. The smith proposes number-producing *code*, never
numbers. Everything below is a consequence of this rule.
## Route 1 — narrator (prose over computed numbers)
- **Input**: a generated `insights.json` (+ its co-produced `index.html`).
- **Output**: short prose for the reserved narrator slot — every sentence cites a
row that exists in `insights.json`, carries that row's **n** and **caveat**
weight, and uses **correlational language only** (no causation).
- **Injection mechanic**: a plain HTML edit into the inert slot. In `index.html`,
write the prose inside `<div id="narrator-prose"></div>` within
`<section id="narrator-slot" data-narrator="reserved">` — leave the
`<!--INSIGHTS_DATA-->` island and the computed tables untouched.
**Honesty check** (mandatory, mechanical, **artifact-bound**). Verify the page
**you just edited** — never a fresh render. Every visible number in the page
body must be a digit-run that also exists in *that same page's*
`#insights-data` island. So ground each figure to an **island digit-run**: cite
the island's raw value, not the table's `k`/`M` display form (the island stores
`509680`, so restating the cell as "509.7k" does **not** trace and reads as
minted). Run this against the artifact you edited:
```bash
node -e 'const fs=require("fs"),h=fs.readFileSync(process.argv[1],"utf8"),m=h.match(/<script[^>]*id="insights-data"[^>]*>([\s\S]*?)<\/script>/i);if(!m){console.error("no #insights-data island");process.exit(2)}const isl=new Set(JSON.stringify(JSON.parse(m[1])).match(/\d+/g)||[]),vis=(h.match(/<body[\s\S]*<\/body>/i)||[""])[0].replace(/<(script|style)\b[\s\S]*?<\/\1>/gi," ").replace(/<[^>]*>/g," "),bad=[...new Set(vis.match(/\d+/g)||[])].filter(n=>!isl.has(n)&&n!=="3");if(bad.length){console.error("MINTED (not in #insights-data): "+bad.join(", "));process.exit(1)}console.log("OK: every visible number traces to #insights-data")' path/to/insights/index.html
```
Exit 1 lists every page number with **no source in the island** — a minted,
derived, or **stale** figure. Fix the sentence, never the island. (`"3"` is the
lone allowlisted scaffolding digit: the reserved slot's static "Phase 3" label;
the un-narrated tables are built by script at browser time, so a file read sees
only your prose against the island.)
- **Narrate the CURRENT artifact.** If the insights were regenerated after a
fix, re-narrate the **new** page — restating numbers off a stale render *is*
minting, and the check above catches it (the old figures no longer trace to
the new island).
- **Renderer coverage is a SEPARATE check, not this one.** The renderer smoke
`npx vitest run harness/cli/test/services/telemetry/insights-html.test.ts`
renders a *fixture* and executes it in jsdom to prove the **generator/template**
mints no number. It never opens your edited `index.html`, so it cannot vouch
for your prose. Keep both: the vitest guards the renderer, the one-liner above
guards the artifact.
## Route 2 — insight-smith (authors new generators, reviewed in)
- **Input**: `insights.json` + the generator library
[`insights.ts`](../../../harness/cli/src/services/telemetry/insights.ts).
- **Output**: a **NEW deterministic generator** proposed as a code diff / PR-able
suggestion — tooling that computes a number, never the number itself and never
a conclusion.
- **Review-gated**: proposals go through normal code review + the repo gate
(`harness checks`); a smith proposal is **never self-merged**. Its measures,
n-threshold, and caveat contract must match the existing rows' shape before it
can render.
## Hard rules (both roles)
- **No computed numbers.** (The rule above. Restate, don't derive.)
- **No people analytics.** Insights aggregate over work units; the narrator never
ranks, names, or profiles a contributor (WS001 D6).
- **Mandatory n + caveat.** Every claim the narrator writes carries the row's n
and its confound note — an insight the HTML can't caveat doesn't get narrated.
- **Suppressed stays suppressed.** Below-threshold rows are not narrated around,
hinted at, or reconstructed — silence is the honest render.
## Notes
- The slot is **inert by design**: nothing in the CLI calls an LLM; the render
ships an empty, dashed placeholder and this skill is the only thing that fills
it.
- The end-to-end loop this skill plugs into is
[docs/how/telemetry/cohort-insights.md](../../../docs/how/telemetry/cohort-insights.md).
- Iterate this skill after each real narration — when a beat needs tribal
knowledge, fix it here (a line), not in chat memory.From AI-Substrate/harness-engineering, MIT.
More from AI-Substrate/harness-engineering
- 0.529score
validate-v2
AI-Substrate
Adaptive, high-signal post-action validation for whatever was just produced — unified plan, tasks, code change, workshop, legacy spec, or any artifact.
SkillBFreshness: BClaude Code +9 - 0.525score
eng-harness-flow
AI-Substrate
Front door for the engineering-harness loop.
SkillBFreshness: BClaude Code +9 - 0.525score
builder
AI-Substrate
The single front door to the SDD pipeline (docs/plans/): research → product plan → implementation guide → tasks → implement → review → post-flight → ship.
SkillBFreshness: BClaude Code +9 - 0.524score
grill-agent-done
AI-Substrate
Interrogate and defend the definition of done and the evidence that will prove it — one claim at a time, until each claim is lined up against the right grade…
SkillBFreshness: BClaude Code +9 - 0.524score
eng-harness-in-a-box
AI-Substrate
The engineering-harness loop with zero dependencies — an engineering harness in a box.
SkillBFreshness: BClaude Code +9 - 0.524score
flow-eval-run
AI-Substrate
Start a peer-driven flow-conformance eval run with zero archaeology: pick or scaffold a scenario, spawn a BLIND subject peer to do the task, then score the…
SkillBFreshness: BClaude Code +9 - 0.521score
plan-0-v2-constitution
AI-Substrate
Establish or refresh the project constitution and align the supporting norms documents before any planning phases begin.
SkillBFreshness: BClaude Code +9 - 0.521score
plan-v2-extract-domain
AI-Substrate
Collaboratively identify and formalize an existing codebase concept as a named domain.
SkillBFreshness: BClaude Code +9 - 0.519score
the-flow
AI-Substrate
Backwards-compatible redirect for the SDD pipeline.
SkillBFreshness: BClaude Code +9 - 0.515score
eng-harness-0-harnessability-assessment
AI-Substrate
Assess a Git repository's harnessability — how easily a human or agent can enter, operate, modify, observe, prove, and improve it through an engineering…
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 42
- Last commit (this folder)
- Aug 10, 2026 (2 months ago)
- Last release
- Aug 30, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from AI-Substrate
- 0.529score
validate-v2
AI-Substrate
Adaptive, high-signal post-action validation for whatever was just produced — unified plan, tasks, code change, workshop, legacy spec, or any artifact.
SkillBFreshness: BClaude Code +9 - 0.525score
builder
AI-Substrate
The single front door to the SDD pipeline (docs/plans/): research → product plan → implementation guide → tasks → implement → review → post-flight → ship.
SkillBFreshness: BClaude Code +9 - 0.525score
eng-harness-flow
AI-Substrate
Front door for the engineering-harness loop.
SkillBFreshness: BClaude Code +9 - 0.524score
flow-eval-run
AI-Substrate
Start a peer-driven flow-conformance eval run with zero archaeology: pick or scaffold a scenario, spawn a BLIND subject peer to do the task, then score the…
SkillBFreshness: BClaude Code +9 - 0.524score
eng-harness-in-a-box
AI-Substrate
The engineering-harness loop with zero dependencies — an engineering harness in a box.
SkillBFreshness: BClaude Code +9 - 0.524score
grill-agent-done
AI-Substrate
Interrogate and defend the definition of done and the evidence that will prove it — one claim at a time, until each claim is lined up against the right grade…
SkillBFreshness: BClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get telemetry-insights-narrate running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
telemetry-insights-narrate skill. Agent Mart. https://agentmart.dev/skills/ai-substrate-telemetry-insights-narrate (last updated 2026-10-24)