report-generation
End-to-end Evidence.dev report workflow — exploration, drafting, approval-gated build, codification, and post-report next-steps menu
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
End-to-end Evidence.dev report workflow — exploration, drafting, approval-gated build, codification, and post-report next-steps menu
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
On-demand time-series forecasting. CAPTURE params from project context, call run_forecast, present deterministic engine results.
Use when helping initialize, configure, or prepare a Seeknal project like a coding agent
Translate business questions into metrics, SQL evidence, and actionable recommendations
Run multi-step SQL plus Python/statistics/ML analysis while keeping tools thin and evidence grounded
Answer business questions from read-only connected databases using deterministic schema discovery and SQL evidence
Run Python code in an isolated subprocess for statistical/ML/visualization work beyond what SQL can express
| name | report-generation |
| description | End-to-end Evidence.dev report workflow — exploration, drafting, approval-gated build, codification, and post-report next-steps menu |
| tags | ["reporting","evidence","visualization"] |
| version | 2.0.0 |
Use this workflow when the user asks for a report, dashboard, or visualization. You will produce a professional, insight-driven Evidence.dev report that goes through an explicit approval gate before building.
execute_sql — explore tables, validate the analytical querylist_tables / describe_table — discover schemasask_user — present the approval menu (with the EXACT discriminator below)generate_report — build the Evidence.dev project (gated on approval)save_report_exposure — codify as a re-runnable spec (optional, after approval)open_in_browser — show the built report (optional, post-build menu)BEFORE you can call generate_report, you MUST:
execute_sql to explore ALL relevant tables (not just one).DO NOT generate a report after looking at only one table. DO NOT write generic insights. Every recommendation must cite a specific number from the data.
After exploration, you MUST present an approval menu using ask_user with EXACTLY
these four options. The discriminator label is Generate report now — the menu
will not grant approval unless that exact string is one of the options AND the
user picks it.
Options (must be these exact strings):
Continue analysisGenerate report nowDone for nowType your ownDo NOT print these options as plain text, bullets, or a numbered list — they
must come through ask_user. Only call generate_report after the user
explicitly chooses Generate report now. The same gate applies to
save_report_exposure (it shares _REPORT_APPROVAL_DISCRIMINATOR).
Pass to generate_report:
title: a clear, descriptive report titlepage_content: Evidence-compatible markdown content (see syntax below)SQL queries in fenced blocks:
SELECT ... FROM table_name
Components (SINGLE curly braces only — never double braces):
<BigValue data={query_name} value=column_name /><BarChart data={query_name} x=column y=column /><LineChart data={query_name} x=date_col y=value_col /><AreaChart data={query_name} x=date_col y=value_col /><DataTable data={query_name} /><ScatterPlot data={query_name} x=col1 y=col2 /><Histogram data={query_name} x=column bins=20 /><FunnelChart data={query_name} name=stage value=count />Evidence reports compile through Svelte after generate_report returns the
scaffold path, so parse errors surface during the build phase — not when
the tool first returns. The following patterns cause cryptic Parser.error
traces and Build failed exits:
Unescaped < and > in narrative text. Write < / > for
literal angle brackets in markdown prose. Svelte sees < as the start of
a component tag and chokes if no valid tag name follows.
Double curly braces in component props. <BarChart data={{query}} />
is wrong — Evidence wants single braces <BarChart data={query} />. The
_fix_evidence_syntax helper auto-fixes the common data={{...}} case,
but it does NOT cover other props (x={{col}}, y={{col}}).
Template literals or JSX expressions inside components. Don't write
<BigValue value={`prefix-${var}`} />. Evidence components only
accept identifier references, not arbitrary expressions.
Unclosed component tags. Every <DataTable data={x}> needs a closing
</DataTable> OR self-close as <DataTable data={x} />. Svelte does NOT
forgive missing closers.
HTML tags inside SQL fenced blocks. Don't put <br>, <i>, or
similar inside a ```sql ... ``` block. The Svelte parser still
scans for tags inside fenced code and breaks on partial matches.
If generate_report returns a "Build failed" / "Parser.error" message,
inspect the rendered page_content for one of the patterns above, fix it,
and call generate_report again with the corrected content.
A professional report MUST have:
revenue_by_month, top_customers)##) to create clear sectionslist_tables outputAfter generate_report succeeds, you MUST present the post-report menu via
ask_user with these exact options:
Open in browser — calls open_in_browser on the built pathPublish to Seeknal Report Server — triggers the publish-to-seeknal-report skillPublish memo to Proof — triggers the publish-memo-to-proof skillContinue — go back to analysis without leavingType your own — free-formDo NOT print these options in your text — they MUST come through ask_user.
After generating a report, your final answer MUST include:
Do NOT just say "I created a report" — the answer itself should be valuable standalone content.
After generating, if the user wants to save the analysis as a repeatable spec:
use the save-report-exposure skill (separate manual) to call
save_report_exposure. The same approval gate carries through within the
same turn.