
New: Styled .docx + .xlsx Baseline Report Bundles
April 28, 2026releasereportsdocxxlsxskills
# New: Styled .docx + .xlsx Baseline Report Bundles
**v2.0.1** closes the biggest gap in the v2.0 release: proper Office document output.
The skill suite has always claimed to produce `.docx` SC packs and `.xlsx` claim forms — but there was no rendering engine. Reports came out as markdown. Fine for Slack and blogs; not fine for steering committees, funders, or anyone who expects a Word document with styled tables and a Gantt chart.
## What shipped
**`project-doc-suite-generator`** — a new P2 skill that reads `.project-state/` and renders a complete baseline report bundle:
| # | Document | Format |
|---|----------|--------|
| 00 | Baseline Reports Index | .docx |
| 01 | Project Tracker v1.0 | **.xlsx** (8 sheets) |
| 02 | Project Plan and Timeline | .docx |
| 03 | Risk Register | .docx |
| 04 | Milestone Detailed Specs | .docx |
| 05 | Architecture Overview | .docx |
| 06 | Roadmap and KPIs | .docx |
The tracker workbook has 8 sheets: **Home, Dashboard, Milestones, Deliverables, Risks, Phases, Monthly Gantt, Dependencies, and Legend** — with color-coded status cells, navy header rows, alternating row shading, and format-appropriate tab colors.
The `.docx` files use consistent styling: Calibri throughout, navy headings, styled tables with white-on-navy headers and alternating gray rows, bold inline field labels, scoring matrices (risk register), and version history tracking.
## How it works
The generator reads every entity in `.project-state/` — milestones, risks, phases, decisions, deliverables, the reporting matrix — and renders styled documents using `python-docx` and `openpyxl`. No templates to maintain. No manual formatting. The reports are views of state.
```bash
# Generate a dated baseline bundle
python3 scripts/generate-baseline-reports.py --date 2026-04-28
# Output: .project-state/reports/baseline/Baseline-Reports-2026-04-28/
```
The script auto-detects `.project-state/` by walking up from cwd. Supports `--date`, `--output-dir`, and `--state-dir` overrides.
## Wired into the orchestrator
The reporting matrix now includes a `baseline-report-bundle` entry:
```yaml
- id: baseline-report-bundle
stakeholder_group: internal.team
report: "Baseline report bundle (docx + xlsx)"
cadence: { kind: event-driven, trigger: "phase-transition, milestone-completion, on-demand" }
format: docx+xlsx
surface: website
generator: project-doc-suite-generator
```
The orchestrator's new `baseline` routine triggers generation at phase transitions and milestone completions. Reports land in a dated directory (`Baseline-Reports-YYYY-MM-DD/`) and get copied to the website's `public/downloads/baseline/` for static serving.
## Quality standard
This matches the quality bar set by production projects. The ai26.10 consortium project ships 15+ styled Office documents as its baseline pack. project-state now generates equivalent output — from state, automatically, on every significant event.
## What's next
The same rendering primitives will be shared with `project-status-reporter` for SC packs and final reports. The non-existent "docx skill" reference in the status reporter is now replaced with actual `python-docx` rendering.
---
**Download:** [project-state v2.0.1](https://project-state-docs.vercel.app/downloads/project-state.zip) · **Reports:** [Baseline Reports page](https://project-state-docs.vercel.app/reports/)