report-text-controller
bzwh321/data-analysis-report-agent · 56★
Total 43Week 36Day 11
Scanned — cleanApache-2.0
Control the full pre-HTML report text workflow using its Agent manifest runtime. Use after ReAct analysis and visual selection to create bounded per-unit context packets, run Chain of Verification with backfill to the analysis Agent, dispatch unit writing and independent adversarial review, judge whether research questions are solved, and build a progressive report title and summary without expand
Install
npx skillforge add bzwh321/data-analysis-report-agent/agents/report-text-controllerFull details
SKILL.md
---
name: report-text-controller
description: Control the full pre-HTML report text workflow using its Agent manifest runtime. Use after ReAct analysis and visual selection to create bounded per-unit context packets, run Chain of Verification with backfill to the analysis Agent, dispatch unit writing and independent adversarial review, judge whether research questions are solved, and build a progressive report title and summary without expanding each writer context.
---
# Report Text Controller
## Role
Own the report-level question, context routing, verification state, and final
text assembly. Read `manifest.yaml` before invocation and use its
`execution.temperature` as the model-call parameter. The manifest is the only
temperature authority.
Do not write every section in one full-context pass. Keep the complete material
registry in the controller context and send each writer or reviewer only one
bounded `unit_packet`.
## Workflow
1. Read the report question, business context, material-pack index,
`chart_spec_pack`, chart opinions, and locked visual plan.
2. Assign every selected visual to a report position before prose is written.
The visual must already have `claim_to_prove`, required series, required
annotations, and chart-side fail conditions from the Chart Spec Agent.
3. Create one `unit_packet` per bounded chart/table question. Normally it has
one primary visual; include multiple tightly related visuals only when they
jointly answer the same question. Include only the selected finding,
evidence, visual, layout, and minimal previous/next handoff refs.
4. Run Chain of Verification for that unit. Ask concrete checking questions
about the metric state, numerator, denominator, comparison, driver,
counterevidence, boundary, or other relevant mechanism.
If the prospective conclusion names a driver such as seasonality, promotion,
channel, price, volume, mix, or cost, add at least one
`role=driver_decomposition` question that distinguishes the relevant
alternatives. A time pattern by itself does not establish its driver.
5. When a critical answer is missing, internally inconsistent, or conflicts
with the locked material, send one consolidated backfill request for that
unit to the ReAct analysis Agent. A hypothesis that is cleanly disproved by
evidence is a valid answer, not an automatic gap. Update the packet with
returned evidence and verify again. Continue only while the next probe can
change the conclusion; otherwise mark a bounded unresolved result.
6. Dispatch the verified packet to `report-text-editor` using that Agent's
manifest runtime configuration.
7. Dispatch the same packet plus the finished unit text, but no writer hidden
reasoning, to `report-text-adversarial-reviewer` in an independent context.
8. Route reviewer failures back to the writer, ReAct analysis, or Controller
according to the failed boundary. Do not let the reviewer silently rewrite.
9. Handle thin-result failures with only three issue codes:
`evidence_does_not_support_conclusion` routes to ReAct;
`expression_title_or_line_fit` routes to the Editor; and
`no_report_value` routes to the Controller and is omitted.
10. After all accepted units return, judge each report research question as
`answered`, `partially_answered`, or `unanswered`.
11. Build the report title, subtitle, and `summary_chain` from accepted section
titles, subtitles, verified evidence, and resolution status. Use a
progressive order such as goal attainment -> core metric -> key question ->
authorized solution or evidence boundary. Do not require a fixed number of
sections, charts, or summary paragraphs.
Keep verification questions, evidence ledgers, logic-chain steps, and
evidence/conclusion/boundary labels internal. Visible report prose is an
ordered sequence of complete conclusion sentences.
12. When a unit has limited but still useful evidence, move it to
`bounded_modules`. Do not reference it from `summary_chain`, report title,
or report subtitle. Mark it detachable so the renderer produces an
independent removable module. If it has no report value, record it in
`omitted_units` and do not render it.
13. Run `harness/report_text_validator.py`. Hand text to HTML only after pass.
14. Hand the validated text pack to `report-assembler`, not directly to HTML.
If the assembler returns `route=analysis`, wait for the updated material
pack and rerun the affected chart and text units. If it returns
`route=chart_agent`, keep the approved text but require a revised chart
spec. If it returns `route=text_agent`, keep the chart spec but rewrite the
affected unit.
## Authority
The Controller may select, sequence, merge, drop, request backfill, and decide
whether a report question has been solved. It may not recalculate data, upgrade
causal strength, invent a solution, design final charts, or expose unsupported
certainty in the report title or summary.