Scan a repository to surface actionable findings about agent performance. Analyzes source code, git history, GitHub data, agent logs, and agent context, then synthesizes cross-referenced findings with targeted actions informed by Tessl product awareness. Supports incremental multi-developer contributions and produces a self-contained HTML report.
70
88%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
Re-render .tessl-insights-poc/report.html from the existing findings.json and the current report template. This does not re-run any analyzers or re-synthesize findings — it only rebuilds the HTML.
cat .tessl-insights-poc/findings.jsonIf the file doesn't exist, stop and tell the user they need to run synthesize-insights first.
Read the report template. The path is relative to this SKILL.md, so it resolves to references/report-template.html at the tile root.
Resolving reference paths: The link above uses a relative path (
../../references/...) that works when this skill is read from its tile directory. If the path does not resolve (e.g. when activated via a.claude/skills/symlink), find the report template at.tessl/tiles/*/agent-insight-experiment/references/report-template.htmlrelative to the repository root.
The template contains a JSON injection marker:
const DATA = /*FINDINGS_JSON*/{}/*END_FINDINGS_JSON*/;Replace the {} between the markers with the full serialized contents of findings.json.
Critical: escape </ before injecting. The findings JSON is embedded inside a <script> tag, and the browser's HTML parser treats any literal </script> it sees as the end of the script block — even inside a JSON string value. If any finding's description, snippet, example_fix, or other text contains </script> (or any </ followed by a tag name the HTML parser recognizes), the page breaks mid-data and the report renders blank. This has already bitten the pipeline once — a finding that quoted the template's own <script>...</script> tag broke its own report.
Replace </ with <\/ in the serialized JSON string before injecting. The <\/ form is still valid JSON (the \/ is an allowed escape for /) and still valid JavaScript when evaluated, but the HTML parser no longer sees a closer. Do not modify findings.json on disk — escape only the copy you're about to inject.
Minimal reference implementation:
template = Path("tiles/agent-insight-experiment/references/report-template.html").read_text()
findings = Path(".tessl-insights-poc/findings.json").read_text()
safe = findings.replace("</", "<\\/")
start, end = "/*FINDINGS_JSON*/", "/*END_FINDINGS_JSON*/"
i = template.index(start) + len(start)
j = template.index(end)
out = template[:i] + safe.strip() + template[j:]
Path(".tessl-insights-poc/report.html").write_text(out)Write the result as .tessl-insights-poc/report.html.
Important: Copy the template exactly — do not modify the HTML, CSS, or JS. Only replace the {} placeholder with the (escaped) JSON data.
open ".tessl-insights-poc/report.html"Confirm the report opens correctly in the browser. If it renders blank or the stats row is missing, sanity-check that the injected blob contains no literal </script> strings:
python3 -c "
import re
from pathlib import Path
h = Path('.tessl-insights-poc/report.html').read_text()
i = h.index('/*FINDINGS_JSON*/') + len('/*FINDINGS_JSON*/')
j = h.rindex('/*END_FINDINGS_JSON*/')
blob = h[i:j]
print('embedded </script> count (must be 0):', blob.count('</script>'))
"