Skip to content
Agentmart
Submit a tool

report

Use when tasks need complete HTML research reports, HTML dashboards, PNG chart helpers, or files under the research reports directory.

Skill by quantskills

IndexedGPL-3.0★ 64
Write a review

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/quantskills-report

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.

We use your email only for this newsletter. Privacy

About

Use when tasks need complete HTML research reports, HTML dashboards, PNG chart helpers, or files under the research reports directory.

Use cases: documents, frontend, data, research

No 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 and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/report
  • /Library/Fonts
  • /usr/local/share/fonts
  • /usr/share/fonts
  • Your home directory (~)

What's inside

Skill name
report
Description
Use when tasks need complete HTML research reports, HTML dashboards, PNG chart helpers, or files under the research reports directory.
License
GPL-3.0
Instructions
199 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (12)

  • SKILL.md
  • __init__.py
  • charts.py
  • fonts.py
  • renderer.py
  • research_report.py
  • backtest_report.html · templates/
  • catalog.html · templates/
  • catalog_nav.html · templates/
  • factor_report.html · templates/
  • research_report.html · templates/
  • signal_digest.html · templates/

SKILL.md (first lines)

# Report Skill

Render research outputs into self-contained HTML using Jinja2 templates and
matplotlib charts. Install with `uv sync --extra report`. Default output uses
`QUANTSPACE_REPORTS_ROOT` when set, otherwise the workspace `reports/` path.

Complete research archives are **HTML only**. Do not write them as Markdown or
PDF. Do not use a database. Other skills must not write HTML; they return
objects, and the caller fills `ResearchReport` then calls
`write_research_bundle`.

## Two output paths

| Path | Entry | Output | Use for |
|------|-------|--------|---------|
| Complete research archive | `ResearchReport` + `write_research_bundle` | `reports/<namespace>/<slug>/index.html` | Takeaway research document, including public examples |
| Dashboard preview | `ReportRenderer` + `factor_report` / `backtest_report` / `signal_digest` | one HTML file | Quick look, not an archive |

Charts are inlined as base64 data URIs via the `png_data_uri` Jinja filter.

## Complete research archive

```python
from skills.report import (
    ReportFigure,
    ReportTable,
    ResearchReport,
    charts,
    write_research_bundle,
    write_research_catalog,
)

equity_png = charts.plot_backtest_performance(result_df, title="Performance")
report = ResearchReport(
    namespace="lesson_09",
    slug="if_ma10_atr",
    title="IF MA10 + ATR",
    question="Does this rule beat buy-and-hold under the stated costs?",
    universe=["CFFEX.IF99"],
    frequency="1d",
    sample_start="2024-01-01",
    sample_end="2026-07-01",
    in_sample_end=None,
    out_of_sample_start=None,
    hypothesis="A short dip below MA10 may revert; a rising ATR trailing stop limits persistent declines. Both effects need comparison tests.",
    method_notes=["Enter below MA10; exit at the entry-to-date high minus 2 ATR(14), using strategies.time_series.rules."],
    execution={
        "trade_at": "close",
        "signal_lag": 1,
        "commission": 0.0002,
        "slippage_bp": 2.0,
        "return_mode": "forward",
    },
    metrics=execution.metrics,  # from VectorBacktester, do not invent numbers
    metrics_source="BacktestResult.metrics",
    figures=[ReportFigure(name="equity", caption="Equity and drawdown", png=equity_png)],
    tables=[],
    caveats=["Single IF contract and sample window; no no-stop comparison yet."],
    next_steps=["Compare the same entry rule without the ATR stop and at higher costs."],
    reproduce_command="uv run python -m strategies.time_series.workflows.run_demo",
    visibility="private",
    domain="time_series",
)
study_dir = write_research_bundle(report)
write_research_catalog()
```

Directory contract:

```text
reports/<namespace>/<slug>/index.html
reports/<namespace>/<slug>/params.json
reports/<namespace>/<slug>/artifacts/metrics.csv   # only when metrics is non-empty
reports/catalog.html
reports/catalog.json
```

`index.html` is the human-readable nine-section report. `params.json` is the
catalog sidecar. `list_research_studies` only accepts folders that have both
files. CSV-only experiment folders are ignored. `write_research_bundle` does
not write the catalog; call `write_research_catalog` after a batch.

Required HTML sections: 研究问题, 数据与样本, 假设与方法, 执行约定,
证据与指标, 图表, 对照与稳健性, 限制与下一步, 复现与产物.
If there is no comparison or robustness evidence, section 7 still renders
`本报告未做`.

## Agent interpretation before rendering

`write_research_bundle` only renders supplied fields. The calling AI agent
must read the strategy implementation, data and actual backtest results before
filling `ResearchReport`; a deterministic report script cannot supply a fresh
AI assessment on each run. In particular:

- State the testable question in `question`; write a distinct `hypothesis` that
  explains why the signal might work, what it predicts, and how positions are
  opened, sized and exited. Put implementation details in `method_notes`.
- Interpret actual metrics against their sample and trading activity; identify
  specific weaknesses, missing comparisons and possible confounders in
  `caveats`. Use `next_steps` for concrete tests that could challenge the
  strategy's explanation. Do not present a hypothesized mechanism as a proven
  source of return or invent an unseen AI analysis.
- Keep a regeneration command in `reproduce_command` only. Do not use the
  same disclaimer and rerun instruction as the analysis for every strategy.
- If a saved report was generated by an older strategy version, interpret its
  recorded method and results; reconcile version differences before rerunning
  or claiming that current code reproduces those numbers.

Hard rules:

- Fill `metrics` from `BacktestResult`, CSV, JSON, or `result_df`. Never invent Sharpe.
- `metrics_source` is required.
- `namespace` and `slug` are safe path segments only.
- Pass `visibility="private"` unless publishing a public example (the Python field is required; `qs report bundle` defaults to `private`). Do not git-add private studies.
- Public examples use `namespace="strategy_examples"`, `visibility="public_example"` and `kind="public_example"`. They still write `reports/<namespace>/<slug>/`.
- Do not import `strategies/` from this skill.
- Do not export PDF.

README gallery PNGs (`strategy_examples/<slug>_performance.png`) are extra

From quantskills/agent-quantspace, GPL-3.0.

More from quantskills/agent-quantspace

Signals

Stars
64
Forks
14
Open issues
2
Last commit (this folder)
Sep 21, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
GPL-3.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from quantskills

Cite this page

report skill. Agent Mart. https://agentmart.dev/skills/quantskills-report (last updated 2026-10-24)